c语言图书管理系统课程设计报告Word文档下载推荐.docx
《c语言图书管理系统课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言图书管理系统课程设计报告Word文档下载推荐.docx(39页珍藏版)》请在冰豆网上搜索。
(3)Create_Books_Doc();
这是一个指针函数,它主要实现了链表的创建,它返回的时一个单向链表的头。
其他函数调用时只需调用它返回的头即可。
Clear();
此为清屏操作,在运行中可以随时将屏幕清空。
(4)Print_Book_Doc();
这个函数为链表的输出函数,把链表的头传给函数后,可以表格的形式输出整个链表的所有信息。
、
(5)save();
这个函数为保存信息到文件的函数,使用时将链表的头传给函数,函数可将整个链表的所有信息存入到磁盘文件中。
并覆盖掉源文件,以便以后调用。
Read()这个函数为读取文件的函数,将文件中的数据读入链表中。
(7)search_book1();
search_book2();
search_book3();
search_book4();
search_book5();
这五个函数为查询图书信息函数,它们分别按编号、书名、作者、借书人姓名、借书人学号进行查询。
查询到信息后返回信息所在节点,查询不到则返回空指针。
(8)InsertDoc();
Sorting_order1();
Sorting_order2();
DeleteDoc();
info_change();
这四个函数为功能函数,InsertDoc();
添加图书信息、Sorting_order1();
将图书按编号排序、Sorting_order2();
将图书按价格排序、DeleteDoc();
删除图书信息、info_change();
修改图书信息。
调用时将链表头指针传递给函数,函数返回经过功能操作后的头指针。
3.结构体系设计:
以下为部分流程图:
图书管理系统主界面流程图
退出系统登录
学生登录
管理员登录
清屏操作
管理员版图书管理系统流程图
图书信息排序
图书查询系统主界面流程图
排序页面
排序系统
退出排序
按照图书编号排序
按照图书价格排序
5.设计过程中的想法与程序中的不足:
总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与不足。
比如,程序中主函数写的有点繁琐,有太多的嵌套,不是那么井然有序,条理清晰,程序注释也不是很完善,对信息处理功能还有些不足之处,提示信息不明确。
还有就是没能做到模糊查询。
这个系统主要是参照课本手机通讯录模版编写的,同时也得到了老师和同学的一些帮助。
我在做系统的过程中也遇到了很多问题,有的是知识不足,有的是考虑不够周全。
事实证明,只靠自己的知识面还是很窄,独立处理问题能力不是很强,以后还要加强对c语言的学习。
我认为对于C语言编写的程序来说,使用方法大致都是一样的,所以如果要改进的话,就是要改进一些算法,尽量把界面编写清楚,提示信息全面,方便易用。
三、调试与测试:
上机操作(部分截图)
系统主界面(选择数字进入,退出系统)
选择1输入密码进入管理员版系统,然后出现功能菜单;
选择1进入录入系统,录入后浏览;
选择8进行清屏;
由于版面原因,其他操作页面可以上机运行进行操作,在此就不再一一列出。
四、小节:
在这一个星期的实践中,通过编写这个图书管理系统,我体会到了c语言学习的实用性。
将理论和实践结合在一起,用先进的计算机工具方便人们的生活。
C语言程序的编写首先要从大局考虑,把自己编写整个程序的思想都写在草稿上,这样有助于自己编写程序,在编写时要完善注释,方便其他人理解程序。
编写的程序从理论上来说并没有错,但一上机就问题不断。
甚至有些课本上的知识照搬不变,也不能得到正确的结果。
有时一个程序改了一遍又一遍,但就是不能成功,编程显得枯燥乏味,看似简单的程序题,在调试时却屡屡出错。
经反复的修改后,结果正确了,这时所有的乏味都显得那么无力,一切都是值得的。
我认为,开发一套系统,最重要的是细心,并且思考要全面,结合实际,充分考虑到客户的需求和现实意义。
不管什么系统,只用运用到实际应用中,才具有现实意义。
所以c语言程序的实用性很强,我们以后还要更加努力认真地学习编程语言。
附录:
源代码:
#include<
stdio.h>
math.h>
string.h>
stdlib.h>
structbooks_list{
charauthor[20];
/*作者名*/
charbookname[20];
/*书名*/
charpublisher[20];
/*出版单位*/
charpbtime[15];
/*出版时间*/
charbooknum[10];
/*图书编号*/
floatprice;
/*价格*/
charlendername[20];
/*借书人姓名*/
charlendersex[10];
/*借书人性别*/
charlendernum[20];
/*借书人学号*/
structbooks_list*next;
/*链表的指针域*/
};
/*清屏函数*/
voidClear()
{
system("
cls"
);
}
/*保存数据至文件*/
voidsave(structbooks_list*head)
{
structbooks_list*p;
FILE*fp;
p=head;
fp=fopen("
f1.txt"
"
w+"
fprintf(fp,"
%20s%20s%20s%20s%20s%20f%20s%20s%20s"
p->
booknum,p->
bookname,p->
author,p->
publisher,p->
pbtime,p->
price,p->
lendername,p->
lendersex,p->
lendernum);
while(p->
next!
=NULL){
p=p->
next;
}
fclose(fp);
printf("
已将数据保存到f1.txt文件\n"
/*插入*/
structbooks_list*InsertDoc(structbooks_list*head,structbooks_list*book)
chara;
structbooks_list*ptr,*p;
ptr=book;
if(head==NULL){
head=ptr;
head->
next=NULL;
else{
=NULL)
p=p->
p->
next=ptr;
ptr->
是否保存插入的图书信息?
(Y/N)"
getchar();
scanf("
%c"
&
a);
if(a=='
Y'
||a=='
y'
)
save(head);
else
\n未保存插入后数据!
\n\n"
returnhead;
/*新建链表头节点*/
structbooks_list*Create_Books_Doc()
structbooks_list*head,*p;
intsize=sizeof(structbooks_list);
head=NULL;
charflag='
;
while(flag=='
||flag=='
){
p=(structbooks_list*)malloc(sizeof(structbooks_list));
/*开辟新空间,存入数据,添加进链表*/
here0:
\n请输入图书编号:
"
%s"
booknum);
\n请输入图书书名:
bookname);
\n请输入图书作者名:
author);
\n请输入图书出版社:
publisher);
\n请输入图书出版时间:
pbtime);
\n请输入图书价格:
if(scanf("
%f"
p->
price)!
=1){
价格输入有误,请重新输入!
gotohere0;
\n请输入借书人姓名:
lendername);
\n请输入借书人性别:
lendersex);
\n请输入借书人学号:
\n"
head=InsertDoc(head,p);
━━━━添加成功!
━━━━"
\n继续添加(输入‘Y’或‘y’继续,否则结束)?
flag);
/*修改操作*/
voidinfo_change(structbooks_list*head)
structbooks_list*p;
intpanduan=0;
chartemp[20],a;
if(head==NULL)
━━━━图书库为空!
━━━━\n"
请输入要修改图书的书名:
temp);
while(p!
=NULL){
if(strcmp(p->
bookname,temp)==0){
\n请输入修改后的图书编号:
\n请输入修改后的图书书名:
\n请输入修改后的图书作者名:
\n请输入修改后的图书出版社:
\n请输入修改后的图书出版时间:
\n请输入修改后的图书价格:
price);
\n请输入修改后的借书人姓名:
\n请输入修改后的借书人性别:
\n请输入修改后的借书人学号:
getchar();
panduan=1;
if(panduan==0){
\n━━━━没有此图书记录!
━━━━\n\n"
是否保存修改后的图书信息?
\n未保存修改后数据!
return;
/*按照图书号查询*/
voidsearch_book1(structbooks_list*head)
inta=0;
chartemp[20];
请输入您要查找图书的编号:
"
booknum,temp)==0){
\n图书已找到!
┏━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━┳━━━━━┳━━━━━┳━━━━━━┓\n"
┃图书号┃书名┃作者┃出版单位┃出版时间┃价格┃借书人姓名┃借书人性别┃借书人学号┃\n"
┣━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━╋━━━━━╋━━━━━╋━━━━━━┫\n"
┃%-6.6s┃%-10.10s┃%-10.10s┃%-10.10s┃%-12.12s┃%-8.2f┃%-10.11s┃%-10.10s┃%-12.12s┃\n"
┗━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━┻━━━━━┻━━━━━┻━━━━━━┛\n"
a++;
if(p==NULL&
&
a==0)
\n查询完毕,未找到所要查询的信息!
}
/*按照图书名查询*/
voidsearch_book2(structbooks_list*head)
请输入您要查找书本的名称:
/*按照图书作者查询*/
voidsearch_book3(structbooks_list*head)
请输入您要查找图书的作者:
author,temp)==0){
/*按照借书人姓名查询*/
voidsearch_book4(structbooks_list*head)
请输入您要查找的图书借书人姓名:
lendername,temp)==0){
pri