图书管理系统第1页共25页C语言程序设计报告时间设计项目图书管理系统学院专业班级姓名学号指导教师图书管理系统第2页共25页目录一、需求分析..................................................................3二、程序流程图..............................................................3三、核心技术的实现说明.............................................12四、课设总结.................................................................13五、参考文献.................................................................13六、源程序.....................................................................13图书管理系统第3页共25页一、需求分析根据程序要求分析,我们认为整个程序大致应该分为5个大块,其中包括主函数以及其他4个功能函数:存入模块voidIn_nue();查询模块voidBook_search();借阅模块voidBook_send();图书归还模块voidBook_return()。各个模块又利用小模块实现细小功能划分,例如:查询模块分为全库查询voidBook_search_all();按书名查询该书籍BOOKBook_search_name(charsign[]);按编号查询该书籍BOOKBook_search_num(charsign[]);按作者查询该作者的所有书籍voidBook_search_zuozhe(BOOKbook2[],charsign[]);共4个小模块。在5个大模块外,还应加一个独立的小块——显示模块,即显示书籍信息的函数,用于全程序调用。各功能介绍:1、新书存入:主要实现程序最初运行时书籍数据的录入以及其后的运行中新书数据的追加功能;2、查询函数:实现书库拥有书籍的查看、清点功能,方便管理员查看,以及借阅者参考;3、图书借阅:实现从书库中借出书籍,保存记录。(由于时间问题,及人力不够,还不能保存借书者个人信息。)4、图书归还:将已借出的书籍归还书库;5、显示函数:显示书籍的基本信息,主要是供上面四个函数调用。图书管理系统第4页共25页除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每本书的信息类型为结构体类型,包括书名,书编号,作者,价格,拥有总数,已借出数量6个变量,添加及追加的书籍信息直接写入D盘的123.txt文件中,其他函数每次对书籍信息访问时,其数据来源都是123.txt文件,这样做不但可以保证书籍数据的一致性,而且可以对书籍数据进行永久保存,保证每次运行程序都可以采用原来的数据。图书管理系统第5页共25页二、程序流程图1、程序总体结构图主界面示例:显示主界面,输入选项1.2.3.4.5.6选项1:进入新书存入函数选项2:进入查询函数输入选项1.2.3选项3:进入图书借阅函数选项4:进入图书归还函数选项5:退出函数选项1:全库书查看选项2:按书名查看选项4:按书作者查看选项3:按书编号查看图书管理系统第6页共25页2、主函数流程图2、新书函数流程图输入选项输入为符号Q,W,E,R,T?显示主界面YN按选项进入各功能函数结束开始N选项Q进入函数输入书名等书籍数据追加方式打开文件D:\123.txt不成功?将书籍数据存入文件D:、123.txt中N结束显示“打开文件不成功”Y选项Q图书管理系统第7页共25页3、查询函数流程图①查询总操作选项W进入函数输入选项1.2.3.4.5进入对应查询函数输入内容为数字1.2.3.4.5YN用显示函数显示查询结果YN继续查询?(Y\N)结束图书管理系统第8页共25页②全库查询选项1进入此函数读的方式打开文件D:\123.txt不成功?N不是文件结尾N不是文件结尾NY显示该书籍信息结束关闭文件Y显示“打开文件不成功”读出一组书籍数据,记录到参数book1中YY图书管理系统第9页共25页③按书名查询图书管理系统第10页共25页④按编号查NYYN选项2进入此函数读的方式打开文件D:\123.txt不成功?输入书名记录在sign[]中不是文件结尾YY读出一组书籍数据,记录到参数book1中Nbook1书名等于sing[]?K=1K==0?K=0“未找到该书籍”显示book1的信息Y显示“打开文件不成功”关闭文件结束图书管理系统第11页共25页⑤按作者查与③、④类似不做赘述输入书编号记录在sign[]中NYYN选项2进入此函数读的方式打开文件D:\123.txt不成功?不是文件结尾YY读出一组书籍数据,记录到参数book1中Nbook1书编号等于sing[]?K=1K==0?K=0“未找到该书籍”显示book1的信息Y显示“打开文件不成功”关闭文件结束图书管理系统第12页共25页4、借书函数流程图5、还书函数与4相似,不做赘述。三、核心技术说明NY选项E进入函数输入要借书的书名,记录在ch[]中利用查询函数查找该书籍,记录在book00中已借出数》=总数?“对不起该书已经借完”“成功借出”借出数+1结束图书管理系统第13页共25页本程序主要由七个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,新书存入函数、查询数据函数、借书函数和还书函数是程序中较为核心的部分,下面分别进行说明。1、新书存入将数据存入一个已有的文件“123.txt”中,如果没有该文件须手动在D盘中建立该文件,以保证数据不会丢失2、查询该函数的核心是利用循环以及fread()函数从文件中读取相应数据,判断是不是所找书籍,然后调用显示函数print()显示该书籍信息。3、借书函数在查询的同时修改书籍已借出的数量即可。4、还书与借书相同。图书管理系统第14页共25页四、总结通过本次程序设计我们学会了一些基本编程技术,虽然在此过程中遇到不少问题,但经过小组的合作与共同努力克服了诸多困难,但由于水平有限程序中难免会有一些小问题我们已力求使得此程序臻于完美。五、参考文献1谭浩强.C程序设计.北京:清华大学出版社,20052刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,2006六、源程序#includestdio.h#includestring.h#includestdlib.h#includeconio.h#defineBOOK_MAX100#defineNAME_MAX20structBOOK//每本书的基本信息{charB_Name[NAME_MAX];//书名charB_Number[NAME_MAX];//书编号charB_ZB[NAME_MAX];//主编charB_CBS[NAME_MAX];//出版社intB_ZS;//总数intB_Sended;//已借出intB_Jiage;//价格};voidmanu();//显示菜单voidIn_nue();//新书存入图书管理系统第15页共25页voidBook_send();//借出voidBook_return();//还书voidBreak();//退出系统voidBook_search();//搜索,总操作voidBook_search_all();//全库查询BOOKBook_search_name(charsign[]);//名字查BOOKBook_search_num(charsign[]);//编号查voidBook_search_zuozhe(BOOKbook2[],charsign[]);//按作者查voidprint(structBOOKbook1);//显示信息//吴明宇完成:主函数,显示函数,菜单函数BOOKbook_sign;intpan;//判断有没有找到inti;//个数voidmain(){printf(******************************************************************************\n);printf(******************************************************************************\n);printf(****\n);printf(**欢迎来到**图书馆管理系统**\n);printf(****\n);charsign;do{manu();sign=getch();switch(sign){case('q'):case('Q'):In_nue();break;case('w'):case('W'):Book_search();break;图书管理系统第16页共25页case('e'):case('E'):Book_send();break;case('r'):case('R'):Book_return();break;case('t'):case('T'):break;default:printf(\n\n输入错误,请重新输入\n\n\n);break;}}while(sign!='T'&&sign!='t');}//==============================================================================================voidmanu()//显示菜单{printf(******************************************************************************\n);printf(******************************************************************************\n);printf(****\n);printf(**菜单选项:**\n);printf(****\n);printf(**(1)存入新书请按Q;**\n);printf(****\n);printf(**(2)图书查询请按W;**\n);printf(****\n);图书管理系统第17页共25页printf(**(3)图书借阅请按E;**\n);printf(****\n);printf(**(4)图书归还请按R;**\n);printf(****\n);printf(**(5)退出系统请按T;**\n);printf(****\n);printf(******************************************************************************\n);printf(******************************************************************************\n);}//=============================================================================================voidprint(BOOKbook){printf(书名:%s\n书编号:%s\n主编:%s\n出版社:%s\n价格:%d\n总数:%d本\n已借出:%d本\n,book.B_Name,book.B_Number,book.B_ZB,book.B_CBS,book.B_Jiage,book.B_ZS,book.B_Sended);}//吴文广完成:存入函数,借出函数,还书函数//=========