SQL数据库课程设计酒店管理系统

合集下载

数据库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数据库设计报告

酒店管理系统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酒店管理系统实例

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数据库课程设计-酒店管理系统

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课程设计(VB 客房管理系统)

课程设计示例——客房管理系统设计一、课程设计的目的和意义在当今经济和商务交往日益频繁的状况下,宾馆服务行当正面临客流量骤增的压力。

越来越多的宾馆饭店都认识到传统的管理方法已经不能适合当今社会的需要,必须借助先进的计算机信息技术对宾馆服务进行管理。

“客房管理系统”可以说是整个宾馆计算机信息管理系统的中心子系统,因为宾馆最主要的功能就是为旅客提供客房。

设计客房管理这样一个系统,可以涉及到大多数SQL Server数据库的重要数据库对象、重要功能和特性,比如:视图、触发器和存储过程等。

由此,通过这个课程设计可以加深对这些SQL Server数据库知识的学习、理解,积累在实际工程应用中运用各种数据库对象的经验,使学生掌握使用应用软件开发工具开发数据库管理系统的基本方法。

在实用性方面,客房管理系统是很普遍的一种应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借鉴。

二、系统需求分析及功能设计(此部分是重点设计内容,要求按步骤进行设计——系统需求分析、系统功能设计)(该示例在此处省略了“系统需求分析”部分,各组同学们在设计时不能省略)系统功能是在实际开发设计过程中经过调研、分析用户需求,和用户一起共同确定下来的,是系统为满足用户需求所应完成的功能。

本课程设计模拟一个小型客房管理系统。

本系统要求实现以下主要功能:1、数据录入功能:在本系统中提供客人信息登记功能。

可以录入客人的姓名、性别、年龄、身份证号码、家庭住址、工作单位、来自地的地名、入住时间、预计入住天数、客房类别、客房号、离店时间以及缴纳押金金额等信息。

在客人退房时,系统根据输入的离店时间以及客房单价自动计算客人住宿费金额。

2、数据查询功能系统需要提供以下查询功能:1)查某类客房的入住情况及空房情况,显示所有该类客房空房数目和客房号。

2)根据客人姓名、来自地的地名、工作单位或家庭住址等信息查询客人信息;根据客房号查询入住客人的信息。

3)查询某个客人住宿费用情况,显示客人缴纳押金金额、实际入住天数、客房价格、实际住宿费、住宿费差额及余额等信息。

sql+delphi数据库课程设计报告-酒店管理系统

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. 酒店管理数据库实例分析:通过实际案例,分析酒店管理数据库的设计与操作。

数据库课程设计(酒店管理系统)

数据库课程设计(酒店管理系统)

数据库系统课程设计报告题目: 酒店管理系统课程代号: 0680036课程名称:数据库系统课程设计学号:姓名:班级:指导教师完成日期:2011年4月目录第一章引言第二章系统分析与设计2.1需求分析2.2结构设计2.3数据库设计第三章系统开发及实现3.1 创建主窗体3.2 创建子窗体3.3 建立公共模块第四章总结参考文献附录(附部分源代码)第一章引言酒店管理系统是现代服务行业不可缺少的一个组成环节。

酒店管理信息系统是一个由人、计算机和数据库组成的进行酒店经营管理的系统,通过对信息的收集、传递、整理、加工、维护和使用,提高管理水平和效率,从而实现酒店管理的自动化、规范化和人性化。

本文简要介绍了基于Microsoft和VB程序语言开发实现的酒店管理系统,着重阐述了该系统开发实现过程,从系统的需求分析、方案论证、模块设计、数据设计、详细设计到系统测试等各个环节都进行了较为详尽的分析和描述。

关键词:酒店管理系统、Access、数据库、VB第二章系统分析与设计2.1需求分析在进行一个项目的设计之前,首先要进行必要的需求分析。

酒店需要管理各种人员和入住信息,希望实现酒店的信息化管理,通过建立一个酒店管理系统来管理酒店的日常业务。

其完成功能如下:1、能够实现对客人的登记信息查询,包括逐个浏览,以及对客人资料的增加、删除和编辑操作。

2、能够的酒店人员值班情况进行管理。

3、管理人员也可以直接增加和删除用户信息。

系统功能模块图如图1所示。

图1 系统的功能模块图根据功能模块图设计划出的实体有散客入住实体、团队入住实体、投诉管理实体、值班管理实体。

