c语言图书管理系统课程设计报告.docx

上传人:b****2 文档编号:2939229 上传时间:2023-05-05 格式:DOCX 页数:38 大小:191.19KB
下载 相关 举报
c语言图书管理系统课程设计报告.docx_第1页
第1页 / 共38页
c语言图书管理系统课程设计报告.docx_第2页
第2页 / 共38页
c语言图书管理系统课程设计报告.docx_第3页
第3页 / 共38页
c语言图书管理系统课程设计报告.docx_第4页
第4页 / 共38页
c语言图书管理系统课程设计报告.docx_第5页
第5页 / 共38页
c语言图书管理系统课程设计报告.docx_第6页
第6页 / 共38页
c语言图书管理系统课程设计报告.docx_第7页
第7页 / 共38页
c语言图书管理系统课程设计报告.docx_第8页
第8页 / 共38页
c语言图书管理系统课程设计报告.docx_第9页
第9页 / 共38页
c语言图书管理系统课程设计报告.docx_第10页
第10页 / 共38页
c语言图书管理系统课程设计报告.docx_第11页
第11页 / 共38页
c语言图书管理系统课程设计报告.docx_第12页
第12页 / 共38页
c语言图书管理系统课程设计报告.docx_第13页
第13页 / 共38页
c语言图书管理系统课程设计报告.docx_第14页
第14页 / 共38页
c语言图书管理系统课程设计报告.docx_第15页
第15页 / 共38页
c语言图书管理系统课程设计报告.docx_第16页
第16页 / 共38页
c语言图书管理系统课程设计报告.docx_第17页
第17页 / 共38页
c语言图书管理系统课程设计报告.docx_第18页
第18页 / 共38页
c语言图书管理系统课程设计报告.docx_第19页
第19页 / 共38页
c语言图书管理系统课程设计报告.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言图书管理系统课程设计报告.docx

《c语言图书管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《c语言图书管理系统课程设计报告.docx(38页珍藏版)》请在冰点文库上搜索。

c语言图书管理系统课程设计报告.docx

c语言图书管理系统课程设计报告

 

沈航北方科技学院

课程设计说明书

 

课程名称c语言课程设计

 

教学部机械工程系

专业数控

班级B042111

学号B04211123

学生姓名田文

指导教师赵小磊_

 

2021年6月

链表实现图书信息操作

田文

系统设计方案6

4详细设计7

登录模块7

借书管理模块8

还书管理模块9

5调试与测试10

5.1调试10

5.2测试11

6结论12

完毕语12

参考文献12

附录1-用户手册〔另起一页〕13

 

摘要

经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:

图书信息输入函数input(),借阅图书函数(borrow),增加删除图书函数(adddelet),图书查询函数(search),以及归还图书信息函数(giveback)。

在这些函数当中,这四个函数的实现严格按照题目的要求。

1、图书信息输入函数主要功能是从键盘输入图书信息并将其写入文件中,作为图书馆的书库,以便对下面的函数进展运行,此函数是根底.

2、图书借阅函数主要借阅图书的功能和录入学生应该还书的时间;

3、图书归还函数主要实现借阅图书后,归还图书的功能,并把应该还书的时间和实际还书的时间进展比拟过期时输出学生的信息,也是该程序的的一个重点

4、增加删除图书函数实现的功能是实现对图书的删除;

5、图书查询函数允许按照图书编号,书名,作者,出版社进展查询,并将查询信息输出;

6、退出函数该函数主要实现退出运行界面的功能.

除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。

每一个图书记录都包含:

图书编号,名称,出版社,作者,现有数量和总量在程序当中,将图书记录类型定义为构造体类型,并把它写入d:

\\liuyan.txt中,其他函数每次对图书记录的访问,其数据来源都是d:

\\liuyan.txt文件,这样做不但可以保证图书数据的一致性,而且可以对图书数据进展永久保存,保证每次运行程序都可以采用原来的数据。

1绪论

整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:

图书信息输入函数input(),借阅图书函数(borrow),增加删除图书函数(adddelet),图书查询函数(search),以及归还图书信息函数(giveback)。

在这些函数当中,这四个函数的实现严格按照题目的要求。

2系统分析

2.1功能需求

设计一个通过链表实现对图书信息进展管理的程序,要求完成以下功能:

1.建立一个链表,每个结点应包含以下信息:

