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

上传人:b****5 文档编号:8124613 上传时间:2023-01-29 格式:DOCX 页数:16 大小:85.26KB
下载 相关 举报
c语言程序设计报告图书管理系统.docx_第1页
第1页 / 共16页
c语言程序设计报告图书管理系统.docx_第2页
第2页 / 共16页
c语言程序设计报告图书管理系统.docx_第3页
第3页 / 共16页
c语言程序设计报告图书管理系统.docx_第4页
第4页 / 共16页
c语言程序设计报告图书管理系统.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

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

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

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

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

 

中国地质大学

本科生课程论文封面

课程名称c语言课程设计

教师姓名樊媛媛

本科生姓名

本科生学

本科生专业

所在院系

类别:

日期:

 

课程设计评语

对课程论文的评语:

平时成绩:

课程论文成绩:

总成绩:

评阅人签名:

注:

1、无评阅人签名成绩无效;

2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;

3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。

1.课程论文题目

图书管理系统

2.程序设计思路

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

3.功能模块图

系统功能模块图

4.数据结构设计

先写主函数main(),然后设计个功能选项,用switch选择,然后进入不同模块,进行不同选择,实现不同功能。

每个图书信息设置一个结构体,将输入信息存入文件,提供查询功能,还有删除功能以及借书还书功能。

每运行一功能后都返回主界面,方便再次选择,还有设置退出模块,方便退出。

5.算法设计

删除

先定义结构体数组structbooks,然后设置主界面,主界面出现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就有boolflag且main中已令main=0.这样就实现了退出功能。

其中若输入超过选项值后,都会显示输入错误,请重新输入。

若字符错误,程序就直接出现错误了。

6.程序代码

#include

#include

#include

#include

#defineM100

structbooks

{

chartsmc[12];

inttsbh;

floatdj;

charzz[12];

charczzt[12];

charxm[12];

charxb[12];

intxh;

}s[M];

intN;

boolflag;

intmain()

{

intsele;

flag=0;

sele=1;

voidsr();

voidcx();

voidsc();

voidjs();

voidhs();

voidtc();

voidjsh();

//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)

{

case1:

sr();break;

case2:

cx();break;

case3:

sc();break;

case4:

js();break;

case5:

hs();break;

case0:

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

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

printf("1:

输入2:

查询3:

删除\n");

printf("4:

借书5:

还书0:

退出\n");

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

}

printf("\n\n让任意键继续\n");

}

//wr_file();

}

/******主函数***/

/*********输入*********/

voidsr()

{

intn,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,"无");

}

}

/********查询**********/

voidcx()

{

inti,j[100]={-1},d,k,t=0;

charm[20];

printf("查询:

");

printf("1:

图书名称2:

图书编号");

printf("\n\n请输入查询选项:

");

scanf("%d",&k);

if(k==1)

{

printf("请输入图书名称:

");

scanf("%s",m);

for(i=0;i

if(strcmp(m,s[i].tsmc)==0)

{

j[t]=i;

t=t+1;

}

}

elseif(k==2)

{

printf("请输入图书编号:

");

scanf("%d",&d);

for(i=0;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

printf("\t%s\t%d\t%f\t%s\t%s\t%s\t%s\t%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);

}

}

/********删除模块*********/

voidsc()

{

inti,d,k,t=0;

charms[20];

intja=-1;

printf("查询:

");

printf("1:

图书名称2:

图书编号");

printf("\n\n请输入查询选项:

");

scanf("%d",&k);

if(k==1)

{

printf("请输入图书名称:

");

scanf("%s",ms);

for(i=0;i

if(strcmp(ms,s[i].tsmc)==0)

{

ja=i;

break;

}

}

elseif(k==2)

{

printf("请输入图书编号:

");

scanf("%d",&d);

for(i=0;i

if(d==s[i].tsbh)

{

ja=i;

break;

}

}

printf("确定删除该图书吗?

1表示Yes,其他No");

intp;

scanf("%d",&p);

if(p==1)

printf("Congratulations,删除成功||\n");

if(ja!

=-1&&p)

{

N=N-1;

for(i=ja;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;

}

}

elseif(ja==-1)

printf("没有找到!

\n");

}

/**********借书模块***********/

voidjs()

{

inti,j[100]={-1},d,k,t=0;

charm[20];

printf("查询:

");

printf("1:

图书名称2:

图书编号");

printf("\n\n请输入查询选项:

");

scanf("%d",&k);

if(k==1)

{

printf("请输入图书名称:

");

scanf("%s",&m);

for(i=0;i

if(strcmp(m,s[i].tsmc)==0)

{

j[t]=i;

t=t+1;

}

}

elseif(k==2)

{

printf("请输入图书编号:

");

scanf("%d",&d);

for(i=0;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)

{

case1:

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

case2:

break;

}

}

/*************还书模块***************/

voidhs()

{

inti,j[100]={-1},d,k,t=0;

charm[20];

printf("查询:

");

printf("1:

图书名称2:

图书编号");

printf("\n\n请输入查询选项:

");

scanf("%d",&k);

if(k==1)

{

printf("请输入图书名称:

");

scanf("%s",&m);

for(i=0;i

if(strcmp(m,s[i].tsmc)==0)

{

j[t]=i;

t++;

break;

}

}

elseif(k==2)

{

printf("请输入图书编号:

");

scanf("%d",&d);

for(i=0;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");

intp;

scanf("%d",&p);

if(p==1)

{

strcpy(s[j[i]].czzt,"未借出");

strcpy(s[j[i]].xm,"无");

s[j[i]].xh=0;

printf("已归还,按任意键继续\n");

}

//getch();

}

}

/*************结束模块***************/

voidjsh()

{

flag=1;

}

7.程序运行结果

各模块均能执行。

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

做程序时,文件函数无法实现,于是找了同学跟我讲解,看书还有就是看例子等等,最终找出了个解决方案。

还有系统最初运行时有很多不尽人意的,比如我希望每次运行后都出现主界面,这样方便选择。

如果出现错误的话,要显示出错误原因,并给出提示,我解决了几个这样的问题,比如借书时如果已借出就要显示出“已借出,请重新选择”,如果没有,就显示无法找到,并显出主菜单,再次选择。

9.总结心得及良好建议

对于程序的设计,必须先理解c语言的一些知识,用起来才会得心应手,最好之前就想好大致用什么算法去实现需要的程序。

对于举一反三的内容不是用来抄的,我们必须要先对其理解,这样才能写好一个程序。

程序中最复杂的感觉是调试,有时候自己有很多习惯性的错误真的很难找到,所有要形成好的习惯。

还有就是要养成好的思维,要多练习,不能眼高手低。

10.致谢

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

当前位置:首页 > 工作范文 > 行政公文

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

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