散客入住实体E-R如图2所示。

团队入住实体E-R如图3所示投诉管理实体E-R图如图4所示值班管理实体E-R图如图5所示图2 散客入住实体E-R图图3 团队入住实体E-R图图4 投诉管理实体E-R图图5 值班管理实体E-R图2.2结构设计使用windows操作系统、开发维护系统即visual basic软件系统、一套数据库系统Access即可。

酒店管理系统数据库课程设计

酒店管理系统数据库课程设计

酒店管理系统数据库课程设计1. 引言随着社会经济的发展,旅游业蓬勃发展,酒店行业也迅速兴起。

传统的手动管理方式已经不能满足酒店的日常运营需求,因此,开发一个高效、可靠的酒店管理系统是至关重要的。

酒店管理系统数据库课程设计旨在介绍如何设计和实现这样一个系统。

2. 系统需求分析2.1 功能需求•酒店客房管理:包括客房信息管理、价格设定、客房状态管理等功能。

•预订管理:允许客户在线预订客房,并能够根据客户需求进行自动匹配。

•入住管理:管理客户入住信息,包括登记、分配房间、入住、退房等操作。

•订单管理:处理客户预订和入住订单,包括生成订单、修改订单、取消订单等。

•财务管理:统计和管理客房收入、客户付款记录等财务信息。

•销售报表:生成各类报表,如入住率报表、销售额报表等,以帮助酒店管理者做出决策。

2.2 数据库需求•客户信息表:包括客户ID、姓名、性别、联系电话、证件号码等字段。

•客房信息表:包括客房ID、类型、价格、状态等字段。

•订单信息表:包括订单ID、客户ID、客房ID、入住日期、离店日期等字段。

•支付信息表:包括订单ID、支付方式、付款金额、付款日期等字段。

3. 数据库设计3.1 实体关系模型3.2 数据库表设计3.2.1 客户信息表字段名数据类型描述customer_id int 客户ID,主键name varchar 姓名gender varchar 性别phone varchar 联系电话id_number varchar 证件号码………3.2.2 客房信息表字段名数据类型描述room_id int 客房ID,主键type varchar 类型price decimal 价格status varchar 状态………3.2.3 订单信息表字段名数据类型描述order_id int 订单ID,主键customer_id int 客户ID,外键room_id int 客房ID,外键check_in date 入住日期check_out date 离店日期………3.2.4 支付信息表字段名数据类型描述payment_id int 支付ID,主键order_id int 订单ID,外键method varchar 支付方式amount decimal 付款金额date date 付款日期………4. 系统实现4.1 系统架构酒店管理系统采用客户端-服务器模式进行设计和实现。

MySQL酒店管理系统课课程设计

MySQL酒店管理系统课课程设计

MySQL酒店管理系统课课程设计一、教学目标本课程旨在通过学习MySQL酒店管理系统,使学生掌握数据库的基本概念、数据库的设计与使用、SQL语言及其在酒店管理中的应用。

通过本课程的学习,学生应能理解数据库的基本原理,熟练使用MySQL数据库管理系统,掌握SQL语言,能独立设计和实现一个简单的酒店管理系统。

具体来说,知识目标包括:1.理解数据库的基本概念,了解数据库的发展历程。

2.掌握数据库的设计原则和方法。

3.熟悉MySQL数据库管理系统的基本操作。

4.掌握SQL语言的基本语法和用法。

技能目标包括:1.能使用MySQL数据库管理系统进行数据库的创建、表的创建、数据的插入、查询和删除等基本操作。

2.能使用SQL语言进行复杂查询和数据操作。

3.能独立设计和实现一个简单的酒店管理系统。

情感态度价值观目标包括:1.培养学生对数据库技术的兴趣和好奇心,激发学生学习数据库的热情。

2.培养学生独立思考和解决问题的能力,培养学生的创新精神。

3.培养学生团队协作的精神,培养学生的沟通能力和合作意识。

二、教学内容本课程的教学内容主要包括四个部分:数据库的基本概念、数据库的设计与使用、SQL语言及其在酒店管理中的应用。

第一部分:数据库的基本概念。

包括数据库的定义、特点、基本术语等。

第二部分:数据库的设计与使用。

包括数据库的设计原则、设计方法、数据库的创建和管理等。

