SQL数据库课程设计酒店管理系统
数据库SQL实训-酒店客房管理系统

目录目录 (1)第一章系统分析 (2)一.可性行分析 (2)第二章需求分析 (2)第三章系统总体设计 (3)3.1总体设计 (3)3.2详细设计模块 (4)3.3 数据库设计 (5)3.4数据库需要分析 (5)3.4.1数据库分析 (5)3.4.2数据库概念结构设计 (7)3.4.3 数据库逻辑结构设计 (9)第四章系统代码设计及实现 (11)4.1 创建宾馆客房管理信息系统的主登录窗体 (11)4.2创建公用模块 (13)4.3 创建宾馆客房管理信息系统的主窗体 (14)4.4 创建主窗体的菜单 (15)4.5 客房标准设置 (20)4.6 客房查询 (23)4.7 住宿查询模块设计 (24)4.8 退房查询模块设计 (24)4.9 日结统计报表模块设计 (25)4.10 系统维护模块设计 (27)该模块主要用于数据恢复及备份用以保证数据安全打开系统维护-数据备份 (27)4.11 权限设置模块 (28)4.12 安全退出模块设计 (31)第五章系统的编译和发行 (31)第六章实训总结 (32)第一章系统分析一.可性行分析可行性分析是指在允许的成本、性能要求下,分析每项需求实施的可行性,提出需求实现的相关风险,包括与其它需求的冲突,对外界因素的依赖和技术障碍。
可行性分析包括操作可行性、技术可行性、经济可行性和进度可行性。
下面是对酒店管理系统的可行性分析。
1. 进度可行性:鉴于本系统的目标要求和特点,能够保证在预期的时间内完成该系统的研究和设计。
2.经济可行性:本系统开发完成后可缩减工作时间,提高工作效率,而且简单易操作,不需对使用人员进行培训,不管是在资金上还是效率上都能达到预期的效果。
3. 技术可行性:从目前比较流行的数据库开发、管理软件来看;对于比较简单的中小型数据库,和SQL Server 2000的结合无疑是在实际应用中较为成功的一种解决方案。
前者为用户提供了Windows所一贯坚持的非常友好、操作简单的用户界面.;后者则可对数据库实施操作、维护和权限识别功能,也可通过与SQL语句的结合对数据库进行更为复杂的操作。
酒店管理系统SQL数据库设计报告

信息技术学院《数据库应用实践》设计报告名称:酒店管理系统专业:计应班级:10-1学生姓名:**学号:**********一、业务流程描述酒店介绍:大致介绍下酒店的历史及其现状和未来的规划。
客房的介绍:主要介绍下酒店各个价位房间。
客房的预定:可以通过网络进行预定,预定修改,取消预订。
客房管理:预定管理、客房查询、设置房态、开房、换房、续住、退房等管理。
员工管理: 员工修改信息、人员调配。
账务管理:主要是处理酒店的日常的账务报表,收入报表(前台收入明细表、现付收入明细表)、消费报表等。
二、业务流程图或数据流程图三、E-R图四、逻辑结构设计(关系模式)旅客信息(旅客姓名,性别,身份证号,住房或预订);房间信息(房间号,房间类型,是否空房,是否预订,房价);住房记录(入住时间,身份证号,房间号);收费标准(房间类型,房价);订房记录(预订时间,预订入住时间,预订住房天数,身份证号,房间号);住房历史记录(旅客姓名,性别,身份证号,房间号,房间类型,房价,退房时间,住房天数,费用);餐厅信息(员工姓名,员工号);客房服务(员工号,员工姓名);旅客信息主键身份证号;房间信息主键房间号,外键引用收费标准表的房间类型;住房记录主键房间号,外键引用旅客信息表的身份证号,房间信息表的房间号;收费标准主键房间类型;订房记录主键房间号,外键引用旅客信息表的身份证号,房间信息表的房间号;住房历史记录主键入住时间;餐厅信息主键员工号;客房服务主键员工号;五、物理模型设计旅客信息住房记录订房记录六、相关SQL语句1. 创建数据库create database 酒店管理系统gouse 酒店管理系统go2.创建数据表(含主键、外键定义及约束性条件设计)1、收费标准表create table 收费标准表/*收费标准*/ (房间类型 char(16),房价 int not null,primary key(房间类型))2、房间信息表create table 房间信息表/*房间信息*/ (房间号 char(5),房间类型 char(16) not null,是否空房 char(5) not null,是否预订 char(5) not null,primary key(房间号),foreign key(房间类型) references 收费标准表(房间类型))3、旅客信息表create table 旅客信息表/*旅客信息*/ (旅客姓名 char(20) not null,性别 char(5),身份证号 char(20),住房或预订 char(10) not null,primary key(身份证号))4、住房记录表create table 住房记录表/*住房记录*/ (身份证号 char(20) not null,房间号 char(5),入住时间 datetime not null,primary key(房间号),foreign key(身份证号) references 旅客信息表(身份证号),foreign key(房间号) references 房间信息表(房间号))5、订房记录表create table 订房记录表/*订房记录*/ (身份证号 char(20) not null,房间号 char(5),预订时间 datetime,预订入住时间 datetime not null,预订住房天数 int,primary key( 预订时间),foreign key(身份证号) references 旅客信息表(身份证号),foreign key(房间号) references 房间信息表(房间号))6、住房历史记录表create table 住房历史记录表/*住房历史记录*/(旅客姓名 char(20),性别 char(5),身份证号 char(20),房间号 char(5) not null,房间类型 char(16),房价 int,入住时间 datetime not null,退房时间 datetime,住房天数 int,费用 int,primary key(入住时间))7、餐厅信息表create table 餐厅信息表 /*餐厅信息*/(员工姓名char(20),员工号 char(10),primary key(员工号))8、客房服务表create table 客房服务表 /*客房服务*/(员工号 char(10),员工姓名char(20),primary key(员工号))3.插入数据--1向收费标准表中插入数据insert into 收费标准表values('标间', '380')insert into 收费标准表values('套房','800')insert into 收费标准表values('特价','180')insert into 收费标准表values('单人间','280')insert into 收费标准表values('三人间','450')--2向房间信息表中插入数据insert into 房间信息表values('2008','标间','是','否')insert into 房间信息表values('3017','标间','否','否')insert into 房间信息表values('3019','特价','是','是')insert into 房间信息表values('4012','单人间','是','是')insert into 房间信息表values('2017','三人间','否','是')--3向旅客信息表中插入数据insert into 旅客信息表values('张三','男','123456789012345678','住房')insert into 旅客信息表values('李四','男','012345678912345678','订房')insert into 旅客信息表values('王五','男','987654321012345678','住房')insert into 旅客信息表values('张强','男','951564621012345678','住房')insert into 旅客信息表values('陈七','男','654987721012345678','住房')--4向住房记录表中插入数据insert into 住房记录表values('123456789012345678','2008','2012.03.21')insert into 住房记录表values('012345678912345678','3017','2012.03.12')insert into 住房记录表values('987654321012345678','3019','2012.03.25')insert into 住房记录表values('951564621012345678','2017','2012.03.24')insert into 住房记录表values('654987721012345678','4012','2012.03.29')--5向订房记录表中插入数据insert into 订房记录表values('123456789012345678','2008','2012.03.21','2012.04.02','5') insert into 订房记录表values('012345678912345678','3017','2012.03.12','2012.04.01','3') insert into 订房记录表values('987654321012345678','3019','2012.03.25','2012.04.05','10') insert into 订房记录表values('951564621012345678','2017','2012.03.24','2012.04.04','5') insert into 订房记录表values('654987721012345678','4012','2012.03.29','2012.04.07','7')--6向住房历史记录表中插入数据insert into 住房历史记录表values('张三','男','123456789012345678','2008','标间','380','2012.03.21','2012.04.05','15','5700')insert into 住房历史记录表values('王五','男','987654321012345678','3019','特价','180','2012.03.25','2012.03.28','3','540')insert into 住房历史记录表values('李四','男','012345678912345678','3017','标间','180','2012.03.12','2012.03.20','8','3040')--7向餐厅信息表中插入数据insert into 餐厅信息表values('赵六','011201')insert into 餐厅信息表values('孙阳','011202')insert into 餐厅信息表values('李九','011203')insert into 餐厅信息表values('穆云','011204')insert into 餐厅信息表values('曹丹','011205')--8向客房服务表中插入数据insert into 客房服务表values('王朝阳','010201')insert into 客房服务表values('张向荣','010202')insert into 客房服务表values('李乐','010203')insert into 客房服务表values('田达','010204')insert into 客房服务表values('周博','010205')4.创建视图(含单表和多表查询)create view 单表视图Asselect * from 旅客信息表create view多表视图Asselect 旅客姓名,房间号from 旅客信息表join住房记录表on 旅客信息表.身份证号=住房记录表.身份证号5.创建触发器或存储过程create procedure proc_旅客信息表ASselect * from旅客信息表七、参考文献数据库原理课程设计——酒店管理系统实验报告数据库应用课程—酒店管理设计报告百度文库—酒店管理数据库设计八、设计心得和体会(需要描述个人在小组设计中承担的任务和完成情况;个人小结)。
数据库原理酒店管理系统设计课程设计报告