图书号、书名及出版社、价格、ISBN、作者、册数;

2.将输入信息按图书号进展从小到大的排序;

3.实现查询功能——输入书名,查询输出相关信息;

4.实现插入功能——输入图书信息并插入有序链表中;

5.实现删除功能——输入书名或书号,可将其信息从链表中删除;

6.统计链表中图书总价值,并在屏幕上输出;

7.统计该链表中价值超过某一数目的图书总数,并在屏幕上输出。

8.有界面友好易于使用的菜单。

需要向系统输入图书号、书名及出版社、价格、ISBN、作者、册数

2.3性能需求

在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,平安,可靠。

3总体设计

根据分析整个系统主要划分为4个功能模块,分别执行要求中的功能。

该系统需要有添加,删除,查询,修改,累加,循环显示主菜单,保存信息功能,能将会员卡进展注销,利用显示函数将会员卡内所有信息显示。

要求有循环显示菜单工能。

功能模块图如图1所示。

(1)输入读者

输入相关读者信息至内存中;

(2)输入书籍

输入书籍号,对已存的书籍信息进展查询;

(3)书籍管理模块

输入相应代码,对相关信息进展查询;

(4)退出管理模块

主菜单中输入0退出系统登录;

图1图书管理系统流程图

图2管理员幅员书管理系统流程图

图3图书查询主界面流程图

设计一个总菜单,1登录信息,2查询管理,3书籍管理系统,4退出系统。

根本功能的实现都将表达在这几个菜单项选择项中。

structreader*next;

}RD;

BK*h_book;

RD*h_reader;

voidLogin();/*登陆*/

intMenu();/*主菜单*/

voidMenu_select();/*主菜单项选择择函数*/

voidInit();/*初始化*/

voidInit_reader();/*初始化读者*/

voidInit_book();/*初始化图书*/

voidInsert_New_Book();/*新书入库*/

intFind();/*查找菜单*/

voidFind_Select();/*查找菜单项选择择函数*/

voidFind_Reader();/*查找读者信息*/

voidFind_Book();/*查找图书信息*/

voidPrint_reader();/*打印读者信息*/

voidPrint_book();/*打印图书信息*/

voidBorrow_Book();/*借书函数*/

voidReturn_Book();/*还书函数*/

voidSave();/*保存信息*/

voidSave_Reader();/*保存读者信息*/

voidSave_Book();/*保存图书信息*/

voidLoad();/*加载信息*/

voidLoad_Reader();/*加载读者信息*/

voidLoad_Book();/*加载图书信息*/

voidLogin()/*登陆*/

{

system("cls");

printf("\n\n\n\t\t\t欢送登陆本系统\n");

printf("\n\n\t\t系统版权所有\n\n\n\n\n\n\n");

printf("\n\n\n\t\t按任意键进入系统...");

getchar();system("cls");

}

intMenu()/*主菜单*/