第三部分:SQL语言。

包括SQL语言的基本语法、数据定义语言、数据操纵语言、数据查询语言等。

第四部分:MySQL酒店管理系统的设计与实现。

包括酒店管理系统的需求分析、系统设计、系统实现等。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、案例分析法、实验法等。

讲授法:通过讲解数据库的基本概念、原理和SQL语言的语法,使学生掌握基本知识和技能。

案例分析法:通过分析酒店管理系统的实际案例,使学生理解数据库在酒店管理中的应用,提高学生的实际操作能力。

SQL数据库课程设计宾馆房间管理系统

SQL数据库课程设计宾馆房间管理系统

SQL数据库课程设计宾馆房间管理系统1.1课程设计目的 (1)1.2课程设计环境 ........................................................ 1 1.3主要参考资料 ........................................................ 1 1.4课程设计内容及要求 .. (1)2.1数据库设计 (2)2.1.1需求分析 (2)2.1.2概念设计 (6)2.1.3逻辑设计 (8)2.1.4物理设计 (8)2.1.5数据库实现 .................................................... 9 2.2程序设计 .. (11)2.2.1概要设计 (11)2.2.2程序实现 (12)本课程设计是软件工程专业的一门核心骨干课,是本专业学生必须学习和掌握的基本专业课程。

本实践课的主要目的:1、掌握运用数据库原理进行系统分析和设计的方法;2、掌握关系数据库的设计方法;3、掌握利用SQL Server 2000技术;4、掌握应用程序对数据库的访问方法。

硬件:每人一台PC机软件:Windows XP/2000。

数据库可以选用: Microsoft SQL server 2000,编程语言为c#.net。

[1]张国雨.SQL Server 2000实例精选.北京:工业出版社 2006[2]李昆.SQL Server 2000课程设计案例.上海:中国水利水电出版社2005一、内容1.要求根据数据库原理,按照数据库系统设计的步骤和规范,完成各阶段的设计内容。

2.需求分析具体实际,数据流图、数据字典、关系模型要正确规范3.在sql server2000 上实现设计的数据库模型。

4.对应用程序进行概要设计。

5.用C#.NET实现简单的调用。

二、要求课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。

数据库课程设计(酒店管理系统)

数据库课程设计(酒店管理系统)

物品管理
管理客房内的物品,如床单、毛巾、洗漱用 品等,确保物品充足且干净卫生。
餐饮娱乐模块
餐厅管理
管理酒店餐厅的菜品、价格、库存等信息,提供点餐和结账服务。
娱乐设施管理
管理酒店娱乐设施的使用情况,如健身房、游泳池、桑拿房等。
预订服务
为客人提供餐饮和娱乐设施的预订服务,确保客人能够顺利享受相关服务。
THANKS
物理结构设计
存储介质选择
选择合适的存储介质,如硬盘、SSD等。
数据文件组织
确定数据文件的存储方式和组织方式,如分区、索引等。
数据备份与恢复策略
设计数据备份和恢复策略,确保数据安全可靠。
04
系统功能实现
前台接待模块
入住登记
记录客人入住信息,如姓名、证件号码、入 住日期、离店日期等。
换房处理
在客人需要或酒店房间状态变化时,为客人 更换房间。
06
课程设计总结与展望
设计成果总结
系统功能实现
成功构建了酒店管理系统,实现了客房管理、预订管理、 入住管理、结算管理等核心功能,满足了酒店日常运营的 基本需求。
数据库设计
合理设计了数据库结构,实现了数据的高效存储和查询, 保证了系统的稳定性和可靠性。
用户界面优化
提供了简洁、直观的用户界面,方便用户快速上手和高效 操作。
压力测试 模拟多用户同时访问系统的情况 ,测试系统在高负载下的性能和 稳定性。
测试结果分析
功能缺陷
01
记录在测试过程中发现的功能缺陷,包括界面显示错误、功能
逻辑错误等。
性能瓶颈
02
分析系统性能测试结果,找出性能瓶颈,如数据库查询效率、
服务器响应速度等。

客房管理系统VBSQL样本

客房管理系统VBSQL样本

数据库课程设计报告客房管理系统时间:-6-27客房管理系统一、课程设计目和意义在当今经济和商务交往日益频繁状况下,宾馆服务行业正面临客流量骤增压力。

