課程設計(論文)任務書 軟體 學院 軟體工程 專業 2016 -07 班 一、課程設計(論文)題目 綜合課程設計2 二、課程設計(論文)工作自 2018 年 1月 1 日起至 2018 年 1月 12 日止。 三、課程設計(論文) 地點:軟體工程實訓中心一部 四、課程設計(論文)內容要求: 1.本課 ...
課程設計(論文)任務書
軟體 學院 軟體工程 專業 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=’456’ 10 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);