《数据结构-图书管理系统.》由会员分享,可在线阅读,更多相关《数据结构-图书管理系统.(28页珍藏版)》请在金锄头文库上搜索。
1、课程设计说明书 课程名称: 数据结构课程设计 班级: 11-电科1班 姓 名: 张海琴 学号: 1111121132设计题目: 图书管理系统 一、设计题目与要求 【问题描述】设计一个计算机管理系统完成图书管理基本业务。【基本要求】1) 每种书的登记内容包括书号、书名、著作者、现存量和库存量;2) 对书号建立索引表(线性表)以提高查找效率;3) 系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量。【进一步完成内
2、容】1) 系统功能的进一步完善;2) 索引表采用树表。3) 设计内容4) 程序流程图5) 源程序6) 软件测试报告(包括所用到的数据及结果)二、概要设计有八个模块1) 图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。2) 新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。3) 添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4) 借书模块读者输入读书证号,证号存在输入要借的图书编号,不能借同一本书,如果借书数量以达到最大也不能借书。5) 还书模块归还已借的图书,要先输入读者书证号,书证号存在继续输入
3、要还的图书编号,图书编号存在并且借来此书,归还成功。6) 查询图书信息7) 查询读者信息可查询读者姓名书证号,借了几本书,都是什么书和还书日期,还可以借几本书。8) 退出退出读书管理系统并保存读者和图书信息。图书管理系统 图书管理模块理读者管理模块借阅操作模块查询操作模块借书系统读者信息查询图书信息查询输入读者信息还书系统采编入库初始化图书信息三、算法设计进入系统后首先进行图书初始化,输入图书的信息。开始开始开始输入图书编号、名称、作者和图书数量进入系统初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。开始输入功能所对应的数字输入的数字小于0大于6错误!请重新输
4、入执行所选功能1)采编入库录入图书信息判断是否有此图书是在原有的纪录上加上现有的图书数量否向系统中加入新纪录2)输入读者信息开始输入读者信息:读者书证号结束3)借阅图书输入读者书证号判断读者是否存在否输出次读者编号不存在!按任意键返回是输入要借的图书编号判断图书编号是否存在否输出此图书编号不存在!按任意键返回是看是否还有此图书否输出此书已借完,按任意键返回是看读者的借书数目是否满了是输出借书数目已满不能借书,按任意键返回否看读者是否借了相同的书是输出同一读者不能借相同的两本书否输入归还图书的日期图书现有数量和库存数量都减1输出读者结束成功,按任意键返回结束4)归还图书输入要还书的读者编号判断读
5、者编号是否存在否输出读者编号不存在按任意键返回是输入读者还书编号判断图书编号是否存在否输出此图书编号不存在按任意键返回是此图书编号和还书日期等于0库存和现有图书数量加1,借书数量减1输出读者还书完毕,按任意键返回结束5)查询图书信息判断图书信息是否为空否输出图书信息:编号、名称、作者、现有和库存结束6)查询读者信息判断读者信息是否为空否输出读者书证号、姓名、图书编码和还书日期输出读者信息打印完毕结束四、运行结果和调试分析图书信息初始化同一本新书入库的运行结果图不同的新书采编入库采编入库后查询图书信息的运行结果图登记读者信息借书借书后查询图书信息的运行结果图借同一本书的运行结果图借不同的书借两本
6、书后查询读者信息的运行结果图还书运行结果图还书之后再查询读者信息的运行结果图还书后查询图书信息退出五、总结体会虽然这次的程序是通过上网查出来的,但是通过这次的实验使我知道了图书管理系统的流程,知道了一些以前不知道的知识,在运行程序时也遇到了一些问题,借书时只能借一本书,再借书就不能显示是借了还是不能借,把最多能借书的数量改了一下还是不行,最后在每一个判断输出之后都加了goto END借书,就能正常借书了。程序有点长,本来一个函数就能完成一个功能,他用了两个函数就我把自己能改成一个的改了。借书系统比较复杂,不容易懂,和同学交流了一下自己看了看才明白。这次的实验还让我复习了数据结构的一些知识,如数
7、组,while语句,switch语句,链表,还知道了如何使用system(cls)清屏,还知道了strcmp是用来比较字符串s1和s2大小的,strcpy使用来把字符串s2的值赋给s1的。这次的实验增加了我们自己动手动脑的能力,希望多做一些这样的实验,很有意义,和现实生活结合的程序增加了我的兴趣。源代码#include#include #include #include#define Max 4 typedef struct bookchar book_num10;char book_name20;char book_writer10;int book_xy;int book_kc;struc
8、t book *next;BK;typedef struct borrowchar borrow_book_num10;char limit_date8;BO;typedef struct readerchar reader_num10;char reader_name10;int right;BO borrowMax;struct reader *next;RD;BK *h_book;RD *h_reader;void Login(); int Menu(); void Init(); void Init_book(); void Menu_select(); void Insert_New
9、_Book(); 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()system(cls);printf(nnntt*n);printf(nnnttt欢迎使用图书管理系统n);printf(n
10、nntt*n);printf(nntt本程序制作人 学号:nnnnnnn);printf(nnntt 按任意键进入系统.);getch(); system(cls);int Menu() /*主菜单*/ int dm;printf(ntt图书管理系统主菜单n);printf(=n);printf(*t0-退出系统 n);printf(*t1-采编入库 n);printf(*t2-登记读者 n); printf(*t3-借阅登记 n);printf(*t4-还书管理 n);printf(*t5-查询图书信息 n);printf(*t6-查询读者信息 n);printf(=n);printf(请选
11、择相应的代码:); for(;) scanf(%d,&dm); /dm输入的数字 if(dm6) printf(n错误!请重新输入:); else break;return dm; void Menu_select()/*主菜单选择函数*/for(;) switch(Menu() /*功能选择*/ case 0: system(cls); Save();printf(nnt文件保存成功!n); printf(nnt欢迎下次使用本系统!n); getch(); exit(0); case 1:Insert_New_Book();break; case 2:add_reader();break; case 3:Borrow_Book();break; case 4:Return_Book();break; case 5:Print_book();break; case 6:Print_reader();break; default:printf(n错误!); exit(0);void Init() /*初始化*/ BK *p0;printf(n图书初始化开始,请输入图书信息.n包括编号.书名.数量.