《图书借阅管理组织系统》.doc

上传人:小飞机 文档编号:4198357 上传时间:2023-04-09 格式:DOC 页数:38 大小:188.50KB
返回 下载 相关 举报
《图书借阅管理组织系统》.doc_第1页
第1页 / 共38页
《图书借阅管理组织系统》.doc_第2页
第2页 / 共38页
《图书借阅管理组织系统》.doc_第3页
第3页 / 共38页
《图书借阅管理组织系统》.doc_第4页
第4页 / 共38页
《图书借阅管理组织系统》.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《《图书借阅管理组织系统》.doc》由会员分享,可在线阅读,更多相关《《图书借阅管理组织系统》.doc(38页珍藏版)》请在三一办公上搜索。

1、 课 程 设 计 报 告课程名称 C语言程序设计 课题名称 图书借阅管理系统 专 业 电子信息工程 班 级 1153班 学 号 201511611319 姓 名 廖信达 指导教师 叶晓霞 2015年12月24 日一、设计内容与设计要求1设计内容:根据系统需求的描述,要求实现的功能包括图书信息和读者信息的添加、查询的功能,以及借书和还书的功能,本系统格外添加了用户注册和登录功能,方便统计和完善读者信息。(1)、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:书号、书名、作者、出版社、出版日期、单价、是否借出等。(2)、本系统显示这样的菜单: 首先,要进行登录或者注册才能进入系统,

2、进入后显示 1 .全部图书浏览2.新图书添加3.图书删除4.图书查找5.图书借阅6图书归还7.全部读者浏览8.退出登录0.退出之后,程序将重新显示菜单。2设计要求:掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。1. 设计正确,方案合理。2. 界面友好,使用方便。3. 程序精炼,结构清晰。4上机演示。4. 按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;5. 按本任务书的要求,按附录的要求编写课程设计报告(Word文档格式)。并用A4的复印纸打印并装

3、订; 目录一、 课程设计报告.4二、 功能模块的划分.6三、 主要功能的实现.8四、 程序代码清单.9三、课程设计报告1.程序设计准备做系统前,首先,自己详细看了C程序设计(教科书),基本自学会了文件的相关内容,理解了相关函数的用法和作用;另,上网查询了很多相关资料,还有找了很多相关的系统,都详细的看了一遍,加深了对C的理解以及对文件的相关内容进一步理解。学习了C语言的内容,图书信息管理系统有助于C语言学习的进一步巩固,在本系统可以增强对指针、文件、函数、结构体变量等基本知识的进一步理解。另外图书信息管理系统也是学校常用的基本系统之一,它有助于学校对图书馆书籍的基本管理。2.程序设计说明根据题

4、目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的。3.程序的主要功能 图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进行管理。图书借阅管理系统是对图书信息的基本管理,它包括:图书信息的录入、图书信息的显示、图书信息的删除、图书信息的查询、读者信息的录入、读者信息的显示。通过编译一个C语言函数,其中包含一个主函数,多个子函数,主

5、函数调用其余的子函数实现人们能够简易、快捷的了解并找到自己所学要的信息的功能。1、图书基本信息录入:对新到图书馆的图书的信息(编号、书名、出版社、作者、价格)进行录入。2、图书基本信息显示:显示已被录入图书的所有信息。3、图书基本信息删除:通过输入书名,判断此图书是否存在,若存在, 则删除该图书所有信息,若不存在则提示用户重新输入图书书名。4、图书基本信息查询:将所有图书信息包括编号、书名、出版社、作者、价格等显示在屏幕上。5、读者信息的录入:这里采用注册登录的方法对读者信息进行统计。6、读者信息的显示:将读者账号、姓名等输出。7、退出登录:回到一开始的登录注册页面。8、退出系统:即退出图书借

6、阅管理系统。使用模块化编程的方法每项功能有一个或多个函数组合来完成,其中菜单选项模块对应如下: 图书基本信息录入= void add() 图书基本信息显示= void through()图书基本信息删除= void del() 读者基本信息显示= void through2() 图书基本信息查询= void search()读者注册= reg()读者登录= login()退出登录重来= restart()这份代码中各个变量的定义如下: num 图书编号 name 书名 writer 作者 publish 出版社 time 出版时间 price 单价具体各个函数及其功能详解:struct rea

