SQL数据库课程设计,酒店管理系统
酒店预订管理系统--数据库课程设计

酒店预订管理系统--数据库课程设计介绍
本文档旨在设计一个酒店预订管理系统,该系统将使用数据库来存储和管理酒店预订信息。
系统将实现以下功能:
- 客户信息管理:包括客户姓名、联系方式、住宿历史等。
- 酒店房间管理:包括房间类型、价格、房间状态等。
- 预订管理:客户可以预订酒店房间,并记录预订状态、预订日期等。
- 入住管理:当客户到达并入住时,将记录入住日期和房间状态。
- 结账管理:客户退房后,系统将自动结算费用并生成账单。
数据库设计
本系统将使用关系型数据库来存储数据。
下面是系统的数据库设计:
数据表
客户表(Customers)
房间表(Rooms)
预订表(Reservations)
入住表(Checkins)
账单表(Bills)
数据库关系
系统的数据库关系如下:
- Customers表与Reservations表之间是一对多关系,一个客户
可以有多个预订。
- Rooms表与Reservations表之间是一对多关系,一个房间可以有多个预订。
- Reservations表与Checkins表之间是一对一关系,一个预订只有一个入住记录。
- Reservations表与Bills表之间是一对一关系,一个预订只有
一个账单。
总结
本文档介绍了一个酒店预订管理系统的数据库课程设计。
通过
这个系统,我们可以实现客户信息管理、房间管理、预订管理、入
住管理和结账管理等功能。
通过合理的数据库设计和表之间的关系,我们可以实现数据的存储和管理,为酒店提供高效的预订管理服务。
酒店管理系统SQL数据库设计报告

