图书管理系统.docx

上传人:b****1 文档编号:23043741 上传时间:2023-04-30 格式:DOCX 页数:29 大小:280.38KB
下载 相关 举报
图书管理系统.docx_第1页
第1页 / 共29页
图书管理系统.docx_第2页
第2页 / 共29页
图书管理系统.docx_第3页
第3页 / 共29页
图书管理系统.docx_第4页
第4页 / 共29页
图书管理系统.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

图书管理系统.docx

《图书管理系统.docx》由会员分享,可在线阅读,更多相关《图书管理系统.docx(29页珍藏版)》请在冰豆网上搜索。

图书管理系统.docx

图书管理系统

学生实习报告

课程名称___程序设计综合实践___

题目名称_______________

学生学院_____

专业班级__

学号_______________

学生姓名________________

指导教师____________

 

2011年8月14日

目录

摘要1

1.设计的目的与要求1

1.1.目的:

1

1.2.要求:

1

2.总体设计2

2.1.系统构成框图2

2.2.系统结构框图3

3.详细设计4

3.1.借阅图书4

3.2.采编入库4

3.3.查阅功能5

3.4.归还图书5

4.数据结构设计6

4.1.头函数6

4.2.采编入库7

4.3.图书借阅8

4.4.查询功能8

4.5.归还图书10

4.6.清除库存10

5.调试分析12

5.1.主页面12

5.2.采编模块13

5.3.查询模块14

5.4.归还模块14

5.5.清除模块15

5.6.借阅模块15

6.总结16

7.参考文献17

8.答辩记录17

9.教师意见18

10.另附源代码:

18

摘要

图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,有很多的图书馆以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。

数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。

总的来说,缺乏系统,规范的信息管理手段。

图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况

图书管理系统是一个以菜单方式工作的信息管理系统,该系统用来反映登陆号、书名、作者名、出版单位、价格、库存量等信息,并实现采编入库、借阅、归还、清除库存以及查询等功能。

1.设计的目的与要求

1.1.目的:

建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。

1.2.要求:

(1)采编入库:

新购入一本书,经分类和确定书号后登记到图书账目中去,若该书已存在,这库存量增加

(2)借阅:

若一种书的现存量大于0,则借出一本,登记借阅者的图书证号和归还期限

(3)归还:

注销借阅者的登记,改变该书的现存量(过期罚款-选作)

(4)清除库存:

某书已无保留价值,将它从图书账目中注销

(5)查询功能:

按书名查询、按作者名查询

2.总体设计

2.1.系统构成框图

2.2.系统结构框图

3.详细设计

3.1.借阅图书

3.2.采编入库

3.3.查阅功能

3.4.归还图书

4.数据结构设计

4.1.头函数

#include

#include

#include

#include

structBOOK

{

intid,usr[100],total,store,days[100];

charname[100],author[100];

}books[100];

/*上面是结构体的定义,用于存放书籍及借书的信息。

*/

 

voidpage_title(char*menu_item)/*打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。

*/

{

printf(">>>欢迎进入图书管理系统<<<\n\n-设计者-\n\n",menu_item);

printf(">>>赵云鹏31001410<<<\n\n-%s-\n\n",menu_item);

}

intmain()

{

menu:

page_title("操作选单");

printf("请用数字键选择操作\n\n");

printf("\t\t1采编入库\t2借阅图书\n");

printf("\t\t3归还图书\t4清除库存\n");

printf("\t\t5查询功能\n");

printf("\t\t0退出\n");

switch(getch())

{

case'1':

book_add();break;

case'2':

book_out();break;

case'3':

book_in();break;

case'4':

book_del();break;

case'5':

book_search();break;

case'0':

exit(0);

}

gotomenu;

}

4.2.采编入库

voidbook_add()