7、der *add2(struct reader *llast,char accountmax4,char namemax4);/添加读者信息 int login(int j);/登录系统 void reg();/注册账号 struct book *add(struct book *last);/添加读者信息void search();/查询图书 void updata(char namemax4,char nummax4);/更新图书信息void through();/全部图书浏览void through2();/全部读者浏览void print(int j);/输出图书相关信息void de

8、l();/删除图书 void updata2(char namemax4,char nummax4);/更新读者信息 void borrowbook();/借阅图书 void returnbook();/归还图书四.功能模块的划分1.主函数模块根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。在主函数中定义全局变量,即是在函数外部定义的变量,其不属于某一个函数,而属于一个源程序文件,在整个程序内可以多次被引用。主函数主要负责菜单的显示和各个函数的调用,起着最重要的作用。1.图书基本信息添加模块添加书号、书名、作者、出版社、出版时间(日期)、单价。 2.图书基本信息显示模

9、块 当用户选择图书基本信息显示时,程序会将所有图书信息一一列出。3.图书基本信息输入模块在程序开始运行,创建文件库时,调动此模块,提示用户输入新的图书编号(编号为0时结束输入),然后继续输入图书书名,作者,出版社,出版日期,单价等信息。结束输入时提示用户图书输入完成 4.图书基本信息删除模块用户输入所要删除的图书书名,先查找该图书是否存在,若存在,则删除该图书所有信息,若不存在则提示无此图书信息。 5.图书基本信息查询模块用户先选择图书查询方式(按书名查找、按书号查找、按出版社查找、按作者查找)输入这四个中的任意一个后,查找出该图书是否存在,若存在,则显示该图书信息,若不存在则提示用户无此图书

10、信息。若有多本符合该条件,则输出最先添加的那本书的信息。7读者信息浏览模块通过实名注册登记每个读者的信息,可统一查询所有读者的相关信息。五.主要功能的实现 程序运行流程:但每个模块运行完即会回到主函数,然后选择其他或退出。1、图书基本信息录入:对新到图书馆的图书的信息(编号、书名、出版社、作者、价格)进行录入。2、图书基本信息显示:显示已被录入图书的所有信息。3、图书基本信息删除:通过输入书名,判断此图书是否存在,若存在, 则删除该图书所有信息,若不存在则提示用户重新输入图书书名。4、图书基本信息查询:将所有图书信息包括编号、书名、出版社、作者、价格等显示在屏幕上。5、读者信息的录入:这里采用

11、注册登录的方法对读者信息进行统计。6、读者信息的显示:将读者账号、姓名等输出。7、退出登录:回到一开始的登录注册页面。8、退出系统:即退出图书借阅管理系统。程序代码清单如下:. #include#include#include#define max1 10#define max2 50#define max3 100#define max4 20typedef struct bookchar nummax1;/书号char namemax4;/书名char writermax4;/作者char pricemax4;/价格 int flag;/判断书是否被借出,0是借出,1是没有借出 char

12、publishmax4;/出版社 char timemax1;/出版时间 struct book*next;/下一本书的位置 bk;typedef struct reader char nummax4;/读者账号 char namemax4;/读者姓名 int count;/已借书量 char shuhao_nummax4;/最后一本借的书书号 struct reader*next;/下个读者的位置 rd;struct book *link=NULL;/书的单向链表 struct book *last=NULL;/指向最后一本书 struct reader *llink=NULL;/读者的单向

13、链表 struct reader *llast=NULL; /指向最后一名读者 int flag,cnt,cnt2;/*flag判断有没存书,cnt记录书指针的位置,cnt2记录读者指针的位置*/ char peoplemax4;/记录当前读者的姓名 struct reader *add2(struct reader *llast,char accountmax4,char namemax4);/添加读者信息 int login(int j);/登录系统 void reg();/注册账号 struct book *add(struct book *last);/添加读者信息void searc