信息技术学院《数据库应用实践》设计报告名称:酒店管理系统专业:计应班级:10-1学生姓名:刘斌学号:18一、业务流程描述酒店介绍:大致介绍下酒店的历史及其现状和未来的规划。
客房的介绍:主要介绍下酒店各个价位房间。
客房的预定:可以通过网络进行预定,预定修改,取消预订。
客房管理:预定管理、客房查询、设置房态、开房、换房、续住、退房等管理。
员工管理: 员工修改信息、人员调配。
账务管理:主要是处理酒店的日常的账务报表,收入报表(前台收入明细表、现付收入明细表)、消费报表等。
二、业务流程图或数据流程图三、E-R图四、逻辑结构设计(关系模式)旅客信息(旅客姓名,性别,身份证号,住房或预订);房间信息(房间号,房间类型,是否空房,是否预订,房价);住房记录(入住时间,身份证号,房间号);收费标准(房间类型,房价);订房记录(预订时间,预订入住时间,预订住房天数,身份证号,房间号);住房历史记录(旅客姓名,性别,身份证号,房间号,房间类型,房价,退房时间,住房天数,费用);餐厅信息(员工姓名,员工号);客房服务(员工号,员工姓名);旅客信息主键身份证号;房间信息主键房间号,外键引用收费标准表的房间类型;住房记录主键房间号,外键引用旅客信息表的身份证号,房间信息表的房间号;收费标准主键房间类型;订房记录主键房间号,外键引用旅客信息表的身份证号,房间信息表的房间号;住房历史记录主键入住时间;餐厅信息主键员工号;客房服务主键员工号;五、物理模型设计旅客信息房间信息六、相关SQL语句1. 创建数据库create database 酒店管理系统gouse 酒店管理系统go2.创建数据表(含主键、外键定义及约束性条件设计)1、收费标准表create table 收费标准表/*收费标准*/ (房间类型 char(16),房价 int not null,primary key(房间类型))2、房间信息表create table 房间信息表/*房间信息*/ (房间号 char(5),。
SQL课程设计(VB 客房管理系统)

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

酒店管理数据库课程设计一、课程目标知识目标:1. 理解数据库在酒店管理中的重要性,掌握数据库的基本概念和术语。
2. 学会使用数据库管理系统(如MySQL)进行基本的数据库操作,包括数据查询、插入、更新和删除。
3. 掌握数据库设计的原则和方法,能够根据酒店管理需求设计合理的数据库结构。
技能目标:1. 能够运用数据库管理系统进行酒店信息数据的存储、检索和管理。
2. 掌握SQL语言,能够编写简单的查询语句,满足酒店管理中的数据查询需求。
3. 能够运用数据库设计工具,绘制E-R图,为酒店管理系统的开发提供技术支持。
情感态度价值观目标:1. 培养学生对酒店管理专业的兴趣,激发他们主动探索数据库技术在酒店行业中应用的热情。
2. 培养学生的团队协作意识,使他们学会在数据库设计和操作过程中与他人沟通、合作。
3. 增强学生的信息意识,使他们认识到数据在酒店管理中的价值,养成良好的数据管理和保护意识。
本课程针对高年级学生,他们在前期的学习中已经掌握了计算机基础和酒店管理基本理论,具备一定的实际操作能力。
课程性质为理论与实践相结合,旨在通过实际操作,让学生将数据库知识应用于酒店管理领域。
教学要求注重培养学生的动手能力、分析问题和解决问题的能力,以便他们在未来工作中能够更好地应对酒店管理中的数据挑战。
通过本课程的学习,学生将具备酒店管理数据库设计与操作的基本能力,为从事相关工作奠定基础。
二、教学内容1. 数据库基本概念:介绍数据库的定义、发展历程、分类及其在酒店管理中的应用场景。
教材章节:第一章 数据库基础2. 数据库管理系统:学习MySQL数据库的安装、配置以及基本操作。
教材章节:第二章 数据库管理系统3. SQL语言:讲解SQL语言的语法,包括数据查询、插入、更新、删除等操作。
教材章节:第三章 SQL语言4. 数据库设计:介绍数据库设计原则、方法,学习如何绘制E-R图,以及如何将酒店管理需求转化为数据库结构。
教材章节:第四章 数据库设计5. 酒店管理数据库实例分析:通过实际案例,分析酒店管理数据库的设计与操作。
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
分析系统性能测试结果,找出性能瓶颈,如数据库查询效率、
服务器响应速度等。
酒店管理系统SQL数据库实验设计

学院名称:经济管理学院课程题目:酒店管理系统授课教师:单承戈小组成员:祝梓惟(组长)潘佳丽颜政夏佳玉杨荇贻陈雪婷教师评分:二零一六年六月七日概述1、项目背景:连锁酒店的兴衰,关键是管理。
建设一间现代化的连锁酒店,需要的是钱,而要经营管理好一间连锁酒店,关键是管理。
酒店管理是现代酒店的命脉,管理水平的高低,决定着酒店经营的成败。
酒店是企业,同样是要重视管理的工作,加强管理。
现代管理者即是财富,当代的管理者更是直接的财富。
管理的意义,简单地讲,管就是主事,理就是治事,合起来为主管和治理人与事。
随着中国加入WTO和经济全球化格局的形成,越来越多的人感到21世纪国际酒店的竞争激烈,从设备豪华到价格竞争发展到人才全方位的竞争。
要竞争就必须创新。
创新,是酒店的生命。
商场如战场,成功的管理者及其管理需要刚柔结合。
现在的酒店管理进入e时代,未来酒店业的竞争必将进入一个新的阶段,伴随着我国旅游业的高速发展,宾馆酒店行业的服务档次迫切需要提高。
在宾馆酒店竞争日趋激烈的今天,要成为佼佼者,就必须与高新技术紧密结合。
硬件设施落后、管理水平滞后、服务质量低下的酒店将被逐步淘汰,传统的纯手工或简单的计算工具,已经不适应现代经济高速发展的要求,必须运用现代化管理手段,配备完善的自动化设备,提高酒店的服务水平与质量,从而赢得高信誉、强实力、好效益!本系统目地是为了一些酒店还没有使用管理软件,仍靠手工处理业务。
2、编写目的:为连锁酒店的订房呼叫中心提供一种方便快捷的订房系统3、软件定义:酒店管理系统(呼叫中心用)4、开发工具:Microsoft SQL Server 2003数据库管理系统、Delphi7开发工具实现系统一、系统定义酒店客房管理系统是为了在正常运营中需要对客房资源、客人信息、消费信息、结算信息等进行管理,利用酒店客房管理信息系统对客房的各个操作进行管理,能够及时了解各个环节中信息的变更,有利于提高管理的效率。
本项目要设计和实现一个能对酒店客房租住信息,客人信息,预订信息,消费信息,结算信息的管理,实现前台操作流程较方便,清晰,高效的信息管理系统。
酒店管理系统数据库课程设计

酒店管理系统数据库课程设计一、引言随着旅游业的发展和人们生活水平的提高,酒店行业也日益繁荣。
酒店管理系统在其中起到了至关重要的作用。
本文将就酒店管理系统数据库课程设计进行详细阐述。
二、需求分析1.功能需求(1)客房预订:客户可以通过系统查询房间信息并进行预订。
(2)入住登记:客户到达酒店后进行登记入住,前台工作人员需要记录客户信息。
(3)结账退房:客户离开酒店时需要结账退房,前台工作人员需要计算费用并记录信息。
(4)库存管理:对于酒店内部物品的管理,如清洁用品、床上用品等。
(5)权限管理:根据工作职责划分不同的权限,保证系统安全性。
2.性能需求(1)响应速度:系统需要快速响应用户操作请求。
(2)可靠性:系统需要保证数据的准确性和完整性,同时避免数据丢失或损坏。
(3)易用性:界面简洁明了,操作简单易懂。
三、数据库设计1.实体关系模型设计根据需求分析中提到的功能需求,我们可以设计出如下实体关系模型:2.数据表设计(1)客户信息表:包含客户姓名、身份证号、电话等基本信息。
(2)房间信息表:包含房间号、房型、价格等基本信息。
(3)订单信息表:包含订单号、客户姓名、房间号、入住时间、离店时间等基本信息。
(4)消费记录表:包含消费编号、订单号、消费类型、金额等基本信息。
(5)库存管理表:包含物品名称、数量、单位等基本信息。
四、系统实现1.系统架构采用B/S架构,前端使用HTML+CSS+JavaScript,后端使用Java语言,数据库使用MySQL。
2.页面设计根据需求分析中提到的易用性需求,我们可以设计出简洁明了的页面。
如下图所示:3.代码实现(1)客房预订功能实现:用户输入预订日期和房型,系统查询可用房间并展示在页面上。
用户选择后提交订单即可完成预订。
(2)入住登记功能实现:前台工作人员输入客户身份证号和入住日期,系统自动生成订单并记录客户信息。
(3)结账退房功能实现:前台工作人员输入客户身份证号和离店日期,系统自动计算费用并生成消费记录。
- 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 file can'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 file can'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 file can'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 file can'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 file can'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 file can'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 file can'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();}心得体会:经过一个星期的编译原理课程设计,我们在李教授的指导下,顺利完成该课程设计。