图书借阅管理系统_第1页
图书借阅管理系统_第2页
图书借阅管理系统_第3页
图书借阅管理系统_第4页
图书借阅管理系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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、订; 22目录1、 课程设计报告.42、 功能模块的划分.63、 主要功能的实现.84、 程序代码清单.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 出版

7、时间 price 单价具体各个函数及其功能详解:struct reader *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();/全部读者浏览

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

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

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

11、书名、出版社、作者、价格等显示在屏幕上。5、读者信息的录入:这里采用注册登录的方法对读者信息进行统计。6、读者信息的显示:将读者账号、姓名等输出。7、退出登录:回到一开始的登录注册页面。8、退出系统:即退出图书借阅管理系统。程序代码清单如下:. #include<stdio.h>#include<stdlib.h>#include<string.h>#define max1 10#define max2 50#define max3 100#define max4 20typedef struct bookchar nummax1;/书号char namem

12、ax4;/书名char writermax4;/作者char pricemax4;/价格 int flag;/判断书是否被借出,0是借出,1是没有借出 char 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 *l

13、ink=null;/书的单向链表 struct book *last=null;/指向最后一本书 struct reader *llink=null;/读者的单向链表 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(in

14、t 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 del();/删除图书 void updata2(char namemax4,char nummax4);/更新读者信息 void borrowbook();/借阅图书

15、void returnbook();/归还图书 int login(int j) file *fp; char accountmax4,passwordmax4,account2max4,password2max4; fp=fopen("user.txt","r+"); if(fp=null) printf(" 对不起,文件打开失败!n"); else printf(" 账号:"); scanf("%s",account); printf(" 密码:"); scanf(&qu

16、ot;%s",password); ; printf(" 尊敬的%s用户,欢迎使用图书管理系统n",account); strcpy(people,account); system("pause"); system("cls"); flag=1; return 1; fclose(fp); if(j>1) printf(" 对不起,您的输入有误,您还有%d次机会,请重新输入n",j-1); return 0; void reg() file *fp; int m=1; char namemax4,a

17、ccountmax4,passwordmax4,password2max4; fp=fopen("user.txt","a+"); if(fp=null) printf(" 对不起,系统出错,文件打开失败!n"); else printf(" 请输入账号:"); scanf("%s",account); while(m) printf(" 请输入密码:"); scanf("%s",password); printf(" 请再次输入密码:"

18、;); scanf("%s",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(lla

19、st,account,name);system("pause"); system("cls"); fclose(fp); struct book *add(struct book *last) struct book *a; a=null; if(last=null) /* 第一次添加书指针处理 */ last=new book; link=last; printf(" 欢迎进入图书添加界面n"); printf(" 请输入添加的书的书号n"); scanf("%s",last->num)

20、; printf(" 请输入书的作者n"); scanf("%s",last->writer); printf(" 请输入书名n"); scanf("%s",last->name); printf(" 请输出书的价格n");scanf("%s",last->price);printf(" 请输入书的出版社n"); scanf("%s",last->publish);printf(" 请输入书的出版时间n

21、");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(" 请

22、输入书名n"); scanf("%s",a->name); printf(" 请输出书的价格n"); scanf("%s",a->price); printf(" 请输入书的出版社n"); scanf("%s",a->publish); printf(" 请输入书的出版时间n"); scanf("%s",a->time); a->flag=1; a->next=null; last->next=a; la

23、st=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(llast->num,account);strcpy(llast->name,name); llast->count=0;llast->next=null;else

24、 /*非第一次添加读者*/ 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"); else while(p!=null) /输出图书各样详细信息 cnt+; printf(&qu

25、ot;%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!=

26、null)/输出读者相关信息 cnt2+; 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(" 对

27、不起,现在图书馆一本书还都没有,建议您先添加图书_n"); else through(); printf(" 请输入您要删除第几本书吧_n"); scanf("%d",&j); if(j>cnt) printf(" 对不起,压根就没有那么多的书_n"); else if(j<cnt) /删除中间的书 for(k=1;k<=j-2;k+) p=p->next; a=p->next; p->next=a->next; delete(a); printf(" 记录删除成功

28、n"); else /删除最后一本书 for(k=1;k<=j-2;k+) p=p->next; 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;m<=j-1;m+) p=p->next; printf("%dn 书号:%-12sn作者:%-12sn书名:%-12sn价格: %-12sn出版社:%-12s

29、n出版时间: %-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(" 对不起,现在图

30、书馆中还没有图书呢n");else/*按四种方式查询图书*/ 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->

31、num,a)=0)print(m);break;elsep=p->next;if(p=null)printf(" 对不起,数据库中没有您找的书n");else if(selete=2)printf(" 您现在进入作者查找界面,请输入作者n");scanf("%s",a);while(p!=null)m+;if(strcmp(p->writer,a)=0)print(m);break;elsep=p->next;if(p=null)printf(" 对不起,数据库中没有您找的书n");else if

32、(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(" 您现在进入出版社查找界面,请输入出版社名n");scanf("%s",a);while(p!=null)m+;if(

33、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

34、->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(" 对不起,现在图书馆一本书还都没有,建议您先添加图书_

35、n"); else through(); printf(" 请输入您要借第几本书吧_n"); scanf("%d",&j); if(j>cnt) printf(" 对不起,输入出错请重试n"); else for(k=1;k<=j-1;k+) p=p->next; if(p->flag=0)printf(" 对不起,该书已被借走,请借其他书n"); elsep->flag=0;updata(people,p->num);printf(" 借书成功,请在

36、规定时间内归还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.已有账号登

37、陆n 2.新用户注册n"); printf(" 请输入您的选择n");scanf("%d",&n);if(n=1) for(j=5;j>=0;j-) if(j!=0) k=login(j); if(k=1) break; else continue; flag=0; else flag=0; else if(n=2) reg(); else printf(" 对不起,您的输入有误,系统自动退出n"); int main()char seletemax1,n; int j,k; printf(" 欢迎进入图书管理系统n"); printf(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论