{

intn,f;

page_title("采编入库");

printf("序号:

");

scanf("%d",&f);

for(n=0;n<100;n++)

if(books[n].id==0||books[n].id==f)break;

books[n].id=f;

printf("书名:

");

scanf("%s",&books[n].name);

printf("作者:

");

scanf("%s",&books[n].author);

printf("数量:

");

scanf("%d",&f);

books[n].total+=f;

books[n].store=books[n].total;

return_confirm();

}

4.3.图书借阅

voidbook_out()/*借阅图书*/

{

intn,s,l,d;

page_title("借阅图书");

if((n=book_search())!

=-1&&books[n].store>0)

{

printf("请输入借书证序号:

");

scanf("%d",&s);

printf("可借10天,超过天数按每天0.5元罚款:

");

1for(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("此书已经借出.\n");

return_confirm();

}

4.4.查询功能

charbook_search()

{

intf,n,i;

charstr[100];

printf("请选择>>1按书名查询\n>>2按作者查询\n>>3按书序号查询");

scanf("%d",&i);

if(i==1){

getchar();

scanf("%s",str);

for(n=0;n<100;n++)

{

if(strcmp(books[n].name,str)==0)

{

printf("书名:

%s\n",books[n].name);

printf("作者:

%s\n",books[n].author);

printf("存数:

%d\n",books[n].total);

returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/

}

}

printf("\n输入错误或无效图书序号.\n");

return-1;/*如果找不到相应记录则提示错误并返回-1*/

}

elseif(i==2){

getchar();

scanf("%s",str);

for(n=0;n<100;n++)

{

if(strcmp(books[n].author,str)==0)

{

printf("书名:

%s\n",books[n].name);

printf("作者:

%s\n",books[n].author);

printf("存数:

%dof",books[n].store);

printf("%d\n",books[n].total);

returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/

}

}

printf("\n输入错误或无效图书序号.\n");

return-1;/*如果找不到相应记录则提示错误并返回-1*/

}

if(i==3){

scanf("%d",&f);

for(n=0;n<100;n++)

{

if(books[n].id==f)

{

printf("书名:

%s\n",books[n].name);

printf("作者:

%s\n",books[n].author);

printf("存数:

%dof",books[n].store);

printf("%d\n",books[n].total);

returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/

}

}

printf("\n输入错误或无效图书序号.\n");

return-1;/*如果找不到相应记录则提示错误并返回-1*/

}

}

4.5.归还图书

voidbook_in()/*归还图书*/

{

intn,s,l;

page_title("归还图书");

if((n=book_search())!

=-1&&books[n].store

{

printf("借阅者图书证列表:

\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("请输入借书证序号:

");

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("全部入藏.\n");

return_confirm();

}

 

4.6.清除库存

voidbook_del()

{

intn;

page_title("清除库存");

if((n=book_search())!

=-1){

books[n].id=0;

books[n].total=0;

}

printf("该书已注销.\n");

return_confirm();

}

1.

getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.

2

  getch():

  所在头文件:

conio.h。

  函数用途:

从控制台读取一个字符,但不显示在屏幕上

  函数原型:

intgetch(void)

  返回值:

读取的字符

  例如:

  charch;或intch;

  getch();或ch=getch();

  用getch();会等待你按下任意键,再继续执行下面的语句;

  用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。

  易错点:

  1.所在头文件是conio.h。

而不是stdio.h.

  2.在使用之前要调用initscr(),结束时要调用endwin()。

否则会出现不输入字符这个函数

  也会返回的情况。

  3.在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即\n)

  1)windows平台下ENTER键会产生两个转义字符\r\n,因此getch返回13(\r)。

  2)unix、linux系统中ENTER键只产生\n,因此getch返回10(\n)。

  3)MACOS中ENTER键将产生\r,因此getch返回13(\r)。

  getch();并非标准C中的函数,不存在C语言中。

所以在使用的时候要注意程序的可移植性。

国内C语言新手常常使用getch();来暂停程序且不知道此函数来源,

3.

getchar():

从键盘上输入一个字符+回车才把该字符输进去

getch():

只要输入一个字符不需要输入回车就把该字符输进去了

此外getch()需要有头文件conio.h

5.调试分析

5.1.主页面

5.2.采编模块

5.3.查询模块

5.4.归还模块

 

5.5.清除模块

5.6.借阅模块

 

6.总结

经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处。

本次实践设计对我来说是一次挑战,在这期间我遇到了很多困难。

通过上网查找资料、查看书籍、询问同学、请教老师等方法我终于完成了这次大作业。

通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好程序设计。

学到的新东西:

1.

getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.

2

  getch():

  所在头文件:

conio.h。

  函数用途:

从控制台读取一个字符,但不显示在屏幕上

  函数原型:

intgetch(void)

  返回值:

读取的字符

  例如:

  charch;或intch;

  getch();或ch=getch();

  用getch();会等待你按下任意键,再继续执行下面的语句;

  用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。

  易错点:

  1.所在头文件是conio.h。

而不是stdio.h.

  2.在使用之前要调用initscr(),结束时要调用endwin()。

否则会出现不输入字符这个函数

  也会返回的情况。

  3.在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即\n)

  1)windows平台下ENTER键会产生两个转义字符\r\n,因此getch返回13(\r)。

  2)unix、linux系统中ENTER键只产生\n,因此getch返回10(\n)。

  3)MACOS中ENTER键将产生\r,因此getch返回13(\r)。

  getch();并非标准C中的函数,不存在C语言中。

所以在使用的时候要注意程序的可移植性。

国内C语言新手常常使用getch();来暂停程序且不知道此函数来源,

3.

getchar():

从键盘上输入一个字符+回车才把该字符输进去

getch():

只要输入一个字符不需要输入回车就把该字符输进去了

此外getch()需要有头文件conio.h

7.参考文献

1.谭浩强《c程序设计》清华大学出版社

2.颜晖《c语言程序设计》,高等教育出版社,2008

8.答辩记录

 

9.教师意见

10.另附源代码:

#include

#include

#include

#include

structBOOK

{

intid,usr[100],total,store,days[100];

charname[100],author[100];

}books[100];

/*上面是结构体的定义,用于存放书籍及借书的信息。

*/

 

voidpage_title(char*menu_item)/*打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。

*/

{

printf(">>>欢迎进入图书管理系统<<<\n\n-设计者-\n\n",menu_item);

printf(">>>赵云鹏31001410<<<\n\n-%s-\n\n",menu_item);

}

 

voidreturn_confirm()/*返回前请求确认的函数,以便在返回前观察结果*/

{

printf("\n按任意键返回……\n");

getch();

}

charbook_search()/*图书查阅*/

{

intf,n,i;/*f借书证号*/

charstr[100];

printf("请选择>>1按书名查询\n>>2按作者查询\n>>3按书序号查询");

scanf("%d",&i);

if(i==1){

getchar();

scanf("%s",str);

for(n=0;n<100;n++)

{

if(strcmp(books[n].name,str)==0)

{

printf("书名:

%s\n",books[n].name);

printf("作者:

%s\n",books[n].author);

printf("存数:

%d\n",books[n].total);

returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/

}

}

printf("\n输入错误或无效图书序号.\n");

return-1;/*如果找不到相应记录则提示错误并返回-1*/

}

elseif(i==2){

getchar();

scanf("%s",str);

for(n=0;n<100;n++)

{

if(strcmp(books[n].author,str)==0)

{

printf("书名:

%s\n",books[n].name);

printf("作者:

%s\n",books[n].author);

printf("存数:

%dof",books[n].store);

printf("%d\n",books[n].total);

returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/

}

}

printf("\n输入错误或无效图书序号.\n");

return-1;/*如果找不到相应记录则提示错误并返回-1*/

}

if(i==3){

scanf("%d",&f);

for(n=0;n<100;n++)

{

if(books[n].id==f)

{

printf("书名:

%s\n",books[n].name);

printf("作者:

%s\n",books[n].author);

printf("存数:

%dof",books[n].store);

printf("%d\n",books[n].total);

returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/

}

}

printf("\n输入错误或无效图书序号.\n");

return-1;/*如果找不到相应记录则提示错误并返回-1*/

}

}

 

voidbook_out()/*借阅图书*/

{

intn,s,l,d;

page_title("借阅图书");

if((n=book_search())!

=-1&&books[n].store>0)

{

printf("请输入借书证序号:

");

scanf("%d",&s);

printf("可借10天,超过天数按每天0.5元罚款:

");

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("此书已经借出.\n");

return_confirm();

}

 

voidbook_in()/*归还图书*/

{

intn,s,l;/*s是借书证号,l是天数*/

page_title("归还图书");

if((n=book_search())!

=-1&&books[n].store

{

printf("借阅者图书证列表:

\n");

for(l=0;l<10;l++)

if(books[n].usr[l]!

=0)

printf("[%d]-10天之内\n",books[n].usr[l],books[n].days[l]);

printf("请输入借书证序号:

");

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("全部入藏.\n");

return_confirm();

}

voidbook_add()/*采编入库*/

{

intn,f;

page_title("采编入库");

printf("序号:

");

scanf("%d",&f);

for(n=0;n<100;n++)

if(books[n].id==0||books[n].id==f)break;

books[n].id=f;

printf("书名:

");

sca

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1