图书馆管理系统程序
C语言程序课程设计图书管理系统方案

C语言程序课程设计报告标题:图书管理系统专业:软件工程类:设计主题图书馆管理系统主要包括管理图书的库存信息,每本书的借阅信息,每个人的借阅信息。
每本书的库存信息包括数量、书名、作者、出版日期、金额、类别、总入库数量、当前库存、已借出图书数量等。
每本借书包括以下信息:编号、书名、金额、借书证号、借阅日期、到期日期、罚款金额等。
每个人的图书馆信息包括借书证号、班级、学号等。
该系统的功能包括以下几个方面:一、借阅资料管理要求对图书、期刊、报纸、期刊进行分类管理,这样操作会更加灵活方便。
可以随时添加、删除、修改、查询等相关资料。
b、借贷管理(1)借贷操作(2)还书操作(3)更新治疗提示:以上处理需要相互配合,通过编辑赔偿和违约金金额来完成图书借还业务的各种登记。
例如,读者在还书时,不仅要更新图书的库存信息,还要自动计算图书的罚款金额。
并显示读者当天到期未还图书的所有信息。
c、读者管理读者等级:对借阅的读者进行分类,比如可以分为教师和学生两类。
并定义每类读者可以借阅的图书数量及相关借阅时间等信息。
读者管理:可以录入读者信息,以及挂失或注销读者、查询等服务。
D.统计分析可以随时进行统计分析,及时了解当前的借阅情况和相关数据状态。
统计分析包括借阅列表、数据状态统计、借阅统计等功能分析,显示当日所有到期未还的图书信息。
e系统参数设置:您可以设置相关的系统服务器参数,如违约金金额、最大借用天数等。
根据题目分析这项工作分为六个模块。
1.图书数据2.借款人信息3.借用模块4.还书模块5.照看书籍6.查询模块模块一:书号,书名,作者,出版时间,价格,份数,页数。
模块二:单位、借阅书目、借阅时间模块3:输入书名、书号、借书证。
模块四:登记书号,还书,处理罚款。
模块5:管理书库中的书籍,将新书入库,删除旧书,堆栈查询模块6:图书查询。
数据测试源代码汉字菜单可以参照以下代码编写:#包含“stdio.h”。
主(){ char c;int I;做{clr SCR();for(I = 0;i < 80i++)printf(" * ");printf("\t 1:添加书籍\ n ");printf("\t 2:列出书籍\ n ");printf(" \ t 3:s reach books \ n ");printf("\t 4:借书\ n ");printf("\t 5:返回图书\ n ");printf("\t6:退出\n ")printf(" \ t请选择输入选项[1 \ \ 2 \ \ 3 \ \ 4 \ \ 5 \ \ 6]:\ n ");做{c = getchar();}while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&!='6');getchar();开关(c){事例“1”:输入();打破;案例“2”:del();打破;事例“3”:find();打破;case“4”:arrange();打破;事例“5”:right();打破;案例“6”:出口(0);}Printf("按任意键返回主菜单:\ n ");getchar();clr SCR();} while(1);}#include <stdio.h >定义图书结构*/结构书{int _ id#include <stdlib.h >#include <string.h >#定义借入1#定义NOBORROW 0/*//数字,唯一char _ name[32];//书的名称,不唯一int _ type//书的类型,不唯一int _ status//书的状态,借出/未借出int _ count//图书借出的次数struct Book * _ next//下一本书结构书* _ prev//前一本书};定义书籍类型*/操作目录提示*/操作目录提示1 */添加图书类型并显示用户信息*/添加图书状态并显示用户信息。
图书管理系统数据流程图