数据库管理系统(DBMS)是提供数据存储、访问、定义和 管理功能的软件系统,如MySQL、Oracle等。
数据库设计原则
概念设计
根据需求分析结果,设计数据库的概念模 型,包括实体、属性、关系和约束等。
需求分析
在设计数据库之前,需要对酒店管 理系统的需求进行详细分析,包括 功能需求、数据需求和性能需求等
数据库设计
根据需求分析,设计酒店管 理系统数据库,包括客房、 客人、员工、预订等表,并 定义表之间的关系。
功能模块实现
按照系统设计,逐步实现各 个功能模块,包括客房管理 、客人管理、员工管理、预 订管理等。
界面设计与实现
设计简洁、直观的用户界面 ,并实现与后端的交互。
系统测试方法
黑盒测试
通过输入测试用例,检查系统输出是否符合预期 结果,验证系统功能的正确性。
实现财务报表生成 、财务分析等功能 。
前台接待模块
实现客人入住登记 、离店结算等功能 。
餐饮管理模块
实现餐厅预订、点 餐、结账等功能。
系统管理模块
实现用户管理、权 限管理、日志管理 等功能。
05
系统实现与测试
系统实现过程
系统架构搭建
采用B/S架构,前端使用 HTML、CSS、JavaScript等 技术,后端使用Java语言, 数据库采用MySQL。
。
A
B
C
D
物理设计
确定数据库的物理存储结构,包括数据的 存储方式、存储设备的选择和配置等。
逻辑设计
将概念模型转换为数据库的逻辑模型,包 括表、字段、索引和视图等数据库对象的 定义。
数据库在酒店管理系统中的作用
数据存储
数据库用于存储酒店管理系统中的各种数 据,如客人信息、房间信息、预订信息、
SQL酒店管理系统实例

数据库酒店管理系统实例(附C#界面及代码)目录第1章前言 01.1 开发背景 01.2 宾馆组织结构 01.3 系统开发方法 (1)第2章系统分析 (2)2.1 可行性分析 (2)2.2 需求分析 (2)2.2.1 业务流程分析 (2)2.2.2 数据流程分析 (3)2.2.3 系统功能分析 (4)2.2.4 系统权限分析 (4)第3章系统设计 (5)3.1 系统功能模块设计 (5)3.2 数据库设计 (5)第4章系统实现 (11)4.1 系统主界面 (11)4.2 来宾登记模块 (11)4.2.1宾客开单 (11)4.2.2 更换房间 (13)4.2.3 修改登记 (13)4.2.4 房间状态 (14)4.2.5 预定管理 (14)4.2.6 退出系统 (15)4.3 收银结账 (15)4.3.1宾客结账 (15)4.3.2合并结账 (16)4.3.3拆分结账 (17)4.4 业务查询 (18)4.4.1结账单查询 (18)4.4.2全部宾客信息查询 (19)4.4.3在店宾客消费查询 (20)4.4.4离店宾客消费查询 (21)4.5 客户管理 (21)4.5.1基本信息管理 (21)4.5.2来宾信息管理 (22)4.6 系统维护 (23)4.6.1房间项目设置 (23)4.6.2 客户类型设置 (24)4.6.3 操作员设置 (25)4.6.4 计费设置 (25)第5章系统测试 (27)第6章结论 (28)参考文献 (29)致谢 (30)附录 (31)第1章前言1.1 开发背景经济的快速发展,人们的生活水平和消费意识的提高,促进了旅游业的发展。
宾馆行业将面临着机遇和挑战。
宾馆客人管理是宾馆管理的一个重要且必须切实面对的工作,但一直以来人们使用传统的人工方式管理宾馆,这种管理方式存在着许多缺点,如:效率低、保密性差且较为烦琐,另外随着客人数量的增加,其工作量也将大大增加,这必然增加客人管理者的工作量和劳动强度,这将给客人管理信息的查找、更新和维护都带来了很多困难。
SQL数据库课程设计-酒店管理系统

苏州市职业大学课程设计任务书课程名称:《计算机语言C》起讫时间:2007—12—31至2008—1-4 院系:计算机工程系班级:07软件测试指导教师:李金祥顾小晶系主任: 宣仲良苏州市职业大学课程设计说明书名称:《计算机语言C》课程设计图书登记管理程序2007年12 月31 日至2008年1 月4 日共1周院系计算机工程系班级07软件测试姓名马宝珠系主任宣仲良教研室主任叶良指导教师李金祥顾小晶1。
需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。
拥护根据系统界面的提示信息对图书馆信息进行查询、初始化等操作系统功能需求分析描述如下:(1)查询图书:根据图书编号进行查询,读者可以浏览或查询相关图书.(2)系统主菜单:若未找到相应的书籍返回到上一级目录。
(3)图书登记:读者输入要查询的编号、出版社、作者姓名等信息,系统将进行处理。
(4)初始化:输入书号、书名、书籍的数量以空格隔开,建立新文件写入数据否则初始化失败。
(5)新书入库:可读入新书名称、编号、数量以空格隔开看是否有此类书籍。
(6)借书菜单:可输入读者编号和所借书编号或调用借书函数执行借书功能。
(7)还书菜单:可输入读者编号和所还书的编号执行还书功能,还书后修改图书库存量。
(8)保存连接数据:方便读者了解图书登记的相关信息,为图书管理人员和读者带来便利。
2.总体设计下面从系统的整体流程的功能模块系统界面及数据结构进行总体设计。
(1)总体思想本系统主要设计思想是实现图书馆的功能机管理系统信息的查询、初始化、添加新书、借书、还书等主要功能.图书登记管理情况以文件的形式储存,系统的人机接口系用简单的字符界面进行交互,系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解图书馆内的情况。
(2)系统模块结构图根据需求分析结果,图书登记管理系统可以分为三大模块:查询图书模块、图书登记管理模块、系统控制平台。
SQL课程设计(VB 客房管理系统)

课程设计示例——客房管理系统设计一、课程设计的目的和意义在当今经济和商务交往日益频繁的状况下,宾馆服务行当正面临客流量骤增的压力。
越来越多的宾馆饭店都认识到传统的管理方法已经不能适合当今社会的需要,必须借助先进的计算机信息技术对宾馆服务进行管理。
“客房管理系统”可以说是整个宾馆计算机信息管理系统的中心子系统,因为宾馆最主要的功能就是为旅客提供客房。
设计客房管理这样一个系统,可以涉及到大多数SQL Server数据库的重要数据库对象、重要功能和特性,比如:视图、触发器和存储过程等。
由此,通过这个课程设计可以加深对这些SQL Server数据库知识的学习、理解,积累在实际工程应用中运用各种数据库对象的经验,使学生掌握使用应用软件开发工具开发数据库管理系统的基本方法。
在实用性方面,客房管理系统是很普遍的一种应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借鉴。
二、系统需求分析及功能设计(此部分是重点设计内容,要求按步骤进行设计——系统需求分析、系统功能设计)(该示例在此处省略了“系统需求分析”部分,各组同学们在设计时不能省略)系统功能是在实际开发设计过程中经过调研、分析用户需求,和用户一起共同确定下来的,是系统为满足用户需求所应完成的功能。
本课程设计模拟一个小型客房管理系统。
本系统要求实现以下主要功能:1、数据录入功能:在本系统中提供客人信息登记功能。
可以录入客人的姓名、性别、年龄、身份证号码、家庭住址、工作单位、来自地的地名、入住时间、预计入住天数、客房类别、客房号、离店时间以及缴纳押金金额等信息。
在客人退房时,系统根据输入的离店时间以及客房单价自动计算客人住宿费金额。
2、数据查询功能系统需要提供以下查询功能:1)查某类客房的入住情况及空房情况,显示所有该类客房空房数目和客房号。
2)根据客人姓名、来自地的地名、工作单位或家庭住址等信息查询客人信息;根据客房号查询入住客人的信息。
3)查询某个客人住宿费用情况,显示客人缴纳押金金额、实际入住天数、客房价格、实际住宿费、住宿费差额及余额等信息。
sql+delphi数据库课程设计报告-酒店管理系统