{intsn;

printf("\n\t\t图书管理系统主菜单\n");

printf("=================================================\n");

printf("*\t0----退出系统*\n");

printf("*\t1----新书入库*\n");

printf("*\t2----查询*\n");

printf("*\t3----借书登记*\n");

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

printf("=================================================\n");

printf("请选择相应代码:

");

4详细设计

登录模块

图4:

输入读者信息

图5:

输入书籍信息

借书管理模块

主菜单中输入读者和书籍信息后,对已存的书籍进展借阅,程序流程如图4所示。

图6借书模块流程图

还书管理模块

对于已还书籍进展管理,程序流程如图4所示。

图7还书模块流程图

5调试与测试

5.1调试

调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。

调试的任务是及时改正测试过程中发现的软件错误。

具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开场,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。

然后仔细研究推断代码以确定问题的原因,并设法改正。

调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。

本系统调试过程中遇到问题、原因和解决方法如下面介绍。

(1)程序只能在当前运行时才能实现自动生成书籍信息,而关闭系统再次翻开添加新读者又从0开场与之前的读者重复,导致借还信息程序管理混乱,无法正确运行。

原因:

在执行后系统没有记录当前的读者信息,因为读者信息自动按1、2、3、4依次递增生成系统;应该记录最后所生成的读者信息,在下次运行程序时系统会接着上次记录的读者信息自动依次生成。

(2)运行完程序一次有错误提醒

原因:

上次运行程序后没有关闭操作界面当点击编译时会有一个错误提示,解决方法:

将上一次运行时的操作界面关闭。

〔3〕设计过程中的想法与程序中的缺乏

总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与缺乏。

比方,程序中主函数写的有点繁琐,有太多的嵌套,不是那么井然有序,条理清晰,程序注释也不是很完善,对信息处理功能还有些缺乏之处,提示信息不明确。

还有就是没能做到模糊查询。

这个系统主要是参照课本手机通讯录模版编写的,同时也得到了教师和同学的一些帮助。

我在做系统的过程中也遇到了很多问题,有的是知识缺乏,有的是考虑不够周全。

事实证明,只靠自己的知识面还是很窄,独立处理问题能力不是很强,以后还要加强对c语言的学习。

我认为对于C语言编写的程序来说,使用方法大致都是一样的,所以如果要改良的话,就是要改良一些算法,尽量把界面编写清楚,提示信息全面,方便易用。

5.2测试

软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程〞。

或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部构造而精心设计一批测试用例〔即输入数据及其预期的输出结果〕,并利用这些测试用例去运行程序,以发现程序错误或缺陷。

过度测试那么会浪费许多珍贵的资源。

到测试后期,即使找到了错误,然而付出了过高的代价。

测试数据过程如下。

(1)登陆功能测试

输入数据1:

读者编号:

23,读者姓名:

tianwen,书籍编号:

01,书名:

xyzxxx,数量:

10

预期结果:

数据输入到系统中;

运行结果:

出现图书管理系统主菜单

说明:

登陆功能实现

(2)借书功能测试

(3)还书功能测试

6结论

计算机综合训练顺利完成,任务书中所提出的要求全部实现,可以对会员信息进展添加、修改、删除以及按各种信息查找,可将会员本次消费金额累加到会员卡上,能够自动生成会员卡号并且将各种信息保存到文本文件中。

不过这个程序还有些不够完善,例如:

在添加新会员时当会员信息全部输入之后系统中的全部会员信息自动显示,这样非常占用操作界面,使操作不是十分清晰;再一个就是系统无法正确识别身份证号和好码只能靠会员卡管理员的认真细心才能减少出错,改良方式:

调用一个可以判断号码位数的函数,如果输入位数不合法那么提出警告重新输入。

完毕语

在这一个星期的实践中,通过编写这个图书管理系统,我体会到了c语言学习的实用性。

将理论和实践结合在一起,用先进的计算机工具方便人们的生活。

C语言程序的编写首先要从大局考虑,把自己编写整个程序的思想都写在草稿上,这样有助于自己编写程序,在编写时要完善注释,方便其他人理解程序。

编写的程序从理论上来说并没有错,但一上机就问题不断。

甚至有些课本上的知识照搬不变,也不能得到正确的结果。

有时一个程序改了一遍又一遍,但就是不能成功,编程显得枯燥乏味,看似简单的程序题,在调试时却屡屡出错。

经反复的修改后,结果正确了,这时所有的乏味都显得那么无力,一切都是值得的。

我认为,开发一套系统,最重要的是细心,并且思考要全面,结合实际,充分考虑到客户的需求和现实意义。

不管什么系统,只用运用到实际应用中,才具有现实意义。

所以c语言程序的实用性很强,我们以后还要更加努力认真地学习编程语言。

参考文献

附录1-用户手册

点击运行,首先出现的是菜单界面,选择菜单项选择项进展操作,可进展如图8所示。

系统主界面〔选择数字进入,退出系统〕

图8菜单界面

选择1进入系统,然后出现功能菜单

图9登陆功能;

输入读者和书籍,然后出现功能菜单;

图10图书管理系统主菜单

附录2-源程序

#include

#include

#include

#defineMax3

typedefstructbook

{

charbook_num[10];

charbook_name[20];

charbook_writer[10];

intbook_kc;

intbook_xy;

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();/*主菜单*/

voidMenu_select();/*主菜单项选择择函数*/

voidInit();/*初始化*/

voidInit_reader();/*初始化读者*/

voidInit_book();/*初始化图书*/

voidInsert_New_Book();/*新书入库*/

intFind();/*查找菜单*/

voidFind_Select();/*查找菜单项选择择函数*/

voidFind_Reader();/*查找读者信息*/

voidFind_Book();/*查找图书信息*/

voidPrint_reader();/*打印读者信息*/

voidPrint_book();/*打印图书信息*/

voidBorrow_Book();/*借书函数*/

voidReturn_Book();/*还书函数*/

voidSave();/*保存信息*/

voidSave_Reader();/*保存读者信息*/

voidSave_Book();/*保存图书信息*/

voidLoad();/*加载信息*/

voidLoad_Reader();/*加载读者信息*/

voidLoad_Book();/*加载图书信息*/

voidLogin()/*登陆*/

{

system("cls");

printf("\n\n\n\t\t\t欢送登陆本系统\n");

printf("\n\n\t\t系统版权所有\n\n\n\n\n\n\n");

printf("\n\n\n\t\t按任意键进入系统...");

getchar();system("cls");

}

intMenu()/*主菜单*/

{intsn;

printf("\n\t\t图书管理系统主菜单\n");

printf("=================================================\n");

printf("*\t0----退出系统*\n");

printf("*\t1----新书入库*\n");

printf("*\t2----查询*\n");

printf("*\t3----借书登记*\n");

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

printf("=================================================\n");

printf("请选择相应代码:

");

for(;;)

{scanf("%d",&sn);

fflush(stdin);

if(sn<0||sn>4)

printf("\n错误!

请重新输入:

");

elsebreak;

}

returnsn;

}

voidMenu_select()/*主菜单项选择择函数*/

{

for(;;)/*循环调用模式,保证能进展重复操作*/

{

switch(Menu())/*功能选择*/

{case0:

system("cls");/*清楚屏幕先前的显示内容*/

Save();

printf("\n\n\t文件保存成功!

\n");

printf("\n\n\t欢送下次使用本系统!

\n");

getchar();

exit(0);

case1:

Insert_New_Book();break;

case2:

Find_Select();break;

case3:

Borrow_Book();break;

case4:

Return_Book();break;

default:

printf("\n错误!

");exit(0);

}

}

}

voidInit()/*初始化*/

{

Init_reader();

Init_book();

}

voidInit_reader()/*初始化读者信息*/

{

RD*p0;

inti;

printf("\n读者初始化开场,请输入读者信息..\n包括编号.姓名..\n");

p0=(RD*)malloc(sizeof(RD));

h_reader=p0;

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

\n");

printf("ReaderNo.:

");/*输入读者编号(唯一)*/

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

printf("ReaderName:

");/*输入读者姓名(不唯一)*/

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

p0->right=0;

for(i=0;i

{

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

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

}

p0->next=NULL;

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

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

getchar();

system("cls");

}

voidInit_book()/*初始化图书信息*/

{

BK*p0;

printf("\n图书初始化开场,请输入图书信息..\n包括编号.书名.数量..\n");

p0=(BK*)malloc(sizeof(BK));

h_book=p0;

printf("\n请输入图书信息:

\n");

printf("BookNo.:

");/*输入图书编号(唯一)*/

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

printf("BookName:

");/*输入图书名称*/

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

printf("BookWriter:

");/*输入图书作者*/

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

printf("Number:

");/*输入图书数量*/

scanf("%d",&p0->book_kc);

p0->book_xy=p0->book_kc;/*开场时图书现有量和库存量相等*/

p0->next=NULL;

printf("\n图书信息初始化完毕!

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

getchar();

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("BookNo.:

");

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("Number:

");

scanf("%d",&p0->book_kc);

p1->book_kc+=p0->book_kc;

p1->book_xy+=p0->book_kc;

}

else/*假设不存在,那么需要输入其他的信息,然后在进展插入操作*/

{

printf("BookName:

");

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

printf("BookWriter:

");

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

printf("Number:

");

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");

getchar();

system("cls");

}

intFind()/*查找菜单*/

{

intsn;

printf("\n\t\t信息查询菜单\n");

printf("=================================================\n");

printf("*\t0----返回上级\t*\n");

printf("*\t\t*\n");

printf("*\t1----查找图书2----查找读者\t*\n");

printf("*\t\t*\n");

printf("*\t3----打印图书4----打印读者\t*\n");

printf("=================================================\n");

printf("请选择相应代码:

");

for(;;)/*循环调用模式,保证能进展重复操作*/

{

scanf("%d",&sn);

fflush(stdin);

if(sn<0||sn>4)

printf("\n错误

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2