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

下载本文档

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

文档简介

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

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

3、信息编、仝息和书莫块图书信息里面包括:图书编号、图书名称、作者、现有量、库存量、指向下一节点的指针。读者信息里面包括:读者编号、读者姓名、借书数量、可借图书数量、指向下一节点的指针。所有图书和读者都分别以链表的形式存储,并以编号为唯一主键。采用链表形式便于数据的添加与删改。主要的操作为:系统初始化,图书入库,读者信息登记,图书信息和读者信息文件的保存。五、详细设计数据结构的定义:图书信息:typedefstructbookcharbook_num10;charbook_name20;charbook_writer10;intbook_xy;intbook_kc;structbook*next;

4、BK;读者信息:typedefstructreadercharreadernum10;charreader_name10;intright;BOborrowMax;structreader*next;RD;算法描述:进入系统后首先进行图书初始化,输入图书的信息1)初始化日在原有的毛匹加上现有的图书数量向系统中加入新纪录3)输入读者信息向系统中添加新记 重新输入赛者信息判断是否保存成功是退出系统错误!请重新登 陆系统5)退出和文件保存六、程序源代码#include<stdio.h>#include<string.h>#include<stdlib.h>#inc

5、lude<conio.h>#defineMax4typedefstructbookcharbook_num10;charbook_name20;charbook_writer10;intbook_xy;/现有intbook_kc;/库存structbook*next;BK;typedefstructborrowcharborrow_book_num10;charlimit_date10;BO;typedefstructreadercharreader_num10;charreader_name10;intright;BOborrowMax;structreader*next;RD;

6、BK*h_book;RD*h_reader;voidLogin();intMenu();voidlnit();voidlnit_book();voidMenu_select();voidlnsert_New_Book();voidFind_Book();voidadd_reader();voidSave();voidSave_Book();voidSave_Reader();voidLoad();voidLoad_Reader();voidLoad_Book();voidLogin()(system("cls");pjntf("nnntt*n")*pjn

7、tf("nnntt*n")*printf("nnnttt欢迎使用图书管理系统n");printf("nnntt按任意键进入系统");getch();system("cls");)intMenu()/*主菜单*/intdm;printf("ntt图书管理系统主菜单rT);printf("=n");printf("*tO一一退出系统n");printf("*t1一一采编入库n");printf("*t2-登记读者n");print

8、f("=n");printf("请选择相应的代码for(;)scanf("%d",&dm);/dm输入的数字if(dm<0|dm>6)printf("n错误!请重新输入elsebreak;)returndm;)voidMenu_select()/*主菜单选择函数*/(for(;)(switch(MenuQ)/*功能选择*/case0:system("cls");Save();printf("nnt文件保存成功!n");printf("nnt欢迎下次使用本系统!n&q

9、uot;);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

10、",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");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&qu

12、ot;,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-&

13、gt;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);/库存数量whil

14、e(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=

15、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+)s

16、trcpy(p0->borrowi.borrow_book_num,"0");/*所借图书直接置为(即没有借书)*/strcpy(p0->borrowi.limit_date,"0");p0->next=NULL;elsep0=(RD*)malloc(sizeof(RD);p1=h_reader;printf("n请输入读者的信息:n");printf("读者书证号:");scanf("%s",p0->reader_num);for(;)while(strcmp(p0-&

17、gt;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;elseprintf("读者姓名:");scanf("%s",p0-&g

18、t;reader_name);break;p0->right=0;for(i=0;i<Max;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");

19、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)/*将链表中的信息写入文件中*/pr

20、intf("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)

21、;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

22、","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);/*

温馨提示

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

评论

0/150

提交评论