数据结构图书管理系统课程设计报告.pdf

上传人:l*** 文档编号:80928832 上传时间:2023-03-23 格式:PDF 页数:17 大小:728.56KB
返回 下载 相关 举报
数据结构图书管理系统课程设计报告.pdf_第1页
第1页 / 共17页
数据结构图书管理系统课程设计报告.pdf_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《数据结构图书管理系统课程设计报告.pdf》由会员分享,可在线阅读,更多相关《数据结构图书管理系统课程设计报告.pdf(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、一、设计题目与要求 【问题描述】设计一个计算机管理系统完成图书管理基本业务。【基本要求】(1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;(2)对书号建立索引表(线性表)以提高查找效率;(3)系统主要功能如下:采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;借阅:如果一种书的现存量大于 0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;归还:注销对借阅者的登记,改变该书的现存量。二、小组分工 小组成员:小组分工:图书初始化、新书入库、登记读者信息、文件保存 借书系统、还书系统 图书信息查询、读者信息查询 三、需求分析 图书管理系统共需要

2、八个模块,分别是1图书初始化、2新书入库、3添加读者信息、4借书模块、5还书模块、6查询图书信息、7查询读者信息、8退出。我负责其中的四个模块,如下所示:1)图书初始化 输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。2)新书入库 新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。3)添加读者信息 读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书 4)退出和文件保存 退出读书管理系统并保存读者和图书信息。欢迎下载 2 四、概要设计 图书信息和读者信息都采用结构体类型保存。图书信息里面包括:图书编号、图书名称、作者、现有量、库存量

3、、指向下一节点的指针。读者信息里面包括:读者编号、读者姓名、借书数量、可借图书数量、指向下一节点的指针。所有图书和读者都分别以链表的形式存储,并以编号为唯一主键。采用链表形式便于数据的添加与删改。主要的操作为:系统初始化,图书入库,读者信息登记,图书信息和读者信息文件的保存。五、详细设计 数据结构的定义:图书信息:typedef struct book 图书管理系统 图 书 管理模块 读 者 管理模块 借 阅 操作模块 查 询 操作模块 初始化图书信息采编入库 输入读者信息 借书系统 还书系统 读者信息查询 图书信息查询 欢迎下载 3 char book_num10;char book_nam

4、e20;char book_writer10;int book_xy;int book_kc;struct book*next;BK;读者信息:typedef struct reader char reader_num10;char reader_name10;int right;BO borrowMax;struct reader*next;RD;算法描述:进入系统后首先进行图书初始化,输入图书的信息。1)初始化 初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。开始 输 入 图 书编 号、名称、作者和图书数量 进入系统 欢迎下载 4 2)采编入库 否 录入图

5、书信息 判断是否有此图书 在原有的纪录上加上现有的图书数量 向系统中加入新纪录 开始 输 入 功 能所 对 应 的数字 错误!请重新输入 执行所选功能 输入的数字小于 0 大于6 采编入库 是 欢迎下载 5 3)输入读者信息 是 5)退出和文件保存 登记读者 输入读者信息:读者书证号 向系统中添加新记录 结束 判断是否存在此读者 重新输入读者信息 否 退出系统 保存文件 判断是否保存成功 退出系统 是 错误!请重新登陆系统 欢迎下载 6 六、程序源代码#include#include#include#include#define Max 4 typedef struct book char b

6、ook_num10;char book_name20;char book_writer10;int book_xy;/现有 int book_kc;/库存 struct book*next;BK;typedef struct borrow char borrow_book_num10;char limit_date10;BO;typedef struct reader char reader_num10;char reader_name10;int right;BO borrowMax;struct reader*next;RD;BK*h_book;RD*h_reader;void Login

