数据结构课程设计——图书借阅管理系统
图书借阅系统课程设计

图书借阅系统课程设计一、课程目标知识目标:1. 让学生掌握数据库的基本概念,了解图书借阅系统的数据存储与检索原理;2. 使学生掌握程序设计的基本方法,能利用所学编程语言实现图书借阅系统的功能;3. 帮助学生了解图书分类、检索、借阅等业务流程,结合实际需求设计合适的系统功能。
技能目标:1. 培养学生运用数据库管理数据的能力,学会使用至少一种数据库软件进行数据操作;2. 提高学生的编程实践能力,学会分析问题、设计算法并编写程序实现图书借阅系统的功能;3. 培养学生团队协作能力,通过分组合作完成课程设计,提高沟通与协作水平。
情感态度价值观目标:1. 激发学生对计算机科学与技术领域的兴趣,培养其探索精神;2. 培养学生认真负责的工作态度,养成良好的编程习惯,注重代码规范与优化;3. 增强学生的法律意识和社会责任感,使其认识到保护版权的重要性。
本课程设计针对高年级学生,结合学科特点和教学要求,旨在通过实践操作,使学生将所学理论知识与实际应用相结合。
课程目标具体、可衡量,既关注知识技能的掌握,又注重培养学生的情感态度价值观,为后续的教学设计和评估提供明确方向。
二、教学内容1. 数据库基础知识:讲解数据库的基本概念、数据模型、关系数据库设计等,对应教材第1章内容;- 关系数据库理论;- SQL语言基础;- 数据库设计原则。
2. 程序设计基础:介绍编程语言基础、控制结构、函数等,对应教材第2章内容;- 编程语言选择(如Python、Java等);- 控制结构;- 函数与模块。
3. 图书借阅系统需求分析:分析系统功能需求、业务流程等,对应教材第3章内容;- 系统功能需求;- 业务流程设计;- 数据流图绘制。
4. 数据库设计与实现:教授数据库表设计、索引、视图等,对应教材第4章内容;- 数据表设计;- 索引与视图;- 数据完整性约束。
5. 程序设计与实现:指导学生编写程序实现系统功能,对应教材第5章内容;- 程序架构设计;- 编程规范;- 系统功能模块实现。
数据结构课程设计图书管理系统

数据结构课程设计图书管理系统在当今数字化的时代,图书管理系统对于图书馆的高效运作和管理至关重要。
作为数据结构课程设计的一部分,设计一个功能齐全、操作便捷的图书管理系统,不仅能够巩固我们所学的数据结构知识,还能提高我们解决实际问题的能力。
一、需求分析一个完善的图书管理系统应具备以下基本功能:1、图书信息管理:包括图书的书名、作者、出版社、出版年份、ISBN 号、分类号、库存数量等信息的录入、修改、查询和删除。
2、读者信息管理:记录读者的姓名、性别、身份证号、联系电话、借阅证号、借阅记录等,同时支持读者信息的增删改查。
3、借阅管理:实现读者的借书、还书操作,能够记录借阅日期和应还日期,并自动计算逾期天数和罚款金额。
4、图书查询:提供多种查询方式,如按书名、作者、出版社、分类号等进行精确或模糊查询,以便读者快速找到所需图书。
5、统计分析:能够统计图书的借阅次数、热门图书排行、读者借阅情况等,为图书馆的管理决策提供数据支持。
二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储和管理图书和读者的信息。
1、图书信息和读者信息可以使用结构体数组来存储。
结构体可以包含图书或读者的各项属性,数组则方便进行批量操作和遍历。
2、对于图书的分类和索引,可以使用二叉查找树或哈希表。
二叉查找树可以保证有序性,便于中序遍历获取排序后的图书信息;哈希表则能够快速定位特定的图书或读者,提高查询效率。
3、借阅记录可以使用链表来存储,便于动态地添加和删除借阅信息。
三、系统功能模块设计1、登录模块系统管理员和读者分别拥有不同的登录入口和权限。
管理员可以进行所有操作,读者只能进行查询和借阅相关操作。
2、图书管理模块图书录入:管理员输入图书的详细信息,将其添加到图书信息数组中。
图书修改:根据图书的 ISBN 号或其他唯一标识,修改图书的相关信息。
图书删除:按照指定条件删除图书记录。
图书查询:提供多种查询条件,快速检索图书信息。
数据库课程设计--图书借阅管理系统的设计

图书借阅管理系统的设计1.需求分析图书信息、借阅证件信息及图书借阅管理是一件非常繁琐但又及其重要的工作, 因此有必要开发一个数据库管理系统, 用来管理这些信息。
这篇课程设计介绍的就是图书借阅信息管理系统。
系统的具体要求如下所述:(1)图书信息的录入: 要求能够将图书信息录入到数据库中。
(2)图书信息的修改: 根据需要, 修改、删除图书信息。
(3)用户登陆: 根据用户权限登陆此系统。
(4)系统用户管理:要求可以管理系统的用户, 包括添加、修改和删除用户。
(5)借阅证件信息录入:可以输入不同类型的借阅者信息, 并根据需要修改、删除借阅证件信息。
(6)借阅证管理: 包括借阅证丢失、过期等管理。
(7)借阅管理: 包括借书、还书、过期还书与书籍丢失处罚等管理。
2.数据库设计数据库设计主要在SQL Server服务器端建立数据库和数据表, 并实现数据处理功能。
本文所设计的数据库中要记录读者的借书情况、图书被借阅的情况以及读者、图书的基本情况。
下面对图书借阅管理系统所需的数据结构进行分析并创建数据库。
2.1 概念结构设计现在对所设计系统的需求作进一步的分析, 产生概念结构设计的E-R模型。
由于这个系统并不复杂, 因此可采用自顶向下的设计方法。
自顶向下设计的关键是确定系统的核心活动。
所谓核心活动就是系统中的其他活动都要围绕这个活动展开, 或与此活动密切相关。
确定了核心活动之后, 系统就有了可扩展的余地。
对于这个图书借阅管理系统, 其核心活动是借阅, 读者与图书之间是通过借阅发生联系的。
因此, 此系统包含的实体有:(1) 读者: 用于描述一名读者的基本信息, 用借书卡编号来标识。
(2) 图书:用于描述一本图书的基本信息, 用图书编号来标识。
经过初步分析, 可以得到此系统中各实体所包含的基本属性如下:读者: 借阅证编号、读者姓名、工作单位、身份证号、借阅证类型、办证日期、证件状态。
图书: 图书编号、图书名称、图书分类、作者、出版社、图书价格、图书封面由于一名读者可以同时借阅多本图书, 而一本图书一次只能借给一名读者, 因此读者和图书之间是一对多的联系。
图书借阅管理系统数据结构课程设计