图书管理系统数据流程图2022-04-14 17:20该“图书馆管理信息系统”是一个具有万人以上的员工,并地理位置分布在大型企的图书馆理系统,图书馆藏书 100 多万册,每天的借阅量近万册。
在手工操作方式下,图书的编目和借阅等的工作量大,准确性低且不易修改维护,读者借书只能到图书馆手工方式查找书目,不能满足借阅需求。
需要建立一套网络化的电子图书馆信息系统。
该图书馆管理信息系统服务对象有两部份人:注册用户和普通读者。
普通读者经注册后成为注册用户,注册用户可以在图书馆借阅图书,其他人员只可查阅图书目录,但不能借阅图书。
系统同时考虑提供电子读物服务,目前只提供电子读物的目录查询服务,不久的将来将提供电子读物全文服务。
用户可通过网络方式访问读图书馆管理信息系统。
为了对系统有一个全貌性的了解,首先要对系统内部人员结构、组织及用户情况有所了解。
图书馆系统的组织结构如图 1 - 1 所示。
图 1 - 1 图书馆管理信息系统的组织结构图书馆由馆长负责全面工作,下设办公室、财务室、采编室、学术论文室、图书借阅室、电子阅览室、期刊阅览室和技术支持室。
各部门的业务职责如下。
办公室:办公室协助馆长负责日常工作,了解客户需求,制定采购计划。
财务室:财务室负责财务方面的工作。
采编室:采编室负责图书的采购,入库和图书编目,编目后的图书粘贴标签,并送图书借阅室上架。
学术论文室:负责学术论文的采集整理。
图书借阅室:提供对读者的书目查询服务和图书借阅服务。
电子阅览室:采集整理电子读物,准备提供电子读物的借阅服务,目前可以提供目录查询和借阅。
期刊阅览室:负责情况的采集整理和借阅。
技术支持室:负责对图书馆的网络和计算机系统提供技术支持。
系统的业务室系统要达到的业务目标,业务流程分析是系统分析的基础环节。
图书馆管理信息系统的业务流程如图 1 - 2 所示。
图 1 - 2 图书馆管理信息系统的业务流程通过业务流程调查,理清图书馆管理系统的主要业务和业务的流程。
C语言课程设计图书馆管理系统程序代码

#include〈stdio.h〉#include<windows.h〉#include〈string。
h〉#include<conio。
h>#define M 100struct books{char tsmc[12];inttsbh;float dj;char zz[12];char czzt[12];char xm[12];char xb[12];intxh; }s[M];int N;bool flag;intmain (){intsele;flag=0;sele=1;void sr();void cx();void sc();void js();void hs();void tc();void jsh();//system ("tsgl”);printf("\n\n");printf(" ************************\n"); printf(" 1:输入2:查询3:删除\n");printf(”4:借书5:还书0:退出\n");printf(” ************************\n"); while(1){printf(”\n\n请输入功能序号:");scanf (”%d",&sele);if(sele>=0 && sele<=5){switch(sele){case 1:sr();break;case 2:cx();break;case 3:sc();break;case 4:js();break;case 5:hs();break;case 0:jsh();break;}if(flag)break;printf(”\n\n");printf(” ************************\n”); printf(" 1:输入2:查询3:删除\n");printf(”4:借书5:还书0:退出\n”);printf(” ************************\n”);}else{printf(”输入错误请再次输入|\n\n");printf("\n\n");printf(” ************************\n”);printf(" 1:输入2:查询3:删除\n”);printf(”4:借书5:还书0:退出\n");printf(" ************************\n");}printf("\n\n让任意键继续\n”);} //wr_file();}/******主函数***//*********输入*********/void sr(){intn,i;N=0;printf("可输入的书本数:");scanf("%d",&n);N=n+N;printf("请输入相关信息:\n");for(i=1;i<=n;i++){printf(”图书名称:”);scanf(”%s",s[N-n-1+i]。
图书管理系统流程图