14、h();/查询图书 void updata(char namemax4,char nummax4);/更新图书信息void through();/全部图书浏览void through2();/全部读者浏览void print(int j);/输出图书相关信息void del();/删除图书 void updata2(char namemax4,char nummax4);/更新读者信息 void borrowbook();/借阅图书 void returnbook();/归还图书 int login(int j) FILE *fp; char accountmax4,passwordmax4,

15、account2max4,password2max4; fp=fopen(user.txt,r+); if(fp=NULL) printf( 对不起,文件打开失败!n); else printf( 账号:); scanf(%s,account); printf( 密码:); scanf(%s,password); ; printf( 尊敬的%s用户,欢迎使用图书管理系统n,account); strcpy(people,account); system(pause); system(cls); flag=1; return 1; fclose(fp); if(j1) printf( 对不起,您

16、的输入有误,您还有%d次机会,请重新输入n,j-1); return 0; void reg() FILE *fp; int m=1; char namemax4,accountmax4,passwordmax4,password2max4; fp=fopen(user.txt,a+); if(fp=NULL) printf( 对不起,系统出错,文件打开失败!n); else printf( 请输入账号:); scanf(%s,account); while(m) printf( 请输入密码:); scanf(%s,password); printf( 请再次输入密码:); scanf(%s,

17、password2); if(strcmp(password,password2)=0) m=0; else printf( 对不起,您两次输入的密码不同,请重新输入_n); fprintf(fp, %s %s ,account,password); printf( 注册成功,正在进入系统n);flag=1;printf( 请输入您的真实姓名方便我们管理n);scanf(%s,&name);llast=add2(llast,account,name);system(pause); system(cls); fclose(fp); struct book *add(struct book *la

18、st) struct book *a; a=NULL; if(last=NULL) /* 第一次添加书指针处理 */ last=new book; link=last; printf( 欢迎进入图书添加界面n); printf( 请输入添加的书的书号n); scanf(%s,last-num); printf( 请输入书的作者n); scanf(%s,last-writer); printf( 请输入书名n); scanf(%s,last-name); printf( 请输出书的价格n);scanf(%s,last-price);printf( 请输入书的出版社n); scanf(%s,las

19、t-publish);printf( 请输入书的出版时间n);scanf(%s,last-time); last-flag=1; last-next=NULL; else /* 非第一次添加书指针处理 */ a=new book; printf( 欢迎进入图书添加界面n); printf( 请输入添加的书的书号n); scanf(%s,a-num); printf( 请输入书的作者n); scanf(%s,a-writer); printf( 请输入书名n); scanf(%s,a-name); printf( 请输出书的价格n); scanf(%s,a-price); printf( 请输入

20、书的出版社n); scanf(%s,a-publish); printf( 请输入书的出版时间n); scanf(%s,a-time); a-flag=1; a-next=NULL; last-next=a; last=a; printf( 图书添加完毕n); return last;struct reader *add2(struct reader *llast,char accountmax4,char namemax4)struct reader *a;a=NULL;if(llast=NULL)/*第一次添加读者*/ llast=new reader;llink=llast;strcpy

21、(llast-num,account);strcpy(llast-name,name); llast-count=0;llast-next=NULL;else /*非第一次添加读者*/ a=new reader;strcpy(a-num,account);strcpy(a-name,name); a-count=0;a-next=NULL;llast-next=a;llast=a;return llast;void through() struct book *p; cnt=0; p=link; if(p=NULL) printf( 对不起,现在图书馆一本书还都没有,建议您先添加图书n); e

22、lse while(p!=NULL) /输出图书各样详细信息 cnt+; printf(%dn 书号:%-12sn作者:%-12sn书名:%-12sn价格: %-12sn出版社:%-12sn出版时间: %-12sn,cnt,p-num,p-writer,p-name,p-price,p-publish,p-time);if(p-flag=0)printf(状态:不可借n); else printf(状态:可借n);p=p-next; void through2() struct reader *p; cnt2=0; p=llink; while(p!=NULL)/输出读者相关信息 cnt2+;

