数据结构图书管理系统课程设计报告_第1页
数据结构图书管理系统课程设计报告_第2页
数据结构图书管理系统课程设计报告_第3页
数据结构图书管理系统课程设计报告_第4页
数据结构图书管理系统课程设计报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

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

2、,分别是1图书初始化、2新书入库、3添加读者信息、4借书模块、5还书模块、6查询图书信息、7查询读者信息、8退出.我负责其中的四个模块,如下所示:1) 图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存。2) 新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。3) 添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4) 退出和文件保存退出读书管理系统并保存读者和图书信息.图书管理系统图书管理模块理读者管理模块借阅操作模块查询操作模块借书系统读者信息查询图书信息查询输入读者信息还书系统采编入库初始化图书信息

3、四、概要设计图书信息和读者信息都采用结构体类型保存.图书信息里面包括:图书编号、图书名称、作者、现有量、库存量、指向下一节点的指针。读者信息里面包括:读者编号、读者姓名、借书数量、可借图书数量、指向下一节点的指针.所有图书和读者都分别以链表的形式存储,并以编号为唯一主键。采用链表形式便于数据的添加与删改。主要的操作为:系统初始化,图书入库,读者信息登记,图书信息和读者信息文件的保存。五、详细设计数据结构的定义:图书信息:typedef struct bookchar book_num10;char book_name20;char book_writer10;int book_xy;int b

4、ook_kc;struct book next;BK;读者信息:typedef struct readerchar reader_num10;char reader_name10;int right;BO borrowMax;struct reader next;RD;算法描述:进入系统后首先进行图书初始化,输入图书的信息.开始1)初始化输入图书编号、名称、作者和图书数量进入系统初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。开始输入功能所对应的数字输入的数字小于0大于6错误!请重新输入执行所选功能采编入库 2)采编入库录入图书信息判断是否有此图书否是在原有的

5、纪录上加上现有的图书数量向系统中加入新纪录3)输入读者信息登记读者输入读者信息:读者书证号判断是否存在此读者结束否 向系统中添加新记录是重新输入读者信息5) 退出和文件保存退出系统保存文件判断是否保存成功错误!请重新登陆系统退出系统是六、程序源代码#includestdio。h>include <string.h>include stdlib。hincludeconio。h#define Max 4 typedef struct bookchar book_num10;char book_name20;char book_writer10;int book_xy; /现有in

6、t book_kc; /库存struct book *next;BK;typedef struct borrowchar borrow_book_num10;char limit_date10;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()

7、; void Insert_New_Book(); void Find_Book(); void add_reader(); 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(”nnntt*n”);printf(”nnntt 按任意键进入系统”);getch(

8、); 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(dm0dm>6) 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); case 1:Insert_New_Book();break; case 2:add_reader();break; default:printf(”n错误!”); exit(0);void Init() /*初始化/BK p0;printf(”n图书初始化开始,请输入图书信息n包括编号.书名。数量n

10、”);p0=(BK)malloc(sizeof(BK);h_book=p0; printf(”n请输入图书信息:n”); printf("图书编号:”); /输入图书编号(唯一)/ scanf(”s”,p0>book_num); printf("图书名称:”); /*输入图书名称/ scanf(”%s”,p0book_name);printf(”图书作者:”); /*输入图书作者/ scanf(”s",p0book_writer); printf("图书数量:"); /输入图书数量*/ scanf(”d",p0book_kc);

11、 p0book_xy=p0book_kc; /开始时图书现有量和库存量相等/ p0next=NULL; printf(”n图书信息初始化完毕!按任意键继续下一步操作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(s

12、trcmp(p0book_num,p1->book_num)!=0p1>next!=NULL) p1=p1->next; if(strcmp(p0book_num,p1->book_num)=0) /*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量/ printf("n此编号图书已存在!直接入库!n”); printf("图书数量:"); scanf("d”,p0book_kc); p1->book_kc+=p0book_kc; p1-book_xy+=p0->book_kc; else/*若不存在,则需

13、要输入其他的信息,然后在进行插入操作*/ printf(”图书名称:”); scanf(”s",p0>book_name);printf("图书作者:”); scanf("%s”,p0book_writer); printf("图书数量:"); scanf(”%d",p0>book_kc);/库存数量while(pnext) p=pnext; if(h_book=NULL) h_book=p0; /此处分两种情况,链表中没有数据,head直接指向p0处/ else pnext=p0; /此处分两种情况,链表中有数据,链表中

14、最后元素的next指向p0处/ p0>next=NULL; p0-book_xy=p0book_kc; printf(”n新书入库完毕!按任意键继续下一步操作n”); getch(); system(”cls”);void add_reader()/添加读者/ RD p0,*p,p1; int i;p=h_reader; printf(”n读者初始化开始,请输入读者信息。n包括书证号。姓名.n”);if (p=NULL)p0=(RD)malloc(sizeof(RD)); /申请新结点存储空间/h_reader=p0;p=h_reader; printf(”读者书证号:");

15、scanf(”s”,p0-reader_num); printf(”读者姓名:”); scanf(”s”,p0reader_name); p0right=0; for(i=0;iMax;i+) strcpy(p0-borrowi。borrow_book_num,"0"); /所借图书直接置为(即没有借书)*/ strcpy(p0borrowi。limit_date,”0"); p0-next=NULL;elsep0=(RD*)malloc(sizeof(RD));p1=h_reader;printf("n请输入读者的信息:n"); printf

16、(”读者书证号:”); scanf(”%s”,p0reader_num);for(;)while(strcmp(p0>reader_num,p1reader_num)!=0&p1->next!=NULL) p1=p1>next; if(strcmp(p0>reader_num,p1reader_num)=0) printf("n此读者编号已存在,请重新输入!n”); printf(”读者书证号:"); scanf(”s”,p0->reader_num); p1=h_reader; else printf(”读者姓名:”); scanf(

17、”s”,p0->reader_name); break; p0right=0; for(i=0;iMax;i+) strcpy(p0>borrowi。borrow_book_num,”0”); /所借图书直接置为(即没有借书)/ strcpy(p0-borrowi.limit_date,"0”); p1-next=p0; p1=p1-next; p1->next=NULL; printf(”n读者信息初始化完毕!按任意键继续下一步操作。n”); getch(); system(”cls");void Save() /保存信息/Save_Reader();S

18、ave_Book();void Save_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=pne

19、xt; free(p0); /释放所有结点*/h_reader=NULL;fclose(fp_reader); /*关闭文件/void Save_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) /*将链表中的信

20、息写入文件中/ printf(”n写入文件失败!n请重新启动本系统!n"); p0=p; p=p->next; free(p0); h_book=NULL;fclose(fp_book); /*关闭文件/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)

21、,1,fp); h_reader=p3=p2=p1; while(! feof(fp)) /*读出信息,重新链入链表/ p1=(RD )malloc(sizeof(RD)); fread(p1,sizeof(RD),1,fp); p2next=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); p2next=p1; p3=p2; p2=p1; p3next=NULL; free(p1); fclose(fp); /关闭文件/void main()

温馨提示

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

评论

0/150

提交评论