河南城建学院课程设计报告书专业:计算机信息管理与信息系统课程设计名称:《数据结构课程设计》题目:图书借阅管理系统班级:信管二班设计者学号:0设计者姓名:耿晓业同组人员:刘利指导老师:张延红完成时间:2016年6月10日摘要随着信息技术的迅猛发展,信息化已经渗透到社会生活的各个领域和各个层面,并日益成为提高效率,消除差错,节约成本的有效途径。
20世纪60年代以来,在微电子技术和通信技术迅速发展的推动下,图书馆图书借阅管理也充分利用软件来进行管理,其目标是借助先进的信息处理技术和计算机网络技术来提高图书管理的效率和质量,将管理与办公活动纳入到自动化,现代化的轨道中。
各大中小学图书馆中传统的图书借阅管理模式也越来越不能满足现代教育发展的需要。
对于一个有着成百上千的学生的学校来说,用手工管理数以千计图书的借阅以及归还,是一项非常繁琐的工作,而相应的阶段性盘点图书、图书查询等,其工作量都让人望而生畏,而且还极易出错。
所以我们提出了开发图书馆图书借阅管理系统,采取会员制的方式进行会员管理,包括增加会员,查询会员,删除会员,会员借书信息等。
另外采取图书流通借还管理,对图书查询借阅,增加图书,删除图书等功能进行统一管理,为各大中小学实现图书馆信息化管理提供有效工具。
本系统采用数据结构,C++程序设计语言,系统开发平台为Windows XP,使用Visual C++进行程序设计开发,本系统是各大中小学实现图书馆信息化管理的有效工具,同时本系统中采用的新技术可作为其他信息系统构建时的参考。
关键词:数据结构;算法设计;C++程序设计语言;目录目录 (1)第一章开发环境和开发工具 (3)C++简介 (3)开发背景 (3)开发环境 (4)第二章算法思想 (5)系统需求分析 (5)会员管理功能 (5)图书管理功能 (6)系统总体设计 (6)系统设计目标 (6)开发设计思想 (7)系统功能模块设计 (7)算法思想描述 (11)第三章算法实现 (12)数据结构 (12)程序模块 (13)各模块之间的调用关系 (14)源程序代码 (14)第四章测试与分析 (32)测试数据选择 (32)测试结果分析 (32)总结 (36)心得体会 (37)参考文献 (38)第一章开发环境和开发工具1.1C++简介C++是一种面向对象的开发语言,是一种使用非常广泛的计算机编程语言。
【数据结构】图书馆图书借阅信息管理系统

东北大学信息科学与工程学院数据结构课程设计报告题目图书馆图书借阅信息管理系统课题组长王逸飞课题组成员王嘉琦李聪专业名称计算机科学与技术班级计1307指导教师杨雷2015年1月课程设计任务书目录1课题概述 (1)1.1 课题任务 (1)1.2 课题原理 (1)1.3 相关知识 (3)2 需求分析 (4)2.1 课题调研 (4)2.2用户需求分析 (5)3 方案设计 (7)3.1 总体功能设计 (7)3.2 数据结构设计 (8)3.3 函数原型设计 (10)3.4 主算法设计 (12)3.5 用户界面设计 (14)4 方案实现 (15)4.1 开发环境与工具 (15)4.2 程序设计关键技术 (16)4.3 个人设计实现(按组员分工)4.3.1王逸飞设计实现 (17)4.3.2王嘉琦设计实现 (17)4.3.3李聪设计实现 (17)5 测试与调试 (23)5.1 个人测试(按组员分工) (23)5.1.1王逸飞测试 (23)5.1.2王嘉琦测试 (23)5.1.2李聪测试 (23)5.2组装与系统测试 (33)5.3 系统运行 (36)6 课题总结 (39)6.1 课题评价 (39)6.2团队协作 (40)6.3团队协作 (41)6.4个人设计小结(按组员分工) (42)6.4.1王逸飞设计小结 (42)6.4.2王嘉琦设计小结 (42)6.4.3李聪设计小结 (42)7附录A 课题任务分工 (50)A-1 课题程序设计分工 (50)A-2 课题报告分工 (51)附录B 课题设计文档(光盘) (52)B-1课程设计报告(电子版) (52)B-2源程序代码(*.H,*.CPP) (52)B-3工程与可执行文件 (52)B-4屏幕演示录像文件(可选) (52)附录C 用户操作手册(可选) (53)C.1 运行环境说明 (53)C.2 操作说明 (54)1 课题概述1.1课题任务【问题描述】对图书馆的图书借阅业务管理作一个简单的模拟。
数据结构课程设计图书管理系统

