版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录1绪 论11.1项目简介11.2设计目的11.3设计内容11.4应用范围12需求分析22.1数据需求22.2事务需求22.3详细功能分析22.4数据字典22.5开发运行环境22.6安全保障23概念设计33.1实体及联系抽象33.2E-R图33.3关系模式34逻辑设计44.1各表功能44.2各表结构44.3表关系图45物理设计45.1物理存储45.2完整性约束45.3视图设计55.4触发器设计56系统实现与维护66.1模块166.2模块266.3模块367总 结77.1系统实现程度77.2问题及难点77.3收获与体会7哈尔滨工业大学(威海)数据库系统课程设计报告1 绪 论1.1 项目简介此
2、系统是一个面向中小型宾馆,旅馆,招待所的客房管理系统,实现对客房的管理,顾客的管理,宾馆日常工作的管理,简单实用。1.2 设计目的方便中小型宾馆实现对客房的管理,为用户考虑,程序包含客房管理所需的所有功能,却也是简单短小,成本低廉,真正为小成本中小型宾馆切身利益考虑。1.3 设计内容实现服务员用账号密码登录功能,对客房的按照多种条件的信息查询和显示,顾客入住的信息登记,顾客信息的多种方式查询,顾客的退房操作,客房信息的增删改查,销售信息的报表显示与打印,数据库的备份。1.4 应用范围本系统适用于中小型旅馆,宾馆,招待所的前台服务人员,用来对宾馆日常工作的操作, 49 / 512 需求分析2.1
3、 数据需求系统需要处理哪些数据1:新用户登记信息(顾客或者内部成员(身份证号,姓名,性别,电话 ,订房信息 等)2:旧用户信息(顾客或者内部成员(身份证号,姓名,性别,电话 ,订房信息 等)3:宾馆客房信息(数量,价格,容量,是否满员等)4:金融信息(余额,缴费记录,转账信息等)2.2 事务需求系统涉及哪些人员,各能做什么事务 经理和董事长:综合管理,可以操作内部成员的一切功能,并且可以在报表中查看宾馆近几个月的收入情况.前台人员:完成顾客的登记,订房,退房,账户查询,人员查询,宾馆状态查询(房间信息,订单信息,金钱交易).2.3 详细功能分析用visio画出总的功能模块图及各子系统的详细功能
4、模块图,并用语言描述 数据库备份与恢复形成业务账单流水,打印功能供经理查询宾馆客房管理系统服务员信息管理客房信息管理顾客信息管理改查删增改查删增查询登记登出按退房日期按入住日期按姓名按身份证2.4 数据字典属性介绍属性介绍IDnumber人员信息主码,唯一标识一个人员name房间订单中的订房人的名字keyword登录口令datestar订房起始日期gname人员姓名dateend订房结束日期gsex人员性别alreadymoney已经支付的房间的订单金额gtelephone人员电话号码othermoney房间订单还需要支付的金额gadress人员住宿地址team团队订房标记gjob人员身份ji
5、ngliren订房的经理人borntime人员的生日makedate房间订单下单日期gsalary人员的薪水(非内部成员此项为0)indexx团队订房订单索引gdate登记日期roomdescribe团队订房所有房间描述kindsname物品种类主码dingdaninfo订餐订单的详情jobkind优惠活动主码,对应于人员的身份already餐饮订单状态标记(是否处理)zhekou折扣程度(0折10折)dateget餐饮订单下单日期otherdescribe其他优惠活动详情描述fromID转账人IDkinds房间的级别toID转账目的人IDdescribe房间配置的描述moneyvalue转账
6、金额thingname杂物姓名主码IDope充值记录中充值操作人IDthingpicture杂物快照(照片路径)isorfull房间是否满员标识price各种物品的价格roomtelephone房间的电话号码roomID房间号主码roompicture房间快照(路径)canpeoplenum房间的容量(可以住几个人)2.5 开发运行环境所用DBMS、开发工具及编程语言等使用sql server 2008构建数据库, PB12.0开发, sql server语言及PB编程语言2.6 安全保障如何保障系统的安全性人员登录都需要有密码和口令不同职务的人功能不同有数据库备份功能,保障数据安全3 概念设
7、计3.1 实体及联系抽象分析有哪些实体及联系,各有哪些属性,联系是什么类型的。Room(r_number, r_kind, r_bed, r_price, r_status, r_describe);Customer (IDnumber, name, sex, phone, orderdate, money, datestart, dateend, roomid, remarks);Manage(ID, password, age, phone, position);Roomnumber(roomnumber);Room_status(roomid, begintime, endtime, c
8、ustomerID, customername, price)3.2 E-R图采用从下到上的策略,先画出各部分E-R图,最后合成总的E-R图,并注意做优化电话号码容纳的人员数快照种类价格满员标记 房间房间号管理照片 服务员账户余额账户人名账户人身份证号管理房间 服务员服务员 服务员入住登记备注退房日期顾客入住日期身份证号性别姓名名余额手机号3.3 关系模式把E-R图转换为关系模式,并画出关系模式图。尽量规范到3NF。Room(r_number, r_kind, r_bed, r_price, r_status, r_describe);Customer (IDnumber, name, sex
9、, phone, orderdate, money, datestart, dateend, roomid, remarks);Manage(ID, password, age, phone, position);Roomnumber(roomnumber);Room_status(roomid, begintime, endtime, customerID, customername, price)4 逻辑设计4.1 各表功能给出数据库所有表的名称及各自功能表名称功能Manage存储服务员,经理等管理人员信息Room存储房间信息Customer存储顾客详细信息Roomnumber存储房间总数
10、信息Roomstatus存储房间状态信息给出各表的详细字段组成,包括数据类型、长度、主外码、约束等。4.2 表关系图在SQL Server中直接找到关系图并截取出来。5 物理设计5.1 物理存储给出数据库文件的存储位置、如何备份、还原等数据库存储位置:C:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLDATA备份:在sql server 2008中点击数据库,右键任务,选择备份,选择备份位置,备份名,即可还原:在sql server 2008中点击数据库,右键任务,选择还原,输入备份的数据库名,选择存放路径,即可5.2
11、完整性约束主键: 不能重复,唯一标识键外键:约束内容,不能超出要求的范围范围约束:在固定的集合中选择(例如:性别,年龄等)默认约束:在用户不输入数据的情况下,自动的给其附一个值(例如性别默认为“男性”)。5.3 视图设计本系统无视图5.4 触发器设计本系统无触发器6 系统实现与维护6.1 模块1给出主要功能部分的系统界面截图及核心代码来,并给出必要的描述说明。按功能模块来分节。登录模块string s_code , s_passint i_counts_code = sle_id.texts_pass = sle_password.textselect count(*)into :i_coun
12、tfrom Managerwhere ID =:s_code and password=:s_pass ;if i_count > 0 then open(test1) close(w_login)else messagebox('提示','用户名或密码错误,请重新输入!')end if6.2 模块2截取当前操作窗画面的快捷键为 Alt + PrtSc,然后Ctrl + V粘贴到要放入的地方即可。客房预订1,按房间号查询string r_id, r_kind, r_bed, r_price,r_status, r_describestring r_idii
13、nt t=1 if sle_id.text="" then messagebox("error","请输入房间号!")returnend ifr_idi=trim(sle_id.text)lv_id.deleteitems() /清空lv控件declare r_cursor cursor for /定义游标select *from roomwhere room.r_number=:r_idi;open r_cursor; /打开游标 if sqlca.sqlcode<>0 then messagebox("提示&
14、quot;,"游标打开错误!")end ifdo while true fetch r_cursor /取数到自己定义的变量中into :r_id, :r_kind, :r_bed, :r_price, :r_status, :r_describe;if sqlca.sqlcode<>0 then exitend iflv_id.additem(string(r_id), t)lv_id.setitem(t, 2, string(r_kind)lv_id.setitem(t, 3, string(r_bed)lv_id.setitem(t, 4, string(
15、r_price)lv_id.setitem(t, 5, string(r_status)lv_id.setitem(t, 6, string(r_describe)t=t+1loop /循环close r_cursor; /关闭游标2,按类别查询string r_id, r_kind, r_bed, r_price,r_status, r_describestring r_kindiint t=1 if ddlb_kind.text="" then messagebox("error","请选择房间类型!")returnend ifr
16、_kindi=trim(ddlb_kind.text)lv_kind.deleteitems() /清空lv控件declare r_cursor cursor for /定义游标select *from roomwhere room.r_kind=:r_kindi;open r_cursor; /打开游标 if sqlca.sqlcode<>0 then messagebox("提示","游标打开错误!")end ifdo while true fetch r_cursor /取数到自己定义的变量中into :r_id, :r_kind, :
17、r_bed, :r_price, :r_status, :r_describe;if sqlca.sqlcode<>0 then exitend iflv_kind.additem(string(r_id), t)lv_kind.setitem(t, 2, string(r_kind)lv_kind.setitem(t, 3, string(r_bed)lv_kind.setitem(t, 4, string(r_price)lv_kind.setitem(t, 5, string(r_status)lv_kind.setitem(t, 6, string(r_describe)t
18、=t+1loop /循环close r_cursor; /关闭游标3,按床位查询string b_id, b_kind, b_bed, b_price,b_status, b_describestring r_bediint t=1 if sle_bed.text="" then messagebox("error","请输入床位数!")returnend ifr_bedi=trim(sle_bed.text)lv_bed.deleteitems() /清空lv控件declare r_cursor cursor for /定义游标se
19、lect *from roomwhere room.r_bed=:r_bedi;open r_cursor; /打开游标 if sqlca.sqlcode<>0 then messagebox("提示","游标打开错误!")end ifdo while true fetch r_cursor /取数到自己定义的变量中into :b_id, :b_kind, :b_bed, :b_price, :b_status, :b_describe;if sqlca.sqlcode<>0 then exitend iflv_bed.addit
20、em(string(b_id), t)lv_bed.setitem(t, 2, string(b_kind)lv_bed.setitem(t, 3, string(b_bed)lv_bed.setitem(t, 4, string(b_price)lv_bed.setitem(t, 5, string(b_status)lv_bed.setitem(t, 6, string(b_describe)t=t+1loop /循环close r_cursor; /关闭游标4,按价格查询string r_id, r_kind, r_bed, r_price,r_status, r_describestr
21、ing r_pricei, r_pricejint t=1 if sle_low.text="" then messagebox("error","请输入最低价!")returnend if if sle_high.text="" then messagebox("error","请输入最高价!")returnend ifr_pricei=trim(sle_low.text)r_pricej=trim(sle_high.text)lv_price.deleteitems()
22、/清空lv控件declare r_cursor cursor for /定义游标select *from roomwhere room.r_price>=:r_pricei and room.r_price<=:r_pricej;open r_cursor; /打开游标 if sqlca.sqlcode<>0 then messagebox("提示","游标打开错误!")end ifdo while true fetch r_cursor /取数到自己定义的变量中into :r_id, :r_kind, :r_bed, :r_pr
23、ice, :r_status, :r_describe;if sqlca.sqlcode<>0 then exitend iflv_price.additem(string(r_id), t)lv_price.setitem(t, 2, string(r_kind)lv_price.setitem(t, 3, string(r_bed)lv_price.setitem(t, 4, string(r_price)lv_price.setitem(t, 5, string(r_status)lv_price.setitem(t, 6, string(r_describe)t=t+1lo
24、op /循环close r_cursor; /关闭游标6.3 模块3图片要顶格居中放置,要有图标题,放在图下面。图片大小要适中,不要超出页宽。顾客登记入住:7 /登记顾客信息8 9 string r_id, c_id, c_name, c_sex, c_phone, c_orderdata, c_money, c_remark10 date c_orderdate, c_datestart, c_dateend1112 if sle_roomid.text="" or isNULL (sle_roomid.text) then /取出房间号选择13 messagebox (
25、"缺少数据","请输入房间号")14 sle_roomid.setfocus ()15 return16 end if17 r_id=trim (sle_roomid.text)18 19 string status20 select room.r_status21 into :status22 from room23 where r_number=:r_id;24 if status='已售出' then 25 messagebox("error","此房间已售出,请核对后重新输入")26 sle
26、_roomid.setfocus () 27 end if282930 if sle_name.text="" or isNULL (sle_name.text) then /取出姓名选择31 messagebox ("缺少数据","请输入姓名")32 sle_name.setfocus ()33 return34 end if35 c_name=trim (sle_name.text)3637 if sle_id.text="" or isNULL (sle_id.text) then /取出身份证号选择38 m
27、essagebox ("缺少数据","请输入身份证号")39 sle_id.setfocus ()40 return41 end if42 c_id=trim (sle_id.text)4344 if rb_man.checked then /取出性别选择45 c_sex=rb_man.text46 elseif rb_woman.checked then47 c_sex=rb_woman.text48 end if4950 if sle_phone.text="" or isNULL (sle_phone.text) then /取
28、出手机号选择51 messagebox ("缺少数据","请输入手机号")52 sle_phone.setfocus ()53 return54 end if55 c_phone=trim (sle_phone.text)5657 if sle_orderdate.text<>"" and not isNull (sle_orderdate) then /输入预订日期,可以为空58 if isDate (sle_orderdate.text) then59 c_orderdate=date (sle_orderdate.t
29、ext)60 return 61 end if62 end if6364 if sle_money.text="" or isNULL (sle_money.text) then /取出账户余额选择65 messagebox ("缺少数据","请输入预付房钱")66 sle_money.setfocus ()67 return68 end if69 c_money=trim (sle_money.text)7071 if sle_datestart.text<>"" and not isNull (sl
30、e_datestart) then /输入入住日期72 if isDate (sle_datestart.text) then73 c_datestart=date (sle_datestart.text)74 else 75 messagebox("输入数据错误","请使用“年-月-日”的日期格式")76 sle_datestart.setfocus ()77 return 78 end if79 end if8081 if sle_dateend.text<>"" and not isNull (sle_dateend
31、) then /输入退房日期82 if isDate (sle_dateend.text) then83 c_dateend=date (sle_dateend.text)84 else 85 messagebox("输入数据错误","请使用“年-月-日”的日期格式")86 sle_dateend.setfocus ()87 return 88 end if89 end if9091 insert into customer /向数据库写入数据92 values93 (:c_id,94 :c_name,95 :c_sex,96 :c_phone,97 :
32、c_orderdate,98 :c_money,99 :c_datestart,100 :c_dateend,101 :r_id,102 :c_remark);103 104 sle_roomid.text="" /数据输入完成后,清空输入控件105 sle_id.text=""106 sle_name.text=""107 sle_phone.text=""108 sle_orderdate.text=""109 sle_money.text=""110 sle_dates
33、tart.text=""111 sle_dateend.text=""112 mle_remark.text=""113 114 update room /将登记的房间状态设为“已售出”115 set r_status="已售出"116 where r_number=:r_id;117 messagebox("成功","顾客登记成功!")118 119 sle_roomid.setfocus () /将光标放到”房间号“输入120 栏6,4模块四查询顾客信息1,按姓名查询/按
34、姓名查询顾客信息string c_roomid, c_id, c_name, c_sex, c_phone, c_orderdata, c_money, c_remark /定义变量date c_orderdate, c_datestart, c_dateendint t=1string r_idiif sle_name.text="" then messagebox("error","请输入顾客姓名")returnend ifr_idi=trim(sle_name.text)lv_name.deleteitems() /清空lv控件
35、declare c_cursor cursor for /定义游标select *from customerwhere =:r_idi;open c_cursor; /打开游标if sqlca.sqlcode<>0 then messagebox("error","游标打开错误")end ifdo while truefetch c_cursorinto :c_id, :c_name, :c_sex, :c_phone, :c_orderdate, :c_money, :c_datestart, :c_dateend
36、, :c_roomid, :c_remark; /取数据到变量if sqlca.sqlcode<>0 thenexitend iflv_name.additem(string(c_id), t) /数据显示lv_name.setitem(t, 2, string(c_name)lv_name.setitem(t, 3, string(c_sex)lv_name.setitem(t, 4, string(c_phone)lv_name.setitem(t, 5, string(c_orderdate)lv_name.setitem(t, 6, string(c_money)lv_na
37、me.setitem(t, 7, string(c_datestart)lv_name.setitem(t, 8, string(c_dateend)lv_name.setitem(t, 9, string(c_roomid)lv_name.setitem(t, 10, string(c_remark) t=t+1loopclose c_cursor; /关闭游标2,按身份证号查/按身份证号查询顾客信息string c_roomid, c_id, c_name, c_sex, c_phone, c_orderdata, c_money, c_remark /定义变量date c_orderda
38、te, c_datestart, c_dateendint t=1string r_idiif sle_id.text="" then messagebox("error","请输入顾客姓名")returnend ifr_idi=trim(sle_id.text)lv_id.deleteitems() /清空lv控件declare c_cursor cursor for /定义游标select *from customerwhere customer.IDnumber=:r_idi;open c_cursor; /打开游标if sql
39、ca.sqlcode<>0 then messagebox("error","游标打开错误")end ifdo while truefetch c_cursorinto :c_id, :c_name, :c_sex, :c_phone, :c_orderdate, :c_money, :c_datestart, :c_dateend, :c_roomid, :c_remark; /取数据到变量if sqlca.sqlcode<>0 thenexitend iflv_id.additem(string(c_id), t) /数据显示
40、lv_id.setitem(t, 2, string(c_name)lv_id.setitem(t, 3, string(c_sex)lv_id.setitem(t, 4, string(c_phone)lv_id.setitem(t, 5, string(c_orderdate)lv_id.setitem(t, 6, string(c_money)lv_id.setitem(t, 7, string(c_datestart)lv_id.setitem(t, 8, string(c_dateend)lv_id.setitem(t, 9, string(c_roomid)lv_id.setite
41、m(t, 10, string(c_remark) t=t+1loopclose c_cursor; /关闭游标3,按性别查询/按性别查询顾客信息string c_roomid, c_id, c_name, c_sex, c_phone, c_orderdata, c_money, c_remark /定义变量date c_orderdate, c_datestart, c_dateendint t=1string r_sexiif ddlb_sex.text="" then messagebox("error","请输入顾客姓名")
42、returnend ifr_sexi=trim(ddlb_sex.text)lv_sex.deleteitems() /清空lv控件declare c_cursor cursor for /定义游标select *from customerwhere customer.sex=:r_sexi;open c_cursor; /打开游标if sqlca.sqlcode<>0 then messagebox("error","游标打开错误")end ifdo while truefetch c_cursorinto :c_id, :c_name,
43、:c_sex, :c_phone, :c_orderdate, :c_money, :c_datestart, :c_dateend, :c_roomid, :c_remark; /取数据到变量if sqlca.sqlcode<>0 thenexitend iflv_sex.additem(string(c_id), t) /数据显示lv_sex.setitem(t, 2, string(c_name)lv_sex.setitem(t, 3, string(c_sex)lv_sex.setitem(t, 4, string(c_phone)lv_sex.setitem(t, 5,
44、string(c_orderdate)lv_sex.setitem(t, 6, string(c_money)lv_sex.setitem(t, 7, string(c_datestart)lv_sex.setitem(t, 8, string(c_dateend)lv_sex.setitem(t, 9, string(c_roomid)lv_sex.setitem(t, 10, string(c_remark) t=t+1loopclose c_cursor; /关闭游标4,按手机号查询/按手机号查询顾客信息string c_roomid, c_id, c_name, c_sex, c_ph
45、one, c_orderdata, c_money, c_remark /定义变量date c_orderdate, c_datestart, c_dateendint t=1string r_phoneiif sle_phone.text="" then messagebox("error","请输入顾客姓名")returnend ifr_phonei=trim(sle_phone.text)lv_phone.deleteitems() /清空lv控件declare c_cursor cursor for /定义游标select *from customerwhere customer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年1和许多数学说课稿
- 2025-2026学年4和5的点数说课稿
- 船体冷加工安全培训效果考核试卷含答案
- 2025-2026学年大班拍网球说课稿
- 手风琴装配工安全技能能力考核试卷含答案
- 纺织品裁剪工安全生产规范知识考核试卷含答案
- 2025-2026学年二年级写动物说课稿反思
- 2025-2026学年七年级跳山羊教学说课稿
- 印染成品定等工创新方法知识考核试卷含答案
- 硅晶片抛光工诚信品质水平考核试卷含答案
- 3.2.1 分数除以整数 教学课件2026-2027学年人教版数学六年级上册
- 译林版七年级英语上册知识清单
- 2026秋冀少版新教材七年级上册生物学每课知识点清单
- 中国重症患者液体管理专家共识(2026版)
- 2026年全国翻译专业资格考试(CATTI)三级口译英语口译综合能力真题
- 2026国睿防务公司反无人机雷达总体工程师岗位招聘笔试历年参考题库附带答案详解
- 雨课堂学堂在线学堂云《声纳技术(中国人民解放军海军航空)》单元测试考核答案
- 重症医学临床路径标准化
- 稻盛和夫心法课件
- 雨课堂学堂在线学堂云《临床伦理与科研道德(山东大学)》单元测试考核答案
- 2025年住院医师规范化师资培训考试题附答案
评论
0/150
提交评论