数据结构图书管理系统样本.docx

上传人:b****6 文档编号:4786511 上传时间:2022-12-08 格式:DOCX 页数:33 大小:393.50KB
下载 相关 举报
数据结构图书管理系统样本.docx_第1页
第1页 / 共33页
数据结构图书管理系统样本.docx_第2页
第2页 / 共33页
数据结构图书管理系统样本.docx_第3页
第3页 / 共33页
数据结构图书管理系统样本.docx_第4页
第4页 / 共33页
数据结构图书管理系统样本.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

数据结构图书管理系统样本.docx

《数据结构图书管理系统样本.docx》由会员分享,可在线阅读,更多相关《数据结构图书管理系统样本.docx(33页珍藏版)》请在冰豆网上搜索。

数据结构图书管理系统样本.docx

数据结构图书管理系统样本

 

课程设计阐明书

 

课程名称:

数据构造课程设计班级:

11--电科1班

姓名:

张海琴学号:

设计题目:

图书管理系统

 

一、设计题目与规定

【问题描述】

设计一种计算机管理系统完毕图书管理基本业务。

【基本规定】

1)每种书登记内容涉及书号、书名、著作者、现存量和库存量;

2)对书号建立索引表(线性表)以提高查找效率;

3)系统重要功能如下:

*采编入库:

新购一种书,拟定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增长;

*借阅:

如果一种书现存量不不大于0,则借出一本,登记借阅者书证号和归还期限,变化现存量;

*归还:

注销对借阅者登记,变化该书现存量。

【进一步完毕内容】

1)系统功能进一步完善;

2)索引表采用树表。

3)设计内容

4)程序流程图

5)源程序

6)软件测试报告(涉及所用到数据及成果)

二、概要设计

有八个模块

1)图书初始化

输入图书某些信息,编号、作者、书名、数量,使有一定库存。

2)新书入库

新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。

3)添加读者信息

读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才干进行借书还书

4)借书模块

读者输入读书证号,证号存在输入要借图书编号,不能借同一本书,如果借书数量以达到最大也不能借书。

5)还书模块

归还已借图书,要先输入读者书证号,书证号存在继续输入要还图书编号,图书编号存在并且借来此书,归还成功。

6)查询图书信息

7)查询读者信息

可查询读者姓名书证号,借了几本书,都是什么书和还书日期,还可以借几本书。

8)退出

退出读书管理系统并保存读者和图书信息。

 

  

 

三、算法设计

进入系统后一方面进行图书初始化,输入图书信息。

 

初始化之后,进入系统,显示功能列表,可选取任意系统,但在借书之前先要输入读者信息。

 

1)采编入库

 

 

2)输入读者信息

 

3)借阅图书

 

 

 

 

4)归还图书

 

 

 

5)查询图书信息

 

 

6)查询读者信息

 

 

四、运营成果和调试分析

图书信息初始化

同一本新书入库运营成果图

不同新书采编入库

采编入库后查询图书信息运营成果图

登记读者信息

借书

借书后查询图书信息运营成果图

借同一本书运营成果图

借不同书

借两本书后查询读者信息运营成果图

还书运营成果图

还书之后再查询读者信息运营成果图

还书后查询图书信息

退出

五、总结体会

虽然这次程序是通过上网查出来,但是通过这次实验使我懂得了图书管理系统流程,懂得了某些此前不懂得知识,在运营程序时也遇到了某些问题,借书时只能借一本书,再借书就不能显示是借了还是不能借,把最多能借书数量改了一下还是不行,最后在每一种判断输出之后都加了gotoEND借书,就能正常借书了。

程序有点长,本来一种函数就能完毕一种功能,她用了两个函数就我把自己能改成一种改了。

借书系统比较复杂,不容易懂,和同窗交流了一下自己看了看才明白。

这次实验还让我复习了数据构造某些知识,如数组,while语句,switch语句,链表,还懂得了如何使用system("cls")清屏,还懂得了strcmp是用来比较字符串s1和s2大小,strcpy使用来把字符串s2值赋给s1。

这次实验增长了咱们自己动手动脑能力,但愿多做某些这样实验,很故意义,和现实生活结合程序增长了我兴趣。

源代码

#include

#include

#include

#include

#defineMax4

typedefstructbook

{

charbook_num[10];

charbook_name[20];

charbook_writer[10];

intbook_xy;

intbook_kc;

structbook*next;

}BK;

typedefstructborrow

{

charborrow_book_num[10];

charlimit_date[8];

}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();

voidPrint_reader();

voidPrint_book();

voidBorrow_Book();

voidReturn_Book();

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\t\t本程序制作人学号:

\n\n\n\n\n\n\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("*\t3----借阅登记\n");

printf("*\t4----还书管理\n");

printf("*\t5----查询图书信息\n");

