C语言图书管理系统程序设计实习报告.docx
《C语言图书管理系统程序设计实习报告.docx》由会员分享,可在线阅读,更多相关《C语言图书管理系统程序设计实习报告.docx(20页珍藏版)》请在冰豆网上搜索。
C语言图书管理系统程序设计实习报告
1.题目要求
图书管理信息包括:
图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,试设计一图书管理系统,使之能提供以下功能:
(1)新图书基本信息的输入。
(2)图书基本信息的查询。
(3)对撤销图书信息的删除。
(4)办理借书的手续。
(5)办理还书的手续。
2.需求分析
这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:
书名,作者名,书编号,分类,出版社,价格等。
通过这些信息使之提供以下功能:
(1)图书信息的创建功能。
其中图书信息包括:
书名,作者名,书编号,分类,出版社,价格等。
(图书信息用文件保存)
(2)图书信息查看功能。
用来查看各项图书信息。
(3)图书信息查找功能。
通过已知信息来查找想要的图书。
(4)图书信息的删除。
可以删除指定图书。
(5)图书信息的修改。
可以修改图书的各项信息。
(6)菜单选择功能,次功能也是图书信息管理系统的入口,用户所要进行的各种操作均需要在此模块中进行选择并进行调用其他模块实现相应的功能。
3.总体设计
(1)数据结构
图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。
structBook/*定义结构体数组*/
{
charISBN[14];//编号
charName[20];//名称
charAuthor[20];//作者
charType[10];//类型
charPub[20];//出版社
charDate[10];//出版日期
floatPrice;//价格
};
(2)模块分化
本系统主要有添加图书、查找图书、搜索图书、删除图书、修改图书几个基本功能。
函数声明:
intChoose();//选择
intAdd();//添加图书
intView();//查找图书
intSearch();//搜索图书
intDelete();//删除图书
intModify();//修改图书
intmenu();//返回系统
4.详细设计
流程图:
4.1主函数
函数的原型:
voidmain()
函数的功能:
调用菜单,使用各项功能。
程序:
main()
{
menu();
}
menu()
{
printf
("\n\n********图书管理系统********\n\n\t1.添加图书\n\t2.查看图书\n\t3.搜索图书\n\t4.删除图书\n\t5.修改图书\n\t6.退出程序\n\n****************************\n");
switch(Choose(6))
{
case1:
Add();
break;
case2:
View();
break;
case3:
Search();
break;
case4:
Delete();
break;
case5:
Modify();
break;
case6:
exit(0);
}
return0;
}
Choose(intlimit)
{
intn=0;
while(n<1||n>limit)
{
printf("选择一个项目:
");
scanf("%d",&n);
getchar();
}
returnn;
}
4.2各功能模块设计
4.2.1添加图书信息:
函数原型:
voidAdd()
函数的功能:
记录图书的各项信息
程序:
Add()
{
FILE*f;
structBookb;
f=fopen("Book.txt","ab");
if(f==NULL)
{
printf("Fileopenerror!
\n");
exit(0);
}
else
{
Add:
printf
("请输入图书信息,分类标签:
\n图书编号图书名称作者图书类型出版社出版日期图书价格\n");
scanf("%s%s%s%s%s%s%f",b.ISBN,b.Name,b.Author,b.Type,b.Pub,
b.Date,&b.Price);
fwrite(&b,sizeof(structBook),1,f);
printf("\n完成.\t1.继续添加\t2.返回菜单\n");
switch(Choose
(2))
{
case1:
gotoAdd;
break;
case2:
fclose(f);
menu();
break;
}
}
return0;
}
4.2.2查看图书信息
函数的原型:
voidView()
函数的功能:
查看图书书编号,书名,作者名,类型,出版社,出版日期,价格。
程序:
View()
{
FILE*f;
structBookb;
f=fopen("Book.txt","rb");
if(f==NULL)
{
printf("Fileopenerror!
\n");
exit(0);
}
else
{
fread(&b,sizeof(structBook),1,f);
while(feof(f)==0)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%4.2f\n",b.ISBN,b.Name,b.Author,
b.Type,b.Pub,b.Date,b.Price);
fread(&b,sizeof(structBook),1,f);
}
fclose(f);
printf("\n完成.\t1.返回菜单\t2.退出程序\n");
switch(Choose
(2))
{
case1:
menu();
break;
case2:
exit(0);
}
}
return0;
}
4.2.3搜索图书
函数的原型:
voidSearch()
函数的功能:
通过书编号,书名,作者名,类型,出版社,出版日期查找图书。
程序:
Search()
{
FILE*f;
structBookb;
chars[40];
inti=0;
f=fopen("Book.txt","rb");
if(f==NULL)
{
printf("Fileopenerror!
\n");
exit(0);
}
else
{
printf("请输入图书关键词查询:
");
scanf("%s",s);
fread(&b,sizeof(structBook),1,f);
while(feof(f)==0)
{
charbi[128]={0};
strcat(bi,b.ISBN);
strcat(bi,b.Name);
strcat(bi,b.Author);
strcat(bi,b.Type);
strcat(bi,b.Pub);
strcat(bi,b.Date);
if(strstr(bi,s))
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%4.2f\n",b.ISBN,b.Name,
b.Author,b.Type,b.Pub,b.Date,b.Price);
i++;
}
break;
fread(&b,sizeof(structBook),1,f);
}
fclose(f);
if(i==0)
printf("没有发现图书信息!
");
else
printf("%d发现信息",i);
printf("\n完成.\t1.返回菜单\t2.退出程序\n");
switch(Choose
(2))
{
case1:
menu();
break;
case2:
exit(0);
}
}
return0;
}
4.2.4删除图书
函数的原型:
voidDelete()
函数的功能:
通过图书编号或者查询图书编号确定图书,进而删除图书。
程序:
Delete()
{
FILE*i,*o;
structBookb;
chars[40];
printf
("你需要图书编号.如果你没有,你可以通过查询功能获得.\n\t1.拥有图书编号\t2.查询图书编号\n");
if(Choose
(2)==2)
Search();
i=fopen("Book.txt","rb");
o=fopen("tempBook.txt","wb");
if(i==NULL||o==NULL)
{
printf("Fileopenerror!
\n");
exit(0);
}
else
{
intc=0;
printf("请输入你想要删除的图书编号:
\n");
scanf("%s",s);
fread(&b,sizeof(structBook),1,i);
while(feof(i)==0)
{
if(strcmp(s,b.ISBN))
fwrite(&b,sizeof(structBook),1,o);
else
c=1;
fread(&b,sizeof(structBook),1,i);
}
fclose(i);
fclose(o);
remove("book.txt");
rename("tempbook.txt","book.txt");
if(c)
printf("删除成功.");
else
printf("无效图书编号.");
printf("\t1.返回菜单\t2.退出程序\n");
switch(Choose
(2))
{
case1:
menu();
break;
case2:
exit(0);
}
}
return0;
}
4.2.5修改图书信息
函数的原型:
voidModify()
函数的功能:
通过图书编号或者查询图书编号确定图书,进而修改图书。
程序:
Modify()
{
FILE*i,*o;
structBookb,t;
chars[40];
printf
("你需要图书编号.如果你没有,你可以通过查询功能获得.\n\t1.拥有图书编号\t2.查询图书编号\n");
if(Choose
(2)==2)
Search();
i=fopen("Book.txt","rb");
o=fopen("tempBook.txt","wb");
if(i==NULL||o==NULL)
{
printf("Fileopenerror!
\n");
exit(0);
}
else
{
intc=0;
printf("请输入你想修改的图书编号:
\n");
scanf("%s",s);
printf
("请输入图书信息,分类标签:
\n图书编号图书名称作者图书类型出版社出版日期图书价格\n");
scanf("%s%s%s%s%s%s%f",t.ISBN,t.Name,t.Author,t.Type,t.Pub,
t.Date,&t.Price);
fread(&b,sizeof(structBook),1,i);
while(feof(i)==0)
{
if(strcmp(s,b.ISBN)==0)
{
c=1;
b=t;
}
fwrite(&b,sizeof(structBook),1,o);
fread(&b,sizeof(structBook),1,i);
}
fclose(i);
fclose(o);
remove("book.txt");
rename("tempbook.txt","book.txt");
if(c)
printf("修改成功.");
else
printf("无效图书编号.");
printf("\t1.返回菜单\t2.退出程序\n");
switch(Choose
(2))
{
case1:
menu();
break;
case2:
exit(0);
}
}
return0;
}
5.系统运行
6.总结