23、 printf(%d.n 读者账号:%-12sn读者姓名:%-12sn,cnt2,p-num,p-name); printf(已借书的数量:%dn,p-count); if(p-count!=0) printf(最后一本书的书号:%-12sn,p-shuhao_num);p=p-next; void del() int j,k; struct book *p,*a; p=link; if(p=NULL) printf( 对不起,现在图书馆一本书还都没有,建议您先添加图书_n); else through(); printf( 请输入您要删除第几本书吧_n); scanf(%d,&j); if(

24、jcnt) printf( 对不起,压根就没有那么多的书_n); else if(jcnt) /删除中间的书 for(k=1;knext; a=p-next; p-next=a-next; delete(a); printf( 记录删除成功n); else /删除最后一本书 for(k=1;knext; a=p; delete(a); p-next=NULL; last-next=p; printf( 记录删除成功n); void print(int j)/*输出图书相关信息*/ struct book *p; int m; p=link; for(m=1;mnext; printf(%dn

25、书号:%-12sn作者:%-12sn书名:%-12sn价格: %-12sn出版社:%-12sn出版时间: %-12sn,j,p-num,p-writer,p-name,p-price,p-publish,p-time); if(p-flag=0)printf(状态:不可借n); else printf(状态:可借n);void search()int selete=0,m=0;char amax1*2;struct book *p;p=link;printf( 欢迎进入查找界面n);if(p=NULL) printf( 对不起,现在图书馆中还没有图书呢n);else/*按四种方式查询图书*/

26、printf( 1.按书号查找n);printf( 2.按作者查找n);printf( 3.按书名查找n);printf( 4.按出版社查找n);scanf(%d,&selete);if(selete=1)printf( 您现在进入书号查找界面,请输入书号n);scanf(%s,a);while(p!=NULL)m+;if(strcmp(p-num,a)=0)print(m);break;elsep=p-next;if(p=NULL)printf( 对不起,数据库中没有您找的书n);else if(selete=2)printf( 您现在进入作者查找界面,请输入作者n);scanf(%s,a)

27、;while(p!=NULL)m+;if(strcmp(p-writer,a)=0)print(m);break;elsep=p-next;if(p=NULL)printf( 对不起,数据库中没有您找的书n);else if(selete=3)printf( 您现在进入书名查找界面,请输入书名n);scanf(%s,a);while(p!=NULL)m+;if(strcmp(p-name,a)=0)print(m);break;elsep=p-next;if(p=NULL)printf( 对不起,数据库中没有您找的书n);else if(selete=4)printf( 您现在进入出版社查找界

28、面,请输入出版社名n);scanf(%s,a);while(p!=NULL)m+;if(strcmp(p-publish,a)=0)print(m);break;elsep=p-next;if(p=NULL)printf( 对不起,数据库中没有您找的书n);elseprintf( 对不起,您的输入有误,请重新选择n); void updata(char namemax4,char nummax4)struct reader *a;a=llink;while(a!=NULL)if(strcmp(a-name,name)=0)strcpy(a-num,name);a-count+;strcpy(a

29、-shuhao_num,num);else a=a-next;void updata2(char namemax4,char nummax4)struct reader *a;a=llink;while(a!=NULL)if(strcmp(a-name,name)=0)a-count-;strcpy(a-shuhao_num,);void borrowbook() int j,k; struct book *p; p=link; if(p=NULL) printf( 对不起,现在图书馆一本书还都没有,建议您先添加图书_n); else through(); printf( 请输入您要借第几本书

30、吧_n); scanf(%d,&j); if(jcnt) printf( 对不起,输入出错请重试n); else for(k=1;knext; if(p-flag=0)printf( 对不起,该书已被借走,请借其他书n); elsep-flag=0;updata(people,p-num);printf( 借书成功,请在规定时间内归还n); void returnbook()char nummax4;struct book *p;p=link;printf( 输入要还的书的书号:n);scanf(%s,num);while(p!=NULL)if(strcmp(p-num,num)=0)p-flag=1;printf( 还书成功哦!n);updata2(people,num);break;p=p-next;void restart()char n;int j,k;printf( 1.已有账号登陆n 2.新用户注册n); printf( 请输入您的选择n);scanf(%d,&

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号