图书管理系统C语言课程设计.docx
《图书管理系统C语言课程设计.docx》由会员分享,可在线阅读,更多相关《图书管理系统C语言课程设计.docx(13页珍藏版)》请在冰点文库上搜索。
图书管理系统C语言课程设计
目录
1、设计目的................................
2、设计内容................................
3、流程图..................................
4、程序代码................................
5、执行结果................................
6、总结与体会..............................
7、参考文献................................
《中级程序设计项目实践》实训报告
一、设计目的
1.加深对课堂讲授内容的理解和实践
2.熟悉程序开发环境与学习计算机系统的操作方法
3.学习上机调试程序
4.增强团队合作精神
二、设计内容
试设计一图书信息管理系统,使之能提供以下功能:
其中图书信息包括:
登陆号、书名、作者名、出版单位、出版时间、分类号、价格等。
1、图书信息录入功能(图书信息用文件保存)
2、查询:
按书名查询
3、图书信息浏览功能
4、图书信息的修改
5、图书信息的删除
6、循环和退出系统
三、总体设计
1、程序总流程图
2、信息录入流程图
3、信息查询流程图
四、程序代码
1、数据结构和基本变量
#include/*引用输入输出头文件*/
#include/*引用数学函数*/
#include/*引用字符串函数*/
#include
structbooks_list/*定义一个名为books_list的结构体,这个结构体定义了图书的基本信息*/
{
charauthor[20];/*作者名*/
charbookname[20];/*书名*/
charpublisher[20];/*出版单位*/
charpbtime[15];/*出版时间*/
charloginnum[10];/*登陆号*/
floatprice;/*价格*/
charclassfy[10];/*分类号*/
structbooks_list*next;/*链表的指针域*/
};
structbooks_list*Create_Books_Doc();/*新建链表*/
voidInsertDoc(structbooks_list*head);/*插入*/
voidDeleteDoc(structbooks_list*head,intnum);/*删除*/
voidPrint_Book_Doc(structbooks_list*head);/*浏览*/
voidsearch_book(structbooks_list*head);/*查询*/
voidinfo_change(structbooks_list*head);/*修改*/
voidsave(structbooks_list*head);/*保存数据至文件*/
2、信息录入模块(用文件保存)
/*新建链表头节点*/
structbooks_list*Create_Books_Doc()
{
structbooks_list*head;
head=(structbooks_list*)malloc(sizeof(structbooks_list));/*分配头节点空间*/
head->next=NULL;/*头节点指针域初始化,定为空*/
returnhead;
}
/*保存数据至文件*/
voidsave(structbooks_list*head)
{
structbooks_list*p;
FILE*fp;
p=head;
fp=fopen("data.txt","w+");/*以写方式新建并打开data.txt文件*/
fprintf(fp,"┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━┳━━━━┓\n");/*向文件输出表格*/
fprintf(fp,"┃登录号┃书名┃作者┃出版单位┃出版时间┃分类号┃价格┃\n");
fprintf(fp,"┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━╋━━━━┫\n");
/*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/
while(p->next!
=NULL)
{
p=p->next;
fprintf(fp,"┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-6.6s┃%.2f┃\n",p->loginnum,p->bookname,p->author,p->publisher,p->pbtime,p->classfy,p->price);
}
fprintf(fp,"┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━┻━━━━┛\n");
fclose(fp);
printf("已将图书数据保存到data.txt文件\n");
}
/*插入*/
voidInsertDoc(structbooks_list*head)
{
structbooks_list*s,*p;/*定义结构体指针变量s指向开辟的新结点首地址p为中间变量*/
charflag='Y';/*定义flag,方便用户选择重复输入*/
p=head;/*遍历到尾结点,p指向尾结点*/
while(p->next!
=NULL)
{
p=p->next;
}
/*开辟新空间,存入数据,添加进链表*/
while(flag=='Y'||flag=='y')
{
s=(structbooks_list*)malloc(sizeof(structbooks_list));
printf("\n请输入图书登陆号:
");
fflush(stdin);
scanf("%s",s->loginnum);
printf("\n请输入图书书名:
");
fflush(stdin);
scanf("%s",s->bookname);
printf("\n请输入图书作者名:
");
fflush(stdin);
scanf("%s",s->author);
printf("\n请输入图书出版社:
");
fflush(stdin);
scanf("%s",s->publisher);
printf("\n请输入图书出版时间:
");
fflush(stdin);
scanf("%s",s->pbtime);
printf("\n请输入图书分类号:
");
fflush(stdin);
scanf("%s",s->classfy);
printf("\n请输入图书价格:
");
fflush(stdin);
scanf("%f",&s->price);
printf("\n");
p->next=s;/*将新增加的节点添加进链表*/
p=s;/*p指向尾节点,向后移*/
s->next=NULL;
printf("添加成功");
printf("\n继续添加?
(Y/N):
");
fflush(stdin);
scanf("%c",&flag);
printf("\n");
if(flag=='N'||flag=='n')
{break;}
elseif(flag=='Y'||flag=='y')
{continue;}
}
save(head);/*保存数据至文件*/
return;
}
3、信息查询模块
/*查询操作*/
voidsearch_book(structbooks_list*head)
{
structbooks_list*p;
chartemp[20];
p=head;
if(head==NULL||head->next==NULL)/*判断数据库是否为空*/
{
printf("图书库为空!
\n");
}
else
{
printf("请输入您要查找的书名:
");
fflush(stdin);
scanf("%s",temp);
/*指针从头节点开始移动,遍历至尾结点,查找书目信息*/
while(p->next!
=NULL)
{
p=p->next;
if(strcmp(p->bookname,temp)==0)
{
printf("\n以下为您要查找的图书信息:
\n");
printf("\n");
printf("登录号:
%s\t\n",p->loginnum);
printf("书名:
%s\t\n",p->bookname);
printf("作者名:
%s\t\n",p->author);
printf("出版单位:
%s\t\n",p->publisher);
printf("出版时间:
%s\t\n",p->pbtime);
printf("分类号:
%s\t\n",p->classfy);
printf("价格:
%.2f\t\n",p->price);
}
if(p->next==NULL)
{
printf("\n查询完毕!
\n");
}
}
}
return;
}
五、执行结果
1、图书管理系统主菜单
2、图书信息录入结果
3、图书信息查询结果
六、总结与体会
在这个星期里,我们在专业老师的带领下进行了c语言程序实践的设计。
上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它,所以一开始我们感到这个课程设计很难,不知道要怎么去实现它。
但在老师的帮助与指导下,我们三个人一组,通过上网查资料和对课本的理解,慢慢的对程序设计产生了兴趣,不再那么害怕它。
在具体的上机实践中我们遇到了很多问题,比如:
程序错了运行不了,流程图不会画等等。
但我们都通过问老师和同学的办法把它解决了。
在这期间,我们三人各人负责各人的那个方面共同努力,培养了团队的合作精神。
通过这次的程序设计,给我最深的感觉是C语言真的是一门很实用的学科,它贯穿于我们的学习和生活之中,我们一定要把它学好。
另外,任何事情都存在表象,我们不要被它的表面所欺骗。
即使它看起来真的很难,但只要去做了,去努力了,就算不一定会成功也一定会有收获的,我们要相信我们自己。
在学习和生活中,我们还要注重团队的合作,团结就是力量,几个人的力量一定会比一个人的力量大得多。
相信只要我们去努力不放弃,我们就不会被社会所抛弃!
七、参考文献
1、谭浩强主编,《C语言程序设计》第三版,清华大学出版社出版,曾被评为电子工业部优秀教材一等奖。
2、谭浩强主编,《C语言程序设计题解与上机指导》第三版,清华大学出版社出版。