越来越多宾馆饭店都结识到老式管理办法已经不能适合当今社会需要,必要借助先进计算机信息技术对宾馆服务进行管理。

“客房管理系统”可以说是整个宾馆计算机信息系统中心子系统,由于宾馆最重要功能就是为旅客提供客房。

设计客房管理这样一种系统,可以涉及到大多数SQL Server数据库重要数据库对象、重要功能和特性,例如:视图、触发器和存储过程等。

由此,通过这个课程设计可以加深对这些SQL Server数据库知识学习、理解,积累在实际工程应用中运用各种数据库对象经验,使学生掌握使用应用软件开发工具开发数据库管理系统基本办法。

在实用性方面,客房管理系统是很普遍一种应用,选取该系统作为课程设计也可觉得学生后来也许遇到实际开发提供借鉴。

本课程设计重要目是学习和练习SQL Server数据库实际应用,因此选取SQL Server 作为数据库服务器。

二、需求分析系统重要实现对客房管理功能。

重要有管理员登陆、客户登记、房间管理、客户查询、房间查询、收入记录、管理员信息管理。

系统总体设计图如下:三、概念构造设计(E-R图)四、逻辑构造设计将E-R图转换成关系模式:管理员(编号,账号,密码,权限)房间(编号,类型,价格,状态,入住客户编号)客户(编号,姓名,性别,年龄,身份证号,住址,入住时间,预测天数,房间编号,退房时间,押金,住宿费,登记人)关系规范化:均已达到第三范式五、数据实行与维护1、建立数据库打开SQL Server 公司管理器,建立数据库HotelRoom。

2、添加数据表在HotelRoom数据库中,添加表管理员信息表AdminInfo、房间信息表RoomInfo、客户信息表GuestInfo。

