当前位置:首页 >> 理学 >> c语言程序设计报告 图书管理系统

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


中 国 地 质 大 学 本科生课程论文封面

课程名称 c 语 言 课 程 设 计 教师姓名 樊媛媛 本科生姓名 本科生学 本科生专业 所在院系 类别: 日期:

课程设计评语

1

对课程论文的评语:

平时成绩: 总 成 绩:

课程论文成绩: 评阅人签名:

注:1、无评阅人签名成绩无效; 2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效; 3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

目 录

2

课程设计评语......................................................................................................................................1 目 录....................................................................................................................................................2 1.课程论文题目................................................................................................................................3 2.程序设计思路................................................................................................................................3 3.功能模块图....................................................................................................................................4 4.数据结构设计................................................................................................................................4 5.算法设计........................................................................................................................................4 6.程序代码........................................................................................................................................5 7.程序运行结果..............................................................................................................................11 8.编程中遇到的困难及解决方法 ..................................................................................................14 9.总结心得及良好建议 ..................................................................................................................15 10.致谢............................................................................................................................................15

1.课程论文题目

图书管理系统

2.程序设计思路
3

根据要求,图书管理系统以文本文件存放在文件中,故需要 提供文件的输入、输出等操作;还需要保持记录以进行删除,查 询,借书,还书,退出,添加等等操作;另外还有键盘式旋转菜 单以实现功能选择模块。

3.功能模块图

图书管理系统

数据输入

数据添加

查询

删除

借书

还书

系统功能模块图

4.数据结构设计

先写主函数 main (),然后设计个功能选项,用 switch 选择,然后进入不 同模块,进行不同选择,实现不同功能。每个图书信息设置一个结构体,将输入 信息存入文件,提供查询功能,还有删除功能以及借书还书功能。每运行一功能 后都返回主界面,方便再次选择,还有设置退出模块,方便退出。

5.算法设计

4

main ()

sr()

cx()

sc()

js()

hs()

jsh()

先定义结构体数组 struct books,然后设置主界面,主界面出现 6 个功能选项,分 别是输入 sr() 、借书 js()、还书 hs()、删除 sc()、退出 tc()、查询 cx().各模块设计如下: 输入模块 sr(),先调用文件 eup,对其进行读取,然后增加,再对其进行保存和 调用。其中结构体只输入 tsmc 图书名称,tsbh 图书编号,dj 单价,zz 作者, 然后自动 生成,czzt 存在状态,姓名 xm,学号 xh,性别 xb. 查询模块 cx(),有选项图书编号和图书名称,然后选择,用 if 选择,然后用 for 循 环查找,当输入名称与文件中的名称相同时,便显示此信息。 删除模块就是在查找功能的图书后,选择删除,将 strcpy 将 s[i+1]的值赋给 s[i]。 借出模块也是在查询的基础上,若 s[i]的存在状态为已借出,则显示已借出,无 法再借,若未借出,则将 s[i]的存在状态 czzt 变为已借出,然后输入姓名,学 号,性别,最后显示出已借出。 还书模块就是在查询的基础上,若 s[i]的存在状态为未借出,则无法归还,若借 出,则将存在状态变为未借出,然后自动将姓名,学号,性别变为初始值。 退出模块使 flag=1,而在 main 就有 bool flag 且 main 中已令 main=0.这样就实现 了退出功能。 其中若输入超过选项值后,都会显示输入错误,请重新输入。若字符错误,程序 就直接出现错误了。

6.程序代码

#include<stdio.h> #include<windows.h> #include<string.h> #include<conio.h> #define M 100 struct books { char tsmc[12]; int tsbh; float dj; char zz[12]; char czzt[12]; char xm[12];
5

char xb[12]; int xh; }s[M]; int N; bool flag; int main () { int sele; flag=0; sele=1; void sr(); void cx(); void sc(); void js(); void hs(); void tc(); void jsh(); //system ("tsgl"); printf("\n\n"); printf(" ************************\n"); printf(" 1:输入 2:查询 3:删除 \n"); printf(" 4:借书 5:还书 0:退出 \n"); printf(" ************************\n"); while(1) { printf("\n\n 请输入功能序号:"); scanf ("%d",&sele); if(sele>=0 && sele<=5) { switch(sele) { case 1:sr();break; case 2:cx();break; case 3:sc();break; case 4:js();break; case 5:hs();break; case 0:jsh();break; } if(flag) break; printf("\n\n"); printf(" ************************\n"); printf(" 1:输入 2:查询 3:删除 \n"); printf(" 4:借书 5:还书 0:退出 \n"); printf(" ************************\n"); } else { printf("输入错误请再次输入|\n\n"); printf("\n\n");
6

printf(" printf(" printf(" printf("

************************\n"); 1:输入 2:查询 3:删除 \n"); 4:借书 5:还书 0:退出 \n"); ************************\n");

} printf("\n\n 让任意键继续\n"); } //wr_file(); } /******主函数***/

