图书管理实习报告.docx
《图书管理实习报告.docx》由会员分享,可在线阅读,更多相关《图书管理实习报告.docx(21页珍藏版)》请在冰豆网上搜索。
图书管理实习报告
一、题目要求
图书管理信息包括:
图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,试设计一图书管理系统,使之能提供以下功能。
(1)新进图书基本信息的输入
(2)图书基本信息的查询
(3)对撤消图书信息的删除
(4)办理借书手续
(5)办理还书手续
二、需求分析
作为学生对图书管理系统的要求有:
1.能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。
2.能够方便地借阅图书、续借图书、归还图书。
3.能够查询自己的基本资料、借阅图书情况。
4.能够熟悉图书管理系统的使用。
作为图书管理员,他们对图书管理系统的要求有:
1.能方便的对图书进行录入登记,注销陈旧的书籍。
2.能够方便地对新生进行登记,或注销已经毕业的学生信息(基本信息,借阅信息)。
3.能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借情况等信息,以便各学院能够随时获知本院学生的一些借书信息。
建立图书管理信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。
存在状态设为整型,可用不同数字代表借还状态。
借书和还书手续要注意修改结构体的成员变量存在状态的值。
三、总体设计
四、详细设计
1.主函数:
主函数设计得比较简洁,只提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
[流程图]
voidmain(void)
{
menu:
page_title("Themenu");
printf("Choiceyournumber:
\n\n");
printf("1borrowbooks;\n2Returnbooks;\n\n");
printf("3Enternewbooks;\n4Deleteoldbooks;\n\n");
printf("5Search_books;\n0Exit\n");
switch(getch())
{
case'1':
book_out();break;
case'2':
book_in();break;
case'3':
book_add();break;
case'4':
book_del();break;
case'5':
search_book1();break;
case'0':
exit(0);
}
gotomenu;
}
2.各功能模块设计
(1)图书信息查询:
输入要查找的图书号,再从数组中查找是否有和此图书号相匹配的图书号,若有,显示其信息并返回数组下标,若没有相应记录则提示错误并返回-1。
[流程图]
[程序]
voidsearch_book1(void){
intn,i;
page_title("Searchbooks");
printf("Pleaseenterthenumberofthebook:
");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("Bookname:
%s\n",books[n].name);
printf("Writer:
%s\n",books[n].author);
printf("Storenumbers:
%d\n",books[n].store);
printf("Books[n].total:
%d\n",books[n].total);
break;
}
else
{
printf("\nEnterwrongornousebooknumber.\n");
break;
}
}
return_confirm();
}
(2)借书函数:
首先调用找书函数,判断所借图书是否有库存,若有则输入借书人的图书证号以及想借用的天数,天数在10天以内的存储借书人姓名及天数,同时库存数量减少1,如果库存数量为0则显示此书已全部借出。
[流程图]
[程序]
voidbook_out()
{
intn,s,l,d;
page_title("Borrowbooks");
if((n=search_book())!
=-1&&books[n].store>0)
{
printf("Pleaseinputthelibrarycardserialnumber:
");
scanf("%d",&s);
printf("Pleaseinputmayborrowthenumberofdays:
");
scanf("%d",&d);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!
=-1&&books[n].store==0)printf("Thisbookalreadycompletelyloaned.\n");
return_confirm();
}
3)还书函数:
类似借书函数,首先调用找书函数。
[流程图]
[程序]
voidbook_in(void)
{
intn,s,l;
page_title("Returnsthebooks");
if((n=search_book())!
=-1&&books[n].store{
printf("Theborrowingbookscardtabulates:
\n");
for(l=0;l<10;l++)
if(books[n].usr[l]!
=0)
printf("[%d]-%d\n",books[n].usr[l],books[n].days[l]);
printf("Pleaseinputthelibrarycardserialnumber:
");
scanf("%d",&s);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==s)
{
books[n].usr[l]=0;
books[n].days[l]=0;
break;
}
}
books[n].store++;
}
if(n!
=-1&&books[n].store==books[n].total)
printf("AllentersTibet.\n");
return_confirm();
}
(4)注册新书:
[流程图]:
[程序]
voidbook_add(void)
{
intn;
page_title("Registrationnewbook");
for(n=0;n<100;n++)
if(books[n].id==0)break;
printf("Serialnumber:
");
scanf("%d",&books[n].id);
printf("booknumber:
");
scanf("%s",&books[n].name);
printf("bookwriter:
");
scanf("%s",&books[n].author);
printf("numbers:
");
scanf("%d",&books[n].total);
books[n].store=books[n].total;
return_confirm();
}
(5)删除旧图书:
[流程图]:
[程序]:
voidbook_del(void)
{
intn;
page_title("Cancelstheoldbook");
if((n=search_book())!
=-1)books[n].id=0;
printf("Thisbookcancelled.\n");
return_confirm();
}
3.公共函数
(1)存放书籍及借书信息函数
structBOOK
{
intid,usr[10],total,store,days[10];
charname[31],author[21];
}
books[100];
(2)打印页眉函数,同时可通过参数显示当前状态
voidpage_title(char*menu_item)
{
clrscr();
printf(">>>MENU<<<\n\n-%s-\n\n",menu_item);
}
(3)返回前请求确认的函数
voidreturn_confirm(void)
{
printf("\nPleaseenteranyonetoback:
\n");
getch();
}
(4)在数组中产寻图书号匹配记录,显示其信息并返回数组下标,找不到则提示错误
intsearch_book(void)
{
intn,i;
printf("Pleaseenterthenumberofthebook:
");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("Bookname:
%s\n",books[n].name);
printf("Writer:
%s\n",books[n].author);
printf("Storenumbers:
%d\n",books[n].store);
printf("Books[n].total:
%d\n",books[n].total);
returnn;
}
}
printf("\nEnterwrongornousebooknumber.\n");
return-1;
}
[总程序]:
#include
#include
#include
structBOOK
{
intid,usr[10],total,store,days[10];
charname[31],author[21];
}
books[100];
voidpage_title(char*menu_item)
{
clrscr();
printf(">>>MENU<<<\n\n-%s-\n\n",menu_item);
}
voidreturn_confirm(void)
{
printf("\nPleaseenteranyonetoback:
\n");
getch();
}
intsearch_book(void)
{
intn,i;
printf("Pleaseenterthenumberofthebook:
");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("Bookname:
%s\n",books[n].name);
printf("Writer:
%s\n",books[n].author);
printf("Storenumbers:
%d\n",books[n].store);
printf("Books[n].total:
%d\n",books[n].total);
returnn;
}
}
printf("\nEnterwrongornousebooknumber.\n");
return-1;
}
voidbook_out()
{
intn,s,l,d;
page_title("Borrowbooks");
if((n=search_book())!
=-1&&books[n].store>0)
{
printf("Pleaseinputthelibrarycardserialnumber:
");
scanf("%d",&s);
printf("Pleaseinputmayborrowthenumberofdays:
");
scanf("%d",&d);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!
=-1&&books[n].store==0)printf("Thisbookalreadycompletelyloaned.\n");
return_confirm();
}
voidbook_in(void)
{
intn,s,l;
page_title("Returnsthebooks");
if((n=search_book())!
=-1&&books[n].store{
printf("Theborrowingbookscardtabulates:
\n");
for(l=0;l<10;l++)
if(books[n].usr[l]!
=0)
printf("[%d]-%d\n",books[n].usr[l],books[n].days[l]);
printf("Pleaseinputthelibrarycardserialnumber:
");
scanf("%d",&s);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==s)
{
books[n].usr[l]=0;
books[n].days[l]=0;
break;
}
}
books[n].store++;
}
if(n!
=-1&&books[n].store==books[n].total)
printf("AllentersTibet.\n");
return_confirm();
}
voidbook_add(void)
{
intn;
page_title("Registrationnewbook");
for(n=0;n<100;n++)
if(books[n].id==0)break;
printf("Serialnumber:
");
scanf("%d",&books[n].id);
printf("booknumber:
");
scanf("%s",&books[n].name);
printf("bookwriter:
");
scanf("%s",&books[n].author);
printf("numbers:
");
scanf("%d",&books[n].total);
books[n].store=books[n].total;
return_confirm();
}
voidbook_del(void)
{
intn;
page_title("Cancelstheoldbook");
if((n=search_book())!
=-1)books[n].id=0;
printf("Thisbookcancelled.\n");
return_confirm();
}
voidsearch_book1(void){
intn,i;
page_title("Searchbooks");
printf("Pleaseenterthenumberofthebook:
");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("Bookname:
%s\n",books[n].name);
printf("Writer:
%s\n",books[n].author);
printf("Storenumbers:
%d\n",books[n].store);
printf("Books[n].total:
%d\n",books[n].total);
break;
}
else
{
printf("\nEnterwrongornousebooknumber.\n");
break;
}
}
return_confirm();
}
voidmain(void)
{
menu:
page_title("Themenu");
printf("Choiceyournumber:
\n\n");
printf("1borrowbooks;\n2Returnbooks;\n\n");
printf("3Enternewbooks;\n4Deleteoldbooks;\n\n");
printf("5Search_books;\n0Exit\n");
switch(getch())
{
case'1':
book_out();break;
case'2':
book_in();break;
case'3':
book_add();break;
case'4':
book_del();break;
case'5':
search_book1();break;
case'0':
exit(0);
}
gotomenu;
}
五、上机操作
各个模块的界面图:
(1)主菜单函数
(2)输入模块
在主界面按键输入3,并输入提示所出现的各种信息,看到下图
键入任意按键,返回主菜单
(3)查找模块
在主界面按键输入5,看到下图
键入刚刚输入的书号码001,按回车,则看到下图
键入任意键返回主菜单;重新键入5,并键入未存书号002,按回车,则看到下图
键入任意键返回主菜单
(4)借书模块
在主界面键入1,并输入所借书的编号001,按回车,则看到下图
根据提示信息键入所需内容,看到下图
键入任意键返回主菜单
再次键入1键,输入未存储的书号002,看到下图
键入任意键返回主菜单
(5)还书模块
在主界面键入2,并输入所还书的书号001,按回车,看到下图
根据提示键入所需信息,按回车,看到下图
键入任意键返回主菜单
再次键入2,进入还书界面,输入错误书号,既所输入的书号不存在,则看到下图
键入任意键返回主菜单
(6)删除旧书模块
在主界面键入4,并输入错误的欲删除书号,则看到下图
键入任意键返回主菜单
再次键入4,进入删除界面,输入欲删除书号001,则看到下图
键入任意键返回主菜单
键入5,进入查找模块,输入刚刚删除的001号书,看到下图
说明删除成功.
总结:
通过此次C语言课程设计实习,我收获颇多。
这次实习是真正意义上的将所学知识运用到实际中。
实践才是检验真理的唯一标准!
此次实习中,我成功做出了这道题:
提高了我们的编程能力。
在编程过程中还是应该特别注意充分理解题目要求和各循环语句的充分调用和理解。
自己也已经具备了一定的编程能力。
然而,这只是一个小小的开端,以后的路还很长,还需要用恒心继续坚持下去!
C语言课程设计实验报告
学院:
工程学院
班级:
052052(12)
学号:
20051002514
姓名:
刘俊红