c语言实习报告 图书信息管理系统.docx
《c语言实习报告 图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《c语言实习报告 图书信息管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
c语言实习报告图书信息管理系统
C语言课程设计
院系:
工程学院
姓名:
王保成
学号:
20111000341
班号:
051113
指导教师:
日期:
一、需求分析:
1、图书管理信息包括:
登录号,书名,作者号,分类号,出版单位,出版时间,价格等。
设计图书管理系统。
2、程序的系统功能:
(1)、系统以菜单方式工作;
(2)、图书信息录入功能;
(3)、图书信息浏览功能;
(4)、图书信息查询功能;
(5)、图书信息删除与修改。
3、测试数据(后附)。
二、概要设计:
1:
本系统包括两个抽象数据:
图书库链表和借书者链表。
(1)定义图书链表类型为:
ADTAbook
数据对象D={bi|bi=Booktype,i=1……nn>=o}
数据关系R={|(bi-1,bi)=D,i=2……n}
基本操作:
Insert(n)
操作结果:
建立一个长度为n的链表或插入n个新结点。
Del(n)
操作结果:
从已建立链表中删除n个结点。
Print()
操作结果:
输出已建立链表。
Search()
操作结果:
按要求查找并输出已建立链表中的结点。
Borrow()
操作结果:
按要求改变已建立链表中某一结点的相关信息。
return()
操作结果:
按要求改变已建立链表中某一结点的相关信息。
(2)定义图书链表类型为:
ADTAborrow
数据对象D={ri|ri|borrowtype,i=1……nn>=1}
数据关系R={|ri-1,ri=D,i=2……n}
基本操作:
creat(n)
操作结果:
建立一个长度为n的链表。
Insert(n)
操作结果:
插入n个新结点到已建立链表中。
Remove(n)
操作结果:
从已建立链表中删除n个结点。
2:
主程序的流程:
1选择系统
(1)、录入图书信息
(2)、浏览图书信息
(3)、图书信息查询功能:
1按登录号查询2按书名查询3按作者名查询4按分类号查询5按出版单位查询6按价格查询
(4)、图书信息删除与修改1删除2修改
(0)、返回
三、详细设计:
structbook
{
chardlnum[10];/*登录号/*
charname[50];/*书名/*
charwriter[20];/*作者名/*
charflnum[10];/*分类号/*
charpressname[50];/*出版单位/*
charpresstime[20];/*出版时间/*
charprice[10];/*价格/*
}books[N];
四、调试分析
1在最初进行模块划分是未将借书人信息管理作为一个单独摸块,致使调试时无法明确管理结借书者信息,造成书目链表混乱,重新分配后解决了这个问题
2原先想进行中文书名及人命输入输出,但由于未能找到相关信息资料,无法完成该操作,最终放弃该设计
3最初我们曾规定了一些变量以及结构体,但随着设计的进行深化,最初的结构体及变量无法满足需要,致使调试时出现不少混乱,后来我们重新规定了一下,解决了这些问题;
4程序的串联我们采取了循环控制与选择结构相结合的结构很好地解决了系统长时间运行及循环执行命令的问题,使演示系统现实化。
五、测试结果:
1、在windows状态下,2、执行TC文件,3、进入系统操作界面。
4、选择系统选项,5、进行图书管理操作。
进入后根据提示信息可进行。
0退回界面。
六、用户使用说明书:
1选择操作类型,例选择1录入图书信息
2浏览已经录入的图书信息
选择3为图书信息查询项
(1)按登陆号
(2)按书名(3)按作者(4)按分类号(5)出版单位(6)出版时间(7)价格
选择4为删除和修改功能1为删除2为修改
首先欢迎您使用本图书馆管理系统。
本系统主要面向图书馆的管理人员。
运行主程序后,您将能够看到一个带有欢迎界面的窗口,上面有您所能进行的操作,您可以在这里选择。
(附)源程序:
#defineN100
#include
#include
#include
structbook
{
chardlnum[10];
charname[50];
charwriter[20];
charflnum[10];
charpressname[50];
charpresstime[20];
charprice[10];
}books[N];
voidprintf_face()
{
printf("dlnumnamewriterflnumpressnamepresstimeprice\n");
}
voidenter()
{
inti,n;
voidmenu();
voidinput(intk);
voidsave(intk);
printf("Howmanybooks(0-%d)?
:
",N-1);
scanf("%d",&n);
printf("\nEnterdatanow\n\n");
for(i=0;i{
printf("\nInput%dthbookrecord.\n",i+1);
input(i);
}
if(i!
=0)save(n);
printf("Passanykeytoback\n");
getchar();
menu();
}
voidinput(inti)
{
printf_face();
scanf("%s%s%s%s%s%s%s",books[i].dlnum,books[i].name,books[i].writer,books[i].flnum,books[i].pressname,books[i].presstime,books[i].price);
}
voidsave(intn)
{
FILE*fp;
inti;
if((fp=fopen("book.txt","wb"))==NULL)
{
printf("\nCannotopenfile\n");
}
for(i=0;iif(fwrite(&books[i],sizeof(structbook),1,fp)!
=1)
printf("filewriteerro\n");
fclose(fp);
}
voidbrowse()
{
intk;
voidmenu();
intload();
voidprintf_books(intn);
k=load();
printf_books(k);
printf("Passanykeytoback\n");
getchar();
menu();
}
voidprintf_one(inti)
{
printf("%5s%5s%5s%5s%5s%5s%5s",books[i].dlnum,books[i].name,books[i].writer,books[i].flnum,books[i].pressname,books[i].presstime,books[i].price);
printf("\n\n");
}
voidprintf_books(intn)
{
intj;
printf("dlnumnamewriterflnumpresspresstimeprice\n");
for(j=0;j{
if(j!
=0&&j%10==0)
{
printf("\n\nPassanykeytocontiune...");
getchar();
puts("\n\n");
}
printf_one(j);
}
}
intload()
{
FILE*fp;
inti;
if((fp=fopen("book.txt","rb"))==NULL)
{
printf("\nCannotopenfile\n");
return0;
}
for(i=0;!
feof(fp);i++)
fread(&books[i],sizeof(structbook),1,fp);
fclose(fp);
return(i-1);
}
voidsearch_by_name()
{
structbooks;
intn,i,k=0;
intload();
voidprintf_one(inti);
n=load();
printf("enterabookname:
");
scanf("%s",&s.name);
for(i=0;iif(strcmp(s.name,books[i].name)==0)
{
printf_one(i);
k=1;
}
if(k==0)printf("\nNotfoundthefile!
\n");
}
voidsearch_by_writer()
{
structbooks;
intn,i,k=0;
intload();
voidprintf_one(inti);
n=load();
printf("enterawriter'sname:
");
scanf("%s",&s.writer);
for(i=0;iif(strcmp(s.writer,books[i].writer)==0)
{
printf_one(i);
k=1;
}
if(k==0)printf("\nNotfoundthefile!
\n");
}
voidsearch_by_flnum()
{
structbooks;
intn,i,k=0;
intload();
voidprintf_one(inti);
n=load();
printf("enteraflnum:
");
scanf("%s",&s.flnum);
for(i=0;iif(strcmp(s.flnum,books[i].flnum)==0)
{
printf_one(i);
k=1;
}
if(k==0)printf("\nNotfoundthefile!
\n");
}
voidsearch_by_press()
{
structbooks;
intn,i,k=0;
intload();
voidprintf_one(inti);
n=load();
printf("enterapress:
");
scanf("%s",&s.pressname);
for(i=0;iif(strcmp(s.pressname,books[i].pressname)==0)
{
printf_one(i);
k=1;
}
if(k==0)printf("\nNotfoundthefile!
\n");
}
voidsearch_by_dlnum()
{
structbooks;
intn,i,k=0;
intload();
voidprintf_one(inti);
n=load();
printf("enteradlnum:
");
scanf("%s",&s.dlnum);
for(i=0;iif(strcmp(s.dlnum,books[i].dlnum)==0)
{
printf_one(i);
k=1;
}
if(k==0)printf("\nNotfoundthefile!
\n");
}
menu_search()
{
intn,w;
do
{
puts("\t\t*************MENUOFSEARCH**********************\n\n");
puts("\t\t\t\t1.search_by_name");
puts("\t\t\t\t2.search_by_writer");
puts("\t\t\t\t3.search_by_dlnum");
puts("\t\t\t\t4.search_by_flnum");
puts("\t\t\t\t5.search_by_press");
puts("\t\t\t\t6.back");
puts("\n\n\t\t************************************\n");
printf("Choiceyournumber(1-6):
[]\b\b");
scanf("%d",&n);
if(n<1||n>6)
{
w=1;
getchar();
}
elsew=0;
}while(w==1);
switch(n)
{
case1:
search_by_name();break;
case2:
search_by_writer();break;
case3:
search_by_dlnum();break;
case4:
search_by_flnum();break;
case5:
search_by_press();break;
case6:
menu();
}
}
voidprintf_back()
{
intw;
do
{
printf("Whatdoyouwanttodo?
\n\n\t1).BACKTOMENU\t2)continue...:
[]\b\b");
scanf("%d",&w);
switch(w)
{
case1:
menu();break;
case2:
menu_search();break;
}
}while(w!
=1&&w!
=2);
}
voidsearch()
{
menu_search();
printf_back();
}
voidmodify(intm,intn)
{
intc,w1;
voidmenu();
do
{puts("\nmodifyby=>\n\n1).dlnum2).name3).writer4).flnum\n5).pressname6).presstime7).price8).modifyall");
printf("Whichyouneed?
:
[]\b\b");
scanf("%d",&c);
if(c>8||c<1)
{puts("\nChoiceerror!
Pleaseagain!
");
getchar();
}
}while(c>8||c<1);
do
{
switch(c)
{
case1:
printf("dlnum:
");scanf("%s",books[m].dlnum);break;
case2:
printf("name:
");scanf("%s",books[m].name);break;
case3:
printf("writer:
");scanf("%s",books[m].writer);break;
case4:
printf("flnum:
");scanf("%s",books[m].flnum);break;
case5:
printf("pressname:
");scanf("%s",books[m].pressname);break;
case6:
printf("presstime:
");scanf("%s",books[m].presstime);break;
case7:
printf("price:
");scanf("%s",books[m].price);break;
case8:
printf("Enteranewinformation:
\n");input(m);
}
printf_face();
printf_one(m);
printf("\nAreyousure?
\n\n\t1).Sure2).noandremodify3).Backwithoutsaveinthistime[]\b\b");
scanf("%d",&w1);
}while(w1==2);
if(w1==1)save(n);
}
voiddel(intm,intn)
{FILE*fp;
intk,w;
printf("Areyousuredeleteit?
\n\n\t1).Sure\t2).Giveup:
[]\b\b");
scanf("%d",&w);
if(w==1)
{
if((fp=fopen("book.txt","wb"))==NULL)
printf("\nCannotopenfile\n");
for(k=0;kif(k!
=m)
if(fwrite(&books[k],sizeof(structbook),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
}
}
voiddeal()
{
voidmenu();
intw,i,m,n,k=0;
structbooks;
n=load();
printf_books(n);
printf("enterabookname:
");
scanf("%s",&s.name);
for(i=0;iif(strcmp(s.name,books[i].name)==0)
{
printf_one(i);
k=1;m=i;
}
if(k==0)
{
printf("Notfoundthefile!
");
getchar();
menu();
}
printf("Whatdoyouwanttodo?
\n\n\t1).Modify\t2).Delete:
[]\b\b");
scanf("%d",&w);
switch(w)
{
case1:
modify(m,n);break;
case2:
del(m,n);break;
default:
menu();
}
menu();
}
add()
{
inti,n,m,k;
FILE*fp;
n=load();
printf("Howmanybooksareyouwanttoadd(0-%d)?
:
",N-1-n);
scanf("%d",&m);
k=m+n;
for(i=n;i{
printf("\nInput%dthbooksrecord.\n",i-n+1);
input(i);
}
if((fp=fopen("book.txt","ab"))==NULL)
{
printf("cannotopenfile\n");
}
for(i=n;iif(fwrite(&books[i],sizeof(structbook),1,fp)!
=1)
printf("filewriteerror\n");
fclose(fp);
printf_back();
}
voidmenu()
{
intn,w;
do
{
puts("\t\t**********************MENU************************\n\n");
puts("\t\t\t\t1.enter");
puts("\t\t\t\t2.browse");
puts("\t\t\t\t3.search");
puts("\t\t\t\t4.deleteormodify");
puts("\t\t\t\t5.add");
puts("\t\t\t\t6.exit");
puts("\n\n\t\t**************************************************\n");
printf("Choiceyournumber(1-5):
[]\b\b");
scanf("%d",&n);
if(n<1||n>6)
{
w=1;
getchar();
}
elsew=0;
}while(w==1);
switch(n)
{
case1:
enter();break;
case2:
browse();break;
case3:
search();break;
case4:
deal();break;
case5:
add();break;
case6:
exit(0);
}
}
main()
{
menu();
}