案例1 图书馆管理系统一、问题描述对我校图书馆图书管理流程进行调研,开发设计一个能对图书、读者及图书借阅情况进行管理的图书馆管理系统。
要求该系统能满足管理人员对图书管理以及读者借阅需要,根据权限不同,用户具有不同的功能和操作界面。
二、应用需求分析1、用户需求调查通过对现行图书馆业务的调查,明确了图书馆工作由图书管理、读者管理、借书服务和还书服务4部分组成。
用户对现有系统功能的描述如下:(1)图书管理1)对馆的所有图书按类别统一编码;对各类图书建立图书登记卡,登记图书的主要信息。
2)新购的图书要编码和建卡,对遗失的图书要注销其图书登记卡。
(2)读者管理1)建立读者信息表,对读者统一编号。
2)对新加盟的读者,将其信息加入到读者信息表中;对某些特定的读者,将其信息从读者信息表中删除。
3)当读者情况变化时,修改读者信息表中相应的记录。
(3)借书服务1)未借出的图书要按类别上架,供读者查看。
2)建立借书登记卡,卡上记录着书号、读者和编号、借书日期;将借书登记卡按读者单位、读者编号集中保管。
3)读者提出借书请求时,先查看该读者的借书卡,统计读者已借书的数量。
如果该读者无借书超期或超量情况,则办理借书手续。
4)办理借书手续的方法是:填写借书登记卡,管理员核实后读者可将图书带走。
(4)还书服务1)读者提出还书要求时,先对照相应的借书卡,确认书号和书名无误后可办理还书手续。
2)办理还书手续的方法是:在借书卡上填写还书时间,管理员签名;将已还的借书卡集中保管;收回图书。
3)将收回的图书上架,供读者查看和借阅。
2、系统数据流程图经过详细的调查,弄清了系统现行的业务流程。
通过分析和抽象后,用数据流图表示。
图1是图书馆管理系统的顶层数据流图。
图1 图书馆管理系统顶层数据流图在图书馆管理系统顶层数据流图中,“P1 部管理”和“P2 借书管理”两个处理框所表示的功能都太复杂,对它们进一步细化后得出第二层数据流图。
见图2和图3。
C语言程序设计大作业--图书管理系统

C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
c语言课程设计图书馆管理系统

c语言课程设计图书馆管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程基础,能够运用C语言设计简单的图书馆管理系统。
具体分为三个维度:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.技能目标:学生能够运用C语言进行程序设计,具备编写、调试和运行C语言程序的能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生的创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础,以及图书馆管理系统的项目实践。
具体安排如下:1.第一章:C语言概述,介绍C语言的历史、特点和基本语法。
2.第二章:数据类型和运算符,学习基本数据类型、字符串、运算符及其优先级。
3.第三章:控制结构,学习条件语句、循环语句和跳转语句。
4.第四章:函数,学习函数的定义、声明和调用,以及常用标准库函数。
5.第五章:数组和字符串,学习一维数组、多维数组、字符串的基本操作。
6.第六章:指针,学习指针的概念、运算和应用。
7.第七章:结构体和文件,学习结构体的定义和应用,以及文件的读写操作。
8.第八章:图书馆管理系统项目实践,运用所学知识设计并实现一个简单的图书馆管理系统。
三、教学方法本课程采用多种教学方法相结合的方式,包括:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础。
2.案例分析法:通过分析典型的图书馆管理场景,引导学生运用C语言进行程序设计。
3.实验法:让学生动手编写、调试和运行C语言程序,提高学生的实践能力。
4.小组讨论法:分组进行项目实践,培养学生的团队合作意识和问题解决能力。
四、教学资源1.教材:《C程序设计语言》(K&R)或《C语言 Primer》(第五版)。
2.参考书:《C语言编程思想》、《C语言深度探索》。
3.多媒体资料:课件、教学视频、在线教程。
图书馆管理系统(C语言程序设计)

