前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >宾馆客房管理系统的设计与实现

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

作者头像
程序员小藕
发布2020-07-28 17:20:26
1.5K0
发布2020-07-28 17:20:26
举报
文章被收录于专栏:程序员小藕程序员小藕

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

一、 数据设计

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)用户信息数据建表

代码语言:javascript
复制
 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)客户信息数据建表

代码语言:javascript
复制
1 CREATE TABLE [dbo]. CustomersInfo (  CIdentityId nVarchar(50) 身份证号
2 CName nVarchar(50) 客户姓名
3 CPhone nVarchar(50) 联系电话)

3)客户类型数据建表

代码语言:javascript
复制
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)业务记录数据建表

代码语言:javascript
复制
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)客房信息表

代码语言:javascript
复制
1 CREATE TABLE [dbo].RomsInfo (Room Int 客房号
2 Rcategoryld Int 客房编号
3 RPostition nvarchar(50) 客房位置
4 
5 Description nvarchar(50)  描述

6)客房状态

代码语言:javascript
复制
1 CREATE TABLE [dbo].RoomStatus (Roomld Int 客房编号
2 
3 Status Int 状态)

7)客房业务表

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

二、查询

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

插入:

代码语言:javascript
复制
1 INSERT
2 
3 INTO history(Roomld,Cname)
4 
5 Values(‘223456’,’345’)

删除:

代码语言:javascript
复制
 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)用户编号查询:

代码语言:javascript
复制
1 SELECT userid
2 
3 From usersinfo
4 
5 Where Gender=’女’

3)客房类型查询

代码语言:javascript
复制
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)客房状态查询

代码语言:javascript
复制
1 select *
2 
3 from view_1 where 客房状态 in";
4 
5 where Roomld=‘723’)

6)客房业务表查询

代码语言:javascript
复制
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类

代码语言:javascript
复制
  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类

代码语言:javascript
复制
  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类

代码语言:javascript
复制
  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               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类

代码语言:javascript
复制
  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类

代码语言:javascript
复制
  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,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+"\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源代码

代码语言:javascript
复制
  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.互联网资源

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 标题:宾馆客房管理系统的设计与实现
    • 一、 数据设计
      • 1. 实体
      • 2. 联系
    • 二、 数据库设计
      • 1. 关系模式
      • 2. 数据表
    • 三、 数据库实现
      • 四、 程序设计
        • 1. 类
        • 2. 类设计
      • 五、 Java源代码
        • 六、 实验结果
          • 七、 实验小结
            • 1. 数据库设计小结
            • 2. Java应用小结
            • 3. 需完善之处
        • 课程设计体会
        • 参考文献
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档