音像图书租借管理系统设计.docx
- 文档编号:7691122
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:51
- 大小:250.26KB
音像图书租借管理系统设计.docx
《音像图书租借管理系统设计.docx》由会员分享,可在线阅读,更多相关《音像图书租借管理系统设计.docx(51页珍藏版)》请在冰豆网上搜索。
音像图书租借管理系统设计
专业技能训练报告
学 院:
计算机学院、软件学院
课程名称:
C程序设计综合实践
专业班级:
计算机科学与技术
学生姓名:
学号:
学生姓名:
学号:
指导教师:
完成时间:
2014年6月25日
目录1
第1部分 实训题目与要求ﻩ2
1.问题提出2
2.功能要求2
3.任务分工ﻩ2
第2部分 设计实训题目功能2
1.总体设计2
3.数据结构ﻩ6
4.程序代码设计7
第3部分 实训总结25
1. 个人总结25
附录A 程序清单ﻩ27
附录B 用户使用说明书44
参考文献44
第1部分 实训题目与要求
1.问题提出
在音像图书租借管理业务中,借与还、新进与报废音像图书是较典型的工作,一直以来,人们都是使用传统的人工方式进行管理,无论是对顾客还是销售人员来说,都很不方便。
为了轻松、准确、高效地管理,特开发本管理系统以提高管理效率。
2.功能要求
本音像图书租借管理系统主要应用于小型的音像图书店中,方便管理员对大量的音像图书信息进行查询、增加、保存、删除等操作。
音像图书租借管理系统可分为六部分:
创建音像图书库、租借音像图书、归还音像图书、购进音像图书、报废音像图书和音像图书库概况。
3.任务分工
程序的编写基本由同学完成,同学负责编写主函数;Word文档的部分基本由同学完成,同学负责测试与调试部分。
第2部分 设计实训题目功能
1. 总体设计
2.算法设计
不存在 剩余数量为0
存在
3.数据结构
系统数据类型:
整型int,字符型char,结构体struct;
structdate{ //租借&归还日期
ﻩintyear;
ﻩcharch1;
intmonth;
ﻩchar ch2;
intday;
};
structlibrary{ //音像图书库
charbianhao[10];
ﻩcharname[100];
ﻩint price;
intamount;
intshengyu;
};
structborrower{ //租借者信息
ﻩcharuname[100];
charbianhao[10];
structdateborrow;
ﻩintmoney;
ﻩstruct dateback;
int rent;
};
4.程序代码设计
(1)创建音像图书库
void build_book()
{
charch[10],op;
structlibrarya;
ﻩFILE*fp1=NULL;
fflush(stdin);
ﻩfp1=fopen("d:
\\Library.txt","a");
ﻩif(fp1==NULL)
{
ﻩprintf("\n文件打开错误!
\n");
exit(0);
}
printf("\n 请输入音像图书的编号:
");
ﻩscanf("%s",a.bianhao);
ﻩstrcpy(ch,a.bianhao);
ﻩif(ch[0]!
='B'&&ch[0]!
='V'&&ch[0]!
='R')
{
ﻩprintf(" 非法输入!
\n");
printf(" 请按任意键重新输入!
");
op=getchar();op=getchar();
ﻩbuild_book();
ﻩ}
ﻩprintf("请输入音像图书的名称:
");
ﻩscanf("%s",a.name);
ﻩprintf(" 请输入音像图书的原价:
");
ﻩscanf("%d",&a.price);
ﻩprintf(" 请输入音像图书的原数量:
");
ﻩscanf("%d",&a.amount);
ﻩprintf("请输入音像图书的剩余数量:
");
scanf("%d",&a.shengyu);
if(a.amount<=a.shengyu)
{
ﻩﻩprintf(" 原数量不得小于剩余数量!
请重新输入!
\n");
printf(" 请输入音像图书的原数量:
");
scanf("%d",&a.amount);
ﻩprintf(" 请输入音像图书的剩余数量:
");
ﻩscanf("%d",&a.shengyu);
ﻩ}
fprintf(fp1,"%s\t%s\t%d\t%d\t%d\n",a.bianhao,a.name,a.price,a.amount,a.shengyu);
ﻩif(fclose(fp1)){
ﻩprintf("不能关闭文件!
\n");
ﻩexit(0);
ﻩ}
ﻩprintf("\n创建音像图书《%s》成功!
\n",a.name);
printf("\n输入任意键继续!
\n");
ﻩop=getchar();op=getchar();
}
打开名为Library.txt的文件,将音像图书的编号、名称、原价、原数量和剩余数量写入文件中,然后关闭文件。
(2)租借音像图书
voidborrow_book()
{
ﻩstructlibrarya={0},b[Max]={0},*p1=NULL,*p2=NULL; //b为结构数组
ﻩstruct borrowerc={0};
charch[10]={0},op;
intn=0,m=0;
ﻩFILE*fp1;
FILE*fp2;
fflush(stdin);
ﻩif((fp1=fopen("d:
\\borrow.txt","a"))==NULL){
ﻩprintf("文件打开错误!
\n");
exit(0);
ﻩ}
if((fp2=fopen("d:
\\Library.txt","r"))==NULL){
ﻩprintf("文件打开错误!
\n");
ﻩexit(0);
ﻩ}
printf("请输入您的姓名:
");
ﻩscanf("%s",c.uname);
printf("请输入租借的书的编号:
");
ﻩscanf("%s",c.bianhao);
ﻩprintf("请输入租借的日期(年/月/日):
");
ﻩscanf("%d%c%d%c%d",&c.borrow.year,&c.borrow.ch1 ,&c.borrow.month,&c.borrow.ch2,&c.borrow.day);
strcpy(ch,c.bianhao);
ﻩfprintf(fp1,"%s\t%s\t%d%c%d%c%d ",c.uname,c.bianhao,c.borrow.year,c.borrow.ch1,c.borrow.month,c.borrow.ch2,c.borrow.day);
p1=b;
ﻩwhile(feof(fp2)==0)
ﻩ{
ﻩfscanf(fp2,"%s%s%d%d%d",p1->bianhao,p1->name,&p1->price,&p1->amount,&p1->shengyu);
ﻩp1++;
ﻩn++;
ﻩ}
ﻩfor(p1=b;p1
ﻩif(strcmp(c.bianhao,p1->bianhao)==0)
ﻩ{
ﻩﻩp2=p1;
ﻩﻩm=1;
ﻩﻩbreak;
ﻩﻩ}
ﻩif(m==0)
ﻩ{
ﻩﻩprintf("无此音像图书!
\n");
ﻩprintf("输入任意键继续!
\n");
op=getchar();op=getchar();
}
else
ﻩif((strcmp(ch,p2->bianhao)==0)&&(p2->shengyu==0))
{
printf("\n此音像图书已全部借出!
\n");
ﻩﻩprintf("输入任意键继续!
\n");
op=getchar();op=getchar();
ﻩ}
ﻩelse
ﻩif((strcmp(ch,p2->bianhao)==0)&&(p2->shengyu!
=0))
ﻩ{
ﻩﻩ printf("应交的押金额为 %d元!
",(p2->price)*3);
ﻩ c.money=(p2->price)*3;
p2->shengyu=p2->shengyu-1;
ﻩﻩ
ﻩ fprintf(fp1,"%d\n",c.money);
ﻩ fclose(fp1);
fclose(fp2);
ﻩ printf("\n输入任意键继续!
\n");
ﻩ op=getchar();op=getchar();
}
ﻩif((fp2=fopen("d:
\\Library.txt","w"))==NULL){
ﻩprintf("文件打开错误!
\n");
ﻩﻩexit(0);
ﻩ}
ﻩfor(p1=b;p1<b+n;p1++)
ﻩfprintf(fp2,"%s\t%s\t%d\t%d\t%d\n",p1->bianhao,p1->name,p1->price,p1->amount,p1->shengyu);
fclose(fp2);
}
打开borrow.txt和Library.txt文件,将租借者的姓名、租借的书的编号和租借日期写入borrow.txt文件中,计算并显示应交押金,同时把押金写入borrow.txt文件该租借者的信息中,并且Library.txt文件中相应音像图书数量减少。
然后关闭文件。
(3)归还音像图书
voidback_book()
{
structlibrarya={0},b[Max]={0},*p1=NULL,*p2=NULL; //b为结构数组
structborrowerc={0},d[Max]={0},*p3=NULL,*p4=NULL;
ﻩcharch[10]={0},ch1[100],op;
intday,n1=0,n2=0,m=0,rent,money_1;
ﻩintx,i;
ﻩint month_day[2][13]={
ﻩﻩ{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
ﻩ};
FILE*fp1;
ﻩFILE*fp2;
ﻩfflush(stdin);
if((fp1=fopen("d:
\\Library.txt","r"))==NULL){
ﻩprintf("文件打开错误!
\n");
exit(0);
ﻩ}
if((fp2=fopen("d:
\\borrow.txt","r"))==NULL){
printf("文件打开错误!
\n");
ﻩﻩexit(0);
ﻩ}
printf("请输入您的名字:
");
ﻩscanf("%s",c.uname);
ﻩprintf("请输入归还的书的编号:
");
ﻩscanf("%s",c.bianhao);
ﻩprintf("请输入归还的日期(年/月/日):
");
ﻩscanf("%d%c%d%c%d",&c.back.year,&c.back.ch1,&c.back.month,&c.back.ch2,&c.back.day);
strcpy(ch,c.bianhao);
strcpy(ch1,c.uname);
ﻩ
//在文件中寻找被借的书
ﻩp1=b;
p3=d;
while(feof(fp1)==0)
ﻩ{
ﻩfscanf(fp1,"%s%s%d%d%d",p1->bianhao,p1->name,&p1->price,&p1->amount,&p1->shengyu);
p1++;
ﻩn1++;
}
ﻩwhile(feof(fp2)==0)
{
ﻩfscanf(fp2,"%s%s%d%c%d%c%d%d",p3->uname,p3->bianhao,&p3->borrow.year,&p3->borrow.ch1,&p3->borrow.month,&p3->borrow.ch2,&p3->borrow.day,&p3->money);
ﻩﻩp3++;
n2++;
}
for(p1=b;p1
ﻩif(strcmp(ch,p1->bianhao)==0)
{
ﻩﻩp2=p1;
break;
ﻩﻩ}
ﻩ
for(p3=d;p3 ﻩif(strcmp(ch,p3->bianhao)==0&&strcmp(ch1,p3->uname)==0) ﻩ{ ﻩﻩp4=p3; ﻩﻩﻩm=1; ﻩbreak; ﻩﻩ} //当输入的姓名或者借书的编号错误时 if(m==0) { ﻩﻩprintf("您没有借书记录! \n"); printf("输入y重新填写资料,输入n返回上一菜单! \n"); ﻩscanf(" %c",&op); ﻩif(op=='y') ﻩback_book(); ﻩﻩif(op=='n') { ﻩﻩsystem("cls"); main(); ﻩ} } ﻩﻩ printf("\n此音像图书名为《%s》 \n",p2->name); ﻩif((fp1=fopen("d: \\Library.txt","w"))==NULL){ printf("文件打开错误! \n"); exit(0); } p2->shengyu =p2->shengyu+1; ﻩfor(p1=b;p1<b+n1;p1++) ﻩfprintf(fp1,"%s\t%s\t%d\t%d\t%d\n",p1->bianhao,p1->name,p1->price ,p1->amount,p1->shengyu); ﻩ//计算租借的总天数 x=(p4->borrow.year%4==0&&p4->borrow.year%100! =0||p4->borrow.year%400==0); ﻩif(p4->borrow.year==c.back.year) ﻩ{ if(p4->borrow.month==c.back.month) ﻩﻩday=c.back.day-p4->borrow.day; ﻩelse ﻩﻩ{ ﻩday=month_day[x][p4->borrow.month]-p4->borrow.day; ﻩfor(i=p4->borrow.month+1;i<c.back.month;i++) ﻩﻩﻩﻩday=day+month_day[x][i]; ﻩﻩﻩday=day+c.back.day; ﻩﻩ} ﻩ} ﻩ printf("一共租借了%d 天! \n",day); if(ch[0]=='B') ﻩrent=day; ﻩif(ch[0]=='V') ﻩﻩrent=day*2; if(ch[0]=='R') ﻩrent=day*3; if(rent>=p3->money) money_1=0; if(rent ﻩﻩmoney_1=p3->money-rent; ﻩprintf("已交押金%d元,应交租金%d元,应退金额%d元\n",p4->money,rent,money_1); fclose(fp1); ﻩfclose(fp2); ﻩ//删除租借者的信息 p3=d; n1=0; if((fp2=fopen("d: \\borrow.txt","r"))==NULL){ ﻩprintf("文件打开错误! \n"); ﻩexit(0); ﻩ} ﻩwhile(feof(fp2)==0) { fscanf(fp2,"%s%s%d%c%d%c%d%d",p3->uname,p3->bianhao,&p3->borrow.year,&p3->borrow.ch1,&p3->borrow.month,&p3->borrow.ch2,&p3->borrow.day,&p3->money); ﻩﻩp3++; ﻩn2++; ﻩ} ﻩfclose(fp2); for(p3=d;p3 ﻩif(strcmp(ch1,p3->uname)==0) ﻩ{ ﻩp4=p3; break; ﻩﻩ} if((fp2=fopen("d: \\borrow.txt","w"))==NULL) { printf("文件打开错误! \n"); ﻩ exit(0); ﻩ} ﻩfor(p3=d;p3<d+n1-1;p3++) ﻩ{ if(strcmp(p4->uname,p3->uname)==0) ﻩﻩcontinue; ﻩelse ﻩ fprintf(fp1,"%s%s %d%c%d%c%d%d",p3->uname,p3->bianhao,p3->borrow.year,p3->borrow.ch1,p3->borrow.month,p3->borrow.ch2,p3->borrow.day,p3->money); ﻩ} printf("成功删除%s 的信息! \n",p4->uname); ﻩprintf("按任意键结束! "); ﻩop=getchar();op=getchar(); fclose(fp2); } 打开borrow.txt和Library.txt文件,输入归还者的姓名、归还的书的编号和归还日期,计算租借天数,显示已交押金、应交租金、应退金额;将borrow.txt中相应租借者的信息删除,Library.txt中相应音像图书的数量增加。 然后关闭文件。 (4)购进音像图书 voidbuy_book() { ﻩstruct librarya={0},b[Max]={0},*p1=NULL,*p2=NULL; //b为结构数组 char ch[10]={0},ch1[100]={0},op; ﻩintn=0,m=1,number; FILE*fp1; ﻩfflush(stdin); ﻩif((fp1=fopen("d: \\Library.txt","r"))==NULL){ ﻩprintf("文件打开错误! \n"); exit(0); } ﻩprintf("请输入购进音像图书的编号: "); scanf("%s",a.bianhao); strcpy(ch,a.bianhao); ﻩp1=b; ﻩwhile(feof(fp1)==0) ﻩ{ ﻩfscanf(fp1,"%s%s%d%d%d",p1->bianhao,p1->name,&p1->price,&p1->amount,&p1->shengyu); ﻩp1++; n++; ﻩ} fclose(fp1); for(p1=b;p1<b+n;p1++) ﻩif(strcmp(a.bianhao,p1->bianhao)==0) { p2=p1; ﻩstrcpy(ch1,p1->name); m=0; ﻩﻩﻩbreak; ﻩ} ﻩif(m) ﻩ{ if((fp1=fopen("d: \\Library.txt","a"))==NULL){ ﻩ printf("文件打开错误! \n"); ﻩ exit(0); ﻩﻩ} ﻩprintf("请输入要购进音像图书的名称: "); ﻩscanf("%s",a.name); printf("请输入要购进音像图书的原价: "); scanf("%d",&a.price); printf("请输入要购进音像图书的数量: "); scanf("%d",&a.amount); ﻩprintf("购进音像图书《%s》成功! ",a.name); ﻩﻩa.shengyu=a.amount; ﻩfprintf(fp1,"%s\t%s\t%d\t%d\t%d\n",a.bianhao,a.name,a.price,a.amount,a.shengyu); ﻩfclose(fp1); } else ﻩ{ ﻩif((fp1=fopen("d: \\Library.txt","w"))==NULL){ printf("文件打开错误! \n"); exit(0); ﻩ} ﻩﻩprintf("此书已存在! \n"); printf("请输入要购进图书的数量: "); ﻩscanf("%d",&number); printf("购进音像图书《%s》成功! ",ch1); p2->amount=p2->amount+number; ﻩp2->shengyu=p2->shengyu+number; ﻩfor(p1=b;p1<b+n;p1++) ﻩfprintf(fp1,"%s\t%s\t%d\t%d\t%d\n",p1->bianhao,p1->name,p1->price,p1->amount,p1->shengyu); } printf("按任意键结束! "); op=getchar();op=getchar(); fclose(fp1); } 打开Library.txt文件,写入购进音像图书的编号,若音像图书已存在,则只输入购进数量;并在文件中添加原有音像图书的数量,若不存在,则输入新音像图书的名称、原价及数量,并添加到文件中,然后关闭文件。 (5)报废音像图书 voidscrap_book() { ﻩstructlibrarya={0},b[Max]={0},*p1=NULL,*p2=NULL; //b为结构数组 charch[10]={0},op; intn=0,m=1; FILE*fp1; ﻩfflush(stdin); if((fp1=fopen("d: \\Library.txt","r"))==NULL){ ﻩprintf("文件打开错误! \n"); ﻩexit(0); ﻩ} ﻩprintf("请输入要报废的书的编号: "); ﻩscanf("%s",a.bianhao
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音像 图书 租借 管理 系统 设计