• 宾馆客房管理系统的设计与实现


     

    课程设计(论文)任务书

         软件      学院  软件工程 专业 2016 -07  

    一、课程设计(论文)题目 综合课程设计2 

    二、课程设计(论文)工作自 2018 1 1 日起至 2018 1 12 日止。

    三、课程设计(论文) 地点:软件工程实训中心一部                      

    四、课程设计(论文)内容要求:

    1.本课程设计的目的

    (1)使学生熟练掌握数据库基本原理;

    (2)使学生熟练掌握数据库的分析和设计能力;

    (3)培养学生熟练使用常见的数据库管理系统;

    (4)培养学生使用Java语言进行面向对象设计的能力;

    (5)培养学生熟练使用Java语言进行数据库应用程序设计的能力;

    (6)提高学生的科技论文写作能力。

    2.基本要求:

    课程设计题目:

    设计主要内容:

    3.课程设计论文编写要求

    (1)要按照书稿的规格打印誊写课设报告;

    (2)报告分为封面、任务书(本文档)、正文、课程设计体会和参考文献四部分;

    学生签名:              

    2018年1月 1日

     

     

     

     

     

     

     

     

     

     

     

     

    课程设计(论文)评审意见

    (1)题目分析     (20分):优( )、良( )、中( )、一般( )、差( );

    (2)流程分析   (30分):优( )、良( )、中( )、一般( )、差( );

    (3)数据定义   (30分):优( )、良( )、中( )、一般( )、差( );

    (4)代码编写   (10分):优( )、良( )、中( )、一般( )、差( );

    (5)创新能力   (10分):优( )、良( )、中( )、一般( )、差( );

    (6)格式规范性、设计态度及考勤是否降等级:是( )、否( )

    评阅人:         职称:

    2018年 1 月 12 日

    标题:宾馆客房管理系统的设计与实现

    一、 数据设计

    1.     实体

    宾馆客房管理系统设计中用到的实体如下:

    1)  实体1:用户信息

    —   属性1:用户编号

    —   属性2:用户姓名

    —   属性3:密码

    —   属性4:性别(0-男,1-女)

    —   属性5:Email地址

    —   属性6:通讯地址

    —   属性7:联系电话

    —   属性8:所在部门

    —   属性9:用户类型(1-酒店管理员,2-前台服务员)

    2)  实体2:客户信息

    l  属性1: 身份证号

    l  属性2: 客户姓名

    l  属性3: 联系电话

    3)    实体3:客房类型

    l  属性1:客房类型编号

    l  属性2:类型名称

    l  属性3:客房面积

    l  属性4:配置床位

    l  属性5:客房价格

    l  属性6:配置空调(0-是,1-否)

    l  属性7:配置电视(0-是,1-否)

    4)   实体4:客房信息

    l  属性1: 客房号

    l  属性2:客房类型编号

    l  属性3:客房位置

    l  属性4:描述

    5)  实体5:客房状态

    l   属性1:客房编号

    l   属性2:状态(1-空房,2-入住)

    6)  实体6:客房业务

    l   属性1:客房编号

    l   属性2:入住时间

    l   属性3:客户身份证号

    l   属性4:备注

    7)  实体7:业务记录

    l  属性1:入住时间

    l  属性2:退房时间

    l  属性3:客房编号

    l  属性4:金额

    l  属性5:客户身份证号

    l  属性6:客户姓名

    l  属性7:客户电话

    l  属性8:备注

    2.     联系

    宾馆客房管理系统设计中实体之间的联系如下(E-R图):

     

    二、 数据库设计

    1.     关系模式

    宾馆客房管理设计中的关系模式如下:

    客户(客户编号,姓名,电话,E-mail)。关系的主键:客户编号;外键:无

    用户(用户编号,用户姓名,密码,性别(0-男,1-女),Email地址,通讯地址,联系电话,所在部门,用户类型(1-酒店管理员,2-前台服务员)。

    关系主键:用户编号;外键:无

    客户信息(身份证号,客户姓名,联系电话)

    关系主键:身份证号;外键:客户姓名

    客房类型(客房类型编号,类型名称,客房面积,配置床位,客房价格,配置空调 (0-是,1-否),配置电视(0-是,1-否))

    关系主键:客房类型编号;外键:类型名称

    客房信息(客房号,客房类型编号,客房位置,描述)

    关系主键:客房号;外键:客房类型编号

    客房状态(客房编号,状态(1-空房,2-入住))

    关系主键:客房编号;外键:无。

    客房业务(客房编号,入住时间客户身份证号,备注)

    关系主键:客房编号;外键:入住身份证号

    业务记录(入住时间,退房时间,客房编号,金额,客户身份证号,客,姓名,客户电话,备注)

    关系主键:入住时间;外键:客房编号,客户身份证,姓名,电话。

    2.     数据表

    本设计中创建的数据库名为:

    数据表分别为(将数据库中设计的数据表表截图至此)。

                                表1:用户信息

     

     

    表2:客户信息

     

    表3:客房信息类型表

     

       表4:客房信息表

     

           表5:客房状态表

     

    表6:客房业绩表

                 

     

        

    表7:业务记录表

     

    数据库关系图为:

                

     
       

        

    三、 数据库实现

    设计中实现数据库操作的SQL 语句如下:

    新建数据表:

     

    1)用户信息数据建表

     1  CREATE TABLE [dbo].weiwei( UserId Int 用户编号
     2 Name Varchar(50) 用户姓名
     3 Password Varchar(50) 密码
     4 Gender Int 性别(0-男,1-女)
     5 Email Varchar(50) Email地址
     6 Address Varchar(50) 通讯地址
     7 Telephone Varchar(50) 联系电话
     8 Department Varchar(50) 所在部门
     9 
    10 Type 
    11 Int 用户类型(1-酒店管理员,2-前台服务员



    2)客户信息数据建表

    1 CREATE TABLE [dbo]. CustomersInfo (  CIdentityId nVarchar(50) 身份证号
    2 CName nVarchar(50) 客户姓名
    3 CPhone nVarchar(50) 联系电话)


    3)客户类型数据建表   

    1 CREATE TABLE [dbo]. RoomCategory ( RCategoryId Int 客房类型编号
    2 Name nVarchar(50) 类型名称History
    3 Area Float 客房面积
    4 BedNum Int 配置床位
    5 Price Money 客房价格
    6 AirCondition Int 配置空调(0-是,1-否)
    7 TV Int 配置电视(0-是,1-否)
    8 
    9 )

    4)业务记录数据建表

     

    1 CREATE TABLE [dbo]. History ( BeginTime DateTime 入住时间
    2 EndTime DateTime 退房时间
    3 RoomId Int 客房编号
    4 TotalPrice Money 金额
    5 CIdentityId nVarchar(50) 客户身份证号
    6 CName nVarchar(50) 客户姓名
    7 CPhone nVarchar(50) 客户电话
    8 Remarks nVarchar(50) 备注

     

    5)客房信息表

    1 CREATE TABLE [dbo].RomsInfo (Room Int 客房号
    2 Rcategoryld Int 客房编号
    3 RPostition nvarchar(50) 客房位置
    4 
    5 Description nvarchar(50)  描述

     

    6)客房状态

    1 CREATE TABLE [dbo].RoomStatus (Roomld Int 客房编号
    2 
    3 Status Int 状态)

     

    7)客房业务表

    1 CREATE TABLE [dbo].RoomOPeration (Roomld Int 客房编号
    2 
    3 BeginTime DateTime 入住时间
    4 
    5 CIdentityId nVarchar(50) 客户身份证号

    二、查询

    1)业务记录增加,删除修改操作

    插入:

    1 INSERT
    2 
    3 INTO history(Roomld,Cname)
    4 
    5 Values(‘223456’,’345’)

    删除:

     1 DELETE
     2 
     3 FROM history
     4 
     5 WHERE Roomld=57 6 
     7 修改:UPDATE history
     8 
     9 SET Cname=45610 
    11 WHERE Roomld=5678

    2)用户编号查询:

    1 SELECT userid
    2 
    3 From usersinfo
    4 
    5 Where Gender=’女’

     

    3)客房类型查询

    1 select *
    2 
    3 from view_1 where 客房类型 in";
    4 
    5 where RCategoryld=123’)

    4)客房信息查询

    select *

    from view_1 where 客房信息 in";

    where Roomld=‘063’)

    5)客房状态查询

    1 select *
    2 
    3 from view_1 where 客房状态 in";
    4 
    5 where Roomld=723’)

    6)客房业务表查询

    1 select *
    2 
    3 from view_1 where 客房业务 in";
    4 
    5 where Roomld=793’)

    7)客户信息查询

     1 select * 2 3 from Customersinfo 

     

     

     

     

     

    四、 程序设计

    1.     类

    设计中定义的Java类如下:

    1)  weiwei类,表示设计中所有的客户信息类,连接数据库。

    2)  load类,表示设计中的客房管理,是weiwei的子类。

    3)  AddRooms类,表示设计中的客房管理,是weiwei的子类。

    4)  UseOfRooms类,表示设计中的客户,是weiwei的子类。

    5)  CustomerInformation类,表示设计中的员工信息,是weiwei的子类。

    6)  CheckStaff类,表示设计中的客户,是weiwei的子类。

    2.     类设计

    1)weiwei类

      1 public class weiwei
      2 
      3 {
      4 
      5      private TAdminDAO adminDAO;
      6 
      7      private TRenyuanDAO renyuanDAO;
      8 
      9      public TAdminDAO getAdminDAO()
     10 
     11      {
     12 
     13             return adminDAO;
     14 
     15      }
     16 
     17      public void setAdminDAO(TAdminDAO adminDAO)
     18 
     19      {
     20 
     21             this.adminDAO = adminDAO;
     22 
     23      }
     24 
     25     
     26 
     27      public TRenyuanDAO getRenyuanDAO()
     28 
     29      {
     30 
     31             return renyuanDAO;
     32 
     33      }
     34 
     35      public void setRenyuanDAO(TRenyuanDAO renyuanDAO)
     36 
     37      {
     38 
     39             this.renyuanDAO = renyuanDAO;
     40 
     41      }
     42 
     43      public String login(String userName,String userPw,int userType)
     44 
     45      {
     46 
     47             System.out.println("userType"+userType);
     48 
     49             try
     50 
     51             {
     52 
     53                    Thread.sleep(700);
     54 
     55             } catch (InterruptedException e)
     56 
     57             {
     58 
     59                    // TODO Auto-generated catch block
     60 
     61                    e.printStackTrace();
     62 
     63             }
     64 
     65            
     66 
     67             String result="no";
     68 
     69            
     70 
     71             if(userType==0)//系统管理员登陆
     72 
     73             {
     74 
     75                    String sql="from TAdmin where userName=? and userPw=?";
     76 
     77                    Object[] con={userName,userPw};
     78 
     79                    List adminList=adminDAO.getHibernateTemplate().find(sql,con);
     80 
     81                    if(adminList.size()==0)
     82 
     83                    {
     84 
     85                            result="no";
     86 
     87                    }
     88 
     89                    else
     90 
     91                    {
     92 
     93                            WebContext ctx = WebContextFactory.get();
     94 
     95                            HttpSession session=ctx.getSession();
     96 
     97                            TAdmin admin=(TAdmin)adminList.get(0);
     98 
     99                            session.setAttribute("userType", 0);
    100 
    101                   session.setAttribute("admin", admin);
    102 
    103                   result="yes";
    104 
    105                    }
    106 
    107             }
    108 
    109             if(userType==1)
    110 
    111             {
    112 
    113                    String sql="from TRenyuan where gonghao=? and loginpw=? and del='no'";
    114 
    115                    Object[] con={userName.trim(),userPw.trim()};
    116 
    117                    List renyuanList=renyuanDAO.getHibernateTemplate().find(sql,con);
    118 
    119                    if(renyuanList.size()==0)
    120 
    121                    {
    122 
    123                            result="no";
    124 
    125                    }
    126 
    127                    else
    128 
    129                    {
    130 
    131                            WebContext ctx = WebContextFactory.get();
    132 
    133                            HttpSession session=ctx.getSession();
    134 
    135                            TRenyuan renyuan=(TRenyuan)renyuanList.get(0);
    136 
    137                            session.setAttribute("userType", 1);
    138 
    139                   session.setAttribute("renyuan", renyuan);
    140 
    141                   result="yes";
    142 
    143                    }
    144 
    145             }
    146 
    147             if(userType==2)
    148 
    149             {
    150 
    151                   
    152 
    153             }
    154 
    155             return result;
    156 
    157      }
    158 
    159  
    160 
    161     public String adminPwEdit(String userPwNew)
    162 
    163     {
    164 
    165             System.out.println("DDDD");
    166 
    167         try
    168 
    169             {
    170 
    171                    Thread.sleep(700);
    172 
    173             }
    174 
    175             catch (InterruptedException e)
    176 
    177             {
    178 
    179                    // TODO Auto-generated catch block
    180 
    181                    e.printStackTrace();
    182 
    183             }
    184 
    185             WebContext ctx = WebContextFactory.get();
    186 
    187             HttpSession session=ctx.getSession();
    188 
    189              
    190 
    191             TAdmin admin=(TAdmin)session.getAttribute("admin");
    192 
    193             admin.setUserPw(userPwNew);
    194 
    195            
    196 
    197             adminDAO.getHibernateTemplate().update(admin);
    198 
    199             session.setAttribute("admin", admin);
    200 
    201            
    202 
    203             return "yes";
    204 
    205     }
    206 
    207    
    208 
    209 }
    210 
    211  
    212 
    213 2)  load 类
    214 
    215 public class load extends JFrame implements ActionListener {
    216 
    217       private  boolean boo1=false,boo2=false;
    218 
    219     int Type=0;
    220 
    221       public JTextField []t ={new JTextField("用户名:",8),new JTextField(27),
    222 
    223                    new JTextField("密码:",8),new JPasswordField(27),
    224 
    225 new JTextField("宾馆客房管理系统登陆界面--(设计人员:陈其巍)",36),
    226 
    227 new JTextField("后台技术:应用数据库加密技术--安全保护你的信息!请放心使用!",36),
    228 
    229 new JTextField("功能:管理宾馆客房!",36)};
    230 
    231      public JButton []b={new JButton("登陆"),new JButton("退出")};
    232 
    233  ImageIcon ic=new ImageIcon(HoteLand.class.getResource("/百吉星级酒店.jpg"));
    234 
    235      JFrame app;
    236 
    237     Statement statement;
    238 
    239        //构造方法
    240 
    241      public weiwei(){
    242 
    243                  app= new JFrame("--宾馆客房管理系统登陆界面--");
    244 
    245                          app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    246 
    247                          app.setSize(438,583);
    248 
    249                          app.setResizable(false);
    250 
    251                          Container c=app.getContentPane();
    252 
    253                          c.setLayout(new FlowLayout());
    254 
    255                          JLabel aLabel=new JLabel(ic,JLabel.LEFT);
    256 
    257                          t[0].setFont(new Font("TimesRoman",Font.BOLD,13));
    258 
    259                 t[0].setForeground(Color.red);
    260 
    261                          t[0].setEditable(false);
    262 
    263                          t[2].setFont(new Font("TimesRoman",Font.BOLD,13));
    264 
    265                  t[2].setForeground(Color.red);
    266 
    267                          t[2].setEditable(false);
    268 
    269                          for(int i=0;i<4;i++)
    270 
    271                            c.add(t[i]);
    272 
    273                            c.add(b[0]);
    274 
    275                            c.add(b[1]);
    276 
    277                            for(int j=4;j<7;j++)
    278 
    279                            {
    280 
    281                               c.add(t[j]);
    282 
    283                            t[j].setFont(new Font("TimesRoman",Font.BOLD,13));
    284 
    285                    t[j].setForeground(Color.blue);
    286 
    287                            t[j].setEditable(false);
    288 
    289                           }
    290 
    291                            c.add(aLabel);
    292 
    293                     t[0].addActionListener(this);
    294 
    295                     t[2].addActionListener(this);
    296 
    297                     b[0].addActionListener(this);
    298 
    299                     b[1].addActionListener(this);
    300 
    301                 app.setVisible(true);
    302 
    303      }
    304 
    305          //消息响应方法
    306 
    307      public void actionPerformed(ActionEvent e){
    308 
    309                     JButton source=(JButton)e.getSource();
    310 
    311   //如果单击"登陆"按键,执行StudentManager程序,该部分应用到数据库加密技术
    312 
    313 if(source==b[0]){
    314 
    315  
    316 
    317  try{
    318 
    319 //基于SQL Server 2000 的 JDBC-ODBC 桥数据库连接(先要创建一个数据源lib)
    320 
    321                                                        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    322 
    323                      //使用网络登录ID的Windows NT 验证(W)
    324 
    325 Connection conn=DriverManager.getConnection("jdbc:odbc:宾馆客户数据库");                         statement=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    326 
    327                                          String s1=t[1].getText();
    328 
    329                             String s2=t[3].getText();
    330 
    331 ResultSet resultset=statement.executeQuery("select * from UsersInfo where Name='"+s1+"'and Password='"+s2+"'");
    332 
    333                              resultset.next();
    334 
    335                              Type=resultset.getInt("Type");                       
    336 
    337                            if(resultset!=null){
    338 
    339                                             boo1=boo2=true;
    340 
    341                                             resultset.close();
    342 
    343                                          }
    344 
    345                                          }
    346 
    347                                         catch(Exception e1){
    348 
    349 JOptionPane.showMessageDialog(this,"用户名和密码不正确!","警告",JOptionPane.WARNING_MESSAGE);      
    350 
    351                                            }   
    352 
    353                                //如果输入的用户名和密码都正确,则登陆
    354 
    355                              if(boo1&&boo2&&Type==1){
    356 
    357                                     Type=0;
    358 
    359                                         boo1=boo2=true;
    360 
    361                              new HoteMen(statement,"普通员工--"+t[1].getText());
    362 
    363                                      app.setVisible(false);
    364 
    365                              }
    366 
    367                             if(boo1&&boo2&&Type==2){
    368 
    369                                    Type=0;
    370 
    371                                                   boo1=boo2=true;
    372 
    373                      new HotelManagerMen(statement,"管理员--"+t[1].getText());
    374 
    375                                                    //new StudentManager();
    376 
    377                                                    app.setVisible(false);
    378 
    379                              }
    380 
    381                        }
    382 
    383                   //如果单击"退出"按键,则退出登陆界面
    384 
    385                        if(source==b[1]){
    386 
    387                                  System.exit(0);
    388 
    389                           }
    390 
    391      }
    392 
    393      public static void main(String args[]){
    394 
    395         new weiwei();
    396 
    397       }
    398 
    399 }
    400 
    401 }

    3)AddRooms类

      1 public class AddRooms extends weiwei implements ActionListener
      2 
      3 {
      4 
      5 Hashtable 基本信息表=null;
      6 
      7 JTextField 房间号,房间位置;
      8 
      9 JTextArea 描述;
     10 
     11 JButton 录入,重置;
     12 
     13 Choice 房间类型;
     14 
     15 Statement  statement=null;
     16 
     17 JLabel 添加客房信息=null;
     18 
     19 public AddRooms(Statement statement)
     20 
     21 {
     22 
     23 this.statement=statement;
     24 
     25 房间号=new JTextField(10);
     26 
     27 房间位置=new JTextField(10);
     28 
     29 描述 =new JTextArea(7,10);
     30 
     31 录入=new JButton("录入");
     32 
     33 重置=new JButton("重置");
     34 
     35 录入.addActionListener(this);
     36 
     37 重置.addActionListener(this);
     38 
     39 Box box0=Box.createHorizontalBox();
     40 
     41 添加客房信息=new JLabel("--添加客房信息--",JLabel.CENTER);
     42 
     43 添加客房信息.setFont(new Font("TimesRoman",Font.BOLD,25));
     44 
     45 添加客房信息.setForeground(Color.red);
     46 
     47 box0.add(添加客房信息);
     48 
     49 Box box1=Box.createHorizontalBox();
     50 
     51 box1.add(new JLabel("房间号:",JLabel.CENTER));
     52 
     53 box1.add(房间号);
     54 
     55   房间类型=new Choice();
     56 
     57          房间类型.add("普通单人间");
     58 
     59          房间类型.add("普通双人间");
     60 
     61          房间类型.add("vip单人间");
     62 
     63          房间类型.add("vip双人间");
     64 
     65          房间类型.add("豪华贵宾间");
     66 
     67          房间类型.add("总统套间");
     68 
     69 Box box2=Box.createHorizontalBox();
     70 
     71 box2.add(new JLabel("房间类型:",JLabel.CENTER));
     72 
     73 box2.add(房间类型);
     74 
     75 Box box3=Box.createHorizontalBox();
     76 
     77 box3.add(new JLabel("房间位置:",JLabel.CENTER));
     78 
     79 box3.add(房间位置);
     80 
     81 Box box4=Box.createHorizontalBox();
     82 
     83 box4.add(new JLabel("单价 :",JLabel.CENTER));
     84 
     85 box4.add(new JScrollPane(描述),BorderLayout.CENTER);
     86 
     87 Box boxH=Box.createVerticalBox();
     88 
     89 boxH.add(box0);
     90 
     91 boxH.add(box1);
     92 
     93 boxH.add(box2);
     94 
     95 boxH.add(box3);
     96 
     97 boxH.add(box4);
     98 
     99 boxH.add(Box.createVerticalGlue());
    100 
    101 JPanel pCenter=new JPanel();
    102 
    103 pCenter.add(boxH);
    104 
    105 setLayout(new BorderLayout());
    106 
    107 add(pCenter,BorderLayout.CENTER);
    108 
    109 JPanel pSouth=new JPanel();
    110 
    111 pSouth.add(录入);
    112 
    113 pSouth.add(重置);
    114 
    115 add(pSouth,BorderLayout.SOUTH);
    116 
    117 validate();
    118 
    119 }
    120 
    121 public void actionPerformed(ActionEvent e)
    122 
    123 {
    124 
    125 ResultSet resultset=null;
    126 
    127 boolean boo=false;
    128 
    129 if(e.getSource()==录入)
    130 
    131 {
    132 
    133 int number=0;
    134 
    135   try{
    136 
    137      number=Integer.parseInt(房间号.getText().toString());
    138 
    139      boo=true;
    140 
    141   }
    142 
    143  catch(Exception e1){
    144 
    145       boo=false;
    146 
    147  }
    148 
    149 if(boo&&(number>0))
    150 
    151 {
    152 
    153 try{
    154 
    155 resultset=statement.executeQuery("use 宾馆客户数据库;select * from RoomsInfo where RoomId='"+number+"'");
    156 
    157  try{
    158 
    159  resultset.next();
    160 
    161  resultset.getInt("RoomId");
    162 
    163  String warning="该客房信息已存在,请到修改页面修改!";
    164 
    165 JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
    166 
    167  }
    168 
    169  catch(Exception e1){
    170 
    171       int RoomId=Integer.parseInt(房间号.getText().toString());
    172 
    173       String RCategory=房间类型.getSelectedItem().toString();
    174 
    175       String RPostion=房间位置.getText().toString();
    176 
    177       String Description=描述.getText().toString();
    178 
    179       String str="use 宾馆客户数据库;insert into RoomsInfo values("+RoomId+",'"+RCategory+"','"+RPostion+"','"+Description+"')";
    180 
    181      try{
    182 
    183       statement.executeUpdate(str);
    184 
    185       statement.executeUpdate("use 宾馆客户数据库;insert into RoomStatus values("+RoomId+","+1+")");
    186 
    187       JOptionPane.showMessageDialog(this,"成功录入客房信息!","提示",JOptionPane.WARNING_MESSAGE);
    188 
    189      }
    190 
    191        catch(Exception e2){
    192 
    193  
    194 
    195           String  warning="输入格式有误,请重新输入!";
    196 
    197           JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
    198 
    199            e2.printStackTrace();
    200 
    201        }
    202 
    203        房间号.setText(null);
    204 
    205       房间类型.select("普通单人间");
    206 
    207       房间位置.setText(null);
    208 
    209       描述.setText(null);
    210 
    211 }
    212 
    213  
    214 
    215 }
    216 
    217 catch(Exception e1){
    218 
    219     String warning="输入格式有误,请重新输入!";
    220 
    221     JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
    222 
    223 }
    224 
    225  
    226 
    227 }
    228 
    229   else {
    230 
    231      String warning="必须要输入房间号!";
    232 
    233      JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE);
    234 
    235   }
    236 
    237 }
    238 
    239 if(e.getSource()==重置)
    240 
    241 {
    242 
    243 房间号.setText(null);
    244 
    245 房间类型.select("普通单人间");
    246 
    247 房间位置.setText(null);
    248 
    249 描述.setText(null);
    250 
    251 }
    252 
    253 }
    254 
    255 }

    4)UseOfRooms类

      1 public class UseOfRooms extends weiwei implements ActionListener
      2 
      3 {
      4 
      5 JButton 查询;
      6 
      7 Choice 房间类型,状态;
      8 
      9 Statement statement=null;
     10 
     11 JTextArea 房间使用情况;
     12 
     13 JLabel 客房使用情况=null;
     14 
     15 public UseOfRooms(Statement statement)
     16 
     17 {
     18 
     19 this.statement=statement;
     20 
     21 查询=new JButton("查询");
     22 
     23 查询.addActionListener(this);
     24 
     25 房间类型=new Choice();
     26 
     27          房间类型.add("普通单人间");
     28 
     29          房间类型.add("普通双人间");
     30 
     31          房间类型.add("vip单人间");
     32 
     33          房间类型.add("vip双人间");
     34 
     35          房间类型.add("豪华贵宾间");
     36 
     37          房间类型.add("总统套间");
     38 
     39 状态=new Choice();
     40 
     41 状态.add("有");
     42 
     43 状态.add("否");
     44 
     45 Box box0=Box.createHorizontalBox();
     46 
     47 客房使用情况=new JLabel("--客房使用情况--",JLabel.CENTER);
     48 
     49 客房使用情况.setFont(new Font("TimesRoman",Font.BOLD,25));
     50 
     51 客房使用情况.setForeground(Color.red);
     52 
     53 box0.add(客房使用情况);
     54 
     55 Box box1=Box.createHorizontalBox();
     56 
     57 box1.add(new JLabel("按房间类型:",JLabel.CENTER));
     58 
     59 box1.add(房间类型);
     60 
     61 Box box2=Box.createHorizontalBox();
     62 
     63 box2.add(new JLabel("状态:",JLabel.CENTER));
     64 
     65 box2.add(状态);
     66 
     67 box2.add(查询);
     68 
     69 Box box3=Box.createHorizontalBox();
     70 
     71 box3.add(new JLabel("房间使用情况:",JLabel.CENTER));
     72 
     73 Box box4=Box.createHorizontalBox();
     74 
     75 box4.add(new JLabel("-客房号:"));
     76 
     77 box4.add(new JLabel("-客房类型:"));
     78 
     79 box4.add(new JLabel("-是否空房:"));
     80 
     81 Box box5=Box.createHorizontalBox();
     82 
     83 房间使用情况=new JTextArea(8,12);
     84 
     85 房间使用情况.setFont(new Font("TimesRoman",Font.BOLD,15));
     86 
     87 房间使用情况.setForeground(Color.red);
     88 
     89 房间使用情况.setEditable(false);
     90 
     91 box5.add(new JScrollPane(房间使用情况),BorderLayout.CENTER);
     92 
     93 Box boxH=Box.createVerticalBox();
     94 
     95 boxH.add(box0);
     96 
     97 boxH.add(box1);
     98 
     99 boxH.add(box2);
    100 
    101 boxH.add(box3);
    102 
    103 boxH.add(box4);
    104 
    105 boxH.add(box5);
    106 
    107 boxH.add(Box.createVerticalGlue());
    108 
    109 JPanel pCenter=new JPanel();
    110 
    111 pCenter.add(boxH);
    112 
    113 setLayout(new BorderLayout());
    114 
    115 add(pCenter,BorderLayout.CENTER);
    116 
    117 validate();
    118 
    119 }
    120 
    121 public void actionPerformed(ActionEvent e)
    122 
    123 {    int i=1;
    124 
    125      ResultSet resultset=null;
    126 
    127      String string="";
    128 
    129        if(e.getSource()==查询){
    130 
    131         String str=房间类型.getSelectedItem().toString();
    132 
    133          String str1=状态.getSelectedItem();
    134 
    135         if(str1.equals("有")){
    136 
    137           i=2;
    138 
    139         }
    140 
    141         else i=1;
    142 
    143   String str2="use 宾馆客户数据库;select RoomsInfo.RoomId,RCategory,RoomStatus.Status from RoomsInfo,RoomStatus where RoomsInfo.RoomId=RoomStatus.RoomId and Status="+i+" and RCategory='"+str+"'";
    144 
    145          try{
    146 
    147          resultset=statement.executeQuery(str2);
    148 
    149            while(resultset.next()){
    150 
    151                string+=resultset.getInt(1)+", "+resultset.getString(2)+", "+str1+"
    ";
    152 
    153        }
    154 
    155               if(string==""){
    156 
    157                      房间使用情况.setText("没有要找的客房!");
    158 
    159               }
    160 
    161               else
    162 
    163               房间使用情况.setText(string);
    164 
    165          }
    166 
    167          catch(Exception e1){
    168 
    169          e1.printStackTrace();
    170 
    171          }
    172 
    173   }
    174 
    175 }
    176 
    177 }
    178 
    179  

    5)CustomerInformation类

      1 public class CustomerInformation extends weiwei implements ActionListener
      2 
      3 {
      4 
      5 JTextField 姓名;
      6 
      7 JTextArea 查询结果;
      8 
      9 JButton 查询,查询所有;
     10 
     11 Statement statement=null;
     12 
     13 JLabel 客户信息查询;
     14 
     15 public CustomerInformation(Statement statement)
     16 
     17 {
     18 
     19 this.statement=statement;
     20 
     21 姓名=new JTextField(10);
     22 
     23 查询=new JButton("查询");
     24 
     25 查询所有=new JButton("查询所有");
     26 
     27 姓名.addActionListener(this);
     28 
     29 查询.addActionListener(this);
     30 
     31 查询所有.addActionListener(this);
     32 
     33 查询结果=new JTextArea(8,10);
     34 
     35 查询结果.setEditable(false);
     36 
     37 查询结果.setFont(new Font("TimesRoman",Font.BOLD,15));
     38 
     39 查询结果.setForeground(Color.blue);
     40 
     41 Box box0=Box.createHorizontalBox();
     42 
     43 客户信息查询=new JLabel("--客户信息查询--",JLabel.CENTER);
     44 
     45 客户信息查询.setFont(new Font("TimesRoman",Font.BOLD,25));
     46 
     47 客户信息查询.setForeground(Color.red);
     48 
     49 box0.add(客户信息查询);
     50 
     51 Box box1=Box.createHorizontalBox();
     52 
     53 box1.add(new JLabel("输入要查询的姓名:",JLabel.CENTER));
     54 
     55 box1.add(姓名);
     56 
     57 box1.add(查询);
     58 
     59 Box box2=Box.createHorizontalBox();
     60 
     61 box2.add(new JLabel("查询结果:",JLabel.CENTER));
     62 
     63 box2.add(new JScrollPane(查询结果),BorderLayout.CENTER);
     64 
     65 Box box3=Box.createHorizontalBox();
     66 
     67 box3.add(查询所有);
     68 
     69 Box boxH=Box.createVerticalBox();
     70 
     71 boxH.add(box0);
     72 
     73 boxH.add(box1);
     74 
     75 boxH.add(box2);
     76 
     77 boxH.add(box3);
     78 
     79 boxH.add(Box.createVerticalGlue());
     80 
     81 JPanel pCenter=new JPanel();
     82 
     83 pCenter.add(boxH);
     84 
     85 setLayout(new BorderLayout());
     86 
     87 add(pCenter,BorderLayout.CENTER);
     88 
     89 validate();
     90 
     91 }
     92 
     93 public void actionPerformed(ActionEvent e)
     94 
     95 {
     96 
     97 ResultSet resultset=null;
     98 
     99 boolean boo=false;
    100 
    101 String CName="",CIdentityId="",CPhone="",CRoom,BeginTime,Remarks;
    102 
    103 String str="",chk;
    104 
    105 if(e.getSource()==查询)
    106 
    107 { CName=姓名.getText().toString();
    108 
    109 if(!CName.equals(""))
    110 
    111 {
    112 
    113 try{
    114 
    115  chk="use 宾馆客户数据库;select * from CustomersInfo,RoomOperation where CustomersInfo.CIdentityId=RoomOperation.CIdentityId and CName='"+CName+"'";
    116 
    117 resultset=statement.executeQuery(chk);
    118 
    119  resultset.next();
    120 
    121         CIdentityId=resultset.getString("CIdentityId");
    122 
    123         CPhone=resultset.getString("CPhone");
    124 
    125         CRoom=resultset.getString("RoomId");
    126 
    127         BeginTime=resultset.getString("BeginTime");
    128 
    129         Remarks=resultset.getString("Remarks");
    130 
    131         str="客房号:"+CRoom+"
    身份证号码:"+CIdentityId+"
    客户姓名:"+CName+"
    电话:"+CPhone+"
    订房时间:"+BeginTime+"
    备注:"+Remarks+"
    ";
    132 
    133        查询结果.setText(str);
    134 
    135  }
    136 
    137  catch(Exception e1){
    138 
    139      String warning="该客房信息不存在!";
    140 
    141      查询结果.setText(warning);
    142 
    143 JOptionPane.showMessageDialog(this,warning,
    144 
    145 "警告",JOptionPane.WARNING_MESSAGE);
    146 
    147  }
    148 
    149 }
    150 
    151 else{
    152 
    153        String warning="必须要输入客户姓名!";
    154 
    155      JOptionPane.showMessageDialog(this,warning,
    156 
    157 "警告",JOptionPane.WARNING_MESSAGE);
    158 
    159 }
    160 
    161 }
    162 
    163 if(e.getSource()==查询所有){
    164 
    165         str="";
    166 
    167    try{
    168 
    169         chk="use 宾馆客户数据库;select * from CustomersInfo,RoomOperation where CustomersInfo.CIdentityId=RoomOperation.CIdentityId";
    170 
    171    resultset=statement.executeQuery(chk);
    172 
    173     while(resultset.next()){
    174 
    175 CIdentityId=resultset.getString("CIdentityId");
    176 
    177         CName=resultset.getString("CName");
    178 
    179         CPhone=resultset.getString("CPhone");
    180 
    181         CRoom=resultset.getString("RoomId");
    182 
    183         BeginTime=resultset.getString("BeginTime");
    184 
    185         Remarks=resultset.getString("Remarks");
    186 
    187         str="客房号:"+CRoom+"
    身份证号码:"+CIdentityId+"
    客户姓名:"+CName+"
    电话:"+CPhone+"
    订房时间:"+BeginTime+"
    备注:"+Remarks+"
    ";
    188 
    189          }
    190 
    191          if(str.equals("")){
    192 
    193                 姓名.setText("");
    194 
    195                 查询结果.setText("客户信息不存在!");
    196 
    197          }
    198 
    199         else  {
    200 
    201                      姓名.setText("");
    202 
    203                      查询结果.setText(str);
    204 
    205               }
    206 
    207     }
    208 
    209     catch(Exception e1){
    210 
    211               //e1.printStackTrace();
    212 
    213               姓名.setText("");
    214 
    215            查询结果.setText("客房信息不存在!");
    216 
    217         String warning="客房信息不存在!";
    218 
    219        JOptionPane.showMessageDialog(this,warning,
    220 
    221 "警告",JOptionPane.WARNING_MESSAGE);
    222 
    223  }
    224 
    225 }
    226 
    227 }
    228 
    229 }
    230 
    231  

    6) CheckStaff类

      1 public class CheckStaff extends weiwei implements ActionListener
      2 
      3 {
      4 
      5 JTextField 姓名;
      6 
      7 JTextArea 查询结果;
      8 
      9 JButton 查询,查询所有;
     10 
     11 Statement statement=null;
     12 
     13 JLabel 客户信息查询;
     14 
     15 public CheckStaff(Statement statement)
     16 
     17 {
     18 
     19 this.statement=statement;
     20 
     21 姓名=new JTextField(10);
     22 
     23 查询=new JButton("查询");
     24 
     25 查询所有=new JButton("查询所有");
     26 
     27 姓名.addActionListener(this);
     28 
     29 查询.addActionListener(this);
     30 
     31 查询所有.addActionListener(this);
     32 
     33 查询结果=new JTextArea(7,10);
     34 
     35 查询结果.setEditable(false);
     36 
     37 查询结果.setFont(new Font("TimesRoman",Font.BOLD,15));
     38 
     39 查询结果.setForeground(Color.blue);
     40 
     41 Box box0=Box.createHorizontalBox();
     42 
     43 客户信息查询=new JLabel("--员工信息查询--",JLabel.CENTER);
     44 
     45 客户信息查询.setFont(new Font("TimesRoman",Font.BOLD,25));
     46 
     47 客户信息查询.setForeground(Color.red);
     48 
     49 box0.add(客户信息查询);
     50 
     51 Box box1=Box.createHorizontalBox();
     52 
     53 box1.add(new JLabel("输入要查询的姓名:",JLabel.CENTER));
     54 
     55 box1.add(姓名);
     56 
     57 box1.add(查询);
     58 
     59 Box box2=Box.createHorizontalBox();
     60 
     61 box2.add(new JLabel("查询结果:",JLabel.CENTER));
     62 
     63 box2.add(new JScrollPane(查询结果),BorderLayout.CENTER);
     64 
     65 Box box3=Box.createHorizontalBox();
     66 
     67 box3.add(查询所有);
     68 
     69 Box boxH=Box.createVerticalBox();
     70 
     71 boxH.add(box0);
     72 
     73 boxH.add(box1);
     74 
     75 boxH.add(box2);
     76 
     77 boxH.add(box3);
     78 
     79 boxH.add(Box.createVerticalGlue());
     80 
     81 JPanel pCenter=new JPanel();
     82 
     83 pCenter.add(boxH);
     84 
     85 setLayout(new BorderLayout());
     86 
     87 add(pCenter,BorderLayout.CENTER);
     88 
     89 validate();
     90 
     91 }
     92 
     93 public void actionPerformed(ActionEvent e)
     94 
     95 {
     96 
     97 ResultSet resultset=null;
     98 
     99 boolean boo=false;
    100 
    101 String Name,Password,Sex,Email,Address,Telephone,Department,Type;
    102 
    103 int UserId=-1,Gender=0;
    104 
    105 String str="";
    106 
    107 if(e.getSource()==查询)
    108 
    109 {
    110 
    111     Name=姓名.getText().toString();
    112 
    113 if(!Name.equals(""))
    114 
    115 {
    116 
    117 try{
    118 
    119 resultset=statement.executeQuery("use 宾馆客户数据库;select * from UsersInfo where Name='"+Name+"'");
    120 
    121  resultset.next();
    122 
    123          UserId=resultset.getInt("UserId");
    124 
    125          Name=resultset.getString("Name");
    126 
    127                Password=resultset.getString("Password");
    128 
    129                Gender=resultset.getInt("Gender");
    130 
    131                if(Gender==1){
    132 
    133                           Sex="男";
    134 
    135                     }
    136 
    137                     else Sex="女";
    138 
    139                 Email=resultset.getString("Email");
    140 
    141                 Address=resultset.getString("Address");                   Telephone=resultset.getString("Telephone");
    142 
    143                  Department=resultset.getString("Department");
    144 
    145             Type=resultset.getInt("Type")==1?"普通员工":"宾馆管理员";    str=UserId+","+Name+","+Password+","+Sex+","+Email+","+Address+","+Telephone+","+Department+","+Type+"
    ";
    146 
    147        查询结果.setText(str);
    148 
    149  }
    150 
    151  catch(Exception e1){
    152 
    153      String warning="该客房信息不存在!";
    154 
    155      查询结果.setText(warning);
    156 
    157 JOptionPane.showMessageDialog(this,warning
    158 
    159 ,"警告",JOptionPane.WARNING_MESSAGE);
    160 
    161  }
    162 
    163 }
    164 
    165 else{
    166 
    167        String warning="必须要输入客户姓名!";
    168 
    169      JOptionPane.showMessageDialog(this,warning,
    170 
    171 "警告",JOptionPane.WARNING_MESSAGE);
    172 
    173 }
    174 
    175 }
    176 
    177 if(e.getSource()==查询所有){
    178 
    179        str="";
    180 
    181    try{
    182 
    183    resultset=statement.executeQuery("use 宾馆客户数据库;select * from UsersInfo");
    184 
    185     while(resultset.next()){
    186 
    187       UserId=resultset.getInt("UserId");
    188 
    189          Name=resultset.getString("Name");
    190 
    191                Password=resultset.getString("Password");
    192 
    193                Gender=resultset.getInt("Gender");
    194 
    195                if(Gender==1){
    196 
    197                           Sex="男";
    198 
    199                     }
    200 
    201                     else Sex="女";
    202 
    203                 Email=resultset.getString("Email");
    204 
    205                 Address=resultset.getString("Address");
    206 
    207                  Telephone=resultset.getString("Telephone");
    208 
    209                  Department=resultset.getString("Department");
    210 
    211             Type=resultset.getInt("Type")==1?"普通员工":"宾馆管理员";
    212 
    213         str+=UserId+","+Name+","+Password+","+Sex+","+Email+","+Address+","+Telephone+","+Department+","+Type+"
    ";
    214 
    215         }
    216 
    217         if(str.equals("")){
    218 
    219                姓名.setText("");
    220 
    221                查询结果.setText("客户信息不存在!");
    222 
    223         }
    224 
    225         else  {
    226 
    227                     姓名.setText("");
    228 
    229                     查询结果.setText(str);
    230 
    231              }
    232 
    233     }
    234 
    235     catch(Exception e1){
    236 
    237              姓名.setText("");
    238 
    239           查询结果.setText("客房信息不存在!");
    240 
    241         String warning="客房信息不存在!";
    242 
    243        JOptionPane.showMessageDialog(this,warning,
    244 
    245 "警告",JOptionPane.WARNING_MESSAGE);
    246 
    247  }}}}
    248 
    249  
    250 
    251  
    252 
    253  
    254 
    255  

     

     

     

     

     

     

     

     

     

     

     

    五、 Java源代码

      1 package com.util;
      2 
      3  
      4 
      5 import java.text.ParseException;
      6 
      7 import java.util.Date;
      8 
      9 import java.util.GregorianCalendar;
     10 
     11 import java.net.URL.*;
     12 
     13 import javax.swing.*;
     14 
     15 import javax.swing.ImageIcon;
     16 
     17 import javax.swing.JLabel;
     18 
     19 import java.sql.*;
     20 
     21 import java.awt.Container;
     22 
     23 import java.awt.GridLayout;
     24 
     25 import java.awt.FlowLayout;
     26 
     27 import javax.swing.JButton;
     28 
     29 import javax.swing.JFrame;
     30 
     31 import javax.swing.JTextField;
     32 
     33 import javax.swing.JPasswordField;
     34 
     35 import java.awt.event.ActionEvent;
     36 
     37 import java.awt.event.ActionListener;
     38 
     39 import java.awt.*;
     40 
     41 import java.awt.*;
     42 
     43 import java.awt.event.*;
     44 
     45 import javax.swing.*;
     46 
     47 import java.io.*;
     48 
     49 import java.util.*;
     50 
     51 import java.sql.*;
     52 
     53  
     54 
     55  
     56 
     57 public class Util {
     58 
     59        public static Date newDate(String s) throws ParseException {
     60 
     61               java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
     62 
     63                             "yyyy-MM-dd");
     64 
     65               Date date = new Date();
     66 
     67               date = sdf.parse(s);
     68 
     69               return date;
     70 
     71        }
     72 
     73  
     74 
     75        public static Date newDate1(String s) throws ParseException {
     76 
     77               java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
     78 
     79                             "yyyy-MM-dd HH:mm");
     80 
     81               Date date = new Date();
     82 
     83               date = sdf.parse(s);
     84 
     85               return date;
     86 
     87        }
     88 
     89  
     90 
     91        public static Date FormatFullDate(String s) throws ParseException {
     92 
     93               java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
     94 
     95                             "yyyy-MM-dd HH:mm:ss");
     96 
     97               Date date = new Date();
     98 
     99               date = sdf.parse(s);
    100 
    101               return date;
    102 
    103  
    104 
    105        }
    106 
    107  
    108 
    109        public static String splitDate(Date d) {
    110 
    111               java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
    112 
    113                             "yyyy-MM-dd");
    114 
    115               return sdf.format(d);
    116 
    117        }
    118 
    119  
    120 
    121        public static String splitDate1(Date d) {
    122 
    123               java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
    124 
    125                             "yyyy年MM月dd日");
    126 
    127               return sdf.format(d);
    128 
    129        }
    130 
    131  
    132 
    133        public static String chop(String orignalString, double length,
    134 
    135                      String chopedString) {
    136 
    137               if (orignalString == null || orignalString.length() == 0) {
    138 
    139                      return orignalString;
    140 
    141               }
    142 
    143               orignalString = orignalString.replaceAll(" ", " ");
    144 
    145               if (orignalString.length() < length) {
    146 
    147                      return orignalString;
    148 
    149               }
    150 
    151               StringBuffer buffer = new StringBuffer((int) length);
    152 
    153               length = length * 2;
    154 
    155               int count = 0;
    156 
    157               int stringLength = orignalString.length();
    158 
    159               int i = 0;
    160 
    161               for (; count < length && i < stringLength; i++) {
    162 
    163                      char c = orignalString.charAt(i);
    164 
    165                      if (c < 'u00ff') {
    166 
    167                             count++;
    168 
    169                      } else {
    170 
    171                             count += 2;
    172 
    173                      }
    174 
    175                      buffer.append(c);
    176 
    177               }
    178 
    179               if (i < stringLength) {
    180 
    181                      buffer.append(chopedString);
    182 
    183               }
    184 
    185               return buffer.toString();
    186 
    187        }
    188 
    189  
    190 
    191        public static long getPrimeKey() {
    192 
    193               GregorianCalendar calendar = new GregorianCalendar();
    194 
    195               return calendar.getTimeInMillis();
    196 
    197        }
    198 
    199  
    200 
    201        public static long stringToLong(String source) {
    202 
    203               return Long.parseLong(source);
    204 
    205        }
    206 
    207        /*
    208 
    209         * public static void main(String[] args){ for(int i=0;i<10;i++){
    210 
    211         * System.out.println(Util.getPrimeKey()); } }
    212 
    213         */
    214 
    215 }

    六、 实验结果

     

    图:1-1客房管理管理页面的设计

     

     

     

     

      2-2客房经营管理页面

     

    3-3 客户信息查询页面

     

    4-4 员工信息管理页面

     

     

     

     

     

     

     

     

     

     

    七、 实验小结

    1.     数据库设计小结

    当时对于数据库的选择,却走了一点弯路。因为平时对于数据库接触不多,所以一开始建表找工具花费时间作为数据库。这在初期是没啥问题的,但后来随着项目推进,产品经理不断地增加需求,慢慢对建表,查询和数据类型熟练。

    2.     Java应用小结

    我是用这个学期刚开的java语言进行编写。这样不仅可以学习数据库,而且还可以对Java的知识进行巩固。知识是相互联系的,没有哪一门是单独而存在的。对java大项目应用程序,要灵活应用类的定义以及类当中的方法,在定义类时,善于用接口。面对对象中,多个实现功能,最好用类和类继承。

    3.     需完善之处

    数据库建表和java的可连接部分需要熟练,需要自己掌握。对SQL语句建表的变量需要记住,以后不需要查询书本。当我把这个数据库完整地设计出时,我心情是多么的激动,多么的自豪。这次实验主要是数据库设计,而应用程序是次要的。所以,在这次实验中,由于时间问题,我只是做了一部分功能,但也足已蔚我心了。这个宾馆客房管理系统完完全全是我自己做的,没有一点参照成分。做完这个实验后,尽管这个系统有不足之处,但我感觉自己的编程能力已经有了质的提升。我真的很高兴!很自豪!

    课程设计体会

    本次实验是对我进行一次全面的综合训练,这次实验不仅仅是把这个学期的数据库的知识总结,更是自入学以来一次知识大检查。自己学了什么,都会心里有底。这个不单要掌握数据库原理,还要熟练掌握一门编程语言。在这次实验中,我是用这个学期刚开的java语言进行编写。这样不仅可以学习数据库,而且还可以对Java的知识进行巩固。知识是相互联系的,没有哪一门是单独而存在的。所以,要学好一门课,就是应该横向思考,多联系,这样会学得更深刻。这次实验,首先是要纵观全局,从大处着眼,先是需求分析,这是设计过程的基础,是最困难,最耗时的一步。作为“地基”的分析是否做得充分与准确,决定了在其上构建数据库大厦的速度与质量。需求分析做得不好,甚至会导致整个数据库设计返工重做。接着就是概念结构设计,这也是整个数据库设计的关键,它通过对用户需求进行综合,归纳与抽象,形成一个独立具体DBMS的概念模型。再接着就是逻辑结构设计了,最后就是编程工作了。

    参考文献

    1.数据库系统概论(第5版)王珊 萨师煊编著 高等教育出版社 2014年9月

    2.Java语言程序设计(第2版)丁振凡 编著 清华大学出版社2014年9月

    3.求是科技编著SQLsever 2000数据库开发技术与工程实践 人民邮电出版社2004年6月

    4.数据库系统实验指导 单建魁 赵启升 编著 清华大学出版社          

    5.互联网资源

    公众号回复--“宾馆”--获取文档

  • 相关阅读:
    ES学习(十)
    ES学习(九)
    ES学习(八)
    ES学习(七)--documentAPI
    ES学习(六)--shard和replica机制
    ES学习(四)--嵌套聚合、下钻分析、聚合分析
    uniapp中常见的请求方法封装 --来之插件市场(全局方法封装(请求/正则/URI)
    工具/插件
    express中文件的上传 multer
    express中开发常用
  • 原文地址:https://www.cnblogs.com/chenqiwei/p/RunWsh_room.html
Copyright © 2020-2023  润新知