图书管理系统链表课设完美版Word文档下载推荐.docx
《图书管理系统链表课设完美版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《图书管理系统链表课设完美版Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。
二、设计正文
一、课程设计题目
进行文件的链表操作,包括读取、创建、修改、删除等
二、需求分析
本系统主要实现了图书馆内管理的一般功能,包括查询、添加、删除、修改图书信息等。
所设计的系统以菜单方式工作,为用户提供清楚的利用提示,依据用户的选择来进行各类处置,图书信息包括编号、书名、作者、出版社、价钱等。
录入的图书信息用文件形式保留,并能够对其进行阅读、查询、修改、删除等大体操作。
3、概要设计
本程序包括9个函数:
①主函数main()
②初始化单链表函数LINKcreat(),LINKlinkc()
③显示操作菜单函数menu()
④显示单链表内容函数voidshow(LINKhead);
⑤插入元素函数voidadd(LINKhead);
⑥删除元素函数voiddele(LINKhead);
⑦查找元素函数intcheckn(LINKhead);
⑧保留函数voidsave(LINKhead);
⑨修改函数voidchange(LINKhead);
包括关系如下
main
save
creat
linkc
show
change
check
menu
4、详细设计
结点类型和指针类型
typedefstructbook
{
charshuhao[31];
charname[31];
charwriter[31];
charpublisher[31];
floatprice;
intremain;
}BOOK;
typedefstructlink
BOOKa;
structlink*next;
}NODE,*LINK;
单链表的大体操作
LINKcreat(),LINKlinkc()
voidshow(LINKhead);
voidadd(LINKhead);
voiddele(LINKhead);
intcheckn(LINKhead);
voidsave(LINKhead);
voidchange(LINKhead);
五、调试分析
一、菜单界面
二、显示
3、保留
4、修改
五、查询
一、按出版社查询
二、按书名查询
3、按作者查询
三、课程设计总结或结论
回顾这次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,能够学到很多很多的东西,同时不仅能够巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我知道了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立试探能力。
在设计的进程中碰到的问题,这毕竟独立做的,不免会碰到各类各样的问题,同时在设计的进程中发觉自己的不足的地方,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计以后,必然把以前所学过的知识从头温故。
这次课设终于顺利完成了,在设计中碰到了很多编程问题做完那个课程设计,我的自信一下子提高了,最后真心谢谢林老师的付出。
四、参考文献
[1]林碧英等.新编C语言程序设计.中国电力出版社.
[2]郑玲等.C语言程序设计.中国电力出版社.
附录(程序、测试数据等)
#include<
>
bookstr[30];
intmenu();
intcheckp(LINKhead);
intcheckw(LINKhead);
intnum=0;
LINKcreat();
LINKlinkc();
voidmain()
intm,k;
LINKhead=NULL;
FILE*fp;
fp=fopen("
"
"
r"
);
if(fp==NULL)
{
printf("
文件不存在,请创建\n"
head=creat();
}
else
head=linkc();
\n请按任意键继续\n"
getch();
m=1;
while(m)
k=menu();
switch(k)
{
case1:
add(head);
break;
case2:
dele(head);
case3:
change(head);
case4:
checkp(head);
case5:
checkn(head);
case6:
checkw(head);
case7:
save(head);
case8:
show(head);
case0:
printf("
确认退出吗?
\n肯定--0,返回---1\n"
scanf("
%d"
&
m);
if(m==0)
exit
(1);
}
继续吗?
\n继续--1,结束--0\n"
scanf("
}
intmenu()
intchoice;
while
(1)
system("
cls"
1--新添图书\n"
2--删除图书\n"
3--修改图书\n"
printf("
4--按出版社查询\n"
5--按书名查询\n"
6--按作者查询\n"
7--保留图书信息\n"
8--显示\n"
0--退出\n"
请选择:
choice);
if(choice>
=0&
&
choice<
10)break;
returnchoice;
LINKcreat()
intn,i,k=0,f=0;
if((fp=fopen("
wb"
))==NULL)
printf("
打开文件失败\n"
printf("
请输入将要创建的图书的种类数"
scanf("
n);
for(i=0;
i<
n;
i++)
请输入第%d本书的信息\n"
i+1);
书号\n"
%s"
str[i].shuhao);
书名\n"
scanf("
str[i].name);
作者\n"
str[i].writer);
出版社\n"
str[i].publisher);
单价\n"
%f"
str[i].price);
printf("
库存量\n"
str[i].remain);
fprintf(fp,"
%s%s%s%s%f%d\n"
str[i].shuhao,str[i].name,str[i].writer,str[i].publisher,str[i].price,str[i].remain);
录入成功\n"
fclose(fp);
return(linkc());
LINKlinkc()
intk=0;
FILE*fp;
LINKnewp,head,p;
head=p=(LINK)malloc(sizeof(NODE));
head->
next=NULL;
if((fp=fopen("
rb"
{printf("
文件不存在\n"
exit(0);
while(!
feof(fp))
newp=(LINK)malloc(sizeof(NODE));
fscanf(fp,"
%s%s%s%s%f%d\n"
newp->
newp->
;
k++;
newp->
next=p->
next;
p->
next=newp;
p=p->
读取成功!
\n"
fclose(fp);
return(head);
voidshow(LINKhead)
%7s%7s%7s%7s%7s%7s\n"
书号"
书名"
作者"
出版社"
单价"
库存数"
LINKp;
p=head;
while(p->
next!
=NULL)
printf("
%7s%7s%7s%7s%%7d\n"
p->
next->
p=p->
}
voidadd(LINKhead)
intnumb,i;
LINKnewp,p;
p=(LINK)malloc(sizeof(NODE));
请输入你要增加的图书的本数\n"
numb);
while(p->
next)
p=p->
for(i=0;
numb;
newp=(LINK)malloc(sizeof(NODE));
scanf("
价钱\n"
newp->
p->
p=p->
p->
添加成功!
voidsave(LINKhead)
if((fp=fopen("
{
保留成功\n"
voiddele(LINKhead)
intflag=0;
LINKpt,pa;
chartemp[31];
请输入你要删除的书的书名\n"
temp);
pa=pt=(LINK)malloc(sizeof(NODE));
pa=head;
while(pa->
{if(strcmp(pa->
temp)==0){flag=1;
}pa=pa->
if(flag==1)
pt=pa->
pa->
next=pt->
free(pt);
删除成功!
else
没有这本书\n"
intcheckp(LINKhead)
chartemp[30];
intk=0;
LINKp;
请输入你要查找的图书的出版社\n"
{k++;
if(strcmp(p->
temp)==0)break;
p=p->
if(p->
next==NULL)
没有这本图书\n"
else
{
printf("
return(k);
intcheckw(LINKhead)
请输入你要查找的图书的作者\n"
intcheckn(LINKhead)
请输入你要查找的图书的书名\n"
voidchange(LINKhead)
intflag=0;
请输入你要修改的书的书名\n"
请输入这本书修改后的信息\n"
pa->
pa->
修改成功\n"