课程设计课程:数据库题目:酒店客房管理系统专业:信息管理与信息系统班级:座号:姓名:2011年3 月5 日一、系统定义酒店客房管理系统是为了在正常运营中需要对客房资源、客人信息、消费信息、结算信息等进行管理,利用酒店客房管理信息系统对客房的各个操作进行管理,能够及时了解各个环节中信息的变更,有利于提高管理的效率。
本项目要设计和实现一个能对酒店客房租住信息,客人信息,预订信息,消费信息、结算信息的管理,实现前台操作流程较方便,清晰,高效的信息管理系统二、需求分析现在我国的中小型宾馆客房管理水平还停留在纸介质的基础上,这样的机制已不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。
而购买大型通用宾馆客房管理系统,对小型宾馆来说,又要付出昂贵的代价,而且管理项目不一定完全符合小型宾馆客房管理的要求。
因此根据企业目前实际的宾馆客房管理情况开发一套宾馆客房管理系统是十分必要的。
本系统主要具备以下五大功能: 前台操作、预定管理、财务管理、统计查询、管理设置(1)前台操作:开房、顾客信息管理、续费、换房、结账退房、客房状态、商品消费、留言板、留言板查看(2)预定管理: 预订、确认入住、预订信息修改、解除预订(3)财务管理:所有收支、客户退房清算、交接班、账面金额、(4)管理设置: 客房信息设置、财务管理、商品信息设置、操作人员信息(5)统计查询: 客房状态分类查看、入住统计逻辑模型:数据流程图客房预订系统关联图客房预订系统顶层图客房预订系统二层图三、系统设计1、概念结构设计这一设计阶段是在需求分析的基础上,设计出能满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
根据上面的设计规划出的实体有客房实体,客人实体,预订信息、入住信息、账单信息等实体。
客房信息客人信息预定房间客人入住转房退房2、逻辑结构设计1 客房信息表(客房号,状态标记,客房等级ROclass (豪华、标准、单间),全日房价格,半天房,钟点,楼层,客房概况,可住人数) )2顾客信息表Vip 表(积分,会员等级,会员号)顾客基本信息表(顾客编号,表单自动编号,顾客姓名,性别,证件类型,证件号,联系电话,通讯地址,是否为会员,会员号)3操作人员表(员工号,员工姓名,密码,加入时间,部门)4 商品消费设置(商品信息表Goods :商品名、类别、单价,是否参与积分)顾客消费明细单(客房号 , 顾客编号,消费商品数目, 商品名,类别 ,单价,是否参与积分,操作日期,操作人员号) 5留言板表(自动编号,留言人呢称,留言标题,留言文本内容,留言时间)6交班表 (操作人员号,操作人员,操作日期)7预订表(自动编号,客房号 , 顾客编号, 顾客姓名,客房类型,预存费用Brplan, 押金,预订入住时间,离店时间,预计入住人数,操作日期,员工号)8入住表 (自动编号, 客房号 , 顾客编号, 顾客姓名,,客房类型,预存费用,押金 ,是否消费商品,入住时间,预离店时间,入住人数,结账费用结账时交的费用 ,是否结账,操作日期,员工号)9 资金清算表 (客房号 , 顾客编号, 顾客姓名,客人名称,押金 ,应收费用 , 是否消费商品,实收金额,入住时间,结账日期,操作日期,操作人员号)3、系统功能模块图4、其它设计图形工具Microsoft office visio 2003 四、详细设计表格建立:create database newhotel --1 客房信息表create table Room--客房信息表(ROno varchar(8)primary key,--客房号ROflat char(4)default'空房',--状态标记ROclass varchar(20)not null,--客房等级ROclass(豪华、标准、单间)ROdayprice money,--全日房价格ROhalfprice money,--半天房ROhourprice money,--钟点ROfloot char(4)not null,--楼层ROintroduce varchar(100),--客房概况ROnumber char(4)not null,--可住人数)--2 顾客信息表create table VIP(CUVIPno int primary key,VIPrewards int default'0',--积分VIPrewards,VIPclass char(8)--会员等级VIPclass)create table Customs(CUno char(8),-- primary key ,CUnum int IDENTITY(1,1),--自动编号, --顾客编号,--触发器回滚 --利用存储过程实现CUname varchar(8),--顾客姓名CUsex char(4),--性别CUtype char(8)not null,--证件类型Cucardno char(20)unique not null,--证件号CUphone varchar(20)not null,--联系电话CUaddress varchar(40),--通讯地址CUflat bit not null,--是否为会员CUVIPno char(8)default null)--3操作人员表create table Operator(OPno varchar(20)primary key,--员工号OPname char(8),--员工姓名OPpass char(10),--密码OPdate smalldatetime,--加入时间OPdepartment varchar(30)--部门)--4 商品消费设置(商品信息表Goods:商品名、类别、单价,是否参与积分、检索码)create table Goods(GOtype char(10),-- 类别GOname varchar(20),-- 商品名GOprice money,--单价GOjifen bit,--是否参与积分)-- 顾客消费明细单create table spend(ROno varchar(8),--客房号 chanzhaoCUno char(8),SPnumber int,--消费商品数目GOname varchar(20),-- 商品名GOtype char(10),--类别 chaozhaoGOprice money,--单价GOjifen bit,--是否参与积分SPoper_date datetime,--操作日期CUoper_date OPno varchar(20),--操作人员号CUopertorforeign key(ROno) references room(ROno),foreign key(CUno ) references Customs(CUno ) foreign key(OPno )references Operator(OPno ))--5留言板表create table MessageTP(MessageID int IDENTITY(1,1),--自动编号Messageowner char(10),--留言人呢称Messagetitle char(20),--留言标题Messagetext char(100),--留言文本内容Messagetime datetime--留言时间)--6交班表create table exchange(OPno1 varchar(20),--操作人员号CUopertorOPno2 varchar(20),--操作人员号CUopertorexoper_date datetime,--操作日期CUoper_date foreign key(OPno1 )references Operator(OPno ), foreign key(OPno2 )references Operator(OPno ) )--7预订表create table Bookroom(BRplanno int IDENTITY(1,1),--自动编号ROno varchar(8),--客房号CUno char(8),CUname char(8),Rolevel varchar(20),--客房类型Rolevel (全日房价格ROdayprice、半天房价格BRplan money,--预存费用BRplan、BRdeposit money,--押金BRdepositBRplanentertime datetime,--预订入住时间BRleavetime datetime,--离店时间BRplanpersons int,--预计入住人数BRoper_date datetime,--操作日期ROoper_dateOPno varchar(20),--员工号chanzhaoforeign key(ROno)references room(ROno))drop table bookroom--8入住表create table Enterroom(ERenterno int IDENTITY(1,1),--自动编号ROno varchar(8),CUno char(8),CUname char(8),Rolevel varchar(20),--客房类型Rolevel (全日房价格半天房价格BRplan money,--预存费用BRplan、BRdeposit money,--押金BRdepositERgoflat bit,--是否消费商品ERentertime datetime,--入住时间ERleavetime datetime,--预离店时间ERpersons int,--入住人数ERmoney money,--结账费用结账时交的费用ERpaymoney bit,--是否结账ERoper_date datetime,--操作日期ROoper_dateOPno varchar(20),--员工号 canzhaoforeign key(ROno)references room(ROno),foreign key(OPno)references Operator(OPno))9所有收支信息表create table Szhistorytable (ROno varchar(8),--客房号 chanzhaoCUno char(8),CUname varchar(8),--顾客姓名chanzhaoSZneed money,--应收费用SZfactfee money,--实收金额BRdeposit money,--押金BRdepositERentertime datetime,--入住时间SZoper_date datetime,--操作日期CUoper_dateOPno varchar(20),--操作人员号CUopertorprimary key(ROno,CUno,ERentertime ),foreign key(ROno)references room(ROno),foreign key(CUno ) references Customs(CUno ),foreign key(OPno )references Operator(OPno ))资金清算表Zjqstablecreate table Zjqstable(ROno varchar(8),--客房号CUno char(8),CUname varchar(8),--客人名称BRdeposit money,--押金BRdepositSZneed money,--应收费用是否消费商品ZJfactfee money,--实收金额ERentertime datetime,--入住时间CUaccountday datetime,--结账日期ZJoper_date datetime,--操作日期CUoper_dateOPno varchar(20),--操作人员号CUopertorprimary key(ROno,CUno,CUaccountday ),foreign key(ROno)references room(ROno),foreign key(CUno ) references Customs(CUno ),foreign key(OPno )references Operator(OPno ))信息加入--1insert into Room(ROno,ROclass ,ROdayprice,ROhalfprice,ROhourprice,ROfloot,ROintroduce ,ROnumber ) values('101','豪华','500','250','50','一楼','空调',1);insert into Room(ROno,ROclass , ROdayprice,ROhalfprice ,ROhourprice,ROfloot,ROintroduce ,ROnumber )values('201','标准',300,150,30,'二楼','风扇',2);insert into Room(ROno,ROclass , ROdayprice,ROhalfprice ,ROhourprice,ROfloot,ROintroduce ,ROnumber )values('301','单间',200,100,10,'三楼','无',3);--2select*from roominsert into VIP values(1,0,'特等');insert into VIP values(2,1,'无');insert into VIP values(3,0,'中等');select*from Customsinsert intoCustoms(CUno,CUname,CUsex,CUtype,Cucardno,CUphone,CUaddress,CUflat,CU VIPno)values('1','张三','男','身份证','030510923434',,'福州',1,'1'); insert intoCustoms(CUno,CUname,CUsex,CUtype,Cucardno,CUphone,CUaddress,CUflat,CU VIPno)values('2','李四','男','身份证','030510923435',,'福州',0,null); --3insert into Operator values('00001','小红','123456','2000-05-08 ','财务');insert into Operator values('00002','小白','234567','1992-10-01 ','前台');insert into Operator values('00003','小黄','345678','2010-10-01 ','前台');--4insert into Goods values('饮料','可乐',4,1);--5drop table Szhistorytableinsert into Szhistorytable values('101','1','张三','600','200','789','2010-11-11','2010-11-11','00001');--7insert intobookroom(ROno,cuno,CUname,Rolevel,BRplan,BRdeposit,BRplanentertime ,BRleavetime ,BRplanpersons ,BRoper_date,OPno )values('101','1','张si','500','200','200','2010/10/1','2010/10/10',2,getdate(),'00001'); --8insert intoenterroom(ROno,CUno,CUname,Rolevel,BRplan,BRdeposit,ERgoflat ,ERente rtime ,ERleavetime,ERpersons ,ERmoney ,ERpaymoney ,ERoper_date,OPno ) values('101','1','张','500','200','200',1,getdate(),'2010/10/10',2,'300',0,getdate(),'000 01');insert intoenterroom(ROno,CUno,CUname,Rolevel,BRplan,BRdeposit,ERgoflat ,ERente rtime ,ERleavetime,ERpersons ,ERmoney ,ERpaymoney ,ERoper_date,OPno ) values('201','2','dfs','500','200','200',1,getdate(),'2010/10/10',2,' 300',0,getdate(),'00001');存储过程--存储过程触发器--预订转入住时候使用create procedure brproc (@ROno varchar(8)--客房号--@CUno char(8) ,--@CUname varchar(8))asupdate room set roflat ='预订'where rono=@ROnocreate procedure erproc (@ROno varchar(8)--客房号--@CUno char(8) ,--@CUname varchar(8))asupdate roon set roflat ='入住'where rono=@ROno--退房create procedure tfproc (@ROno varchar(8)--客房号)asupdate roon set roflat ='打扫'where rono=@ROno--换房create procedure hfproc (@ROno varchar(8)--客房号)asupdate room set roflat ='打扫'where rono=@ROno--续费alter procedure续费xfproc (@rono varchar(8),@num int)asupdate enterroom set brplan=brplan+@num where ROno= @ronocreate procedure退房xfproc (@rono varchar(8),@CUno char(8))asdelete from enterroom where ROno= @rono and CUno= @cunocreate procedure退房yudingxfproc (@rono varchar(8),@CUno char(8))asdelete from bookroom where ROno= @rono and CUno= @cuno-- 换房create proc换房hfproc(@rono1 varchar(8),@rono2 varchar(8),@Rolevel varchar(20))asupdate enterroom set rono =@rono2,rolevel=@Rolevel where ROno =@rono1 积分增加create procedure cuflatproc (@CUno char(8))asdeclare @num intselect @num=spnumber from spend where cuno=@cunoupdate vip set VIPrewards=VIPrewards+10*@num where CUVIPno =(select CUVIPno from customs where cuno=@cuno );用户密码登陆alter proc密码登陆(@opno char(8),@oppass char(10),@flag int output)asif exists(select*from Operator where opno=@opNo)if exists(select*from Operator where oppass=@oppass)set @flag=1elseset @flag=0elseset @flag=-1declare @flag intexec密码登陆'00001','123456',@flag outputselect @flag--用户密码修改create table Operator(OPno varchar(20)primary key,--员工号OPname char(8),--员工姓名OPpass char(10),--密码OPdate smalldatetime,--加入时间OPdepartment varchar(30)--部门 youkeneng wei shangban)alter proc密码修改(@opno char(8),@oldpass char(10),@newpass char(10),@newpass2 char(10),@flag int output)asif exists(select*from Operator where opno=@opno )if exists(select*from Operator where oppass=@oldpass) beginif @newpass=@newpass2beginupdate operator set oppass=@newpass where opno=@opnoand oppass=@oldpassset @flag=1endendelseset @flag=0elseset @flag=-1--添加进入所有支出create procedure所有支出(@ROno varchar(8),--客房号@CUno char(8),@CUname varchar(8),@SZneed money,--应收费用@SZfactfee money,--实收金额@BRdeposit money,@ERentertime datetime,--押金BRdeposit@SZoper_date datetime,--操作日期CUoper_date@OPno varchar(20))asinsert into Szhistorytablevalues( @ROno ,@CUno,@CUname,@SZneed,@SZfactfee ,@BRdeposit ,@ERentertime , @SZoper_date, @OPno );--房屋数目---空房create procedure kfs(@num int output)asselect @num=count(*)from room where roflat ='空房';declare @num as intexec kfs @num outputprint @num--入住create procedure rzs(@num int output)asselect @num=count(*)from room where roflat ='入住';declare @num as intexec rzs @num outputprint @num-- 维修create procedure wxs(@num int output)asselect @num=count(*)from room where roflat ='维修';declare @num as intexec wxs @num outputprint @num--打扫create procedure dss(@num int output)asselect @num=count(*)from room where roflat ='打扫';declare @num as intexec dss @num outputprint @num--全部create procedure qbs(@num int output)asselect @num=count(*)from room ;declare @num as intexec qbs @num outputprint @num--查看原有金额create procedure cxbrplan (@ROno varchar(8),--客房号@CUno char(8),@CUname varchar(8))asdeclare @num moneyselect @num=BRplanfrom enterroomwhere ROno= @ROno and CUno= @CUno and CUname=@CUnamereturn @num--资金清算alter proc资金清算( @rono varchar(8),@CUno char(8),@flag int output)asbegindeclare @total intdeclare @daycount intdeclare @cost intselect @cost=sum(spnumber*GOprice)from spend where cuno=@cunoselect @daycount =datediff(dd,ERentertime,getdate())fromSzhistorytable where rono=@rono and cuno=@cunoselect @total =0select @total=@daycount*(isnull(Rolevel,0))from enterroom whererono=@rono and cuno=@cunoselect @total=@total+SZneed-SZfactfee from Szhistorytable whererono=@rono and cuno=@cunoselect@total=@total+@cost from Spend where rono=@rono and cuno=@cuno set @flag=@totalenddeclare @flag intexec资金清算'101','1',@flag outputselect @flag--触发器--预订转入住时候使用create trigger dftrion bookroomfor insertasbegindeclare @rono varchar(8)select @rono=rono from insertedupdate room set roflat ='预订'where rono=@ROnoend--入住create trigger rztrion enterroomfor insert,updateasbegindeclare @rono varchar(8)select @rono=rono from insertedupdate room set roflat ='入住'where rono=@ROnoend--退房换房create trigger tftrion enterroomfor delete,updateasbegindeclare @rono varchar(8)select @rono=rono from deletedupdate room set roflat ='打扫'where rono=@ROnoendalter proc确认入住(@ROno varchar(8),@CUname char(8))asdeclare @CUno char(8),@Rolevel varchar(20),@BRplan money,@BRdeposit money,@BRplanentertime datetime,@BRleavetime datetime,@BRplanpersons int,@OPno varchar(20)select@CUno=CUno ,@Rolevel=Rolevel ,@BRplan=BRplan ,@BRdeposit=BRdeposit ,@ BRplanentertime=BRplanentertime ,@BRleavetime=BRleavetime ,@BRplanpersons =BRplanpersons from bookroomwhere ROno =@ROno and CUname =@CUnameinsert into enterroom(ROno,CUno,CUname,Rolevel,BRplan,BRdeposit,ERgoflat,ERentertime,ERlea vetime,ERpersons,ERmoney,ERpaymoney,ERoper_date, OPno )values(@rono,@cuno,@CUname,@Rolevel,@BRplan,@BRdeposit,0,getdate(),@B Rleavetime,@BRplanpersons,null,null,getdate(),@OPno )delete from bookroom where ROno =@ROno and CUname =@CUname五、系统实现与测试1、开发平台和工具选择计算机及操作系统:PC机,WindowsXP1;开发工具:Delphi运行环境: 装有SQL SERVER 2005 的系统语言:T-SQL语言2、系统测试六、课程设计总结我感觉这次的课程设计是我收获最大的一次,从刚开始的只懂部分东西,到后面完成的做完一个小软件,感觉很是开心!在整个设计过程中,对数据库的知识有了更加深入的理解!我觉得数据库的设计最重要的就是需求分析,如果这个没有做好,后面的设计经常会重新再来,或者多次修改!只有把需求分析弄清楚了,才会设计出最优的数据库,而一个数据库最重要的部分则是存储过程的实现部分,在这部分里面需要的知识太多了。
酒店管理数据库课程设计

酒店管理数据库课程设计一、课程目标知识目标:1. 理解数据库在酒店管理中的重要性,掌握数据库的基本概念和术语。
2. 学会使用数据库管理系统(如MySQL)进行基本的数据库操作,包括数据查询、插入、更新和删除。
3. 掌握数据库设计的原则和方法,能够根据酒店管理需求设计合理的数据库结构。
技能目标:1. 能够运用数据库管理系统进行酒店信息数据的存储、检索和管理。
2. 掌握SQL语言,能够编写简单的查询语句,满足酒店管理中的数据查询需求。
3. 能够运用数据库设计工具,绘制E-R图,为酒店管理系统的开发提供技术支持。
情感态度价值观目标:1. 培养学生对酒店管理专业的兴趣,激发他们主动探索数据库技术在酒店行业中应用的热情。
2. 培养学生的团队协作意识,使他们学会在数据库设计和操作过程中与他人沟通、合作。
3. 增强学生的信息意识,使他们认识到数据在酒店管理中的价值,养成良好的数据管理和保护意识。
本课程针对高年级学生,他们在前期的学习中已经掌握了计算机基础和酒店管理基本理论,具备一定的实际操作能力。
课程性质为理论与实践相结合,旨在通过实际操作,让学生将数据库知识应用于酒店管理领域。
教学要求注重培养学生的动手能力、分析问题和解决问题的能力,以便他们在未来工作中能够更好地应对酒店管理中的数据挑战。
通过本课程的学习,学生将具备酒店管理数据库设计与操作的基本能力,为从事相关工作奠定基础。
二、教学内容1. 数据库基本概念:介绍数据库的定义、发展历程、分类及其在酒店管理中的应用场景。
教材章节:第一章 数据库基础2. 数据库管理系统:学习MySQL数据库的安装、配置以及基本操作。
教材章节:第二章 数据库管理系统3. SQL语言:讲解SQL语言的语法,包括数据查询、插入、更新、删除等操作。
教材章节:第三章 SQL语言4. 数据库设计:介绍数据库设计原则、方法,学习如何绘制E-R图,以及如何将酒店管理需求转化为数据库结构。
教材章节:第四章 数据库设计5. 酒店管理数据库实例分析:通过实际案例,分析酒店管理数据库的设计与操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
苏州市职业大学课程设计任务书课程名称:《计算机语言C》起讫时间:2007-12-31至2008-1-4院系:计算机工程系班级:07软件测试指导教师:李金祥顾小晶系主任:宣仲良苏州市职业大学课程设计说明书名称:《计算机语言C》课程设计图书登记管理程序2007年12 月31 日至2008年1 月4 日共1周院系计算机工程系班级07软件测试姓名马宝珠系主任宣仲良教研室主任叶良指导教师李金祥顾小晶1.需求分析图书登记管理系统作为一个应用软件将为学校的老师和学生提供一个对学校图书馆深入了解并借阅、还书的平台。
拥护根据系统界面的提示信息对图书馆信息进行查询、初始化等操作系统功能需求分析描述如下:(1)查询图书:根据图书编号进行查询,读者可以浏览或查询相关图书。
(2)系统主菜单:若未找到相应的书籍返回到上一级目录。
(3)图书登记:读者输入要查询的编号、出版社、作者姓名等信息,系统将进行处理。
(4)初始化:输入书号、书名、书籍的数量以空格隔开,建立新文件写入数据否则初始化失败。
(5)新书入库:可读入新书名称、编号、数量以空格隔开看是否有此类书籍。
(6)借书菜单:可输入读者编号和所借书编号或调用借书函数执行借书功能。
(7)还书菜单:可输入读者编号和所还书的编号执行还书功能,还书后修改图书库存量。
(8)保存连接数据:方便读者了解图书登记的相关信息,为图书管理人员和读者带来便利。
2.总体设计下面从系统的整体流程的功能模块系统界面及数据结构进行总体设计。
(1)总体思想本系统主要设计思想是实现图书馆的功能机管理系统信息的查询、初始化、添加新书、借书、还书等主要功能。
图书登记管理情况以文件的形式储存,系统的人机接口系用简单的字符界面进行交互,系统的设计方法是结构化实际方法,系统用C语言进行开发用户可以清晰的了解图书馆内的情况。
(2)系统模块结构图根据需求分析结果,图书登记管理系统可以分为三大模块:查询图书模块、图书登记管理模块、系统控制平台。
系统模块结构如图:3、概要设计㈠系统主菜单。
显示系统的主菜单,里面有相应的功能代码,根据选择各功能代码进入不同的界面。
功能主要包括:退出系统、查询图书、借书、还书、新书入库。
㈡查询图书信息进入此菜单功能模块,输入您要查询的图书的编号、名称、作者、出版日期等。
图书查询模块流程如图:㈢图书登记管理模块根据功能选择进行操作,主要包括建立图书入库文件的保存与修改,借书、还书文件的建立与修改。
对系统进行初始化。
4、数据结构设计图书信息和读者信息的数据结构系统云运用结构体来存放图书的编号、作者、出版、借书、还书、新书入库,读者的编号、姓名、借书名称等信息。
下面是结构体的简单描述:typedef struct bk{char book_num[11];char book_name[41];int book_kc;int book_xc;struct bk * next;}book;typedef struct rd{char reader_num[11];char reader_name[11];char reader_book_num[11];struct rd * next ;}reader;5、系统流程描述系统进行初始化后,根据提示输入图书、读者的相关信息后系统进入了主菜单,根据选择相应的功能代码进入不同的功能菜单。
主要包括退出系统、新书入库、图书查询、借书、还书、输出所有信息功能。
选择代码按回车键即可进入,进入功能模块后出现了不同选象,下面以进入借宿书模块为例:进入借书模块后系统将提醒选择1可返回主菜单,选择2可正式进入借书系统。
选择2后,系统提示“请输入所借书的相关信息,读者的相关信息。
6、界面设计一、系统主菜单void M_Form(){ char ch;printf("\nThe main window of books manage ");printf("\n 0:Exit");printf("\n 1:New book instore");printf("\n 2:Book check");printf("\n 3:Borrow book check in");printf("\n 4:Return book check in");printf("\n 5:Out put all information");do{printf("\n\n Please chose the code:");scanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5');switch(ch){ case'0':exit(0);case'1':Form_Insert_New_Book();break;case'2':Form_Find_Book();break;case'3':Form_Borrow_Book();break;case'4':Form_Return_Book();break;case'5':load_data();print_book(h_book);print_reader(h_reader);M_Form(); default:printf("error\n");exit(0);}}二、系统初始化模块void init_book(){ book ba[3];FILE *fp;int i;printf("\n System will initialize,Book initialize module :\n"); printf("\n Enter 3books’num,name,quantity(Space out with blank):\n ");for(i=0;i<3;i++)scanf("%s%s%d",ba[i].book_num,ba[i].book_name,&ba[i].book_kc);for(i=0;i<3;i++) {ba[i].book_xc=ba[i].book_kc;}if((fp=fopen("book.dat","wb"))==NULL){ printf("Book 't be founded ,Initialize fail!Please restar system !\n"); return; }for(i=0;i<3;i++){ if(fwrite(&ba[i],sizeof(struct bk),1,fp)!=1){ printf("\Write date wrong!\n"); exit(0); }}fclose(fp);}三、新书入库模块void Insert_New_Book(char book_num[],char book_name[],int number) { struct bk *book_fp;struct bk *p,*q,*t;q=p=h_book;while(p!=NULL&&strcmp(p->book_num,book_num)!=0) { q=p;p=p->next; }if(strcmp(p->book_num,book_num)==0){ printf("\n\t\tThis num already exist,Please reorder!\n");return;}t=(struct bk *)malloc(sizeof(struct bk));strcpy(t->book_num,book_num);strcpy(t->book_name,book_name);t->book_kc=t->book_xc=number;q->next=t;t->next=NULL;if((book_fp=fopen("book.dat","ab"))==NULL){ printf("Book 't be founded ,Initialize fail!Please restar system!\n"); return; }fwrite(t,sizeof(struct bk),1,book_fp);fclose(book_fp);}void print_book(struct bk *h){ struct bk *p;p=h;printf("\n\tBook num\tBook name\tStore quantity\tNow quantity\n"); while(p!=NULL){ printf(" %10s\t %10s %10d\t%10d\n",p->book_num,p->book_name,p->book _kc,p->book_xc);p=p->next;}}四、借书模块void Borrow_Book(char reader_num[],char book_num[]){ struct bk *book_p;struct rd *reader_p;book_p=h_book;while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0)book_p=book_p->next;if(book_p==NULL){ printf("\n\tThis num of book no exist!\n");Form_Borrow_Book();}reader_p=h_reader;while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0)) reader_p=reader_p->next;if(reader_p==NULL){ printf("\n\tThis num of reader no exist!\n");Form_Borrow_Book();}else if(strcmp(reader_p->reader_book_num,"0")!=0){ printf("\n\talready reach the top,Can't borrow again!\n"); Form_Borrow_Book();}else {book_p->book_xc=book_p->book_xc-1;strcpy(reader_p->reader_book_num,book_p->book_num);save();load_data();}Form_Borrow_Book();}五、还书功能模块void Return_Book(char reader_num[],char book_num[]){ struct bk *book_p;struct rd *reader_p;book_p=h_book;while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0)book_p=book_p->next;if(book_p==NULL){ printf("\n\tThis num of book no exist!\n");Form_Return_Book();}reader_p=h_reader;while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0)) reader_p=reader_p->next;if(reader_p==NULL){ printf("\n\ttThis num of reader no exist!\n");Form_Return_Book();}else if(strcmp(reader_p->reader_book_num,book_num)!=0){ printf("\n\tReader didn't borrow this book\n");Form_Return_Book();}else {book_p->book_xc=book_p->book_xc+1;strcpy(reader_p->reader_book_num,"0");save();load_data();}Form_Return_Book();}六、输出所有信息模块void Form_Insert_New_Book(){ char ch;struct bk t;printf("\n New book instor module,Please chose the code:\n"); printf(" 0:Return main menu\n");printf(" 1:New book instore");do{printf("\n\n Please chose the code:");scanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5'); switch(ch){ case'0':M_Form();break;case'1':{ printf(" \nEnter book's num name quantity(Space out with blank):");scanf("%s%s%d",t.book_num,t.book_name,&t.book_kc); fflush(stdin);Insert_New_Book(t.book_num,t.book_name,t.book_kc); Form_Insert_New_Book();}default:printf("error\n");exit(0);}}程序清单:#include<stdio.h>#include<graphics.h>#include<math.h>#include<string.h>typedef struct bk{char book_num[11];char book_name[41];int book_kc;int book_xc;struct bk * next;}book;typedef struct rd{char reader_num[11];char reader_name[11];char reader_book_num[11];struct rd * next ;}reader;struct bk * h_book,* h_reader;void Form_Insert_New_Book();void Form_Find_Book();void Form_Borrow_Book();void Form_Return_Book();void Find_Book(char *);void Insert_New_Book(char *,char * ,int );void Borrow_Book(char *,char *);void Return_Book(char *,char *);void print_book(struct bk *);void print_reader(struct rd *);void load_data();void init_reader();void init_book();void save();void M_Form(){ char ch;printf("\nThe main window of books manage ");printf("\n 0:Exit");printf("\n 1:New book instore");printf("\n 2:Book check");printf("\n 3:Borrow book check in");printf("\n 4:Return book check in");printf("\n 5:Out put all information");do{printf("\n\n Please chose the code:");scanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5'); switch(ch){ case'0':exit(0);case'1':Form_Insert_New_Book();break;case'2':Form_Find_Book();break;case'3':Form_Borrow_Book();break;case'4':Form_Return_Book();break;case'5':load_data();print_book(h_book);print_reader(h_reader);M_Form(); default:printf("error\n");exit(0);}}void Form_Find_Book(){ char ch;char book_num[11];printf("\n Book check module,Please chose the code:\n");printf(" 0:Return to main menu\n");printf(" 1:Book check");do{printf("\n\n Please chose the code:");scanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1');switch(ch){ case'0':M_Form();break;case'1':{ printf(" \nEnter need book’s num:");scanf("%s",book_num);fflush(stdin);Find_Book(book_num);Form_Find_Book();}default:printf("error\n");exit(0);}}void Find_Book(char book_num[]){ struct bk *p;p=h_book;while(p!=NULL&&strcmp(p->book_num,book_num)!=0)p=p->next;if(p==NULL) printf("\n\tThe num of book no exist !\n");else{ printf("\n\tBook num\tBook name\tStoreroom quantity\tNow quantity \n");printf(" %10s\t %10s\t %d\t %d\t\n",p->book_num,p->book_name,p->book_ kc,p->book_xc);}getch();}void init_book(){ book ba[3];FILE *fp;int i;printf("\n System will initialize,Book initialize module :\n"); printf("\n Enter 3books’num,name,quantity(Space out with blank):\n ");for(i=0;i<3;i++)scanf("%s%s%d",ba[i].book_num,ba[i].book_name,&ba[i].book_kc);for(i=0;i<3;i++) {ba[i].book_xc=ba[i].book_kc;}if((fp=fopen("book.dat","wb"))==NULL){ printf("Book 't be founded ,Initialize fail!Please restar system !\n"); return; }for(i=0;i<3;i++){ if(fwrite(&ba[i],sizeof(struct bk),1,fp)!=1){ printf("\Write date wrong!\n"); exit(0); }}fclose(fp);}void init(){ int drive=DETECT,mode=0;initgraph(&drive,&mode,"");init_book();init_reader();}void Insert_New_Book(char book_num[],char book_name[],int number) { struct bk *book_fp;struct bk *p,*q,*t;q=p=h_book;while(p!=NULL&&strcmp(p->book_num,book_num)!=0) { q=p;p=p->next; } if(strcmp(p->book_num,book_num)==0){ printf("\n\t\tThis num already exist,Please reorder!\n");return;}t=(struct bk *)malloc(sizeof(struct bk));strcpy(t->book_num,book_num);strcpy(t->book_name,book_name);t->book_kc=t->book_xc=number;q->next=t;t->next=NULL;if((book_fp=fopen("book.dat","ab"))==NULL){ printf("Book 't be founded ,Initialize fail!Please restar system!\n"); return; }fwrite(t,sizeof(struct bk),1,book_fp);fclose(book_fp);}void print_book(struct bk *h){ struct bk *p;p=h;printf("\n\tBook num\tBook name\tStore quantity\tNow quantity\n"); while(p!=NULL){ printf(" %10s\t %10s %10d\t%10d\n",p->book_num,p->book_name,p->book _kc,p->book_xc);p=p->next;}}void print_reader(struct rd *h){ struct rd *p;p=h;printf("\n\tReader's num\tRead's name\tThe num of his borrow\n"); while(p!=NULL){ printf(" %10s\t %10s %10s\n",p->reader_num,p->reader_name,p->reader _book_num);p=p->next;}getch();}void Form_Borrow_Book(){ char ch;char book_num[11],reader_num[11];printf("\n Book borrow module,Please chose the code:\n");printf(" 0:Return main menu\n");printf(" 1:Book borrow\n");do{printf("\n\n Please chose the code:");scanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1');switch(ch){ case'0':M_Form();break;case'1':{ printf(" \nEnter read's num and borrow book's num:(Space out with blank)");scanf("%s%s",reader_num,book_num);fflush(stdin);Borrow_Book(reader_num,book_num);Form_Borrow_Book();}default:printf("error\n");exit(0);}}void Borrow_Book(char reader_num[],char book_num[]){ struct bk *book_p;struct rd *reader_p;book_p=h_book;while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0)book_p=book_p->next;if(book_p==NULL){ printf("\n\tThis num of book no exist!\n");Form_Borrow_Book();} reader_p=h_reader;while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0)) reader_p=reader_p->next;if(reader_p==NULL){ printf("\n\tThis num of reader no exist!\n");Form_Borrow_Book();}else if(strcmp(reader_p->reader_book_num,"0")!=0){ printf("\n\talready reach the top,Can't borrow again!\n");Form_Borrow_Book();}else {book_p->book_xc=book_p->book_xc-1;strcpy(reader_p->reader_book_num,book_p->book_num);save();load_data();}Form_Borrow_Book();}void Form_Return_Book(){ char ch;char book_num[11],reader_num[11];printf("\n Return book module,Please chose the code:\n");printf(" 0:Return main menu\n");printf(" 1:Return book\n");do{printf("\n\n Please chose the code:");scanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1');switch(ch){ case'0':M_Form();break;case'1':{ printf(" \nEnter reader's num and return book's num:(Space out with blank)");scanf("%s%s",reader_num,book_num);fflush(stdin);Return_Book(reader_num,book_num);Form_Return_Book();}default:printf("error\n");exit(0);}} void Return_Book(char reader_num[],char book_num[]){ struct bk *book_p;struct rd *reader_p;book_p=h_book;while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0)book_p=book_p->next;if(book_p==NULL){ printf("\n\tThis num of book no exist!\n");Form_Return_Book();}reader_p=h_reader;while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0)) reader_p=reader_p->next;if(reader_p==NULL){ printf("\n\ttThis num of reader no exist!\n");Form_Return_Book();}else if(strcmp(reader_p->reader_book_num,book_num)!=0){ printf("\n\tReader didn't borrow this book\n");Form_Return_Book();}else {book_p->book_xc=book_p->book_xc+1;strcpy(reader_p->reader_book_num,"0");save();load_data();}Form_Return_Book();}void init_reader(){ FILE *fp;reader ra[3];int i;printf("\n System will initialize reader:\n");printf("\n Enter 3 readers' num and name(Space out with blank):\n "); for(i=0;i<3;i++)scanf("%s%s",ra[i].reader_num,ra[i].reader_name);for(i=0;i<3;i++)strcpy(ra[i].reader_book_num,"0");if((fp=fopen("reader.dat","wb"))==NULL){ printf("Reader's 't be founded,initialize fail!Please restar system!\n"); return; }for(i=0;i<3;i++){ if(fwrite(&ra[i],sizeof(struct rd),1,fp)!=1){ printf("\Write date wrong!\n"); exit(0); }}} void Form_Insert_New_Book(){ char ch;struct bk t;printf("\n New book instor module,Please chose the code:\n"); printf(" 0:Return main menu\n");printf(" 1:New book instore");do{printf("\n\n Please chose the code:");scanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5'); switch(ch){ case'0':M_Form();break;case'1':{ printf(" \nEnter book's num name quantity(Space out with blank):");scanf("%s%s%d",t.book_num,t.book_name,&t.book_kc);fflush(stdin);Insert_New_Book(t.book_num,t.book_name,t.book_kc);Form_Insert_New_Book();}default:printf("error\n");exit(0);}}void load_data(){ struct bk *book_p1,*book_p2,*book_p3;struct rd *reader_p1,*reader_p2,*reader_p3;FILE *fp_book,*fp_reader;fp_book=fopen("book.dat","rb");book_p1=(struct bk *)malloc(sizeof(struct bk));fread(book_p1,sizeof(struct bk),1,fp_book);h_book=book_p3=book_p2=book_p1;while(! feof(fp_book)){ book_p1=(struct bk *)malloc(sizeof(struct bk));fread(book_p1,sizeof(struct bk),1,fp_book);book_p2->next=book_p1;book_p3=book_p2;book_p2=book_p1;}book_p3->next=NULL;free(book_p1);fclose(fp_book);fp_reader=fopen("reader.dat","rb");reader_p1=(struct rd *)malloc(sizeof(struct rd));fread(reader_p1,sizeof(struct rd),1,fp_reader);h_reader=reader_p3=reader_p2=reader_p1;while(! feof(fp_reader)){ reader_p1=(struct rd *)malloc(sizeof(struct rd));fread(reader_p1,sizeof(struct rd),1,fp_reader);reader_p2->next=reader_p1;reader_p3=reader_p2;reader_p2=reader_p1;}reader_p3->next=NULL;free(reader_p1);fclose(fp_reader);}void save(){ FILE *book_fp,*reader_fp;struct bk *book_p;struct rd *reader_p;book_p=h_book; reader_p=h_reader;if((book_fp=fopen("book.dat","wb"))==NULL){ printf("Book 't be founded,Initialize fail!Please restar system!\n"); return; }while(book_p!=NULL){ if(fwrite(book_p,sizeof(struct bk),1,book_fp)!=1){ printf("\Write date wrong!\n"); exit(0); }book_p=book_p->next;}fclose(book_fp);if((reader_fp=fopen("reader.dat","wb"))==NULL){ printf("Book 't be founded,Initialize fail!Please restar system!\n"); return; }while(reader_p!=NULL){ if(fwrite(reader_p,sizeof(struct rd),1,reader_fp)!=1){ printf("\Write date wrong!\n"); exit(0); }reader_p=reader_p->next;}fclose(reader_fp);}main(){ FILE * fp;struct bk temp;clrscr();h_book=NULL;h_reader=NULL;if((fp=fopen("book.dat","r"))==NULL)init();fclose(fp);load_data();M_Form();save();getch();}心得体会:经过一个星期的编译原理课程设计,我们在李教授的指导下,顺利完成该课程设计。