图书管理系统/*图书数据由编号、书名、出版社、单价和图书状态(库存用0表示或借出用读者编号表示),读者数据由编号、姓名和电话号码构成。
实现功能包括:(1)添加图书的记录(2)图书管理(借书和还书)(3)对图书数据排序(按单价的降序)(4)删除图书记录(5)修改图书记录(6)添加读者记录(7)输出图书信息表和读者信息表*#include <stdio.h>#include <string.h>#include <stdlib.h>#include <windows.h>/*函数的声明*/void bookname();void writername();void booknumber();void press();void bookdate();void Bfind(); //查询主菜单void Bdevise(); //修改函数void Badd(); //添加函数void Bdelete(); //删除函数void Bdisplay(); //显示所以已保存的图书信息函数void Bclean(); //清除所有图书信息函数void lendbook(); // 借书函数void returnbook(); //还书函数void lendorreturnbook();//借书或还书主菜单函数void appealkey();//用户密码申诉函数void devisepeoplekey();//修改用户密码函数void accountapply(); //用户申请账户函数void addpeopleaccount(); //管理员之添加用户帐号函数void addmanageaccount(); //管理员之添加管理员账号函数void addaccount(); //管理员之账户添加主菜单函数void devisepeopleaccount();//管理员之修改用户账号函数void devisemanageaccount();//管理员之修改管理员帐号函数void deviseaccount();//管理员之修改账号主菜单函数void deletepeopleaccount();//管理员之删除用户账号函数void deletemanageaccount();//管理员之删除管理员账号函数void deleteaccount();//管理员之删除账号主菜单函数void displayallpeopleaccounts();//显示所有用户信息函数void displayallmanageaccounts();//显示所有管理员信息函数void displayallaccountsmessage();//显示所有账号信息主菜单函数void highaddpeopleaccount(); //高级管理员添加用户账户函数void highaddmanageaccount(); //高级管理员添加管理员账户函数void highaddaccount(); //高级管理员之添加账户主菜单函数void booksmanage();//图书操作主菜单函数void accountsmanage();//管理员账号操作主菜单函数void highaccountsmanage();//高级管理员账号操作主菜单函数void menu1(); //用户之查询主菜单void menu2(); //管理员之查询主菜单void menu3(); //高级管理员之查询主菜单/*定义书的类型*/struct book{int bookstock; //库存量char bookname[20]; //书名char bookwriter[20]; //作者char booknumber[20]; //书号char press[20]; //出版社char bookdate[20]; //出版日期char price[20]; //出版价格int turefalse; //判断图书是否被借阅}books[20];/*定义用户类型*/struct peopleaccount{char pname[20];char pkey[20];}peopleaccounts[20];/*定义管理员类型*/struct manageaccount{char mname[20];char mkey[20];}manageaccounts[20];/*定义借书卡类型*/struct card{char cardnumber[20]; //借书卡号和用户信息一起写入yonghu.txt文件中的}cards[20];/*定义文件指针变量*/FILE *fp1; //fp1打开用户信息文件FILE *fp2; //fp2打开管理员信息文件FILE *fp3; //fp3打开图书信息文件FILE *fp4; //打开借还书记录的文件FILE *fpa; //fpa是临时文件指针/*改变输出的字体颜色*/void color(const unsigned short color1){if(color1>=0&&color1<=15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);/*仅限改变0-15的颜色;如果在0-15那么实现他的颜色因为如果超过15后面的改变的是文本背景色。
图书管理系统程序代码

