图书借还系统.docx
《图书借还系统.docx》由会员分享,可在线阅读,更多相关《图书借还系统.docx(17页珍藏版)》请在冰豆网上搜索。
图书借还系统
C语言程序设计
题目
图书借还系统,具体要求如下:
1)每人每次只允许借1本;累计最多5本,否则不能借阅。
2)一次可以还书多本。
3)能够随时显示学生累计情况、书库库存情况。
4)能够随时保存学生累计情况、书库库存情况。
需求分析
经过对题目的分析可知,整个程序的设计实现大致分为九个模块,分别是:
读取学生信息模块,读取书本数据模块,判断是否可借模块,借书系统模块,还书系统模块,显示库存模块,菜单模块,保存数据模块,根据学号获得学生数据的模块。
程序流程图
1程序总体流程图
2具体功能函数
(1)读取学生信息模块
(2)读取书本数据模块
(3)判断是否可借模块
(4)借书模块
if(rst==BOOK_
ALL_BORROWED)
是否
(5)还书系统模块
(6)显示库存模块
(7)菜单模块
(8)保存数据模块
(9)据学号获得学生数据的模块
关键技术分析
(1)本程序运用了结构体这一关键技术,并多次应用。
比如:
/*定义学生结构体*/
typedefstruct_student
/*定义图书结构体*/
typedefstruct_book{
intno;/*书本编号*/
intprice;/*定价*/
intnum;/*库存*/
}book;
(2)实现还书环节是本程序的另一个重要模块,其中应用的技术请参见每个语句后的注释:
/*还书*/
/*bk书本数据*/
/*stu想要还书的学生数据*/
printf("请选择你要还的书的编号:
\n");
scanf("%d",&shuhao);
shuhao--;
for(k=0;k{if(shuhao==menber[i][k]){b[shuhao].kucun++;}}a[i].jieshuliang--;printf("要继续还书吗?yorn\n");scanf("%s",&c);if(c=='y'||c=='Y')continue;elsebreak;}case3:{printf("你一共借了%d本书\n",a[i].jieshuliang);break;}完整的源程序#include#include#includetypedefstructstudent/*定义学生结构体*/{charnum[12];charname[12];intjieshuliang;}student;typedefstructbook/*定义图书结构体*/{intnum;charname[8];charpublish[8];intprice;intkucun;}book;voidmain()/*主函数*/{FILE*fp1;FILE*fp2;inti,j=0,k,m,n,l;intmenber[8][5];if((fp1=fopen("file20_1.txt","ab+"))==NULL){printf("cannotopenthisfile\n");exit(0);}if((fp2=fopen("file20_2.txt","ab+"))==NULL){printf("cannotopenthisfile\n");exit(0);}studenta[8];bookb[5];for(i=0;i<8;i++){for(j=0;j<12;j++)a[i].num[j]='0';a[i].name[j]='0';a[i].jieshuliang=0;}for(i=0;i<5;i++){b[i].kucun=0;}for(i=0;i<8;i++){fscanf(fp1,"%s\t%s\t%d",&a[i].num,&a[i].name,&a[i].jieshuliang);}for(i=0;i<5;i++){fscanf(fp2,"%d\t%s\t%s\t%d\t%d\n",&b[i].num,&b[i].name,&b[i].publish,&b[i].price,&b[i].kucun);}for(;;){printf("****图书借还系统****\n");printf("****1:学生登陆****\n");printf("****2:显示学生累计情况****\n");printf("****3:显示书库库存情况****\n");printf("****0:退出****\n");printf("请您选择操作序号并按Enter键确认:\n");scanf("%d",&n);switch(n){case1:{charxuehao[12];for(l=0;l<12;l++)xuehao[l]='9';intshuhao=0;charc;printf("请输入学号并按Enter键确认:\n");scanf("%s",&xuehao);for(i=0;i<8;i++){if(xuehao[11]==a[i].num[11]){printf("登陆成功\n");printf("********************************\n");printf("*****请选择您要进行的操作:*****\n");printf("*****1:借书*****\n");printf("*****2:还书*****\n");printf("*****3:显示累计情况*****\n");printf("*****0:退出*****\n");printf("********************************\n");printf("请输入您的选择并按Enter键确认:\n");scanf("%d",&j);break;}if(i==8){printf("您输入的学号不存在\n");break;}}switch(j){case1:{if(a[i].jieshuliang==5){printf("已借满5本书!\n");}else{printf("请输入要借的书的编号:\n");scanf("%d",&shuhao);shuhao--;if(b[shuhao].kucun==0)printf("没有你要借的书!\n");else{printf("要借这一本书吗?yorn?\n");scanf("%s",&c);if(c=='y'||c=='Y'){b[shuhao].kucun--;menber[i][a[i].jieshuliang]=b[shuhao].num;a[i].jieshuliang++;}}}break;}case2:{for(k=0;k{for(m=0;m<5;m++){if(menber[i][k]==b[m].num)printf("%d%s%d\n",b[m].num,b[m].name,b[m].price);}}printf("请选择你要还的书的编号:\n");scanf("%d",&shuhao);shuhao--;for(k=0;k{if(shuhao==menber[i][k]){b[shuhao].kucun++;}}a[i].jieshuliang--;printf("要继续还书吗?yorn\n");scanf("%s",&c);if(c=='y'||c=='Y')continue;elsebreak;}case3:{printf("你一共借了%d本书\n",a[i].jieshuliang);break;}case0:break;default:{printf("\n请输入正确的选择!\n\n");break;}}break;}case2:{for(k=0;k<8;k++){printf("%s\t%s\t%d\n",a[k].num,a[k].name,a[k].jieshuliang);}break;}case3:{for(k=0;k<5;k++){printf("%d\t%s\t%d\t%d\n",b[k].num,b[k].name,b[k].price,b[k].kucun);}break;}case0:{exit(0);break;}default:{printf("\n请输入正确的选择!\n\n");break;}}}fclose(fp1);fclose(fp2);}总结这次为期两周的课程设计结束了,我想对于我们任何一个人来说都是一次挑战,让我们更加熟悉C语言的课程,使我们能用知识较好的,系统性的去解决一个看似很复杂的课程,这次课程设计检查我们对于知识的认知程度,使我们的思维更加的缜密,能够从一个整体去考虑某方面的问题,我想这是对我们的能力很好的锻炼。通过这次课程设计让我获得了很多的知识,同时也是对自己的计算机文化基础深化和加固的一次很好的机会.两周完成的课程设计从一个题目要求到最后的完整的程序虽不是一个奇迹,但是它毕竟是对自我能力的挑战,每个人需要去查找资料,去自己调试,发现在程序中的错误,同时在与同学的交流之中让我发现了很多的好的思路.
{
if(shuhao==menber[i][k])
b[shuhao].kucun++;
}
a[i].jieshuliang--;
printf("要继续还书吗?
yorn\n");
scanf("%s",&c);
if(c=='y'||c=='Y')
continue;
else
break;
case3:
printf("你一共借了%d本书\n",a[i].jieshuliang);
完整的源程序
#include
typedefstructstudent/*定义学生结构体*/
charnum[12];
charname[12];
intjieshuliang;
}student;
typedefstructbook/*定义图书结构体*/
intnum;
charname[8];
charpublish[8];
intprice;
intkucun;
voidmain()/*主函数*/
FILE*fp1;
FILE*fp2;
inti,j=0,k,m,n,l;
intmenber[8][5];
if((fp1=fopen("file20_1.txt","ab+"))==NULL)
printf("cannotopenthisfile\n");
exit(0);
if((fp2=fopen("file20_2.txt","ab+"))==NULL)
studenta[8];
bookb[5];
for(i=0;i<8;i++)
for(j=0;j<12;j++)
a[i].num[j]='0';
a[i].name[j]='0';
a[i].jieshuliang=0;
for(i=0;i<5;i++)
b[i].kucun=0;
fscanf(fp1,"%s\t%s\t%d",&a[i].num,&a[i].name,&a[i].jieshuliang);
{fscanf(fp2,"%d\t%s\t%s\t%d\t%d\n",&b[i].num,&b[i].name,&b[i].publish,&b[i].price,&b[i].kucun);
for(;;)
printf("****图书借还系统****\n");
printf("****1:
学生登陆****\n");
printf("****2:
显示学生累计情况****\n");
printf("****3:
显示书库库存情况****\n");
printf("****0:
退出****\n");
printf("请您选择操作序号并按Enter键确认:
scanf("%d",&n);
switch(n)
case1:
charxuehao[12];
for(l=0;l<12;l++)
xuehao[l]='9';
intshuhao=0;
charc;
printf("请输入学号并按Enter键确认:
scanf("%s",&xuehao);
if(xuehao[11]==a[i].num[11])
printf("登陆成功\n");
printf("********************************\n");
printf("*****请选择您要进行的操作:
*****\n");
printf("*****1:
借书*****\n");
printf("*****2:
还书*****\n");
printf("*****3:
显示累计情况*****\n");
printf("*****0:
退出*****\n");
printf("请输入您的选择并按Enter键确认:
scanf("%d",&j);
if(i==8)
printf("您输入的学号不存在\n");
switch(j)
if(a[i].jieshuliang==5)
printf("已借满5本书!
printf("请输入要借的书的编号:
if(b[shuhao].kucun==0)
printf("没有你要借的书!
printf("要借这一本书吗?
yorn?
b[shuhao].kucun--;
menber[i][a[i].jieshuliang]=b[shuhao].num;
a[i].jieshuliang++;
case2:
for(k=0;k{for(m=0;m<5;m++){if(menber[i][k]==b[m].num)printf("%d%s%d\n",b[m].num,b[m].name,b[m].price);}}printf("请选择你要还的书的编号:\n");scanf("%d",&shuhao);shuhao--;for(k=0;k{if(shuhao==menber[i][k]){b[shuhao].kucun++;}}a[i].jieshuliang--;printf("要继续还书吗?yorn\n");scanf("%s",&c);if(c=='y'||c=='Y')continue;elsebreak;}case3:{printf("你一共借了%d本书\n",a[i].jieshuliang);break;}case0:break;default:{printf("\n请输入正确的选择!\n\n");break;}}break;}case2:{for(k=0;k<8;k++){printf("%s\t%s\t%d\n",a[k].num,a[k].name,a[k].jieshuliang);}break;}case3:{for(k=0;k<5;k++){printf("%d\t%s\t%d\t%d\n",b[k].num,b[k].name,b[k].price,b[k].kucun);}break;}case0:{exit(0);break;}default:{printf("\n请输入正确的选择!\n\n");break;}}}fclose(fp1);fclose(fp2);}总结这次为期两周的课程设计结束了,我想对于我们任何一个人来说都是一次挑战,让我们更加熟悉C语言的课程,使我们能用知识较好的,系统性的去解决一个看似很复杂的课程,这次课程设计检查我们对于知识的认知程度,使我们的思维更加的缜密,能够从一个整体去考虑某方面的问题,我想这是对我们的能力很好的锻炼。通过这次课程设计让我获得了很多的知识,同时也是对自己的计算机文化基础深化和加固的一次很好的机会.两周完成的课程设计从一个题目要求到最后的完整的程序虽不是一个奇迹,但是它毕竟是对自我能力的挑战,每个人需要去查找资料,去自己调试,发现在程序中的错误,同时在与同学的交流之中让我发现了很多的好的思路.
for(m=0;m<5;m++)
if(menber[i][k]==b[m].num)
printf("%d%s%d\n",b[m].num,b[m].name,b[m].price);
for(k=0;k{if(shuhao==menber[i][k]){b[shuhao].kucun++;}}a[i].jieshuliang--;printf("要继续还书吗?yorn\n");scanf("%s",&c);if(c=='y'||c=='Y')continue;elsebreak;}case3:{printf("你一共借了%d本书\n",a[i].jieshuliang);break;}case0:break;default:{printf("\n请输入正确的选择!\n\n");break;}}break;}case2:{for(k=0;k<8;k++){printf("%s\t%s\t%d\n",a[k].num,a[k].name,a[k].jieshuliang);}break;}case3:{for(k=0;k<5;k++){printf("%d\t%s\t%d\t%d\n",b[k].num,b[k].name,b[k].price,b[k].kucun);}break;}case0:{exit(0);break;}default:{printf("\n请输入正确的选择!\n\n");break;}}}fclose(fp1);fclose(fp2);}总结这次为期两周的课程设计结束了,我想对于我们任何一个人来说都是一次挑战,让我们更加熟悉C语言的课程,使我们能用知识较好的,系统性的去解决一个看似很复杂的课程,这次课程设计检查我们对于知识的认知程度,使我们的思维更加的缜密,能够从一个整体去考虑某方面的问题,我想这是对我们的能力很好的锻炼。通过这次课程设计让我获得了很多的知识,同时也是对自己的计算机文化基础深化和加固的一次很好的机会.两周完成的课程设计从一个题目要求到最后的完整的程序虽不是一个奇迹,但是它毕竟是对自我能力的挑战,每个人需要去查找资料,去自己调试,发现在程序中的错误,同时在与同学的交流之中让我发现了很多的好的思路.
case0:
default:
printf("\n请输入正确的选择!
\n\n");
for(k=0;k<8;k++)
printf("%s\t%s\t%d\n",a[k].num,a[k].name,a[k].jieshuliang);
for(k=0;k<5;k++)
printf("%d\t%s\t%d\t%d\n",b[k].num,b[k].name,b[k].price,b[k].kucun);
fclose(fp1);
fclose(fp2);
总结
这次为期两周的课程设计结束了,我想对于我们任何一个人来说都是一次挑战,让我们更加熟悉C语言的课程,使我们能用知识较好的,系统性的去解决一个看似很复杂的课程,这次课程设计检查我们对于知识的认知程度,使我们的思维更加的缜密,能够从一个整体去考虑某方面的问题,我想这是对我们的能力很好的
锻炼。
通过这次课程设计让我获得了很多的知识,同时也是对自己的计算机文化基础深化和加固的一次很好的机会.两周完成的课程设计从一个题目要求到最后的完整的程序虽不是一个奇迹,但是它毕竟是对自我能力的挑战,每个人需要去查找资料,去自己调试,发现在程序中的错误,同时在与同学的交流之中让我发现了很多的好的思路.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1