图书馆管理系统-c语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图书馆管理系统
045072班王磊
第三部分13题
一、题目要求
图书馆管理系统包括:图书名称、图书编号、单价、作者、存在状态,借书人姓名、性别、学号等,此外设计的系统须具有如下功能:
1.新进图书及基本信息输入
2.图书基本信息查询
3.对撤销图书信息的删除
4.办理借书手续
5.办理书手续
二、需求分析
根据题目要求,需建立图书管理系统结构体,结构体中应包括图书名称,图书编号,单价、作者、存在状态,借书人姓名,性别、学号等。其中存在状态设定为整形变量,可用不同的数字来表达,在该系统中用〝1〝来表示可借出,〝0〝来表示已借出。
图书信息应存放在文件中,所以提供文件的输入输出等操作;并且程序需具有实现图书信息浏览,查找、修改等功能,并进行借出借入服务;另外还应提供键盘是选择菜单来实现功能选择。
三、总体设计
结合上述分析该系统应包括以下模块:信息输入、图书查找、信息删除,图书借出、图书归还。结构图如下
四、详细设计
1、主函数
主函数要求设计比较简洁,只提供设输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。
[流程图]
[程序]
main()
{int n,t;
/*变量保存选择菜单数字,判断输入的数字是否在功能人能够菜单所对应的数字范围内*/
do
{puts("\t\t\t***欢迎使用图书馆管理系统***\n\n\n");
puts("\t\t\t*************MENU************\n\n");
puts("\t\t\t1. 图书信息输入\n");
puts("\t\t\t2. 新图书信息录入\n");
puts("\t\t\t3. 图书信息浏览\n");
puts("\t\t\t4. 图书信息查找\n");
puts("\t\t\t5. 图书信息修改\n");
puts("\t\t\t6. 图书信息删除\n");
puts("\t\t\t7. 图书借阅\n");
puts("\t\t\t8. 图书归还\n");
puts("\t\t\t9. 退出系统\n");
puts("\t\t\t\n\n\n*****************************\n\n");
/*对功能选项的显示*/
printf("选择使用功能种类(1--9)[ ]\b\b");
scanf("%d",&n);
if(n<1||n>9)
{t=1;getchar();} /*对选择的数字作判断*/
else t=0;}
while(t==1);
/*实现选择功能*/
switch(n)
{case 1:enter();break; /*输入功能*/
case 2:add();break; /*追加功能*/
case 3:browse();break; /*浏览功能*/
case 4:search();break; /*查找功能*/
case 5:modify();break; /*修改功能*/
case 6:del();break; /*删除功能*/
case 7:TSXX_out();break; /*图书借出*/
case 8:TSXX_back();break; /*归还功能*/
case 9:exit(0);break; /*退出*/
}
}
/*以上完成了主函数计主菜单的构成*/
2输入模块
[数据结构]
根据题目中对数据结构的要求每一本图书包含的信息利用一个结构体来存放。其中结构体需包含:字符变量:图书名称、作者、借书人姓名
实型变量:图书编号、单价、学号
整型变量:存在状态,、性别、库存
定义结构体如下
struct TSXX
{char tsn[30]; /*图书名称*/
int bh[15]; /*图书编号*/
float pri; /*单价*/
char zzn[10]; /*作者*/
int zt; /*存在状态*/
int kc /*库存*/
char jsn[10]; /*借书人姓名*/
int sex; /*性别*/
int num[15]; /*学号*/
} ts[N]; /*ts[N]中每个数组元素对应一本书的全部信息*/ /*以上完成了对于结构体的定义*/
[注意]
本程序ts[N]中的个数,采取宏定义的方式,可以随时在源程序宏定义中更改,本程序在此宏定义#define N 10000。
[流程图]
[程序]
void enter()
{int i;
for(i=0;i {printf("请输入图书信息\n\n"); input(i);} /*调用输入函数*/ if(i!=0) save() ; / */ printf_back(); /*一个任务结束时让用户选择是浏览还是返回*/ 3。追加模块 [需求分析] 该模块的功能是假如用户需要新加入新的图书信息,通过键盘输入将新信息逐条加在原来输入文件上但不能覆盖原有信息。 [流程图] [程序] void add() {int i,n,m,k; n=()load; printf(〝可添加信息个数(0-%d):[]\b\b〝,N-n-1); scanf(〝%d〝,&m); k=m+n; for(i>n;i<=k;i++) input(i); if(fp=fopen(〝ts.txt〝, 〝a〝)==NULL) {printf(〝文件无法打开\n〝); } for(i>n;i<=k;i++) fclose(fp); printf_back(); } 4.查找模块 [需求分析] 该模块的功能是根据输入的图书名称查找相应的记录找到以后,可继续进行删除和修改功能[流程图]