图书管理.docx
- 文档编号:5474389
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:32
- 大小:373.82KB
图书管理.docx
《图书管理.docx》由会员分享,可在线阅读,更多相关《图书管理.docx(32页珍藏版)》请在冰豆网上搜索。
图书管理
课程设计报告
学院:
天津理工大学华信软件学院
专业名称:
软件工程
课程设计科目
C语言课程设计
所在班级:
四班
学生学号:
20105934
学生姓名:
凌烨
指导教师:
陈立娜
完成时间:
2011年4月-6月
课程设计成绩评定表
对课程设计工作过程的简短介绍和自我评价
学生签名:
年月日
(以下由评定小组教师填写)
质量评价指标(在相应栏目打√)
评价项目
评价质量
优秀
良好
中等
及格
不及格
工作量和态度
实验、计算可靠性
文字和图表质量
总体评价
评定成绩(百分制)
一、任务与目标···································4
二、方案设计和论证·······························5
三、程序框图或流程图,程序清单与调用关系··········7
四、全部源程序清单·······························8
五、程序运行结果测试与分析······················24
六、结论与心得··································28
七、参考资料····································29
八、致谢········································29
题目图书管理系统
一、设计任务与目标
主要包括管理图书的库存信息、每一本书的借阅信息以及每一个人的借书信息。
每一种图书的库存信息包括编号、书名、作者、出版社、出版日期、金额、类别、总入库数量、当前库存量、已借出本数等。
每一本被借阅的书都包括如下信息:
编号、书名、金额、借书证号、借书日期、到期日期、罚款金额等。
每一个人的借书信息包括借书证号、姓名、班级、学号等。
系统功能包括以下方面:
A、借阅资料管理
要求把书籍、期刊、报刊分类管理,这样的话操作会更加灵活和方便,可以随时对其相关资料进行添加、删除、修改、查询等操作。
B、借阅管理
(1)借出操作
(2)还书操作
(3)续借处理
C、读者管理
读者等级:
对借阅读者进行分类处理,例如可分为教师和学生两类。
并定义每类读者的可借书数量和相关的借阅时间等信息。
读者管理:
对读者信息可以录入,并且可对读者进行挂失或注销、查询等服务的作业。
D、统计分析
随时可以进行统计分析,以便及时了解当前的借阅情况和相关的资料状态,统计分析包括借阅排行榜、资料状态统计和借阅统计、显示所有至当日内到期未还书信息等功能分析。
E系统参数设置:
可以设置相关的罚款金额,最多借阅天数等系统服务器参数。
二、方案设计与论证
1.1.建立文件
(1)可以使用默认文件名或指定文件名将记录存储到文件;
(2)文件保存成功返回0,失败返回-1;
(3)设置保存标志savedTag作为是否已对记录进行存储操作的信息;
(4)写同名文件将覆盖原来文件的内容。
1.2.欢迎界面
(1)显示“欢迎使用图书馆图书基本信息管理软件”和设计者的姓名、班级和学号;
(2)提示按“Ctrl键”进入主菜单。
1.3.添加图书记录
(1)可在已有记录的后面追加新的记录;
(2)可以随时用它增加新的记录,它们仅保存在结构体数组当中;
(3)可以将一个文件读入,追加在已有记录之后;
(4)如果已经采取用文件追加的方式,在没有保存到文件之前,将继续保持文件追加状态,以便实现文件追加操作方式;
(5)如果没有记录存在,给出提示信息。
1.4.显示图书记录
(1)如果没有记录可供显示,给出提示信息;
(2)可以随时显示内存中的记录。
1.5.文件存储
(1)可以按默认名字或指定名字存储记录文件;
(2)存储成功返回0,否则返回-1;
(3)更新存储标志。
1.6.读取文件
(1)可以按默认名字或指定名字将记录文件读入内存;
(2)读取成功返回0,否则返回-1;
(3)可以将指定或默认文件追加到现有记录的尾部;
(4)可以将文件连续追加到现有记录并更新记录的名次;
(5)更新存储标志。
1.7.查询图书记录
(1)可以按“编号”、“出版年”和“版次”方式查询记录;
(2)能给出查询记录的信息;
(3)如果查询的信息不存在,输出提示信息。
1.8.借出功能
(1)可以按“编号”、“出版年”和“版次”方式借出指定图书;
(2)若指定图书存在,则执行借出功能,显示提示信息“图书借出成功!
”,若指定图书不存在,则显示提示信息“该书不存在”;
(3)若图书借出成功,图书记录中“借出本数”增1,“现余本数”减1.;
(4)执行借出功能操作时仅限于内存,只有在执行借出功能操作之后,执行显示图书记录功能,才能自动执行文件存储功能,覆盖原来记录。
1.9.归还功能
(1)按“编号”、“出版年”和“版次”方式归还指定图书;
(2)若指定图书存在,则执行归还功能,显示提示信息“图书归还成功!
”,若指定图书不存在,则显示提示信息“该书不存在”;
(3)若图书归还成功,图书记录中“借出本数”减1,“现余本数”增1.;
(4)执行归还功能操作时仅限于内存,只有在执行归还功能操作之后,执行显示图书记录功能,才能自动执行文件存储功能,覆盖原来记录。
1.10.头文件
(1)使用条件编译定义头文件;
(2)函数原型声明;
(3)数据结构及包含文件;
1.11.退出界面
(3)显示“谢谢再次使用!
!
”和设计者的姓名、班级和学号;
(4)提示按“任意键”退出。
1.12.测试程序
(1)应用列出测试大纲对程序进行测试;
(2)应保证测试用例测试到程序的各种边缘情况。
三、程序框图或流程图,程序清单与调用关系
模块之间的关系
模块
(1):
模块
(1)与模块
(2)之间通过
sortinfo_handle_menu()函数联系
模块
(2):
3、模块接口
函数名或其他成分
功能
main
总控函数
menu_select()
菜单选择
handle_menu()
菜单处理
Menu_select()
菜单选择
quit
退出
loan_record
借出图书
ret_record
归还图书
save_record
文件存储
load_reocrd
文件读取
display
显示所有图书记录
slstore
添加图书信息
sortinfo_handle_menu
查找并添加信息
sortinfo_menu_select
子菜单选择
find_record
查找指定记录
queryinfo
查找指定图书信息
结构声明
提供常数
库函数及函数原型声明
图书信息结构
引用库函数及函数
四、全部源程序清单
提供完整的程序代码
#include
#include
#include
#include
#defineINITIAL_SIZE100//数组初始大小
#defineINCR_SIZE30//数组每次增加的大小
structbook_info
{
intnumber;//图书编号
charbookname[40];//图书名
intamou;//入藏图书
intamou1;//借出图书
floatprice;//图书定价
charplace[40];//出版社
charediname[20];//主编
intvernum;//版次
intpubyear;//出版年
intloaninfo;//借出信息
intremainder;//现余本数
};
typedefstructbook_infobookinfo;
externintnumbooks;//记录的图书数目
externbookinfo*records;//记录图书信息的数组
externcharsavetag;//信息是否已保存,0为已保存,1为未保存
externintarraysize;//数组大小
voidhandle_menu(void);
intmenu_select(void);
voiddisplay(void);
voidquit(void);
intsortinfo_menu_select(void);
voidsortinfo_handle_menu(void);
intsave_record(void);
intload_record(void);
voidloan_record(void);
voidret_record(void);
intfind_record(char*target,inttargetType,intfrom);
voidqueryinfo(void);
voiduser_land(void);
voidslstore(void);
intnumbooks=0;//记录的图书数
bookinfo*records=NULL;//记录图书信息的数组
charsavetag=0;//信息是否已保存的标志,1为未保存,0为已保存
intarraysize;
/********************************
*主函数
*******************************/
intmain()
{
records=(bookinfo*)malloc(sizeof(bookinfo)*INITIAL_SIZE);
if(records==NULL)
{
printf("memoryfail!
");
exit(-1);
}
arraysize=INITIAL_SIZE;
load_record();
printf("\n\n");
printf("\n\n");
printf("\t\t****************************************\n");
printf("\t\t**\n");
printf("\t\t**\n");
printf("\t\t*欢迎进入*\n");
printf("\t\t**\n");
printf("\t\t**\n");
printf("\t\t*图书馆图书基本信息管理软件*\n");
printf("\t\t**\n");
printf("\t\t**\n");
printf("\t\t*制作人:
凌烨\n");
printf("\t\t*学号:
20105934*\n");
printf("\t\t*日期:
2011年6月10日*\n");
printf("\t\t*专业班级:
10软件四班*\n");
printf("\t\t*指导老师:
陈丽娜*\n");
printf("\t\t****************************************\n");
printf("\n");
printf("********************************************************************************\n");
printf("按回车进入程序:
\n\n");
getch();
system("cls");
handle_menu();
}
/**************************************
*用户主菜单处理函数
**************************************/
voidhandle_menu(void)
{
system("cls");
for(;;)
{
switch(menu_select())
{
case1:
loan_record();
break;
case2:
ret_record();
break;
case3:
sortinfo_handle_menu();
break;
case4:
quit();
}
}
}
/**************************************
*用户主菜单选择函数
**************************************/
intmenu_select()
{
chars;
intcn;
{
printf("\n\n\n\n\n\n\n\n\n\n");
printf("\t\t\t1.借出功能\n\n");
printf("\t\t\t2.归还功能\n\n");
printf("\t\t\t3.添加并查找\n\n");
printf("\t\t\t4.退出程序\n\n");
printf("\n\t\t左边数字对应功能选择,请选择1-4:
");
printf("\n\n\n\n\n\n\n\n");
}
do{
s=getchar();
cn=(int)s-48;
}while(cn<1||cn>4);
returncn;
}
/********************************
*退出程序函数
*******************************/
voidquit()
{
charstr[15];
{
printf("\n\n");
printf("\t\t****************************************\n");
printf("\t\t**\n");
printf("\t\t*谢谢!
*\n");
printf("\t\t*再次使用*\n");
printf("\t\t**\n");
printf("\t\t**\n");
printf("\t\t*图书馆图书基本信息管理软件*\n");
printf("\t\t**\n");
printf("\t\t**\n");
printf("\t\t*制作人:
凌烨*\n");
printf("\t\t****************************************\n");
printf("\n");
printf("是否保存原来的记录?
(y/n)");
getchar();
gets(str);
if(str[0]!
='n'&&str[0]!
='N')
save_record();
}
exit(0);
}
/***************************************************************************
*查找指定的记录
*参数:
target:
欲查找记录的某一项与target相同
*targetType:
表明通过哪一项来查找,0为图书编号,1为出版年,2为版次
*from:
从第from个记录开始找
*返回:
找到的记录的序号,若找不到则返回-1
****************************************************************************/
intfind_record(char*target,inttargetType,intfrom)
{
inti;
for(i=from;i<=numbooks;i++)
{
if((targetType==0&&atoi(target)==records[i].number)||
(targetType==1&&atoi(target)==records[i].pubyear)||
(targetType==2&&atoi(target)==records[i].vernum))
returni;
}
return-1;
}
/***********************************
*查询指定图书的信息
*可以按照编号、出版年或版次来查询
***********************************/
voidqueryinfo(void)
{
charstr[5];
chartarget[5];
inttype;
intcount;
inti;
if(numbooks==0)
{
printf("没有可供查询的的记录!
\n");
return;
}
while
(1)
{
printf("请输入查询的方式:
(直接输入回车则结束查询)\n");
printf("\t1.按图书编号查询\n");
printf("\t2.按图书出版年查询\n");
printf("\t3.按图书版次查询\n");
getchar();
gets(str);
if(strlen(str)==0)
break;
if(str[0]=='1')
{
printf("请输入图书编号:
\n");
gets(target);
type=0;
}
elseif(str[0]=='2')
{
printf("请图书出版年:
\n");
gets(target);
type=1;
}
else
if(str[0]=='3')
{
printf("请输入欲查询的图书版次:
\n");
gets(target);
type=2;
}
i=find_record(target,type,0);
count=0;
while(i!
=-1)
{
count++;
printf("\t编号%d:
\t主编:
%s\t出版社:
%s\n",records[i].number,records[i].ediname,records[i].place);
printf("\t\t出版年:
%d年\t版次:
%d\n",records[i].pubyear,records[i].vernum);
printf("\t\t书名:
%s\n",records[i].bookname);
printf("\t\t定价:
%.2f元\n",records[i].price);
printf("\t\t馆藏信息:
入藏%d本\t已借出%d本\n\n",records[i].amou,records[i].amou1);
break;
}
if(count==0)printf("没有符合条件的图书!
\n");
elseprintf("一共找到了%d本图书的信息\n\n",count);
break;
}
printf("请按任意键返回用户级别选择界面");
getch();
printf("\n\n\n\n");
menu_select();
}
/********************************
*借出图书功能函数
*******************************/
voidloan_record()
{
inti=0;
intj,number;
charstr[20];
if(numbooks==0)
{
printf("没有可供借出的图书!
");
return;
}
while
(1)
{
printf("请输入图书编号:
");
getchar();
gets(str);
number=atoi(str);
for(j=0;j { if(number==records[j].number) i++; } if(i==0) { printf("该书不存在! \n"); break; } for(j=0;j { if(number==records[j].number) {records[j].remainder=records[j].amou; if(records[j].amou1 { printf("图书借出成功! \n"); records[j].amou1++; records[j].remainder--; } elseprintf("该图书已全部被借出! \n"); break; } } break; } printf("请按任意键返回上一菜单"); getch(); printf("\n\n\n\n"); handle_menu(); } /******************************** *归还图书功能函数 *******************************/ voidret_record() { inti; intj,number; charstr[20]; while (1) { printf("请输入要归还图书编号: "); getchar(); gets(str); number=atoi(str); for(j=0;j { if(number==records[j].number) i++; } if(i==0) { printf("该书不存在! \n"); break; } for(j=0;j { if(number==records[j].number) if(records[j].amou1>0) { printf("图书归还成功! \n"); records[j].amou1--; records[j
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理