#include<fstream〉#include<iostream〉#include<stdlib.h〉#include〈ctime〉#include<cmath>#include〈termios.h〉#include <sstream〉#include<string。
h〉#include<assert.h〉//改变字体颜色#define NONE "\033[m"#define RED "\033[0;32;31m”#define GREEN ”\033[0;32;32m”#define BLUE "\033[0;32;34m”#define YELLOW ”\033[1;33m”#define LIGHT_RED ”\033[1;31m”#define LIGHT_GREEN "\033[1;32m"#define LIGHT_BLUE "\033[1;34m”/*程序导读:1。
程序中对书的操作,可通过书名,编号来进行,flag=0按书名来操作,flag=1按书编号来操作2.程序中对用户的操作,也可通过姓名,用户ID号或编号两种方式来进行,flag=0按姓名来操作,flag=1按用户ID号或编号来操作3。
本程序分5个部分,具体已标识如(1)图书管理。
.*/using namespace std;class Book{public:string book_name;string book_num;//编号string book_pre;//出版社string book_aut;//作者int book_con;//这样的书还有几本int book_mux;//这样的书总共有几本public:Book(){book_con=0;book_mux=0;}void show_book();};/****************************************(1)图书管理*******************************************/void Book::show_book(){cout<〈"书名:”<〈book_name<〈endl;cout〈〈”出版社:"〈<book_pre〈〈endl;cout<<”此书的作者:"〈<book_aut〈<endl;cout〈<”ISBN编号:”<〈book_num<〈endl;cout<<"此书共有"〈<book_mux<<”本”〈〈endl;cout<<”还有"<<book_con〈〈”本书未借出!"〈<endl;}class BookNode{public:Book book;BookNode *next;};BookNode *headbook=NULL;class BookManage{public:int totolbook;public:BookManage(){totolbook=0;}void addbook();void delbook(string s,int num,int flag);void findbook(string s,int flag);//查询图书};void BookManage::addbook(){string h;cout〈〈"添加输入0,退出输入—1"<〈endl;cin>>h;if(h==”-1”)return;else if(h=="0”)while(1){if(h==”-1”)break;else if(h==”0”){string na,nu,p1,aut;int con;BookNode *p=new BookNode;cout<<”请输入书名:"〈〈endl;cin〉>na;p—〉book.book_name=na;cout<〈"请输入ISBN编号:”<<endl;cin>〉nu;p->book。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《程序设计实践》报告学号;题目来源及序号难度等级一、题目说明:由教师给出题目13、图书管理系统(查找应用)[问题描述]图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。
试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。
[实现提示]1、每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。
2、由于图书管理的基本业务活动都是通过书号(即关键字)进行的,所以要用对书号索引,以获得高效率。
3、系统应实现的基本功能有:4 采编入库:新购入一种书,经分类和确定书号之后登记到图书帐目中去。
如果这两种书在帐中已有,则只将总库存量增加。
5 清除库存:某种书已无保留价值,将它从图书帐目中注销。
6 借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。
7 归还:注销对借阅者的登记,改变该书的现存量。
8 显示:以凹入表的形式显示B树。
这个操作是为了调试和维护的目的而设置的。
二、问题分析及求解基本思路说明:给出题目的分析及初步的解题思路。
要求简洁、易懂一、概要设计主要实现系统的功能:a.图书初始化: 输入图书的一些信息,编号、作者、书名、数量,有一定的库存。
b.新书入库: 新书采编入库,输入编号后有次数只需输入数量,没有则继续输入c.添加读者信息: 读者信息初始化,输入读书证号和姓名后才能进行借书还书d.借书模块: 读者输入读书证号,证号存在输入要借的图书编号,不能借同一本书,如果借书数量以达到最大也不能借书。
e.还书模块: 归还已借的图书,要先输入读者书证号,书证号存在继续输入要还的图书编号,图书编号存在并且借来此书,归还成功。
f.查询图书信息g.查询读者信息: 可查询读者姓名书证号,借了几本书,都是什么书和还书日期,还可以借几本书。
h.退出: 退出读书管理系统并保存读者和图书信息。
设计的的初步思路:主要采取定义结构体,定义两个结构体分别为图书结构体和阅读者的结构体,将其数据存储到字符串中,然后逐个构建单链表,将其数据存储到单链表结点的数据域中,然后进行图书文件的读取或者可以选择图书的初始化,输入图书的编号,作者,书名,数量和一定的库存和现存量。
新书入库创造新结点,定义指针,此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量,通过字符串的比较来判定,同理阅读者的添加是增加阅读者的单链表的结点,同时一个读者规定只能借阅5本书存储到数据域的字符串中。
分别定义还书和借书的函数,用字符串的比较功能判断读者借书不能同一种书借两次,同时采编新书要求如果书号相同只需要直接输入采编的本数和如果没有书时会返回等待新书到来,包括索书号以及读者的学号输入出现不存在会返回错误,还书函数也是通过字符串中存储的库存量和现存量增加,同时读者借书数量right减少。
最后将图书的单链表和阅读者的单链表读写到文件中。
三、问题求解的整体框架结构说明:围绕求解目标给出具体的模块。
要求简洁、易懂23增添图书录入流程图:打印读者图书信息:四、主要算法说明:要求用自然语言描述算法。
要求简洁、易懂(1)首先首先定义图书,阅读者,借书结构体;typedef struct book;typedef struct borrow;typedef struct reader;定义好各种说需要的数据:typedef struct book{ char book_num[10];//图书编号char book_name[20];//图书名称char book_writer[10];//图书的作者int book_xy;//现有量int book_kc;//库存struct book *next;}BK;typedef struct borrow{char borrow_book_num[10];//借书的总数char limit_date[8];//还书日期}BO;typedef struct reader{char reader_num[10];char reader_name[10];int right;//读者所借的书的本数BO borrow[Max];struct reader *next;}RD;(1)定义实现功能所需要的函数,包括图书的登记,读者的登记,图书的录用,以及读者的借阅,图书,读者信息的保存和读音等功能。
int Menu();void Init();void Login();void Init_book();void Insert_New_Book();void Menu_select();void Find_Book();void add_reader();void Print_reader();void Print_book();void Borrow_Book();void Return_Book();void Save();void Save_Book();void Save_Reader();void Load();void Load_Reader();void Load_Book();void Login()(3)通过字符串存储读者和图书的信息,然后进行图书文件的读取或者可以选择图书的初始化,输入图书的编号,作者,书名,数量和一定的库存和现存量。
新书入库创造新结点,定义指针,此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量,通过字符串的比较来判定,同理阅读者的添加是增加阅读者的单链表的结点,同时一个读者规定只能借阅5本书存储到数据域的字符串中。
分别定义还书和借书的函数,用字符串的比较功能判断读者借书不能同一种书借两次,同时采编新书要求如果书号相同只需要直接输入采编的本数和如果没有书时会返回等待新书到来,包括索书号以及读者的学号输入出现不存在会返回错误,还书函数也是通过字符串中存储的库存量和现存量增加,同时读者借书数量right减少。
最后将图书的单链表和阅读者的单链表读写到文件中。
void Insert_New_Book()/*新书入库*/{ BK *p,*p0,*p1;p=p1=h_book;printf("\n新书入库模块...\n");printf("\n请输入图书信息..\n包括书号.书名.数量..\n");p0=(BK *)malloc(sizeof(BK));printf("图书编号:");scanf("%s",p0->book_num);while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL)p1=p1->next;if(strcmp(p0->book_num,p1->book_num)==0) /*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/{ printf("\n此编号图书已存在!!直接入库!\n");printf("图书数量:");scanf("%d",&p0->book_kc);p1->book_kc+=p0->book_kc;p1->book_xy+=p0->book_kc; }else { printf("图书名称:");scanf("%s",p0->book_name);printf("图书作者:");scanf("%s",p0->book_writer);printf("图书数量:");scanf("%d",&p0->book_kc);//库存数量while(p->next){ p=p->next; }if(h_book==NULL) h_book=p0;else p->next=p0;p0->next=NULL;p0->book_xy=p0->book_kc;}printf("\n新书入库完毕!按任意键继续下一步操作..\n");getch();system("cls"); }void add_reader()/*添加读者*/{ RD *p0;int i;printf("\n读者初始化开始,请输入读者信息..\n包括书证号.姓名..\n");p0=(RD*)malloc(sizeof(RD));h_reader=p0;printf("\n请输入读者的信息:\n");printf("读者书证号:");scanf("%s",p0->reader_num);printf("读者姓名:");scanf("%s",p0->reader_name);p0->right=0;for(i=0;i<Max;i++){strcpy(p0->borrow[i].borrow_book_num,"0"); strcpy(p0->borrow[i].limit_date,"0"); } p0->next=NULL;printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n");getch();system("cls"); }void Borrow_Book() /*借书模块*/{ BK *p0; RD *p1;char bo_num[10],rea_num[10],lim_date[8];int i;p0=h_book; p1=h_reader;printf("\n借书模块...\n");printf("\n请输入借书的读者书证号:");scanf("%s",rea_num);while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0)p1=p1->next;if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!=0){ printf("\n此读者编号不存在!按任意键返回..\n");goto END; }printf("\n请输入你要借的书的编号:");scanf("%s",bo_num);while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL)p0=p0->next;if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!=0){ printf("\n此图书编号不存在!按任意键返回..\n");goto END; }else if(p0->book_xy<=0){ printf("\n抱歉,此书已借完!请等待新书的到来!!\n按任意键返回....");goto END; }else if(p1->right>Max||p1->right==Max){ printf("\n不好意思,借书数目已满!不能借书!\n按任意键返回....");goto END; }else if(strcmp(p1->borrow[0].borrow_book_num,"0")!=0){ for(i=0;i<Max;i++){ if(strcmp(p1->borrow[i].borrow_book_num,bo_num)==0){ printf("\n抱歉!同一读者不能同借两本相同的书!\n按任意键返回....");goto END; }else if(strcmp(p1->borrow[i].borrow_book_num,"0")==0){ printf("\n请输入你要归还图书的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date,lim_date);p0->book_xy--;p0->book_kc--;printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num);goto END; }}}else{ printf("\n请输入你要归还图书的日期:");scanf("%s",lim_date);strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);strcpy(p1->borrow[p1->right-1].limit_date ,lim_date );p0->book_xy--;p0->book_kc--;printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num); } END:getch(); system("cls");}void Return_Book() /*还书模块*/{ BK *p; RD *q;int i,j,find=0;char return_book_num[10],return_reader_num[10];p=h_book; q=h_reader;printf("\n还书模块...\n");printf("\n请输入要还书的读者编号:");scanf("%s",return_reader_num);while(q->next!=NULL&&strcmp(return_reader_num,q->reader_num)!=0) q=q->next;if(q->next==NULL&&strcmp(return_reader_num,q->reader_num)!=0){ find=2;printf("\n此读者编号不存在!按任意键返回..\n");goto end; }printf("\n请输入读者还书的编号:");scanf("%s",return_book_num);while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0)p=p->next;if(p->next==NULL&&strcmp(return_book_num,p->book_num)!=0){ find=2;printf("\n错误!此图书编号不存在!按任意键返回..\n");goto end; }for(i=0;i<Max;i++)if(strcmp(return_book_num,q->borrow[i].borrow_book_num)==0) /*如果此读者借了此书*/{ find=1;for(j=i;j<Max-1;j++){strcpy(q->borrow[j].borrow_book_num,q->borrow[j+1].borrow_book_num);strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date); }strcpy(q->borrow[Max-1].borrow_book_num,"0");strcpy(q->borrow[Max-1].limit_date,"0");p->book_xy++;p->book_kc++;q->right--;printf("\n编号%s的读者已完毕!按任意键继续下步操作..",return_reader_num);}if(find==0)printf("\n错误!此读者未借此书!按任意键返回..\n");end: getch(); system("cls");}void Print_book() /*查询图书信息*/{BK *p;p=h_book;printf("\n图书信息如下:\n\n");printf("图书编号\t图书名称\t图书作者\t现有\t\t库存\n");while(p!=NULL){ printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);p=p->next;}printf("\n图书信息打印完毕!按任意键继续下一步操作..");getch();system("cls");}void Print_reader() /*查询读者信息*/{RD *p;int i;p=h_reader;printf("\n读者信息如下:\n\n");printf("读者书证号\t\t读者姓名\n");printf("\n");while(p!=NULL){ printf("\t%s\t\t%s",p->reader_num,p->reader_name);for(i=0;i<Max;i++){printf("\n");printf("图书编号",i+1);printf("\t还书日期",i+1);printf("\n");printf("\t%s",p->borrow[i].borrow_book_num);printf("\t\t%s",p->borrow[i].limit_date); }printf("\n");p=p->next;}printf("\n读者信息打印完毕!按任意键继续下一步操作..");getch();system("cls");}void Save() /*保存信息*/{Save_Reader();Save_Book();}void Save_Reader() /*保存读者信息*/(2)通过创建文件将图书和读者的单链表和图书的单链表输入到文件里,再读取文件,关闭文件。