数据结构课程设计图书管理系统设计图书管理系统一、引言图书管理系统是为了方便图书馆进行图书的管理、借阅和归还而开发的软件系统。
本文将详细介绍设计一个图书管理系统所需的标准格式文本。
二、系统概述本图书管理系统旨在提供一个高效、便捷的图书管理平台,帮助图书馆实现图书的分类、借阅、归还、查询等功能。
系统主要包括以下模块:图书管理模块、借阅管理模块、读者管理模块、系统管理模块。
三、图书管理模块1. 图书录入功能a. 系统管理员可以录入新书籍的相关信息,包括书名、作者、出版社、ISBN 号、价格等。
b. 系统应提供图书信息的校验功能,确保录入的图书信息准确无误。
c. 系统应提供图书封面图片上传功能,以便读者更直观地了解图书。
2. 图书查询功能a. 读者和管理员可以根据关键字、作者、出版社等条件进行图书查询。
b. 系统应提供模糊查询和精确查询两种方式,以满足不同用户的需求。
3. 图书借阅功能a. 读者可以通过系统查询图书的借阅情况,并选择借阅。
b. 系统应记录借阅信息,包括借阅时间、归还时间等。
4. 图书归还功能a. 读者在归还图书时,系统应自动计算借阅天数,并生成相应的借阅费用。
b. 系统应提供归还图书的操作记录,以便管理员查看。
四、借阅管理模块1. 借阅记录查询功能a. 管理员可以查询所有借阅记录,并根据条件进行筛选。
b. 系统应提供按照借阅时间、归还时间等进行排序的功能,方便管理员进行统计分析。
2. 借阅统计功能a. 系统应提供借阅数量、借阅率等统计功能,方便管理员对图书馆的借阅情况进行分析。
五、读者管理模块1. 读者注册功能a. 读者可以通过系统进行注册,并填写个人信息。
b. 系统应提供校验功能,确保读者信息的准确性。
2. 读者信息修改功能a. 读者可以通过系统修改个人信息,如联系方式、密码等。
3. 读者信息查询功能a. 读者可以查询自己的借阅记录、借阅情况等。
六、系统管理模块1. 管理员管理功能a. 系统管理员可以管理其他管理员的账号和权限。
数据结构课程设计——图书借阅管理系统
数据结构课程设计——图书借阅管理系统图书馆管理系统目录一、问题描述:二、系统需求分析:1 功能要求:2 技术要求:3 方案分析:三、概要设计:四、详细设计与程序代码:五、运行结果与测试:六、设计体会与总结一、问题描述图书借阅管理系统是一个学校不可缺少的部分,它的内容对于学校的管理者和读者来说都至关重要,直接关系到图书的借用率,所以开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。
编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程。
图书管理者只需略懂电脑知识就可以简易的操作该图书借阅管理系统。
二、系统需求分析图书借阅管理系统主要分为两大功能:(1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书到期书催还);(2)会员管理(增加会员、查询会员、删除会员、借书信息);要完成这个题目,主要是建立解决图书和会员的信息的存储,解决的方法是建立两个带头结点的单链表,分别用于存储图书和会员。
解决了这个问题后就是如何建立这两个链表的联系了,解决的方法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书。
解决了这两个问题,剩下的工作就简单了。
只需按链表的操作就可以了。
1功能要求在图书借阅管理程序中须实现以下功能:(1)图书修改功能:能对图书借阅系统存储的信息进行修改。
提供两种修改方式,如按照图书编号修改、按照书名修改。
图书编号是图书记录的自然顺序编号。
(2)图书删除功能:能对图书借阅系统的图书信息进行删除。
删除时以记录为单位,能一次删除一条记录。
(3)借书功能:能对借出的图书作记录信息,能一次借出一本图书。
(4)还书功能:能将被借出的图书信息还原,能一次借出一本图书。
(5)保存功能:能将记录保存在任何自定义的文件中,如保存在:c:\\books 、c:\\lenders。
(6)通信录管理结束后,能够正常退出图书借阅管理程序。
图书借阅管理系统(C++)数据结构课程设计
//姓名://班级://学号:、/*图书借阅管理系统:要求:为一个图书馆设计一个简单的借阅管理选题,主要分为两大功能:图书管理(增加图书、查询图书、删除图书、图书借阅、还书);会员管理(增加会员、查询会员、删除会员、借书信息);*/#include "stdio.h"#include "iostream.h"#include "stdafx.h"#include "malloc.h"#include "stdlib.h"#include <conio.h>#include <string>/*************************************结构体部分************************************/ /************图书信息结构体*************/typedef struct elem{char bookid[5];char bookname[20];char bookauthor[50];char bookmark[2];char memberid[4];}elemtype;/************图书链表结点结构体*************/typedef struct node{elemtype data;struct node *next;}lnode,*linknode;/************会员信息结构体*************/typedef struct memberelem{char memberid[4];char membername[10];}memberelemtype;/************会员链表结点结构体*************/typedef struct membernode{memberelemtype data;struct membernode *next;}mlnode,*mlinknode;/*************************************创建函数部分************************************/ //^^^^^^^^^^^^^^^^^创建与销毁部分^^^^^^^^^^^^^^^^^^^^^^^^^^///************创建空图书链表*************/linknodeInit_lnode(){linknode head;head=(linknode)malloc(sizeof(lnode));if(head){head->next=NULL;head->data.bookauthor[50]=NULL;head->data.bookid[5]=NULL;head->data.bookmark[2]=NULL;head->data.bookname[20]=NULL;head->data.memberid[4]=NULL;}return head;}/************销毁图书链表*************/void Destroy_lnode(linknode *head){linknodep,q;if (!(*head))return;p=*head;while(!p){q=p;p=p->next;free(q);}*head=NULL;}/************创建空会员链表*************/mlinknodeInit_mlnode(){mlinknodemhead;mhead=(mlinknode)malloc(sizeof(mlnode));if(mhead){mhead->next=NULL;mhead->data.memberid[4]=NULL;mhead->data.membername[10]=NULL;}return mhead;}/************销毁会员链表*************/void Destroy_mlnode(mlinknode *mhead){mlinknodep,q;p=*mhead;if (!(*mhead))return;while(p){q=p;p=p->next;free(q);}*mhead=NULL;}//^^^^^^^^^^^^^^^^^图书管理函数^^^^^^^^^^^^^^^^^^^^^^^^^^// /************增加图书模块*************/void addbook(linknode head){linknode p;p=(linknode)malloc(sizeof(lnode));system("cls");printf("Add books....\n");printf("please input bookinfo:\n\n");printf("%-7s%-20s%-15s\n","id(4)","bookname","bookauthor");printf("****************************************************************\n");//scanf("%s%s%s",p->data.bookid,p->data.bookname,p->data.bookauthor);cin>>p->data.bookname;cin>>p->data.bookauthor;p->data.bookmark[0]='N';p->data.bookmark[1]='\0';p->data.memberid[0]='0';p->data.memberid[1]='\0';p->next=head->next;head->next=p;printf("\n\nAdd success!\n");printf("\nPressanykeyretrun...");getchar();getchar();}/************输出图书信息函数*************/void printbookinfo(linknode head){linknode p;p=Init_lnode();p=head->next;system("cls");printf("The book informations are:\n\n");cout<<"id \tbookname\tbookauthor\ttmark\tborower \t\n";//printf("\t\n","\t\t\n","\t\t\n","\t\n""\t\n","id","bookname","bookauthor","mark","borower");cout<<"****************************************************************"<<endl;while(p){cout<<p->data.bookid<<" \t";cout<<p->data.bookname<<" \t \t";cout<<p->data.bookauthor<<" \t \t";cout<<p->data.bookmark<<" \t";cout<<p->data.memberid<<endl;p=p->next;}getchar();}/************按编号查询图书*************/void select(linknode head){char id[5];linknode p;system("cls");p=head->next;printf("select book by id.....\n\n");printf("Please input book id:\n");cin>>id;while(p){if(strcmp(p->data.bookid,id)==0) break;else p=p->next;}if(p==NULL)printf("\nThe book not exit!\n");else{//printf("\t\n","\t\t\n","\t\t\n","\t\n""\t\n","id","bookname","bookauthor","mark","borower");cout<<"id \tbookname\tbookauthor\ttmark\tborower \t\n";//printf("\t\n","\t\t\n","\t\t\n","\t\n""\t\n","id","bookname","bookauthor","mark","borower");cout<<"****************************************************************"<<endl;printf("\n%-7s%-20s%-15s%-3s%s\n",p->data.bookid,p->data.bookname,p->data.bookau thor,p->data.bookmark,p->data.memberid);}printf("\nPressanykeyretrun...");getchar();}/************按编号删除图书*************/void deletebook(linknode head){char id[5];linknodep,q;system("cls");p=head->next;q=head;printf("delete book by id....\n\n");printf("Please input book id:\n");scanf("%s",id);while(p!=NULL){if(strcmp(p->data.bookid,id)==0) break;else{q=p;p=p->next;}}if(p==NULL) printf("\nThe book you want to delete are not exit!\n");else{q->next=p->next;free(p);printf("\nDelete success!\n");}printf("\nPressanykeyretrun...");getchar();getchar();}/****************借阅图书*****************/void borrow(linknodehead,mlinknodemhead){char id[5];char mid[4];linknode p;mlinknode q;p=head;q=mhead->next;system("cls");printf("borrow book....\n\n");printf("Please input book id:\n");cin>>id;while(p){if(p){if(strcmp(p->data.bookid,id)!=0)p=p->next;break;}}if(p==NULL){printf("\nThe book doesn't exit! please input it again!\n\n");getchar();}else//下面全体{printf("\nPlease input member id:\n");cin>>mid;while(q){if(q){if(strcmp(q->data.memberid,mid)!=0)q=q->next;elsebreak;}}if(q==NULL){printf("\nYou are not member! input again\n");}else{if(((strcmp(p->data.bookmark,"Y"))!=0)){strcpy(p->data.bookmark,"Y");strcpy(p->data.memberid,q->data.memberid);printf("\nsuccessed!\n");getchar();}else{printf("\n\nThe book have borrowed, please wait a few days...");getchar();}}}printf("\n\nPressanykeyretrun...");getchar();}/****************还书****************/void returnbook(linknode head){char id[5];linknode p;system("cls");p=head->next;printf("return book....\n\n");printf("Please input book id:\n");cin>>id;while(p!=NULL){if(strcmp(p->data.bookid,id)==0) break;//strcmp为库文件,返回值为0时,两数相等else p=p->next;}if(p==NULL)cout<<"你想还的书不存在!"<<endl;else{strcpy(p->data.bookmark,"N");strcpy(p->data.memberid,"0");cout<<"successed!"<<endl;cout<<"Press anykeyretrun..."<<endl;getchar();}//^^^^^^^^^^^^^^^^^会员管理函数^^^^^^^^^^^^^^^^^^^^^^^^^^///************输出会员信息函数*************/void printmemberinfo(mlinknodemhead){mlinknodemp;mp=Init_mlnode();mp=mhead->next;system("cls");printf("The member infomations are....\n\n");printf("%-7s%s\n","id","name");printf("********************************************************\n\n");for(;mp!=NULL;mp=mp->next)printf("%-7s%s\n",mp->data.memberid,mp->data.membername); printf("\nPressanykeyretrun...");getchar();getchar();}/************增加会员模块*************/void addmember(mlinknodemhead){mlinknode p;p=(mlinknode)malloc(sizeof(mlnode));system("cls");printf("Add member...\n");printf("please input memberinfo:\n\n");printf("%-7s%s\n","id(3)","name");printf("********************************************************\n"); cin>>p->data.memberid>>p->data.membername;p->next=mhead->next;mhead->next=p;printf("\n\nAdd success!");printf("\nPressanykeyretrun...");getchar();getchar();/************按编号查询会员*************/void selectmember(mlinknodemhead){char id[4];mlinknode p;system("cls");printf("select member by id...\n\n");p=mhead->next;printf("Please input member id:\n");scanf("%s",id);while(p!=NULL){if(strcmp(p->data.memberid,id)==0) break;else p=p->next;}if(p==NULL) printf("\nThe member not exit!\n");else{printf("\n%-printf("********************************************************\n\n"); printf("%-7s%s\n",p->data.memberid,p->data.membername);}printf("\n\nPressanykeyretrun...");getchar();getchar();}/************按编号删除会员*************/void deletemember(mlinknodemhead){char id[4];mlinknodep,q;system("cls");printf("delete member......\n\n");p=mhead->next;q=mhead;printf("Please input member id:\n");scanf("%s",id);while(p!=NULL){if(strcmp(p->data.memberid,id)==0) break;else{q=p;p=p->next;}}if(p==NULL) printf("\nThe member you want to delete are not exit!\n");else{q->next=p->next;free(p);printf("\nDelete success!\n");}printf("\nPressanykeyretrun...");getchar();getchar();}/************查询会员借书信息*************/void selectmemberborrow(linknodehead,mlinknodemhead){char id[4];mlinknode p;linknode q;system("cls");printf("select member by id...\n\n");p=mhead->next;q=head->next;printf("Please input member id:\n");cin>>id;while(p!=NULL){if(strcmp(p->data.memberid,id)==0) break;elsep=p->next;}if(p==NULL)printf("\nThe member not exit!\n");else{while(q){if(strcmp(q->data.memberid,id)==0) break;else q=q->next;}if(q==NULL)printf("\nThe member not borrow book!\n");else{cout<<"bookid\tbookname\tmember"<<endl;printf("********************************************************\n\n");cout<<q->data.bookid<<"\t"<<q->data.bookname<<"\t"<<p->data.membername<<endl;}}printf("\n\nPressanykeyretrun...");getchar();getchar();}//^^^^^^^^^^^^^^^^^二级管理函数与主函数^^^^^^^^^^^^^^^^^^^^^^^^^^///************二级图书管理目录*************/void bookmanagetitle(){system("cls");printf(" BOOK MANAGE MENU \n");printf("******************************************\n");printf("* 1: Look all books 查看所有图书*\n");printf("*----------------------------------------*\n");printf("* 2: Add book 增加图书*\n");printf("*----------------------------------------*\n");printf("* 3: Select book by id 查询图书*\n");printf("*----------------------------------------*\n");printf("* 4: Delete book by id 删除图书*\n");printf("*----------------------------------------*\n");printf("* 5: Borrow book 借阅图书*\n");printf("*----------------------------------------*\n");printf("* 6: Return book 归还图书*\n");printf("*----------------------------------------*\n");printf("* 0: Return to main form 返回主界面*\n");printf("******************************************\n");}/************二级图书管理函数*************/void bookmanage(linknodehead,mlinknodemhead){intch;while(1){bookmanagetitle();//scanf("%d",&ch);cin>>ch;if(ch==0) break;switch(ch){case 1: printbookinfo(head);break;case 2: addbook(head);break;case 3: select(head);break;case 4: deletebook(head);break;case 5: borrow(head,mhead);break;case 6: returnbook(head);break;case 0:break;default: printf("\n\nYouhava input the wrong order!\n");printf("Press anykey return.....");getchar();getchar();}}}/************二级会员管理目录*************/void membermanagetitle(){system("cls");printf(" MEMBER MANAGE MENU \n"); printf("******************************************\n");printf("* 1: Look all memberinfo 查看所有会员*\n");printf("*----------------------------------------*\n");printf("* 2: Add member 增加会员*\n"); printf("*----------------------------------------*\n");printf("* 3: Select member by id 查询会员*\n"); printf("*----------------------------------------*\n");printf("* 4: Delete member by id 删除会员*\n"); printf("*----------------------------------------*\n");printf("* 5: select member borrow借书信息*\n"); printf("*----------------------------------------*\n");printf("* 0: Return to main form 返回主菜单*\n"); printf("******************************************\n");printf("\nPlease input order:\n");}/************二级会员管理函数*************/void membermanage(linknodehead,mlinknodemhead) {intch;while(1){membermanagetitle();cin>>ch;if(ch==0) break;switch(ch){case 1:printmemberinfo(mhead);break;case 2:addmember(mhead);break;case 3:selectmember(mhead);break;case 4:deletemember(mhead);break;case 5:selectmemberborrow(head,mhead);break;case 0:break;default:printf("\nYouhava input the wrong order!\n");printf("Press anykey return.....");getchar();getchar();}}}/************系统总菜单*************/void welform(){system("cls");system("color fd");cout<<"\n\t\t\t★ 欢";cout<<"★ 迎";cout<<"★ 进";cout<<"★ 入";cout<<"★"<<endl;system("DATE[/T]");system("TIME[/T]");cout<<"\t ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n";cout<<"\t ☆ ☆\n"; cout<<"\t ☆ 图书借阅管理系统☆\n"; cout<<"\t ☆ ☆\n"; cout<<"\t ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n";cout<<("\t\t* 1: book manage 图书管理*\n");cout<<("\t\t*---------------------------------------*\n");cout<<("\t\t* 2: member manage 会员管理*\n");cout<<("\t\t*---------------------------------------*\n");cout<<("\t\t* 0: quit 退出*\n");cout<<("\t\t*****************************************\n");cout<<("\n\nPlease input order:\n");}/************主函数*************/void main(){linknode head;mlinknodemhead;head=Init_lnode();mhead=Init_mlnode();intch;while(1){welform(); /*系统总菜单*/cin>>ch;switch(ch){case 1:bookmanage(head,mhead); /*二级图书管理功能选择函数*/break;case 2:membermanage(head,mhead); /*二级会员管理功能选择函数*/ break;case 0:exit(0); /*退出系统*/default:printf("\nYouhava input the wrong order!\n");printf("Press anykey return.....");}}Destroy_lnode(&head);Destroy_mlnode(&mhead);}。
数据库系统原理课程设计——图书借阅管理系统
数据库系统原理课程设计——图书借阅管理系统数据库系统原理课程设计报告图书借阅管理系统第1章设计背景与需求分析1.1设计背景1.1.1 图书管理的现状图书馆作为⼀种资源的集散地,图书和⽤户在借阅资料繁多,包含很多的信息管理,现在有很多的图书馆都是初步的开始使⽤,甚⾄尚未使⽤计算机进⾏资源管理,没有建⽴相对应的图书管理数据系统,⽽是使⽤⼈⼯计算,抄写进⾏,数据处理⼯作量⼤,容易出错和数据丢失。
1.2.2 选题的⽬的、意义图书管理系统数据库有着⼿⼯管理⽆法⽐拟的优点,如检索迅速、查找⽅便、可靠性⾼、存储量⼤、保密性好,成本低等等。
这些优点能极⼤提⾼图书管理的效率,因此,开发⼀套能够为⽤户提供充⾜的信息和快捷的查询⼿段的图书管理系统是⼗分必要的。
1.2功能需求1.2.1读者信息的增加、修改、删除等基本操作1.读者类别信息的输⼊,包括图书类型、图书册数等2.读者档案信息的输⼊,包括读者编号、读者类型等1.2.2图书信息的增加、修改、删除等基本操作。
1.图书类别信息的输⼊,包括类别编号,类别名称等。
2.图书类别信息的查询,修改,包括类别编号,类别名称等。
3.图书档案信息的输⼊,包括图书编号,图书名称,图书类别,作者名称,出版社名称,出版⽇期,图书页数,关键词,登记⽇期,备注信息等。
1.2.3图书流通管理1.图书征订管理2.图书借阅管理3.图书归还管理4.图书罚款管理1.3系统开发环境1、系统:Windows XP,7,8,102、开发平台:SQL SERVER 2070, VISUAL BASIC6.01.4S Q L S E R V E R2017概述SQL SERVER2017是⼀个关系数据管理系统,是微软公司推出的新版本,该版本增加了许多先进的功能,具有⽅便使⽤,可伸缩性好与软件集成度⾼等的优点,可以运⾏在个⼈电脑到⼤型多处理器的服务器等多种平台使⽤。
第2章数据库概念结构设计2.1实体型结构2.2实体间的联系1.⼀个出版社对应多个图书,⼀个图书对应⼀个出版社,出版社和图书是⼀对多联系。
数据结构课程设计图书管理系统
数据结构课程设计图书管理系统一需求分析该程序是模拟图书馆管理系统,实现图书采编入库、借书、还书、查询等基本业务。
此程序规定:(1) 管理员能够向系统中输入每种书的基本信息,包括书号、书名、作者、现存量和库存量、借阅记录,并保存记录;(2) 用户(读者)能够按书号、书名、作者查询图书信息;(3) 管理员能够实现图书采编入库(新购入一本书,经分类和确定书号之后登记到图书账目中去。
如果这种书在帐中已有,则只将总库存量增加)、借阅(如果书的现存量大于0,则借出一本,登记借阅者的图书证号和归还期限)、归还(删除对借阅者的登记,改变该书的现存量)、销毁(将图书从账目中删除)等操作。
二概要设计系统用到的抽象数据类型定义:1、ADT LinearList{数据元素:D={a i|a i∈D0,i=1,2,…,n,n≥0,D0为某一数据对象}关系:S={<a i,a i+1>|a i,a i+1∈D0,i=1,2,…,n-1}基本操作:(1)InitList(L)(2)DestroyList(L)(3)ClearList(L)(4)EmptyList(L)(5)ListLength(L)(6)Locate(L,e)(7)GetData(L,i)(8)InsList(L,i,e)(9)DelList(L,i,&e)}ADT LinearList2、ADT String{数据对象:D={a i|a i∈CharacterSet,i=1,2,…,n;n≧0}数据关系:R={<a i-1,a i>|a i-1,a i∈D,i=2,…,n;n≧0}基本操作:(1)StrAsign(S,chars)(2)StrInsert(S,pos,T)(3)StrDelete(S,pos,len)(4)StrCopy(S,T)(5)StrEmpty(S)(6)StrCompare(S,T)(7)StrLength(S)(8)StrClear(S)(9)StrCat(S,T)(10)SubString(Sub,S,pos,len)(11)StrIndex(S,pos,T)(12)StrReplace(S,T,V)(13)StrDestroy(S)}ADT String●系统中的子程序和功能说明:InitBo(Book &boo);初始化图书信息InitRe(lend &Lin);初始化借阅者信息BinarySearch(Book boo,char SearchNum[]);二分法查找比较书号Buy(Book &boo, char BuyNum[]);新书采编入库系统Delete(Book &boo,char DeleteNum[]);清除图书信息系统Borrow(Book &boo,lend &Lin,char BorrowNum[],char CaNum[]);借阅图书处理系统Return(Book &boo,lend &Lin,char ReturnNum[],char BorrowerNum[]);归还图书系统SearchByNum(Book &boo,char SeaNum[]);按书号查找系统SearchByName(Book &boo);按书名查找系统SearchByAuth(Book &boo);按作者查询系统Menu();主菜单显示系统Search();查询系统子菜单main();主函数●系统程序功能结构图三详细设计●功能实现过程bool BinarySearch(Book boo,char SearchNum[]) //二分法查找比较书号{while(low<=high){计算中间点;if(查找到书号相同的){返回值true;}if(查找书号不相同)用二分法进一步进行查找;}if(库中没有所要查找的书)返回值false;}void Buy(Book &boo, char BuyNum[])/*采编入库*/{if(书库中有此书){总库存加1;现库存加1;}if(书库中无此书){for(i=total;i>mid&&total;i--)/*将新采购的书插在适合位置,保持有序*/空出插入位置;输入新购书籍的相关信息:书号、书名、作者、出版社;boo[i].next=NULL;total++;/*总量加1*/}}void Delete(Book &boo,char DeleteNum[])/*清除图书信息*/{if(书库中没有此书)输出“无此书”;if(书库中有此书){strcpy(连续两本书的相关信息);现存量减1;库存量减1;}else 输出“此书已有借阅者,无法删除!”;}void Borrow(Book &boo,lend &Lin,char BorrowNum[],char CaNum[])/*借阅图书信息*/ {if(没有找到此书) 输出“书库中无此书!”;if(书库中有此书){借出一本书后,该书的现存量减1;并在借阅记录链表中插入该条记录;再对应读者信息记录链表,如果已有该读者证号信息,直接在该链表中插入此次借阅记录;如果无该读者证号信息,申请新单链表存放借阅记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图书馆管理系统目录一、问题描述:二、系统需求分析:1 功能要求:2 技术要求:3 方案分析:三、概要设计:四、详细设计与程序代码:五、运行结果与测试:六、设计体会与总结一、问题描述图书借阅管理系统是一个学校不可缺少的部分,它的内容对于学校的管理者和读者来说都至关重要,直接关系到图书的借用率,所以开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。
编写程序系统主要实现图书馆的增加图书、查询图书、删除图书、借阅图书、还书;增加会员、查询会员、删除会员、借书信息、到期书催还等智能化管理过程。
图书管理者只需略懂电脑知识就可以简易的操作该图书借阅管理系统。
二、系统需求分析图书借阅管理系统主要分为两大功能:(1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书到期书催还);(2)会员管理(增加会员、查询会员、删除会员、借书信息);要完成这个题目,主要是建立解决图书和会员的信息的存储,解决的方法是建立两个带头结点的单链表,分别用于存储图书和会员。
解决了这个问题后就是如何建立这两个链表的联系了,解决的方法是在图书结点中设一个借书人编号,在会员结点中设一个数组用于存会员借的书。
解决了这两个问题,剩下的工作就简单了。
只需按链表的操作就可以了。
1功能要求在图书借阅管理程序中须实现以下功能:(1)图书修改功能:能对图书借阅系统存储的信息进行修改。
提供两种修改方式,如按照图书编号修改、按照书名修改。
图书编号是图书记录的自然顺序编号。
(2)图书删除功能:能对图书借阅系统的图书信息进行删除。
删除时以记录为单位,能一次删除一条记录。
(3)借书功能:能对借出的图书作记录信息,能一次借出一本图书。
(4)还书功能:能将被借出的图书信息还原,能一次借出一本图书。
(5)保存功能:能将记录保存在任何自定义的文件中,如保存在:c:\books 、c:\lenders。
(6)通信录管理结束后,能够正常退出图书借阅管理程序。
2技术要求(1)每个借阅者记录至少包括如下信息:姓名、学号、姓别等。
每本图书记录至少包括如下信息:编号、书名、作者、价格等。
(2)图书、借阅者信息以磁盘文件的形式存储,存储位置、文件名、文件格式由设计者确定。
(3)对于图书借阅系统功能中数据输入、显示、查询、修改、删除、保存等功能,要求编写功能独立的函数或主控函数予以实现,其所属的各项功能尽量由独立的函数实现。
(4)以菜单方式实现功能选择控制。
(5)本图书借阅管理程序能够实现100条记录的管理。
3 方案分析此题是设计一个图书借阅管理系统,根据需要应包含图书管理和会员管理。
其中对图书和会员的增加、查询和删除都是基本操作。
在图书管理中对图书的借阅和归还是重点,这两个操作也是整个系统关键。
在会员管理中增加了会员借书信息的查询和对到期书的催还信息。
实现这些操作的关键在于建立的两个带头结点的单链,分别用于存储图书和会员的基本信息。
在这两个链表之间还应建立起相互的联系,便于查询的操作的实现。
另外,在美观方面,需要设计一个操作界面供用户选择使用。
三、概要设计通过需求分析,设计出本程序的总体功能设计框图。
分为七个方面:1、选择检查类型;2、编辑图书的信息;3、查询图书的信息;4、编辑读者的信息;5、查询读者的信息;6、借阅书刊;7、还书。
连线之间说明了他们之间的相互联系以及设计时的要求。
4.2.2图书管理系统简略功能框图五、详细设计与程序代码:#include<stdlib.h>#include<stdio.h>#include<iostream.h>#define NULL 0typedef struct BookInfo{ /////图书结构int b_Code; ////图书编号char b_Name[20]; /////名称int b_Total; /////总数int b_Out; ///借出数BookInfo* nextbook; //////下一类图书}BookInfo;typedef struct MemberInfo{ ///会员结构long m_Code; /////会员编号char m_Name[20]; ////会员名字int l_Codes[6]; /////以借书的编号,最多5MemberInfo* nextmember; ////下一会员}MemberInfo;typedef struct System{ ///管理系统结构BookInfo* BI;MemberInfo* MI;int BookTotal; ////图书类库存量int MemberTota; /////会员数量}System;System* InitSystem();/////void AddBook(System*);////增加图书BookInfo* SearchBook(System*,int);////查询图书信息void DelBook(System*);/////删除图书void BrrowBook(System*);///////借书处理void TurnBackBook(System*);////还书处理void AddMember(System*);/////添加会员void DelMember(System*);////删除会员MemberInfo* SearchMember(System*,int);/////查询会员信息void StoreData(System*);void LoadData(System*);void ExitSystem();void main(){System* S=InitSystem();do{cout<<"\n\t\t\t\t图书管理系统"<<endl;cout<<"\t\t\t******************************"<<endl;cout<<"\t\t\t******************************"<<endl;cout<<"\t\t\t 1.增加图书.\t 2.查询图书.\n\t\t\t 3.删除图书.\t 4.借书处理.\n\t\t\t 5.还书处理.\n\t\t\t 6.添加会员.\t 7.删除会员.\n\t\t\t 8.查询会员.\t 9.载入数据.\n\t\t\t10.保存数据.\t11.退出程序.\n";cout<<"\t\t\t******************************"<<endl;cout<<"\t\t\t******************************"<<endl;cout<<"请选择:";do{cin>>sel;if(sel>=1&&sel<=11)break;cout<<"选择错误!\n重新输入:"<<endl;}while(1);switch(sel){case 1:AddBook(S);break;case 2:SearchBook(S,-1);break;case 3:DelBook(S);break;case 4:BrrowBook(S);;break;case 5:TurnBackBook(S);break;case 6:AddMember(S);break;case 7:DelMember(S);break;case 8:SearchMember(S,-1);break;case 9:LoadData(S);break;case 10:StoreData(S);break;default:ExitSystem();}}while(1);}System* InitSystem(){System* S=(System*)malloc(sizeof(System));S->BI=(BookInfo*)malloc(sizeof(BookInfo));S->BookTotal=0;S->BI->nextbook=NULL;S->MI=(MemberInfo*)malloc(sizeof(MemberInfo));S->MemberTota=0;S->MI->nextmember=NULL;return S;}void AddBook(System* S){int Tempcode;BookInfo* p=S->BI;BookInfo* t;BookInfo* m;int num;do{cout<<"输入图书编号:";cin>>Tempcode;if(m=SearchBook(S,Tempcode)){cout<<"这类书以有库存.\n输入图书的入库量:"<<endl;cin>>num;m->b_Total+=num;}else{t=(BookInfo*)malloc(sizeof(BookInfo));t->b_Code=Tempcode;cout<<"输入图书的名称:";cin>>t->b_Name;cout<<"输入图书的入库量:";cin>>t->b_Total;t->b_Out=0;t->nextbook=p->nextbook;p->nextbook=t;S->BookTotal++;}cout<<"添加完毕!"<<endl;cout<<"还要添加吗?(Y/N)";cin>>sel;if(sel=='n'||sel=='N'){cout<<"结束添加"<<endl;return;}}while(1);}BookInfo* SearchBook(System* S,int code){BookInfo* bi=S->BI->nextbook;int bookcode;if(code==-1){cout<<"请输入要查询的图书编号:";cin>>bookcode;}else bookcode=code;while(bi&&bi->b_Code!=bookcode)bi=bi->nextbook;if(code==-1){if(!bi)cout<<"没找到你所要的图书."<<endl;else {cout<<"图书编号为:"<<bi->b_Code<<endl;cout<<"图书名称为:"<<bi->b_Name<<endl;cout<<"图书库存量为:"<<bi->b_Total<<endl;cout<<"图书借出量为:"<<bi->b_Out<<endl;}}return bi;}void DelBook(System* S){BookInfo* bi;BookInfo* pl=S->BI;MemberInfo* memi;char sel;int tempcode;int i;do{pl=S->BI;bi=pl->nextbook;memi=S->MI->nextmember;cout<<"请输入要删除的图书的编号:";cin>>tempcode;while(bi){if(bi->b_Code==tempcode)break;pl=bi;bi=bi->nextbook;}if(bi==0)cout<<"没有找到要删除的图书"<<endl;else{pl->nextbook=bi->nextbook;S->BookTotal--;while(memi){for(i=1;i<=memi->l_Codes[0];i++){if(memi->l_Codes[i]==tempcode)break;}if(i<=memi->l_Codes[0]){for(;i<memi->l_Codes[0];i++)memi->l_Codes[i]=memi->l_Codes[i+1];memi->l_Codes[0]--;}memi=memi->nextmember;}free(bi);}cout<<"还有图书要删除吗?(Y/N)";cin>>sel;if(sel=='N'||sel=='n'){cout<<"删除图书结束"<<endl;return;}}while(1);}void BrrowBook(System* S){BookInfo* bi=S->BI->nextbook;BookInfo* p;char sel;int memcode;MemberInfo* mp;int tempcode;do{cout<<"输入要借出的书号:";cin>>tempcode;p=SearchBook(S,tempcode);if(!p){cout<<"没有找到要借出的图书."<<endl;}else{cout<<"此书的现存量为"<<(p->b_Total-p->b_Out)<<endl;if(!(p->b_Total-p->b_Out))cout<<"没有足够的书了,外借失败."<<endl;else{cout<<"请输入会员编号:";cin>>memcode;mp=SearchMember(S,memcode);if(!mp)cout<<"会员编号输入错误,外借失败"<<endl;else{if(mp->l_Codes[0]==5)cout<<"借书量不能超过5本";else{p->b_Out++;mp->l_Codes[++mp->l_Codes[0]]=tempcode;cout<<"外借成功."<<endl;}}}}cout<<"\n还有图书要借出吗?(Y/N)";cin>>sel;if(sel=='N'||sel=='n'){cout<<"外借操作结束."<<endl;return;}}while(1);}void TurnBackBook(System* S){BookInfo* bi=S->BI->nextbook;BookInfo* p;MemberInfo* mp;int membercode;int tempcode;int i;char sel;do{cout<<"输入归还书号:";cin>>tempcode;p=SearchBook(S,tempcode);if(!p){cout<<"书号输入错误."<<endl;}else{cout<<"此书的现存量为"<<(p->b_Total-p->b_Out)<<endl;cout<<"请输入会员编号:";cin>>membercode;if(!(mp=SearchMember(S,membercode)))cout<<"会员编号输入错误,归还失败"<<endl;else{p->b_Out--;for(i=1;i<=mp->l_Codes[0];i++){if(mp->l_Codes[i]==tempcode)break;}while(i<mp->l_Codes[0]){mp->l_Codes[i]=mp->l_Codes[i+1];i++;}mp->l_Codes[0]--;cout<<"归还成功."<<endl;}}cout<<"还有要归还的图书吗?(Y/N)";cin>>sel;if(sel=='N'||sel=='n'){cout<<"归还结束."<<endl;return;}}while(1);}void AddMember(System* S){int Tempcode;char sel;MemberInfo* p=S->MI;MemberInfo* t;do{cout<<"输入会员编号:";cin>>Tempcode;t=(MemberInfo*)malloc(sizeof(MemberInfo));t->m_Code=Tempcode;cout<<"输入会员姓名:";cin>>t->m_Name;t->l_Codes[0]=0;t->nextmember=p->nextmember;p->nextmember=t;S->MemberTota++;cout<<"添加完毕!"<<endl;cout<<"还要添加吗?(Y/N)";cin>>sel;if(sel=='n'||sel=='N'){cout<<"结束添加"<<endl;return;}}while(1);}MemberInfo* SearchMember(System* S,int code){MemberInfo* bi=S->MI->nextmember;int membercode;int i;if(code==-1){cout<<"请输入要查询的会员编号:";cin>>membercode;}else membercode=code;while(bi&&bi->m_Code!=membercode)bi=bi->nextmember; if(code==-1){if(!bi)cout<<"没找到指定会员."<<endl;else {cout<<"会员编号为:"<<bi->m_Code<<endl;cout<<"名称为:"<<bi->m_Name<<endl;cout<<"已借的图书有:"<<bi->l_Codes[0]<<"本."<<endl;for(i=1;i<=bi->l_Codes[0];i++)cout<<bi->l_Codes[i]<<' ';cout<<endl;}}return bi;}void DelMember(System* S){MemberInfo* bi;MemberInfo* pl;BookInfo* book;char sel;int i;int tempcode;do{bi=S->MI->nextmember;pl=S->MI;cout<<"请输入要删除的会员的编号:";cin>>tempcode;while(bi){if(bi->m_Code==tempcode)break;pl=bi;bi=bi->nextmember;}if(!bi)cout<<"没有找到要删除的会员编号.";else{pl->nextmember=bi->nextmember;S->MemberTota--;for(i=1;i<=bi->l_Codes[0];i++){if(!(book=SearchBook(S,bi->l_Codes[i]))){cout<<"删除会员出错!"<<endl;}else{book->b_Out--;book->b_Total--;}}free(bi);}cout<<"还有会员要删除吗?(Y/N)";cin>>sel;if(sel=='N'||sel=='n'){cout<<"删除会员结束"<<endl;return;}}while(1);}void StoreData(System* S){FILE* fp;BookInfo* bi=S->BI->nextbook;if(!(fp=fopen("BookSys","wb"))){cout<<"打开文件BookSys失败!"<<endl; exit(0);}fwrite(&(S->BookTotal),sizeof(int),1,fp); while(bi){fwrite(bi,sizeof(BookInfo),1,fp);bi=bi->nextbook;}MemberInfo* mi=S->MI->nextmember; fwrite(&(S->MemberTota),sizeof(int),1,fp); while(mi){fwrite(mi,sizeof(MemberInfo),1,fp);mi=mi->nextmember;}fclose(fp);}void LoadData(System* S){FILE* fp;if(!(fp=fopen("BookSys","rb"))){cout<<"打开文件BookSys失败"<<endl; exit(0);}BookInfo* bi=S->BI;BookInfo* tempbi;fread(&(S->BookTotal),sizeof(int),1,fp);for(int i=1;i<=S->BookTotal;i++){tempbi=(BookInfo*)malloc(sizeof(BookInfo)); fread(tempbi,sizeof(BookInfo),1,fp);bi->nextbook=tempbi;bi=tempbi;}bi->nextbook=NULL;MemberInfo* mi=S->MI;MemberInfo* tempmi;fread(&(S->MemberTota),sizeof(int),1,fp);for(i=1;i<=S->MemberTota;i++){tempmi=(MemberInfo*)malloc(sizeof(MemberInfo)); fread(tempmi,sizeof(MemberInfo),1,fp);mi->nextmember=tempmi;mi=tempmi;}mi->nextmember=NULL;fclose(fp);}void ExitSystem(){char select;cout<<"警告: 程序结束后未存储的数据将消失."<<endl; cout<<"确定要退出吗?(Y/N)";cin>>select;if(select=='y'||select=='Y')exit(0);if(select=='n'||select=='N')return;}五、运行结果与测试:六、设计体会与总结:这次基础强化训练的课程设计对于我们来说,有一定的难度。