《算法分析与设计综合实验》实验报告图书信息管理系统.docx
《《算法分析与设计综合实验》实验报告图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《《算法分析与设计综合实验》实验报告图书信息管理系统.docx(47页珍藏版)》请在冰豆网上搜索。
![《算法分析与设计综合实验》实验报告图书信息管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/29/d96c86bf-9b2f-4914-8da0-2b17fbe38b37/d96c86bf-9b2f-4914-8da0-2b17fbe38b371.gif)
《算法分析与设计综合实验》实验报告图书信息管理系统
《算法分析与设计综合实验》
实
验
报
告
姓名:
蔡志雄
学号:
2015010906015
指导教师:
胡科
日期:
2016年月日
电子科技大学
实验报告1
一、实验名称:
界面设计与创建文件
二、实验内容
1.设计登录系统、主菜单、退出系统界面
登录系统:
输入以“*”显示的密码,三次键入机会。
密码正确,进入系统;密码错误,程序结束。
主菜单:
按划分的模块,显示系统菜单。
退出系统:
在系统主菜单中输入“0”,以退出系统。
2.数据录入与数据存盘
给定记录数,屏幕输入若干记录,并将数据存入磁盘文件中。
三、算法设计与核心代码
1.charinputa,data[20],account[34]={"Admin's\\"},word[20];
intz,k=0,a=1;
printf("输入管理员账户名:
");//登录验证
scanf("%s",&data);
strcat(account,data);
strcat(account,".txt");
//提取数据
FILE*fpx=NULL;
if(fpx=fopen(account,"r"))
{
fscanf(fpx,"%s\n",&admin.name);
fscanf(fpx,"%s\n",&admin.ID);
fscanf(fpx,"%s\n",&admin.password);
fclose(fpx);
}
else{printf("没有对应资料!
\n");system("pause");return0;}
if(strcmp(data,admin.name)==-1)//验证密码
{
printf("账号不存在\n");
return0;
}
else
{
printf("账号存在(你将有3次输入密码机会)\n");
for(z=2;z>=-1;z--)
{
if(z==-1){return0;}
printf("输入密码:
");
while
(1)
{
fflush(stdin);
inputa=getch();
if(inputa!
='\r'&&inputa!
='\b')//密码隐藏
{
printf("*");
word[k]=inputa;
k++;
}
elseif(inputa=='\b')//退格删除
{
printf("\b");
printf("");
printf("\b");
k--;
}
elsebreak;//回车结束
}
if(strcmp(word,admin.password)!
=0)
{
printf("密码错误(%d次机会)\n",z);
k=0;
}
else{printf("\n密码正确!
\n");system("pause");break;}
}
}
2.printf("********************************************************************************\n");
printf("图书数量:
%d读者数量:
%d\n",bnum,rnum);
printf("\n");
printf("\n");
printf("\n");
printf("图书信息管理系统\n");
printf("\n");
printf("\n");
printf("\n");
printf("请做出您的选择:
(输入对应序号)\n");
printf("\n");
printf("\n");
printf("1.图书管理2.读者管理——管理员使用\n");
printf("\n");
printf("3.图书借还——任何人使用\n");
printf("\n");
printf("0.退出\n");
printf("\n");
printf("\n");
printf("\n");
printf("********************************************************************************\n");
printf("输入:
");
scanf("%c",&input);
switch(input)
{
case'0':
a=0;break;
case'1':
BookManage();break;
case'2':
ReaderManage();break;
case'3':
BookOperate();break;
}
}
system("cls");
3.
四、实验主要结果(附程序运行界面截图)
实验报告2
一、实验名称:
显示记录与编辑记录
二、实验内容
1.屏幕显示若干记录
列表输出磁盘文件记录,并显示记录序号与记录总数。
2.按字段编辑记录
输入记录序号,显示对应记录;按字段编辑记录。
三、算法设计与核心代码
intShowRecord(intx)
{
intb=1,c=1;
charaim1[12]={"图书"},aim2[12]={"读者"},aim[12],buffer[80];
//判断目的
if(x==1)//图书
{
strcpy(aim,aim1);
strcat(aim,"\\");
strcat(aim,"图书记录");
strcat(aim,".txt");
FILE*fp;
if((fp=fopen(aim,"r"))==NULL){printf("打开失败!
\n");return-1;}
printf("序号书号书名作者日期出版类别定价是否借出\n");
for(;b<=(bnum=getlinenum
(1));b++)
{
fgets(buffer,1024,fp);
printf("%d%s",c,buffer);
c++;
}
fclose(fp);
system("pause");
}
elseif(x==2)//读者
{
strcpy(aim,aim2);
strcat(aim,"\\");
strcat(aim,"读者记录");
strcat(aim,".txt");
FILE*fp;
if((fp=fopen(aim,"r"))==NULL){printf("打开失败!
\n");return-1;}
for(;b<(rnum=getlinenum
(2));b++)
{
fgets(buffer,1024,fp);
printf("%s\n",buffer);
}
fclose(fp);
}
else{printf("错误\n");return-1;}
return0;
}
intFixRecord(intx)
{
intb=1,c;
chara,aim1[12]={"图书"},aim2[12]={"读者"},aim[12],buffer[80];
FILE*fp,*ftp;
//判断目的
if(x==1)//图书
{
strcpy(aim,aim1);
strcat(aim,"\\");
strcat(aim,"图书记录");
strcat(aim,".txt");
if((ftp=fopen("图书\\temp.txt","w"))==NULL){printf("创建文件失败!
\n");return-1;}
if((fp=fopen(aim,"r+"))==NULL){printf("打开失败!
\n");return-1;}
ShowRecord
(1);
printf("输入要编辑的条目序号:
");
scanf("%d",&c);
for(;b!
=c;b++)
{
fscanf(fp,"%s%s%s%s%s%s%d%d%*[^\n]",&books[0].ID,&books[0].name,&books[0].author,&books[0].date,&books[0].publish,&books[0].sort,&books[0].price,&books[0].borrowed);
fprintf(ftp,"%s%s%s%s%s%s%d%d\n",books[0].ID,books[0].name,books[0].author,books[0].date,books[0].publish,books[0].sort,books[0].price,books[0].borrowed);
}
printf("开始编辑:
\n");
printf("输入书号:
");
scanf("%s",&books[0].ID);
printf("书名:
");
scanf("%s",&books[0].name);
printf("作者:
");
scanf("%s",&books[0].author);
printf("日期:
");
scanf("%s",&books[0].date);
printf("出版:
");
scanf("%s",&books[0].publish);
printf("类别:
");
scanf("%s",&books[0].sort);
printf("定价:
");
scanf("%d",&books[0].price);
printf("是否借出:
");
scanf("%d",&books[0].borrowed);
printf("书号:
%s书名:
%s作者:
%s日期:
%s出版:
%s类别:
%s定价:
%d是否借出:
%d\n确定?
(y/n)\n输入:
",books[0].ID,books[0].name,books[0].author,books[0].date,books[0].publish,books[0].sort,books[0].price,books[0].borrowed);
fflush(stdin);
scanf("%c",&a);
if(a=='y')
{
fprintf(ftp,"%s%s%s%s%s%s%d%d\n",books[0].ID,books[0].name,books[0].author,books[0].date,books[0].publish,books[0].sort,books[0].price,books[0].borrowed);
b++;
fscanf(fp,"%s%s%s%s%s%s%d%d%*[^\n]",&books[0].ID,&books[0].name,&books[0].author,&books[0].date,&books[0].publish,&books[0].sort,&books[0].price,&books[0].borrowed);
printf("编辑成功!
\n");
}
elseprintf("已取消创建...\n");
for(;b<=bnum;b++)
{
fscanf(fp,"%s%s%s%s%s%s%d%d%*[^\n]",&books[0].ID,&books[0].name,&books[0].author,&books[0].date,&books[0].publish,&books[0].sort,&books[0].price,&books[0].borrowed);
fprintf(ftp,"%s%s%s%s%s%s%d%d\n",books[0].ID,books[0].name,books[0].author,books[0].date,books[0].publish,books[0].sort,books[0].price,books[0].borrowed);
}
fclose(fp);
fclose(ftp);
remove(aim);
rename("图书\\temp.txt",aim);
ShowRecord
(1);
fclose(fp);
}
elseif(x==2)//读者
{
strcpy(aim,aim2);
strcat(aim,"\\");
strcat(aim,"读者记录");
strcat(aim,".txt");
if((fp=fopen(aim,"r+"))==NULL){printf("打开失败!
\n");return-1;}
fclose(fp);
}
else{printf("错误\n");return-1;}
return0;
}
四、实验主要结果(附程序运行界面截图)
实验报告3
一、实验名称:
增加记录与删除记录
二、实验内容
1.屏幕增加记录(添加记录、插入记录)
输入待增加的记录信息,并输入记录序号,将记录插入到指定序号对应记录之后。
2.删除指定的记录
输入待删除的记录序号,并显示对应记录;显示确认信息,以删除指定记录。
三、算法设计与核心代码
intAddRecord(intx,inth)
{
intb=1,i;
charaim1[12]={"图书"},aim2[12]={"读者"},aim[12],buffer[80],buffer1[80],buffer2[80];
list*t,*p;
bnum=getlinenum
(1);
//判断目的
if(x==1)//图书
{
strcpy(aim,aim1);
strcat(aim,"\\");
strcat(aim,"图书记录");
strcat(aim,".txt");
FILE*fp;
if((fp=fopen(aim,"r+"))==NULL){printf("打开失败!
\n");return-1;}
ShowRecord
(1);
printf("输入:
\n书号书名作者日期出版类别定价是否借出\n");
scanf("%s%s%s%s%s%s%d%d",&books[1].ID,&books[1].name,&books[1].author,&books[1].date,&books[1].publish,&books[1].sort,&books[1].price,&books[1].borrowed);
link*m=clist();
p=m->head;
get_and_add_list(x,m,NULL);
intj=0;
if(h>bnum+1)h=bnum+1;
if((p=m->head)==NULL)
{
t=(list*)malloc(sizeof(list));
if(t==NULL)return-1;
t->next=p->next;
t->data=books[1];
m->head=t;
m->length++;
}
elseif(h==1)
{
t=(list*)malloc(sizeof(list));
if(t==NULL)return-1;
t->next=m->head;
t->data=books[1];
m->head=t;
m->length++;
}
else
{
while(p!
=NULL&&j{
p=p->next;
j++;
}
t=(list*)malloc(sizeof(list));
if(t==NULL)return-1;
t->next=p->next;
t->data=books[1];
p->next=t;
m->length++;
}
fprintf_list(x,m);
fclose(fp);
}
elseif(x==2)//读者
{
strcpy(aim,aim2);
strcat(aim,"\\");
strcat(aim,"读者记录");
strcat(aim,".txt");
FILE*fp;
if((fp=fopen(aim,"r+"))==NULL){printf("打开失败!
\n");return-1;}
scanf("%s",&buffer);
for(;b!
=h;b++)
{
fgets(buffer,0,fp);
}
fgets(buffer1,1024,fp);
fprintf(fp,"%s\n",buffer);
b++;
for(;b!
=(bnum=getlinenum
(1));b++)
{
fgets(buffer2,1024,fp);
fprintf(fp,"%s\n",buffer1);
b++;
fgets(buffer1,1024,fp);
fprintf(fp,"%s\n",buffer2);
}
fclose(fp);
}
else{printf("错误\n");return-1;}
ShowRecord(x);printf("1\n");
return0;
}
intDeleteRecord(intx,chary[])
{
FILE*fin,*ftp;
charch,aim1[12]={"图书"},aim2[12]={"读者"},aim[12],buffer[80];
if(x==1)//图书
{
strcpy(aim,aim1);
strcat(aim,"\\");
strcat(aim,"图书记录");
strcat(aim,".txt");
if((fin=fopen(aim,"r"))==NULL){printf("打开失败!
\n");return-1;}
if((ftp=fopen("图书\\temp.txt","w"))==NULL){printf("创建文件失败!
\n");return-1;}
while(fscanf(fin,"%s%s%s%s%s%s%d%d%*[^\n]",&books[0].ID,&books[0].name,&books[0].author,&books[0].date,&books[0].publish,&books[0].sort,&books[0].price,&books[0].borrowed)==8)
{
if(strcmp(books[0].ID,y)!
=0)
{
fprintf(ftp,"%s%s%s%s%s%s%d%d\n",books[0].ID,books[0].name,books[0].author,books[0].date,books[0].publish,books[0].sort,books[0].price,books[0].borrowed);
}
}
fclose(fin);
fclose(ftp);
remove(aim);
rename("图书\\temp.txt","图书\\图书记录.txt");
printf("删除成功!
\n");
ShowRecord
(1);
}
elseif(x==2)//读者
{
strcpy(aim,aim2);
strcat(aim,"\\");
strcat(aim,"读者记录");
strcat(aim,".txt");
if((fin=fopen(aim,"r"))==NULL){printf("打开失败!
\n");return-1;}
}
else{printf("错误\n");return-1;}
return0;
}
四、实验主要结果(附程序运行界面截图)
实验报告4
一、实验名称:
查询记录
二、实验内容
按指定字段查询记录
显示查询子菜单,输入字段序号,按指定字段查询记录,并显示查询结果。
特别地,对“定价”字段,输入区间左右端点值,在指定范围查询记录。
三、算法设计与核心代码
intInquireRecord(intx)
{
intb=1,c,d;
charaim1[12]={"图书"},aim2[12]={"读者"},aim[12],buffer[80];
FILE*fp;
//判断目的
if(x==1)//图书
{
strcpy(aim,aim1);
strcat(aim,"\\");
strcat(aim,"图书记录");
strcat(aim,".txt");
if((fp=fopen(aim,"r"))==NULL){printf("打开失败!
\n");return-1;}
printf("查询的依据是:
\n1.书号\n2.书名\n3.作者\n4.出版日期\n5.类别\n6.定价\n7.是否借出\n0.返回\n输入:
");
scanf("%d",&c);
switch(c)
{
case0:
return0;
case1:
{
printf("输入书号:
");scanf("%s",&buffer);
printf("书号书名作者日期出版类别定价是否借出\n");
while(fscanf(fp,"%s%s%s%s%s%s%d%d%*[^\n]",&books[0].ID,&books[0].name,&books[0].author,&books[0].dat