3、建立关系图4、创立视图CREATE VIEW dbo.ViewAdminInfo AS SELECT Aid,Aname,Alimit FROMdbo.AdminInfo 管理员信息视图CREATE VIEW dbo.ViewAllCost AS SELECT SUM(Ccost) AS AllCost FROM dbo.GuestInfo 总收入视图CREATE VIEW dbo.ViewBiaozhunCost AS SELECT SUM(ost) AS BiaozhunCost FROM dbo.GuestInfo a INNER JOIN dbo.RoomInfo b ON a.Rnum = b.Rnum WHERE (b.Rtype = '原则') 原则房收入视图CREATE VIEW dbo.ViewCost AS SELECTdbo.ViewAllCost.AllCost,dbo.ViewPutongCost.putongCost,dbo.ViewBiaozhunCost.BiaozhunCost,dbo.ViewHaohuaCost.HaohuaCost FROM dbo.ViewAllCost CROSS JOIN dbo.ViewPutongCost CROSS JOINdbo.ViewBiaozhunCost CROSS JOIN dbo.ViewHaohuaCost 收入视图CREATE VIEW dbo.ViewEmptyRoomInfo AS SELECT Rnum,Rtype,Rprice,Rstates FROM dbo.RoomInfo WHERE (Rstates = '空') 空房信息视图CREATE VIEW dbo.ViewFullRoomInfo AS SELECT dbo.RoomInfo.* FROMdbo.RoomInfo WHERE (Rstates = '满') 满房信息视图CREATE VIEW dbo.ViewGuestInfo AS SELECT dbo.GuestInfo.* FROMdbo.GuestInfo 客户信息视图CREATE VIEW dbo.ViewHaohuaCost AS SELECT SUM(ost) AS HaohuaCost FROM dbo.GuestInfo a INNER JOIN dbo.RoomInfo b ON a.Rnum = b.Rnum WHERE (b.Rtype = '豪华') 豪华房收入视图CREATE VIEW dbo.ViewPutongCost AS SELECT SUM(ost) AS PutongCost FROM dbo.GuestInfo a INNER JOIN dbo.RoomInfo b ON a.Rnum = b.Rnum WHERE (b.Rtype = '普通') 普通房收入视图CREATE VIEW dbo.ViewRoomInfo AS SELECT dbo.RoomInfo.* FROM dbo.RoomInfo 房间信息视图5、创立触发器在表GuestInfo中,创立一种触发器:CREATE TRIGGER insert_tri ON dbo.GuestInfoFOR INSERTASupdate RoomInfoset Rstates='满',Cid=(select Cid from inserted)where Rnum=(select Rnum from inserted)功能:当向表GuestInfo中插入一种客户信息时,触刊登RoomInfo某房间状态变为“满”6、备份数据库给所建立数据库进行备份六、界面设计与代码(用VB作为界面设计语言)1、登陆界面Public Sub Command1_Click() ‘拟定If Trim(DataCombo1.Text) <> "" And Trim(Text1.Text) <>"" ThenAdodc1.RecordSource = "select * from AdminInfo whereAname='" + Trim(DataCombo1.Text) + "' and Amima='" + Trim(Text1.Text) + "'"Adodc1.RefreshIf Adodc1.Recordset.RecordCount = 1 ThenAdodc1.Recordset.ClosefrmMain.ShowMe.HideElseMsgBox "错误账号或密码!",vbInformation + vbOKOnly,"错误信息"Text1.Text = ""DataCombo1.SetFocusEnd IfElseIf DataCombo1.Text = "" ThenMsgBox "账号不能为空!",vbInformation + vbOKOnly,"错误信息"DataCombo1.SetFocusElseMsgBox "密码不能为空!",vbInformation + vbOKOnly,"错误信息"Text1.SetFocusEnd IfEnd SubPrivate Sub Command2_Click() ‘取消EndEnd SubPrivate Sub Text1_KeyPress(KeyAscii As Integer) ‘在文本框按下输入事件If KeyAscii = 13 ThenCommand1_ClickEnd IfEnd SubPrivate Sub dataCombo1_KeyPress(KeyAscii As Integer) ‘在文本框按下输入事件 If KeyAscii = 13 ThenCommand1_ClickEnd IfEnd Sub2、客户登记界面Private Sub Command3_Click() ‘客户登记Private Sub Command4_Click() ‘退房结算frmGuestAdd.ShowfrmCheckOut.ShowEnd SubEnd SubPrivate Sub Command1_Click() ‘当前时间txt6.Text = Trim(Now())End SubPrivate Sub Command2_Click() ‘拟定If txt1.Text = "" Or txt2.Text = "" Or txt3.Text = "" Or txt4.Text = "" Or txt6.Text = "" Or txt8.Text = "" Or DataCombo1.Text = "" ThenMsgBox "请将蓝色某些填写完整!",vbInformation + vbOKOnly,"提示信息"If txt1.Text = "" Thentxt1.SetFocusElseIf txt2.Text = "" Thentxt2.SetFocusElseIf txt3.Text = "" Thentxt3.SetFocusElseIf txt4.Text = "" Thentxt4.SetFocusElseIf txt6.Text = "" Thentxt6.SetFocusElseIf txt8.Text = "" Thentxt8.SetFocusElseIf DataCombo1.Text = "" ThenDataCombo1.SetFocusEnd IfElseAdodc3.RecordSource = "select Aid from ViewAdminInfo where Aname='" & frmLogin.DataCombo1.Text & "'"Adodc3.RefreshDim aid As Integeraid = Adodc3.Recordset.Fields(0)Adodc4.RecordSource = "select * from GuestInfo"Adodc4.RefreshAdodc4.Recordset.AddNewAdodc4.Recordset.Fields("Cname") = txt1.TextAdodc4.Recordset.Fields("Csex") = txt2.TextAdodc4.Recordset.Fields("Cage") = txt3.TextAdodc4.Recordset.Fields("Cpnum") = txt4.TextIf txt6.Text <> "" ThenAdodc4.Recordset.Fields("Cadd") = txt5.TextEnd IfAdodc4.Recordset.Fields("Cintime") = txt6.TextIf txt7.Text <> "" ThenAdodc4.Recordset.Fields("Cday") = txt7.TextEnd IfAdodc4.Recordset.Fields("Cdeposit") = txt8.TextAdodc4.Recordset.Fields("Rnum") = DataCombo1.TextAdodc4.Recordset.Fields("Aid") = aidAdodc4.Recordset.UpdatefrmMain.Adodc1.RefreshfrmMain.DataGrid1.RefreshMsgBox "登记成功!",vbOKOnly + vbInformation,"提示信息"Unload MeEnd IfEnd SubPrivate Sub Command3_Click() ‘取消Unload MeEnd SubPrivate Sub DataCombo1_Change() ‘选取房间Adodc2.RecordSource = "select * from ViewEmptyRoomInfo where Rnum='" + Trim(DataCombo1.Text) + " '"Adodc2.RefreshSet DataGrid1.DataSource = Adodc2DataGrid1.RefreshEnd SubPrivate Sub Command1_Click() ‘查看信息If DataCombo1.Text <> "" ThenIf Command1.Caption = "查看信息" ThenAdodc1.RecordSource = "select * from ViewGuestInfo where Rnum='" & DataCombo1.Text & "'and Couttime is null"Adodc1.RefreshRichTextBox1.Text = vbCrLf + " " + "编号:" + Trim(Adodc1.Recordset.Fields(0).Value) + " " + "姓名:" + Trim(Adodc1.Recordset.Fields(1).Value) + " " + "性别:" + Trim(Adodc1.Recordset.Fields(2).Value) + " " + "年龄:" + Trim(Adodc1.Recordset.Fields(3).Value) + vbCrLf + vbCrLf + " " + "身份证号:" + Trim(Adodc1.Recordset.Fields(4).Value) + vbCrLf + vbCrLf + " " + "入住时间:" + Trim(Adodc1.Recordset.Fields(6).Value) + vbCrLf + vbCrLf + " " + "押金:" + Trim(Adodc1.Recordset.Fields(10).Value) + " 元"frame1.Caption = "显示信息-" + DataCombo1.TextDataCombo1.Enabled = FalseCommand1.Caption = "取消"Command2.Enabled = TrueElseIf Command1.Caption = "取消" Thenframe1.Caption = "显示信息"RichTextBox1.Text = ""DataCombo1.Enabled = TrueDataCombo1.Text = ""Command1.Caption = "查看信息"Command2.Enabled = FalseEnd IfElseMsgBox "房间编号不能为空!",vbOKOnly + vbInformation,"错误信息" DataCombo1.SetFocusEnd IfEnd SubPrivate Sub Command2_Click() ‘费用结算Me.HidefrmPrice.ShowEnd SubPrivate Sub Command3_Click() ‘退出Unload MeEnd SubDim time As DateDim e As IntegerPrivate Sub Command1_Click() ‘退房If MsgBox("拟定退房结帐吗?",vbOKCancel + vbInformation,"提示信息") = vbOK ThenAdodc3.RecordSource = "select Couttime,Ccost,Rnum from GuestInfo where Rnum='" & frmCheckOut.DataCombo1.Text & "'and Couttime is null" '"updata GuestInfo set Couttime=" & time & ",Ccost=" & e & ""Adodc3.RefreshDim rnum As Stringrnum = Adodc3.Recordset.Fields(2)Adodc3.Recordset.Fields(0) = timeAdodc3.Recordset.Fields(1) = eAdodc3.Recordset.UpdateAdodc4.RecordSource = "select * from RoomInfo where Rnum='" & rnum & "'"Adodc4.RefreshAdodc4.Recordset.Fields(3) = "空"Adodc4.Recordset.Fields(4) = NullAdodc4.Recordset.UpdatefrmMain.Adodc1.RefreshfrmMain.Adodc6.RefreshfrmMain.DataGrid1.RefreshMsgBox "退房成功!",vbOKOnly + vbInformation,"提示信息"Unload frmCheckOutUnload MeElseUnload frmCheckOutUnload MeEnd IfEnd SubPrivate Sub Command2_Click()Unload frmCheckOutUnload MeEnd SubPrivate Sub Form_Load() ‘费用结算窗体加载事件Adodc2.RecordSource = "select Rprice from ViewRoomInfo where Rnum=" & frmCheckOut.DataCombo1.Text & "" '查询房间价格Adodc2.RefreshDim price As Integer '房间价格price = CInt(Adodc2.Recordset.Fields(0)) '获取房间价格Label2.Caption = "房间:" + frmCheckOut.DataCombo1.Text + " " + "单价:" + CStr(price) + "元/天"Adodc1.RecordSource = "select * from ViewGuestInfo where Rnum='" & frmCheckOut.DataCombo1.Text & "'and Couttime is null" '查询客户信息Adodc1.Refreshframe1.Caption = "编号:" + Trim(Adodc1.Recordset.Fields(0).Value) + " 姓名:" + Trim(Adodc1.Recordset.Fields(1).Value) + " 性别:" + Trim(Adodc1.Recordset.Fields(2).Value) + " 年龄:" + Trim(Adodc1.Recordset.Fields(3).Value)Dim a As DoubleDim b As IntegerDim c As DoubleDim d As Integertime = Now()a = CDbl(time - Adodc1.Recordset.Fields(6)) '精准时间b = CInt(time - Adodc1.Recordset.Fields(6)) '对时间取整c = a - b '计算出不大于一天时间If c > 0 Thend = b + 1 '局限性一天算一天Elsed = bEnd Ife = d * price '计算住宿费RichTextBox1.Text = vbCrLf + " " + "入住时间:" + Trim(Adodc1.Recordset.Fields(6).Value) + vbCrLf + vbCrLf + " " + "当前时间:" + Trim(time) + vbCrLf + vbCrLf + " " + "共住 " + CStr(a) + " 天" + " " + "计 " + CStr(d) + " 天" + vbCrLf + vbCrLf + " " + "住宿费:" + CStr(e) + "元 " + "押金:" + Trim(Adodc1.Recordset.Fields(10).Value) + "元" + "应收:" + Trim(e - CInt(Adodc1.Recordset.Fields(10))) + "元"End Sub3、房间管理界面Private Sub Command7_Click()‘增长房间Command7.Enabled = FalseCommand8.Enabled = FalseCommand9.Enabled = FalseCommand10.Enabled = TrueCommand11.Enabled = Trueframe1.Enabled = Trueframe1.Caption = "增长房间"Text1.BackColor = &H80000005Text2.BackColor = &H80000005 Text3.BackColor = &H80000005 Text4.BackColor = &H80000005 Text2.Visible = False Combo3.Visible = TrueText4.Enabled = FalseText4.Text = "空"Text1.Enabled = TrueText2.Enabled = TrueText3.Enabled = TrueText1.SetFocusEnd SubPrivate Sub Command8_Click()‘修改房间Command7.Enabled = FalseCommand8.Enabled = FalseCommand9.Enabled = FalseCommand10.Enabled = TrueCommand11.Enabled = Trueframe1.Enabled = Trueframe1.Caption = "修改房间"Text1.Visible = FalseDataCombo2.Visible = TrueText2.BackColor = &H80000005Text3.BackColor = &H80000005Text4.BackColor = &H80000005Text4.Enabled = FalseText2.Enabled = FalseText3.Enabled = FalseDataCombo2.SetFocusEnd Sub Private Sub Command9_Click()‘删除房间Command7.Enabled = FalseCommand8.Enabled = FalseCommand9.Enabled = FalseCommand10.Enabled = TrueCommand11.Enabled = Trueframe1.Enabled = Trueframe1.Caption = "删除房间"Text1.Visible = FalseDataCombo2.Visible = TrueText2.BackColor = &H80000005Text3.BackColor = &H80000005Text4.BackColor = &H80000005Text2.Enabled = FalseText3.Enabled = FalseText4.Enabled = FalseDataCombo2.SetFocusEnd SubPrivate Sub DataCombo2_Change()‘Adodc5.RecordSource = "select * from ViewEmptyRoomInfo where Rnum='" +Trim(DataCombo2.Text) + " '"Adodc5.RefreshSet Text2.DataSource = Adodc5Set Text3.DataSource = Adodc5Set Text4.DataSource = Adodc5Text2.RefreshText3.Refresh Text4.RefreshIf frame1.Caption = "修改房间" Then Set Combo3.DataSource = Adodc5 Combo3.RefreshCombo3.Enabled = TrueCombo3.Visible = TrueText2.Visible = FalseText3.Enabled = TrueEnd IfEnd SubPrivate Sub Command10_Click()‘拟定If frame1.Caption = "增长房间" ThenIf Text1.Text <> "" And Combo3.Text <> "" And Text3.Text <> "" ThenIf MsgBox("拟定增长房间“" & Text1.Text & "”吗?",vbOKCancel + vbInformation,"提示信息") = vbOK ThenAdodc5.RecordSource = "select * from ViewRoomInfo where Rnum='" & Text1.Text & "'" Adodc5.RefreshIf Adodc5.Recordset.RecordCount = 1 ThenMsgBox "你输入房间编号“" & Text1.Text & "”重复!请重新输入。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();}心得体会:经过一个星期的编译原理课程设计,我们在李教授的指导下,顺利完成该课程设计。

相关文档
最新文档