SQL数据库课程设计,酒店管理系统
- 格式:doc
- 大小:213.50 KB
- 文档页数:20
酒店预订管理系统--数据库课程设计介绍
本文档旨在设计一个酒店预订管理系统,该系统将使用数据库来存储和管理酒店预订信息。
系统将实现以下功能:
- 客户信息管理:包括客户姓名、联系方式、住宿历史等。
- 酒店房间管理:包括房间类型、价格、房间状态等。
- 预订管理:客户可以预订酒店房间,并记录预订状态、预订日期等。
- 入住管理:当客户到达并入住时,将记录入住日期和房间状态。
- 结账管理:客户退房后,系统将自动结算费用并生成账单。
数据库设计
本系统将使用关系型数据库来存储数据。
下面是系统的数据库设计:
数据表
客户表(Customers)
房间表(Rooms)
预订表(Reservations)
入住表(Checkins)
账单表(Bills)
数据库关系
系统的数据库关系如下:
- Customers表与Reservations表之间是一对多关系,一个客户
可以有多个预订。
- Rooms表与Reservations表之间是一对多关系,一个房间可以有多个预订。
- Reservations表与Checkins表之间是一对一关系,一个预订只有一个入住记录。
- Reservations表与Bills表之间是一对一关系,一个预订只有
一个账单。
总结
本文档介绍了一个酒店预订管理系统的数据库课程设计。
通过
这个系统,我们可以实现客户信息管理、房间管理、预订管理、入
住管理和结账管理等功能。
通过合理的数据库设计和表之间的关系,我们可以实现数据的存储和管理,为酒店提供高效的预订管理服务。
信息技术学院《数据库应用实践》设计报告名称:酒店管理系统专业:计应班级: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 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数据库课程设计宾馆房间管理系统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实现简单的调用。
二、要求课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。
学院名称:经济管理学院课程题目:酒店管理系统授课教师:单承戈小组成员:祝梓惟(组长)潘佳丽颜政夏佳玉杨荇贻陈雪婷教师评分:二零一六年六月七日概述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.餐饮管理:餐饮管理主要包括餐厅管理、餐饮订单管理等。
4.会议室管理:会议室管理包括会议室预订、会议室安排等。
5.员工管理:员工管理包括员工信息管理、员工工资管理、员工考勤管理等。
6.财务管理:财务管理包括营收管理、支出管理、财务报表管理等。
二、数据库设计在明确了系统需要满足的功能之后,我们需要进行数据库设计。
数据库是整个酒店管理系统的核心部分,它负责存储和管理所有的数据信息。
在设计数据库时,我们需要考虑以下几个方面:1.数据表设计:我们需要设计各种数据表来存储不同的信息,如客房信息表、预定信息表、餐饮信息表、会议室信息表、员工信息表、财务信息表等。
2.数据关系设计:各个数据表之间可能存在着复杂的关系,如一张客房订单表与一张客房表之间可能存在着一对多的关系等。
3.数据安全设计:数据库中存储的信息涉及到个人隐私等重要信息,因此我们需要采取相应的措施来保护数据安全。
三、系统实现在数据库设计完成之后,我们需要进行系统的实现。
sql餐馆管理系统课程设计一、课程目标知识目标:1. 掌握SQL语言的基本概念,包括数据表、字段、记录等;2. 学会使用SQL语句进行数据的增、删、改、查操作;3. 理解数据库设计的基本原则,能够根据餐馆业务需求设计合理的数据库结构;4. 了解餐馆管理系统的基本功能模块,并掌握其数据库实现方法。
技能目标:1. 能够独立运用SQL语言构建餐馆管理系统的数据库;2. 掌握使用SQL语句处理数据的基本技巧,解决实际应用问题;3. 具备分析餐馆业务需求,设计数据库表结构的能力;4. 能够通过编写SQL查询语句,实现数据的统计分析。
情感态度价值观目标:1. 培养学生对数据库技术的兴趣,激发其主动学习和探究的精神;2. 增强学生的团队协作意识,学会与他人共同解决问题;3. 培养学生的实际应用能力,使其认识到所学知识在实际工作中的重要性;4. 培养学生的创新意识,敢于尝试新方法,解决实际问题。
课程性质:本课程为实践性较强的课程,以餐馆管理系统为背景,结合实际业务需求,使学生掌握SQL语言的应用。
学生特点:学生具备一定的计算机基础,了解数据库的基本概念,对SQL语言有初步认识。
教学要求:结合实际案例,采用任务驱动法,引导学生主动学习,注重实践操作能力的培养。
通过课程学习,使学生能够将所学知识应用于实际工作中。
二、教学内容1. SQL语言基础- 数据库基本概念:数据表、字段、记录- SQL语句分类及功能:SELECT、INSERT、UPDATE、DELETE- 数据类型和数据完整性2. 数据库设计- 需求分析:了解餐馆业务需求- 概念结构设计:ER模型绘制- 逻辑结构设计:关系模型、数据表设计3. 餐馆管理系统数据库实现- 数据表创建与维护:CREATE TABLE、ALTER TABLE- 数据操作:INSERT、UPDATE、DELETE- 数据查询:简单查询、条件查询、连接查询、子查询4. 系统功能模块实现- 用户管理:注册、登录、权限控制- 菜品管理:添加、修改、删除菜品信息- 订单管理:订单查询、修改、删除、统计- 报表生成:营业额统计、菜品销售排行榜5. 教学案例与实战演练- 结合餐馆业务场景,进行SQL语句编写和数据库设计- 案例分析与讨论:解决实际应用问题- 实战演练:分组完成餐馆管理系统模块的设计与实现教学内容安排与进度:第1周:SQL语言基础第2周:数据库设计第3-4周:餐馆管理系统数据库实现第5周:系统功能模块实现第6周:教学案例与实战演练教材章节:《数据库原理与应用》第3章:SQL语言第4章:数据库设计第5章:关系数据库标准语言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)系统模块结构图根据需求分析结果,图书登记管理系统可以分为三大模块:查询图书模块、图书登记管理模块、系统控制平台。
系统模块结构如图: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();}心得体会:经过一个星期的编译原理课程设计,我们在李教授的指导下,顺利完成该课程设计。