7、();int Menu();void Init();void Init_book();void Menu_select();void Insert_New_Book();void Find_Book();void add_reader();欢迎下载 7 void Save();void Save_Book();void Save_Reader();void Load();void Load_Reader();void Load_Book();void Login()system(cls);printf(nnntt*n);printf(nnnttt 欢迎使用图书管理系统n);printf(nnn

8、tt*n);printf(nnntt 按任意键进入系统);getch();system(cls);int Menu()/*主菜单*/int dm;printf(ntt 图书管理系统主菜单n);printf(=n);printf(*t0-退出系统 n);printf(*t1-采编入库 n);printf(*t2-登记读者 n);printf(=n);printf(请选择相应的代码:);for(;)scanf(%d,&dm);/dm 输入的数字 if(dm6)printf(n 错误!请重新输入:);else break;return dm;void Menu_select()/*主菜单选择函数*/

9、for(;)switch(Menu()/*功能选择*/case 0:system(cls);Save();printf(nnt 文件保存成功!n);printf(nnt 欢迎下次使用本系统!n);getch();exit(0);欢迎下载 8 case 1:Insert_New_Book();break;case 2:add_reader();break;default:printf(n 错误!);exit(0);void Init()/*初始化*/BK*p0;printf(n 图书初始化开始,请输入图书信息n 包括编号.书名.数量n);p0=(BK*)malloc(sizeof(BK);h_b

10、ook=p0;printf(n 请输入图书信息:n);printf(图书编号:);/*输入图书编号(唯一)*/scanf(%s,p0-book_num);printf(图书名称:);/*输入图书名称*/scanf(%s,p0-book_name);printf(图书作者:);/*输入图书作者*/scanf(%s,p0-book_writer);printf(图书数量:);/*输入图书数量*/scanf(%d,&p0-book_kc);p0-book_xy=p0-book_kc;/*开始时图书现有量和库存量相等*/p0-next=NULL;printf(n 图书信息初始化完毕!按任意键继续下一步

11、操作n);getch();system(cls);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)/*此处分两

12、种情况,若图书编号存在,则直接进库,只须 输入书的数量*/欢迎下载 9 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

13、(p-next)p=p-next;if(h_book=NULL)h_book=p0;/*此处分两种情况,链表中没有数据,head 直接指向 p0处*/else p-next=p0;/*此处分两种情况,链表中有数据,链表中最后元素的next 指向 p0 处*/p0-next=NULL;p0-book_xy=p0-book_kc;printf(n 新书入库完毕!按任意键继续下一步操作n);getch();system(cls);void add_reader()/*添加读者*/RD*p0,*p,*p1;int i;p=h_reader;printf(n 读者初始化开始,请输入读者信息.n 包括书证

14、号.姓名.n);if(p=NULL)p0=(RD*)malloc(sizeof(RD);/*申请新结点存储空间*/h_reader=p0;p=h_reader;printf(读者书证号:);scanf(%s,p0-reader_num);printf(读者姓名:);scanf(%s,p0-reader_name);p0-right=0;欢迎下载 10 for(i=0;iborrowi.borrow_book_num,0);/*所借图书直接置为(即没有借书)*/strcpy(p0-borrowi.limit_date,0);p0-next=NULL;else p0=(RD*)malloc(siz

15、eof(RD);p1=h_reader;printf(n 请输入读者的信息:n);printf(读者书证号:);scanf(%s,p0-reader_num);for(;)while(strcmp(p0-reader_num,p1-reader_num)!=0&p1-next!=NULL)p1=p1-next;if(strcmp(p0-reader_num,p1-reader_num)=0)printf(n 此读者编号已存在,请重新输入!n);printf(读者书证号:);scanf(%s,p0-reader_num);p1=h_reader;else printf(读者姓名:);scanf(

16、%s,p0-reader_name);break;p0-right=0;for(i=0;iborrowi.borrow_book_num,0);/*所借图书直接置为(即没有借书)*/strcpy(p0-borrowi.limit_date,0);p1-next=p0;p1=p1-next;p1-next=NULL;printf(n 读者信息初始化完毕!按任意键继续下一步操作.n);getch();欢迎下载 11 system(cls);void Save()/*保存信息*/Save_Reader();Save_Book();void Save_Reader()/*保存读者信息*/FILE*fp

17、_reader;RD*p,*p0;p=h_reader;if(fp_reader=fopen(Reader.txt,wb)=NULL)/*创建文件,进行保存*/printf(n 文件保存失败!n 请重新启动本系统n);exit(0);while(p!=NULL)if(fwrite(p,sizeof(RD),1,fp_reader)!=1)/*将链表中的信息写入文件中*/printf(n 写入文件失败!n 请重新启动本系统!n);p0=p;p=p-next;free(p0);/*释放所有结点*/h_reader=NULL;fclose(fp_reader);/*关闭文件*/void Save_B

18、ook()/*保存图书信息*/FILE*fp_book;/*创建文件型指针*/BK*p,*p0;p=h_book;if(fp_book=fopen(Book.txt,wb)=NULL)/*创建文件,进行保存*/printf(n 文件保存失败!n 请重新启动本系统n);exit(0);while(p!=NULL)if(fwrite(p,sizeof(BK),1,fp_book)!=1)/*将链表中的信息写入文件中*/printf(n 写入文件失败!n 请重新启动本系统!n);p0=p;p=p-next;欢迎下载 12 free(p0);h_book=NULL;fclose(fp_book);/*

19、关闭文件*/void Load()/*加载信息*/Load_Reader();Load_Book();void Load_Reader()/*加载读者信息*/RD*p1,*p2,*p3;FILE*fp;/*创建文件型指针*/fp=fopen(Reader.txt,rb);/*打开文件*/p1=(RD*)malloc(sizeof(RD);fread(p1,sizeof(RD),1,fp);h_reader=p3=p2=p1;while(!feof(fp)/*读出信息,重新链入链表*/p1=(RD*)malloc(sizeof(RD);fread(p1,sizeof(RD),1,fp);p2-n

20、ext=p1;p3=p2;p2=p1;p3-next=NULL;free(p1);fclose(fp);/*关闭文件*/void Load_Book()/*加载图书信息*/BK*p1,*p2,*p3;FILE*fp;/*创建文件型指针*/fp=fopen(Book.txt,rb);/*打开文件*/p1=(BK*)malloc(sizeof(BK);fread(p1,sizeof(BK),1,fp);h_book=p3=p2=p1;while(!feof(fp)/*读出信息,重新链入链表*/p1=(BK*)malloc(sizeof(BK);fread(p1,sizeof(BK),1,fp);p

21、2-next=p1;p3=p2;p2=p1;欢迎下载 13 p3-next=NULL;free(p1);fclose(fp);/*关闭文件*/void main()FILE*fp_book,*fp_reader;/*创建文件型指针*/Login();if(fp_book=fopen(Book.txt,rb)=NULL|(fp_reader=fopen(Reader.txt,rb)=NULL)Init();else Load();Menu_select();/*调用主菜单*/七、运行结果和调试分析 欢迎下载 14 欢迎下载 15 欢迎下载 16 八、课程设计总结 通过这次的实验,我了解了图书管理

22、系统的流程,之前以用户的角度去认识图书管理,现在站在设计者的角度去考虑问题,并且根据实际情况设计了图书管理系统的模块,对此有了更深刻的理解。对数据的管理、存储、完整性约束等也有了全面的认识。在设计过程中,出现了一些问题,主要是功能的划分,后来将图书管理系统的功能进行一一细分,归纳安排,才使整个系统的结构完善且冗余小。在运行程序时也遇到了一些问题,借书时只能借一本书,再借书就不能显示是借了还是不能借,把最多能借书的数量改了一下还是不行,最后在每一个判断输出之后都加了goto END借书,就能正常借书了。程序有点长,本来一个函数就能完成一个功能,他用了两个函数就我把自己能改成一个的改了。借书系统比较复杂,不容易懂,和同学交流了一下自己看了看才明白。欢迎下载 17 这次的实验还让我复习了数据结构的一些知识,如数组,while语句,switch语句,链表,还知道了如何使用system(cls)清屏,还知道了strcmp是用来比较字符串s1和s2大小的,strcpy使用来把字符串s2的值赋给s1的。这次的实验增加了我们自己动手动脑的能力,希望多做一些这样的实验,很有意义,和现实生活结合的程序增加了我的兴趣。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com