图书馆管理系统实习报告.docx
- 文档编号:6244711
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:13
- 大小:18.53KB
图书馆管理系统实习报告.docx
《图书馆管理系统实习报告.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统实习报告.docx(13页珍藏版)》请在冰豆网上搜索。
图书馆管理系统实习报告
实习报告
题目:
图书馆管理系统
班级:
计科092
姓名:
周利亚学号:
**********
姓名:
戚永华学号:
**********
姓名:
张计伟学号:
**********
完成日期:
2011.9.23
1.设计内容
设计开发一个小型的图书管信息管理系统,要求具有如下功能:
查寻所有图书信息、通过输入图书编号来完成查找某一本图书信息、添加图书信息、删除图书信息以及通过学生学号实现图书借阅功能。
2.需求分析
1.该程序可用于图书馆对图书信息的管理
2.该程序可对初始时对图书及借书证信息的储存以及以后对新买图书
3.在应用时可对错误信息进行修改、对需要图书按具体内容经行查询、对库存量进行统计。
3.基本要求
(1)通过提示菜单选择可以进行的操作。
(2)将图书的信息存入文件中。
(3)将图书借阅情况信息存入文件中。
(4)在本系统中可以进行管理系统包含的基本操作,其中包括:
a)查看所有图书的信息。
b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。
c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。
d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在。
e)借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入SendInfo.txt文件中。
(5)图书基本信息包括图书编号、书名、作者。
4.概要设计
〈1〉储存模块:
在主菜单按1进入储存模块,在提示中选1进入储存图书模块,按2进入储存借书证模块。
按提示以此输入储存。
〈2〉删除模块:
在主菜单按2进入删除模块,按提示进入删除图书或删除借书证模块,输入要删除的编号对其进行删除。
〈3〉修改模块:
在主菜单按3进入修改模块,在提示中进入修改图书或修改借书证模块。
在修改模块按对应的数字键并照提示输入修改后的数据按回车修改完成。
〈4〉借书模块:
进入借书模块后按提示以此输入要借的图书序号和借书证号完成借阅。
〈5〉还书模块:
与借书模块类似。
〈6〉查询模块:
进入查询模块后按照提示进入图书查询或借书证查询模块。
在图书查询中选择你要查询的种类,进入后输入要查询的内容精心查询。
在借书证查询中输入借书证编号便会显示次借书证当前的信息。
5.调试分析
1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。
一周的时间,我们编了一个学生图书管理程序,这是一个应用程序相对于以前我们编写的程序,这个程序似乎稍微大了一些,运行的结果也不是很理想,程序的书写方面也不是很规范,还需要改进,在老师的指导及同学的互相商讨下,经过我一次一次的修改,最终基本达到了预期的效果,但还有不足的的地方。
第一次独立完成这种规模的程序,由于时间短,有许多原先构想的程序还未编辑,故有一些功能未能实现,现在已编辑的程序基本上能满足客户的需求,但还不是十分完善,若能添加更多的功能就能进一步满足需求了。
2、在设计过程中的感受。
通过这次实习让我对C语言有了进一步的了解,以前只停留在编写十几行的小程序的基础上,对它只是略知皮毛,经过上学期的学习也只是停留在理论上,此次实习让我受益匪浅,这次提高了我们的动手动脑能力,大学生缺乏动手实践的能力,对于大学生来说书本知识固然重要,但是实践课绝对是其大学四年中不可或缺的一部分。
所以我认为大学开实践课是非常有必要的!
6.程序源代码
#include
#include
#include
#include
structbooks_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);/*保存数据至文件*/
/*新建链表头节点*/
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");
/*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/
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);
}
fclose(fp);
printf("已将图书数据保存到data.txt文件\n");
}
/*插入*/
voidInsertDoc(structbooks_list*head)
{
/*定义结构体指针变量s指向开辟的新结点首地址p为中间变量*/
structbooks_list*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;
}
/*查询操作*/
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;
}
/*浏览操作*/
voidPrint_Book_Doc(structbooks_list*head)
{
structbooks_list*p;
if(head==NULL||head->next==NULL)/*判断数据库是否为空*/
{
printf("\n没有图书记录!
\n\n");
return;
}
p=head;
printf("登录号书名作者出版单位出版时间分类号价格\n");
/*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/
while(p->next!
=NULL)
{
p=p->next;
printf("%-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);/*循环输出表格*/
}
printf("\n");
}
/*修改操作*/
voidinfo_change(structbooks_list*head)
{
structbooks_list*p;
intpanduan=0;/*此变量用于判断是否找到书目*/
chartemp[20];
p=head;
printf("请输入要修改的书名:
");
scanf("%s",temp);
while(p->next!
=NULL)
{
p=p->next;
if(strcmp(p->bookname,temp)==0)
{
printf("\n请输入图书登陆卡号:
");
fflush(stdin);
scanf("%s",p->loginnum);
printf("\n请输入图书书名:
");
fflush(stdin);
scanf("%s",p->bookname);
printf("\n请输入图书作者名:
");
fflush(stdin);
scanf("%s",p->author);
printf("\n请输入图书出版社:
");
fflush(stdin);
scanf("%s",p->publisher);
printf("\n请输入图书出版时间:
");
fflush(stdin);
scanf("%s",p->pbtime);
printf("\n请输入图书分类号:
");
fflush(stdin);
scanf("%s",p->classfy);
printf("\n请输入图书价格:
");
fflush(stdin);
scanf("%f",&p->price);
printf("\n");
panduan=1;
}
}
if(panduan==0)
{
printf("\n没有图书记录!
\n\n");
}
return;
}
/*删除操作*/
voidDeleteDoc(structbooks_list*head)
{
structbooks_list*s,*p;/*s为中间变量,p为遍历时使用的指针*/
chartemp[20];
intpanduan;/*此变量用于判断是否找到了书目*/
panduan=0;
p=s=head;
printf("[请输入您要删除的书名]:
");
scanf("%s",temp);
/*遍历到尾结点*/
while(p!
=NULL)
{
if(strcmp(p->bookname,temp)==0)
{
panduan++;
break;
}
p=p->next;
}
if(panduan==1)
{
for(;s->next!
=p;)/*找到所需删除卡号结点的上一个结点*/
{
s=s->next;
}
s->next=p->next;/*将后一节点地址赋值给前一节点的指针域*/
free(p);
printf("\n删除成功!
\n");
}
else/*未找到相应书目*/
{
printf("您输入的书目不存在,请确认后输入!
\n");
}
return;
}
intmain(void)
{
structbooks_list*head;
charchoice;
head=NULL;
for(;;)/*实现反复输入选择*/
{
printf("图书管理系统\n");
printf("[1]图书信息录入\n");
printf("[2]图书信息浏览\n");
printf("[3]图书信息查询\n");
printf("[4]图书信息修改\n");
printf("[5]图书信息删除\n");
printf("[6]退出系统\n");
printf("请选择:
");
fflush(stdin);
scanf("%c",&choice);
if(choice=='1')
{
if(head==NULL)
{
head=Create_Books_Doc();
}
InsertDoc(head);
}
elseif(choice=='2')
{
Print_Book_Doc(head);
}
elseif(choice=='3')
{
search_book(head);
}
elseif(choice=='4')
{
info_change(head);
}
elseif(choice=='5')
{
DeleteDoc(head);
}
elseif(choice=='6')
{
printf("\n");
printf("感谢使用图书管理系统\n");
break;
}
else
{
printf("输入错误,请重新输入!
");
break;
}
}
return0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 实习 报告