/*********输入*********/ void sr() { int n,i; N=0; printf("可输入的书本数:"); scanf("%d",&n); N=n+N; printf("请输入相关信息:\n"); for(i=1;i<=n;i++) { printf("图书名称:"); scanf("%s",s[N-n-1+i].tsmc); printf("图书编号:"); scanf("%d",&s[N-n-1+i].tsbh); printf("单价:"); scanf("%f",&s[N-n-1+i].dj); printf("作者:"); scanf("%s",&s[N-n-1+i].zz); strcpy(s[N-n-1+i].czzt,"未借出"); strcpy(s[N-n-1+i].xm,"无"); } }

/********查询**********/ void cx() { int i,j[100]={-1},d,k,t=0; char m[20]; printf("查询:"); printf("1:图书名称 2:图书编号"); printf("\n\n 请输入查询选项:"); scanf("%d",&k); if(k==1) { printf("请输入图书名称:");
7

scanf("%s",m); for(i=0;i<N;i++) if(strcmp(m,s[i].tsmc)==0) { j[t]=i; t=t+1; } } else if(k==2) { printf("请输入图书编号:"); scanf("%d",&d); for(i=0;i<N;i++) if(d==s[i].tsbh) { j[t]=i; t++; } } if(j[0]==-1&&t==0) printf("没有找到!\n"); if(j[0]!=-1 && t!=0) { printf("\t 图书名称 \t 图书编号 \t 单价 \t 作者 \t 存在状态 \t 借书人姓名 \t 性别 \t 学号 \n"); for(i=0;i<t;i++) printf("\t%s \t%d \t%f \t%s \t%s \t%s \t%s s[j[i]].tsmc,s[j[i]].tsbh,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh); } } /********删除模块*********/ void sc() { int i,d,k,t=0; char ms[20]; int ja=-1; printf("查询:"); printf("1:图书名称 2:图书编号"); printf("\n\n 请输入查询选项:"); scanf("%d",&k); if(k==1) { printf("请输入图书名称:"); scanf("%s",ms); for(i=0;i<N;i++) if(strcmp(ms,s[i].tsmc)==0) { ja=i; break; } } else if(k==2) {
8

\t%d ",

printf("请输入图书编号:"); scanf("%d",&d); for(i=0;i<N;i++) if(d==s[i].tsbh) { ja=i; break; } } printf("确定删除该图书吗?1 表示 Yes,其他 No"); int p; scanf("%d",&p); if(p==1) printf("Congratulations,删除成功||\n"); if(ja!=-1 && p) { N=N-1; for(i=ja;i<N;i++) { strcpy(s[i].tsmc,s[i+1].tsmc); s[i].tsbh=s[i+1].tsbh; s[i].dj=s[i+1].dj; strcpy(s[i].zz,s[i+1].zz); strcpy(s[i].czzt,s[i+1].czzt); strcpy(s[i].xm,s[i+1].xm); strcpy(s[i].xb,s[i+1].xb); s[i].xh=s[i+1].xh; } } else if(ja==-1) printf ("没有找到!\n"); } /**********借书模块***********/ void js() { int i,j[100]={-1},d,k,t=0; char m[20]; printf("查询:"); printf("1:图书名称 2:图书编号"); printf("\n\n 请输入查询选项:"); scanf("%d",&k); if(k==1) { printf("请输入图书名称:"); scanf("%s",&m); for(i=0;i<N;i++) if(strcmp(m,s[i].tsmc)==0) { j[t]=i; t=t+1; } }
9

else if(k==2) { printf("请输入图书编号:"); scanf("%d",&d); for(i=0;i<N;i++) if(d==s[i].tsbh) { j[t]=i; t++; } } if(j[0]==-1&&t==0) printf("没有找到!\n"); strcpy(s[j[i]].czzt,"已借出"); printf("此书已借出\n"); if(j[0]!=-1&&t!=0&&s[j[i]].czzt==" 未借出") { printf("%s %d %f %s %s %s %s %d ", s[j[i]].tsmc,s[j[i]].tsbh,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh); } printf("1:确定借阅 2:退出\n"); scanf("%d",&k); switch(k) { case 1:printf("请输入学号:\n"); scanf("%d",&s[j[i]].xh); printf("请输入姓名:\n"); scanf("%s",&s[j[i]].xm); printf("请输入性别:\n"); scanf("%s",&s[j[i]].xb); strcpy(s[j[i]].czzt,"已借出"); printf("已借出,按任意键继续\n"); //getch(); case 2:break; } } /*************还书模块***************/ void hs() { int i,j[100]={-1},d,k,t=0; char m[20]; printf("查询:"); printf("1:图书名称 2:图书编号"); printf("\n\n 请输入查询选项:"); scanf("%d",&k); if(k==1) { printf("请输入图书名称:"); scanf("%s",&m); for(i=0;i<N;i++) if(strcmp(m,s[i].tsmc)==0)
10

{ j[t]=i; t++; break; } } else if(k==2) { printf("请输入图书编号:"); scanf("%d",&d); for(i=0;i<N;i++) if(d==s[i].tsbh) { j[t]=i; t++; break; } } if(t==0) printf("没有找到!\n"); else { printf("%s %f %s %s %s %s %d \n", s[j[i]].tsmc,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh); printf("1:确定归还 2:退出\n"); int p; scanf("%d",&p); if(p==1) { strcpy(s[j[i]].czzt,"未借出"); strcpy(s[j[i]].xm,"无"); s[j[i]].xh=0; printf("已归还,按任意键继续\n"); } //getch(); } } /*************结束模块***************/ void jsh() { flag=1; }

7.程序运行结果

11

12

13

各模块均能执行。

8.编程中遇到的困难及解决方法
14

做程序时,文件函数无法实现,于是找了同学跟我讲解,看书还有就是看例 子等等,最终找出了个解决方案。还有系统最初运行时有很多不尽人意的,比如 我希望每次运行后都出现主界面,这样方便选择。如果出现错误的话,要显示出 错误原因,并给出提示,我解决了几个这样的问题,比如借书时如果已借出就要 显示出“已借出,请重新选择”,如果没有,就显示无法找到,并显出主菜单,再 次选择。

9.总结心得及良好建议

对于程序的设计,必须先理解 c 语言的一些知识,用起来才会得心应手,最 好之前就想好大致用什么算法去实现需要的程序。对于举一反三的内容不是用来 抄的,我们必须要先对其理解,这样才能写好一个程序。程序中最复杂的感觉是 调试,有时候自己有很多习惯性的错误真的很难找到,所有要形成好的习惯。还 有就是要养成好的思维,要多练习,不能眼高手低。

10.致谢

15


赞助商链接
更多相关文档:

C语言课程设计图书馆管理系统程序代码

C语言课程设计图书管理系统程序代码_理学_高等教育_教育专区。C语言课程设计图书管理系统程序代码 #include<stdio.h> #include<windows.h> #include<string.h>...

C语言程序设计报告 图书馆信息管理系统

C语言程序设计报告 图书馆信息管理系统_IT/计算机_专业资料。C语言实践 系统设计 图书信息管理系统 2011 年第二阶段课程设计成果报告 实训项目: 学号: 0112959 程序...

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

C语言课程设计图书管理系统课程设计报告_管理学_高等教育_教育专区。C语言课程设计图书管理系统C语言设计报告C语言设计课程设计,图书管理 ...

C语言图书管理系统程序设计报告

C语言图书管理系统程序设计报告_管理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档C语言图书管理系统程序设计报告_管理学_高等教育_教育专区。课程设计...

C语言课程设计图书管理系统

C 语言课程设计 语言课程设计 姓名: 姓名:郭献安 班级:054101-13 班级:054101学号: 学号:20101001871 图书管理系统》 《图书管理系统》目录 题目要求及能实现的...

C语言课程设计图书管理系统

C语言课程设计图书管理系统_理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 C语言课程设计图书管理系统_理学_高等教育_教育专区。本文档只作为参考,...

C语言程序设计--图书管理系统--实训报告

C语言程序设计--图书管理系统--实训报告_实习总结_总结/汇报_实用文档。目 录...28 1 1 前言近年来,随着图书馆规模的不断扩大,图书数量也相应的增加, 有关...

C语言程序设计报告__图书馆信息管理系统

C语言程序设计报告__图书馆信息管理系统_计算机软件及应用_IT/计算机_专业资料。...2014 年第二阶段课程设计成果报告 实训项目: 程序设计技术课程设计 姓名:郑毓豪...

C语言图书管理系统课程设计报告.张真

C语言图书管理系统课程设计报告.张真_工学_高等教育_教育专区。C语言图书管理系统课程设计报告.C 语言课程设计题 系专班姓学地目: 图书管理系统 别: 数学与统计...

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

C 语言课程设计 设计报告 题学姓学专班 目:图书管理系统 院: 名: 号: 业: 级: 设计日期: 指导教师: 成绩: 一、选题背景本例实现一个图书管理系统,并实现...

更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com