音像图书租借管理系统设计Word格式.docx
《音像图书租借管理系统设计Word格式.docx》由会员分享,可在线阅读,更多相关《音像图书租借管理系统设计Word格式.docx(49页珍藏版)》请在冰豆网上搜索。
structdate{//租借&
归还日期
intyear;
charch1;
intmonth;
charch2;
intday;
};
structlibrary{//音像图书库
charbianhao[10];
charname[100];
intprice;
intamount;
intshengyu;
structborrower{//租借者信息
charuname[100];
structdateborrow;
intmoney;
structdateback;
intrent;
4.程序代码设计
(1)创建音像图书库
voidbuild_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'
R'
)
非法输入!
请按任意键重新输入!
op=getchar();
op=getchar();
build_book();
请输入音像图书的名称:
a.name);
请输入音像图书的原价:
%d"
&
a.price);
请输入音像图书的原数量:
a.amount);
请输入音像图书的剩余数量:
a.shengyu);
if(a.amount<
=a.shengyu)
原数量不得小于剩余数量!
请重新输入!
scanf("
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)){
不能关闭文件!
\n创建音像图书《%s》成功!
\n输入任意键继续!
op=getchar();
}
打开名为Library.txt的文件,将音像图书的编号、名称、原价、原数量和剩余数量写入文件中,然后关闭文件。
(2)租借音像图书
voidborrow_book()
structlibrarya={0},b[Max]={0},*p1=NULL,*p2=NULL;
//b为结构数组
structborrowerc={0};
charch[10]={0},op;
intn=0,m=0;
FILE*fp1;
FILE*fp2;
if((fp1=fopen("
\\borrow.txt"
))==NULL){
文件打开错误!
if((fp2=fopen("
r"
请输入您的姓名:
"
c.uname);
请输入租借的书的编号:
c.bianhao);
请输入租借的日期(年/月/日):
%d%c%d%c%d"
c.borrow.year,&
c.borrow.ch1,&
c.borrow.month,&
c.borrow.ch2,&
c.borrow.day);
strcpy(ch,c.bianhao);
%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,&
amount,&
shengyu);
p1++;
n++;
for(p1=b;
p1<
b+n;
p1++)
if(strcmp(c.bianhao,p1->
bianhao)==0)
{
p2=p1;
m=1;
break;
}
if(m==0)
无此音像图书!
输入任意键继续!
else
if((strcmp(ch,p2->
bianhao)==0)&
(p2->
shengyu==0))
\n此音像图书已全部借出!
shengyu!
=0))
应交的押金额为%d元!
(p2->
price)*3);
c.money=(p2->
price)*3;
p2->
shengyu=p2->
shengyu-1;
fprintf(fp1,"
%d\n"
c.money);
fclose(fp1);
fclose(fp2);
\n输入任意键继续!
w"
fprintf(fp2,"
name,p1->
price,p1->
amount,p1->
打开borrow.txt和Library.txt文件,将租借者的姓名、租借的书的编号和租借日期写入borrow.txt文件中,计算并显示应交押金,同时把押金写入borrow.txt文件该租借者的信息中,并且Library.txt文件中相应音像图书数量减少。
然后关闭文件。
(3)归还音像图书
voidback_book()
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;
intmonth_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}
};
请输入您的名字:
请输入归还的书的编号:
请输入归还的日期(年/月/日):
c.back.year,&
c.back.ch1,&
c.back.month,&
c.back.ch2,&
c.back.day);
strcpy(ch1,c.uname);
//在文件中寻找被借的书
p3=d;
while(feof(fp1)==0)
fscanf(fp1,"
n1++;
%s%s%d%c%d%c%d%d"
p3->
uname,p3->
bianhao,&
p3->
borrow.year,&
borrow.ch1,&
borrow.month,&
borrow.ch2,&
borrow.day,&
money);
p3++;
n2++;
b+n1;
if(strcmp(ch,p1->
break;
for(p3=d;
p3<
d+n2;
p3++)
if(strcmp(ch,p3->
bianhao)==0&
strcmp(ch1,p3->
uname)==0)
p4=p3;
//当输入的姓名或者借书的编号错误时
您没有借书记录!
输入y重新填写资料,输入n返回上一菜单!
%c"
op);
if(op=='
y'
back_book();
n'
system("
cls"
main();
\n此音像图书名为《%s》\n"
p2->
name);
文件打开错误!
p2->
shengyu=p2->
shengyu+1;
bianhao,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->
for(i=p4->
borrow.month+1;
i<
c.back.month;
i++)
day=day+month_day[x][i];
day=day+c.back.day;
一共租借了%d天!
day);
if(ch[0]=='
rent=day;
rent=day*2;
rent=day*3;
if(rent>
=p3->
money)
money_1=0;
if(rent<
money_1=p3->
money-rent;
已交押金%d元,应交租金%d元,应退金额%d元\n"
p4->
money,rent,money_1);
//删除租借者的信息
n1=0;
}
d+n1;
if(strcmp(ch1,p3->
))==NULL)
exit(0);
d+n1-1;
{
if(strcmp(p4->
uname,p3->
continue;
%s%s%d%c%d%c%d%d"
bianhao,p3->
borrow.year,p3->
borrow.ch1,p3->
borrow.month,p3->
borrow.ch2,p3->
borrow.day,p3->
成功删除%s的信息!
uname);
按任意键结束!
打开borrow.txt和Library.txt文件,输入归还者的姓名、归还的书的编号和归还日期,计算租借天数,显示已交押金、应交租金、应退金额;
将borrow.txt中相应租借者的信息删除,Library.txt中相应音像图书的数量增加。
(4)购进音像图书
voidbuy_book()
charch[10]={0},ch1[100]={0},op;
intn=0,m=1,number;
请输入购进音像图书的编号:
if(strcmp(a.bianhao,p1->
strcpy(ch1,p1->
name);
m=0;
if(m)
if((fp1=fopen("
请输入要购进音像图书的名称:
请输入要购进音像图书的原价:
请输入要购进音像图书的数量:
购进音像图书《%s》成功!
a.name);
a.shengyu=a.amount;
fclose(fp1);
else
此书已存在!
请输入要购进图书的数量:
number);
ch1);
amount=p2->
amount+number;
shengyu+number;
for(p1=b;
打开Library.txt文件,写入购进音像图书的编号,若音像图书已存在,则只输入购进数量;
并在文件中添加原有音像图书的数量,若不存在,则输入新音像图书的名称、原价及数量,并添加到文件中,然后关闭文件。
(5)报废音像图书
voidscrap_book()
intn=0,m=1;
请输入要报废的书的编号:
a.bianhao);
m=0;
本音像图书库不存在此书!
if(p1->
amount!
=p1->
shengyu)
《%s》已被借出,不能报废!
amount==p1->
if((fp1=fope