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

课程设计(论文)任务书

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

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

二、课程设计(论文)工作自 201811 日起至 2018112 日止。

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

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

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) 类型名称History3 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 INSERT2 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=’456’10 11 WHERE Roomld=’5678’

2)用户编号查询:

1 SELECT userid2 3 From usersinfo4 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                    else128 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         try168 169             {170 171                    Thread.sleep(700);172 173             }174 175             catch (InterruptedException e)176 177             {178 179                    // TODO Auto-generated catch block180 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+"\n";152 153        }154 155               if(string==""){156 157                      房间使用情况.setText("没有要找的客房!");158 159               }160 161               else162 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+"\n身份证号码:"+CIdentityId+"\n客户姓名:"+CName+"\n电话:"+CPhone+"\n订房时间:"+BeginTime+"\n备注:"+Remarks+"\n";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+"\n身份证号码:"+CIdentityId+"\n客户姓名:"+CName+"\n电话:"+CPhone+"\n订房时间:"+BeginTime+"\n备注:"+Remarks+"\n";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+"\n";146 147        查询结果.setText(str);148 149  }150 151  catch(Exception e1){152 153      String warning="该客房信息不存在!";154 155      查询结果.setText(warning);156 157 JOptionPane.showMessageDialog(this,warning158 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+"\n";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.互联网资源

(0)

相关推荐

  • Java学习笔记(四):理解接口 事件监听器

    一.接口 父类和子类比较,父类是一个比子类更抽象的类.这个抽象体现在两个方面:一是父类的属性和方法比子类的少:二是,子类的方法比父类的方法更加具体. 当父类非常抽象时,或者我们仅仅知道这个类的对象应该 ...

  • Java学习—124.2048代码

    游戏的主界面的代码在类game_2048中. 本类主要包括两个方面: 一是布局. 二是动作,按钮的动作. 其中,动作又有菜单动作,按钮动作.而按钮动作又有多方面,在下一篇的代码中会有注释说明. 本篇帖 ...

  • 编程语言java常见事件响应方法实例汇总

    本文实例汇总了java中常见的事件响应方法,包括容器类监听.监听器类.AbstractAction.反射等.以方便大家参考.具体方法如下: 首先,在Java图形用户界面中,处理事件时所必须的步骤是: ...

  • Java学习——100、判断回文字符串

    回文字符串:即字符串"从前向后读"和"从后向前读"都相同. 算法并不难,用循环,将字符串的第0个和最后一个比较,第1个和倒数第二个比较,到中间数字为止,都相等则 ...

  • 旅馆、宾馆客房的通风设计有要求?认真阅读本文,带你一次学尽它

    一.通风风量的计算方法 二.客房通风设计要点 三.设计中应注意的几个问题

  • 会员消费管理系统流程设计

    会员消费管理系统流程设计 1 业务流程 说明: 消费管理系统平台登记的会员号和会员的基础信息将随时同步到各个俱乐部的消费系统中 每个俱乐部之间的充值和消费数据相互独立 消费管理系统平台可以实时从每个俱 ...

  • 病案质量问题管理系统的设计与应用

    导读:实现对现有各病案质量控制环节信息的整合,将病案质量问题改进工作流程的优化,提高临床医师对问题反馈的响应及时性,达到病案质量持续改进.依托信息系统构建病案问题的登记.反馈.督导.统计分析的病案质量 ...

  • 一种新能源汽车热管理系统的设计

    与传统燃油车相比,电动汽车除了需要满足空调热管理和驱动电机的热管理需求之外,对电池包也需要进行严格的热管理控制.电池包作为电动汽车上装载电池组的主要储能装置,是混动/电动汽车的关键部件,其性能直接影响 ...

  • 南翔海伦堡爱ME城市项目远程预付费电能管理系统的设计与应用

    本项目是为南翔海伦堡爱ME城市设计一套智能计量管理系统,本系统主是针本对租户用电,实现租户用电的智能化管理,为保证租户用电的独立性,采用一户一表的方案.针对本项目为办公租户配置远程预付费电表来独立计量 ...

  • 报刊订阅管理系统的设计与实现

    课程设计(论文)任务书(文章末尾--源文档下载)      软件     学院 软件工程 专业 2016 -7   班 一.课程设计(论文)题目 综合课程设计2 二.课程设计(论文)工作自 2018 ...

  • 民宿酒店客房管理系统的功能

    据德国酒店数据平台TOP HOTEL PROJECTS发布了亚太地区酒店相关数据.研究显示,未来几年亚太地区将新建2513家酒店,客房总数超过59.74万间.在所有新建酒店中,中国将占据一半的份额:预 ...

  • 新房装修别再设计客房,这样设计功能强更实用

    房价的不断上升,让购买大平米的房子成为一件非常奢侈的事情,小户型反而成为了一种另类的主流,对于一般的户型来说,都会做三个卧室,除去主次卧之外,很多家庭还会选择做一个客房,方便亲戚朋友的来访. 想法固然 ...

  • 智能微电网能量管理系统的设计与实现

    微电网能量管理系统(Microgrid Energy management system,MEMS)是微网调度自动化的总称.为微网调度提供各种实时信息,对微网进行调度决策管理与控制,保证微网安全运行, ...