printf("*\t6----查询读者信息\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;

case3:

Borrow_Book();break;

case4:

Return_Book();break;

case5:

Print_book();break;

case6:

Print_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;

inti;

printf("\n读者初始化开始,请输入读者信息..\n涉及书证号.姓名..\n");

p0=(RD*)malloc(sizeof(RD));/*申请新结点存储空间*/

h_reader=p0;

printf("\n请输入读者信息:

\n");

printf("读者书证号:

");

scanf("%s",p0->reader_num);

printf("读者姓名:

");

scanf("%s",p0->reader_name);

p0->right=0;

for(i=0;i

{

strcpy(p0->borrow[i].borrow_book_num,"0");/*所借图书直接置为(即没有借书)*/

strcpy(p0->borrow[i].limit_date,"0");

}

p0->next=NULL;

printf("\n读者信息初始化完毕!

按任意键继续下一步操作..\n");

getch();

system("cls");

}

voidBorrow_Book()/*借书模块*/

{

BK*p0;RD*p1;

charbo_num[10],rea_num[10],lim_date[8];

inti;

p0=h_book;p1=h_reader;

printf("\n借书模块...\n");

printf("\n请输入借书读者书证号:

");

scanf("%s",rea_num);

while(p1->next!

=NULL&&strcmp(rea_num,p1->reader_num)!

=0)

p1=p1->next;

if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!

=0)

{

printf("\n此读者编号不存在!

按任意键返回..\n");

gotoEND;

}

printf("\n请输入你要借书编号:

");

scanf("%s",bo_num);

while(strcmp(bo_num,p0->book_num)!

=0&&p0->next!

=NULL)

p0=p0->next;

if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!

=0)

{

printf("\n此图书编号不存在!

按任意键返回..\n");

gotoEND;

}

elseif(p0->book_xy<=0)

{

printf("\n抱歉,此书已借完!

请等待新书到来!

!

\n按任意键返回....");

gotoEND;

}

elseif(p1->right>Max||p1->right==Max)

{

printf("\n不好意思,借书数目已满!

不能借书!

\n按任意键返回....");

gotoEND;

}

elseif(strcmp(p1->borrow[0].borrow_book_num,"0")!

=0)

{

for(i=0;i

{

if(strcmp(p1->borrow[i].borrow_book_num,bo_num)==0)

{

printf("\n抱歉!

同一种读者不能同借两本相似书!

\n按任意键返回....");

gotoEND;

}

elseif(strcmp(p1->borrow[i].borrow_book_num,"0")==0)

{

printf("\n请输入你要归还图书日期:

");

scanf("%s",lim_date);

strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);

strcpy(p1->borrow[p1->right-1].limit_date,lim_date);

p0->book_xy--;

p0->book_kc--;

printf("\n读者编号%s借书完毕!

按任意键继续下步操作..",p1->reader_num);

gotoEND;

}

}

}

else

{

printf("\n请输入你要归还图书日期:

");

scanf("%s",lim_date);

strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num);

strcpy(p1->borrow[p1->right-1].limit_date,lim_date);

p0->book_xy--;

p0->book_kc--;

printf("\n读者编号%s借书完毕!

按任意键继续下步操作..",p1->reader_num);

}

END:

getch();system("cls");

}

voidReturn_Book()/*还书模块*/

{

BK*p;RD*q;

inti,j,find=0;

charreturn_book_num[10],return_reader_num[10];

p=h_book;q=h_reader;

printf("\n还书模块...\n");

printf("\n请输入要还书读者编号:

");

scanf("%s",return_reader_num);

while(q->next!

=NULL&&strcmp(return_reader_num,q->reader_num)!

=0)

q=q->next;

if(q->next==NULL&&strcmp(return_reader_num,q->reader_num)!

=0)

{

find=2;

printf("\n此读者编号不存在!

按任意键返回..\n");

gotoend;

}

printf("\n请输入读者还书编号:

");

scanf("%s",return_book_num);

while(p->next!

=NULL&&strcmp(return_book_num,p->book_num)!

=0)

p=p->next;

if(p->next==NULL&&strcmp(return_book_num,p->book_num)!

=0)

{

find=2;

printf("\n错误!

此图书编号不存在!

按任意键返回..\n");

gotoend;

}

for(i=0;i

if(strcmp(return_book_num,q->borrow[i].borrow_book_num)==0)/*如果此读者借了此书*/

{

find=1;

for(j=i;j

{

strcpy(q->borrow[j].borrow_book_num,q->borrow[j+1].borrow_book_num);

strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date);

}

strcpy(q->borrow[Max-1].borrow_book_num,"0");

strcpy(q->borrow[Max-1].limit_date,"0");

p->book_xy++;

p->book_kc++;

q->right--;

printf("\n编号%s读者还书完毕!

按任意键继续下步操作..",return_reader_num);

}

if(find==0)

printf("\n错误!

此读者未借此书!

按任意键返回..\n");

end:

getch();system("cls");

}

voidPrint_book()/*查询图书信息*/

{

BK*p;

p=h_book;

printf("\n图书信息如下:

\n\n");

printf("图书编号\t图书名称\t图书作者\t既有\t\t库存\n");

while(p!

=NULL)

{

printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);

p=p->next;

}

printf("\n图书信息打印完毕!

按任意键继续下一步操作..");

getch();

system("cls");

}

voidPrint_reader()/*查询读者信息*/

{

RD*p;

inti;

p=h_reader;

printf("\n读者信息如下:

\n\n");

printf("读者书证号\t\t读者姓名\n");

printf("\n");

while(p!

=NULL)

{

printf("\t%s\t\t%s",p->reader_num,p->reader_name);

for(i=0;i

{

printf("\n");

printf("图书编号",i+1);

printf("\t还书日期",i+1);

printf("\n");

printf("\t%s",p->borrow[i].borrow_book_num);

printf("\t\t%s",p->borrow[i].limit_date);

}

printf("\n");

p=p->next;

}

printf("\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;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1