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

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

举报
开通vip

数据结构图书管理系统课程设计报告PAGE\*MERGEFORMAT4一、设计题目与要求【问题描述】设计一个计算机管理系统完成图书管理基本业务。【基本要求】(1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;(2)对书号建立索引表(线性表)以提高查找效率;(3)系统主要功能如下:①采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;②借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;③归还:注销对借阅者的登记,改变该书的现存量。二、小组分工小组成员:小组分工:图书...

数据结构图书管理系统课程设计报告
PAGE\*MERGEFORMAT4一、 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目与要求【问题描述】设计一个计算机管理系统完成图 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 管理基本业务。【基本要求】(1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;(2)对书号建立索引 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf (线性表)以提高查找效率;(3)系统主要功能如下:①采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;②借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;③归还:注销对借阅者的登记,改变该书的现存量。二、小组分工小组成员:小组分工:图书初始化、新书入库、登记读者信息、文件保存借书系统、还书系统图书信息查询、读者信息查询三、需求 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 图书管理系统共需要八个模块,分别是1图书初始化、2新书入库、3添加读者信息、4借书模块、5还书模块、6查询图书信息、7查询读者信息、8退出。我负责其中的四个模块,如下所示:图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书退出和文件保存退出读书管理系统并保存读者和图书信息。图书管理系统  图书管理模块理读者管理模块借阅操作模块查询操作模块借书系统读者信息查询图书信息查询输入读者信息还书系统采编入库初始化图书信息四、概要设计图书信息和读者信息都采用结构体类型保存。图书信息里面包括:图书编号、图书名称、作者、现有量、库存量、指向下一节点的指针。读者信息里面包括:读者编号、读者姓名、借书数量、可借图书数量、指向下一节点的指针。所有图书和读者都分别以链表的形式存储,并以编号为唯一主键.采用链表形式便于数据的添加与删改。主要的操作为:系统初始化,图书入库,读者信息登记,图书信息和读者信息文件的保存。五、详细设计数据结构的定义:图书信息:typedefstructbook{charbook_num[10];charbook_name[20];charbook_writer[10];intbook_xy;intbook_kc;structbook*next;}BK;读者信息:typedefstructreader{charreader_num[10];charreader_name[10];intright;BOborrow[Max];structreader*next;}RD;算法描述:进入系统后首先进行图书初始化,输入图书的信息。开始1)初始化输入图书编号、名称、作者和图书数量进入系统初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。开始输入功能所对应的数字输入的数字小于0大于6错误!请重新输入执行所选功能采编入库2)采编入库录入图书信息判断是否有此图书否是在原有的纪录上加上现有的图书数量向系统中加入新纪录3)输入读者信息登记读者输入读者信息:读者书证号判断是否存在此读者结束否向系统中添加新记录是重新输入读者信息退出和文件保存退出系统保存文件判断是否保存成功错误!请重新登陆系统退出系统是六、程序源代码#include〈stdio.h〉#include#include〈conio.h〉#defineMax4typedefstructbook{charbook_num[10];charbook_name[20];charbook_writer[10];intbook_xy;//现有intbook_kc;//库存structbook*next;}BK;typedefstructborrow{charborrow_book_num[10];charlimit_date[10];}BO;typedefstructreader{charreader_num[10];charreader_name[10];intright;BOborrow[Max];structreader*next;}RD;BK*h_book;RD*h_reader;voidLogin();intMenu();voidInit();voidInit_book();voidMenu_select();voidInsert_New_Book();voidFind_Book();voidadd_reader();voidSave();voidSave_Book();voidSave_Reader();voidLoad();voidLoad_Reader();voidLoad_Book();voidLogin(){system("cls");printf("\n\n\n\t\t***************************************\n”);printf(”\n\n\n\t\t\t欢迎使用图书管理系统\n");printf("\n\n\n\t\t***************************************\n");printf(”\n\n\n\t\t按任意键进入系统”);getch();system(”cls”);}intMenu()/*主菜单*/{intdm;printf("\n\t\t图书管理系统主菜单\n”);printf("=================================================\n”);printf(”*\t0————退出系统\n");printf("*\t1——-—采编入库\n”);printf("*\t2—---登记读者\n”);printf("=================================================\n”);printf(”请选择相应的代码:");for(;;){scanf("%d”,&dm);//dm输入的数字if(dm<0||dm〉6)printf("\n错误!请重新输入:");elsebreak;}returndm;}voidMenu_select()/*主菜单选择函数*/{for(;;){switch(Menu())/*功能选择*/{case0:system(”cls”);Save();printf("\n\n\t文件保存成功!\n");printf("\n\n\t欢迎下次使用本系统!\n");getch();exit(0);case1:Insert_New_Book();break;case2:add_reader();break;default:printf("\n错误!");exit(0);}}}voidInit()/*初始化*/{BK*p0;printf(”\n图书初始化开始,请输入图书信息\n包括编号.书名。数量\n”);p0=(BK*)malloc(sizeof(BK));h_book=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图书信息初始化完毕!按任意键继续下一步操作\n");getch();system(”cls”);}voidInsert_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;/*此处分两种情况,链表中没有数据,head直接指向p0处*/elsep—>next=p0;/*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/p0—〉next=NULL;p0->book_xy=p0->book_kc;}printf("\n新书入库完毕!按任意键继续下一步操作\n");getch();system("cls");}voidadd_reader()/*添加读者*/{RD*p0,*p,*p1;inti;p=h_reader;printf("\n读者初始化开始,请输入读者信息.\n包括书证号。姓名。.\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;for(i=0;i〈Max;i++){strcpy(p0-〉borrow[i]。borrow_book_num,”0");/*所借图书直接置为(即没有借书)*/strcpy(p0-〉borrow[i].limit_date,"0");}p0—>next=NULL;}else{p0=(RD*)malloc(sizeof(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("%s”,p0—>reader_name);break;}}p0->right=0;for(i=0;inext=p0;p1=p1—>next;p1->next=NULL;}printf("\n读者信息初始化完毕!按任意键继续下一步操作.。\n”);getch();system("cls”);}voidSave()/*保存信息*/{Save_Reader();Save_Book();}voidSave_Reader()/*保存读者信息*/{FILE*fp_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);/*关闭文件*/}voidSave_Book()/*保存图书信息*/{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;free(p0);}h_book=NULL;fclose(fp_book);/*关闭文件*/}voidLoad()/*加载信息*/{Load_Reader();Load_Book();}voidLoad_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-〉next=p1;p3=p2;p2=p1;}p3—〉next=NULL;free(p1);fclose(fp);/*关闭文件*/}voidLoad_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);p2—〉next=p1;p3=p2;p2=p1;}p3—〉next=NULL;free(p1);fclose(fp);/*关闭文件*/}voidmain(){FILE*fp_book,*fp_reader;/*创建文件型指针*/Login();if((fp_book=fopen("Book.txt","rb"))==NULL||(fp_reader=fopen("Reader.txt","rb"))==NULL){Init();}elseLoad();Menu_select();/*调用主菜单*/}七、运行结果和调试分析八、课程设计总结通过这次的实验,我了解了图书管理系统的流程,之前以用户的角度去认识图书管理,现在站在设计者的角度去考虑问题,并且根据实际情况设计了图书管理系统的模块,对此有了更深刻的理解.对数据的管理、存储、完整性约束等也有了全面的认识。在设计过程中,出现了一些问题,主要是功能的划分,后来将图书管理系统的功能进行一一细分,归纳安排,才使整个系统的结构完善且冗余小。在运行程序时也遇到了一些问题,借书时只能借一本书,再借书就不能显示是借了还是不能借,把最多能借书的数量改了一下还是不行,最后在每一个判断输出之后都加了gotoEND借书,就能正常借书了。程序有点长,本来一个函数就能完成一个功能,他用了两个函数就我把自己能改成一个的改了。借书系统比较复杂,不容易懂,和同学交流了一下自己看了看才明白.这次的实验还让我复习了数据结构的一些知识,如数组,while语句,switch语句,链表,还知道了如何使用system(”cls")清屏,还知道了strcmp是用来比较字符串s1和s2大小的,strcpy使用来把字符串s2的值赋给s1的。这次的实验增加了我们自己动手动脑的能力,希望多做一些这样的实验,很有意义,和现实生活结合的程序增加了我的兴趣。
本文档为【数据结构图书管理系统课程设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
is_400129
暂无简介~
格式:doc
大小:289KB
软件:Word
页数:17
分类:小学语文
上传时间:2021-12-03
浏览量:0