资源描述
《图书馆管理系统》
大作业说明书
学生姓名 董勋凯
学 号 2412332
所属学院 电信工程学院
专 业 电气工程及其自动化
班 级 电气123班
组 长 董勋凯
电信工程学院制
目录
摘要 2
1. 图书管理系统概述 3
1.1图书管理系统总体设计思想概述 3
1.2总体设计步骤图 3
2. 图书管理系统具体设计 5
2.1C++中应用程序编程 5
2.1.1结构体,存放书籍及借书信息 5
2.1.2页头函数,能够经过参数menu_item,显示目前状态 5
2.1.1关键功效函数源代码 6
2.2算法调试、测试过程中出现问题及处理方案 13
2.2.1本系统调试过程中碰到问题: 13
2.2.2本系统调试过程中碰到问题原因: 14
2.2.3本系统调试过程中碰到问题处理措施及步骤: 14
课程设计总结和体会 15
关键参考资料 16
摘要
伴随计算机技术不停应用和提升,计算机已经深入到社会生活各个角落。而中小型租、借书机构仍采取手工管理图书方法,不仅效率低、易犯错、手续繁琐,而且花费大量人力。为了满足其管理人员对图书馆书籍,读者资料,借还书等进行高效管理,在工作人员含有一定计算机操作能力前提下,此图书管理系统软件努力争取提升其管理效率。
本程序编写是为了完善图书管理系统软件开发路径和应用方法。以求在最短时间高效开发图书管理系统。
程序实现了对图书添加、删除、修改、查询等功效,对学生添加、删除、修改、查询等功效,和学生对图书借阅、还书和所借图书查看等功效。
关键词:计算机技术,图书馆,图书管理,程序
1. 图书管理系统概述
1.1图书管理系统总体设计思想概述
该程序提供为读者提供借书、 还书和查询所需图书及图书、读者卡管理等功效。
该程序功效模块有:
(1)登录界面 只有管理员才能使用全部功效,愈加好保护图书馆内部分信息不被破坏。
(2)读者资料 能实现对读者显示、读者信息增加、读者查询、读者信息修改和读者信息删除功效。
(3)图书资料 能实现对图书显示、图书信息增加、图书查询、图书信息修改和图书信息删除功效。
(4)借书管理 可和数据库中图书信息表连接实现借书功效。
(5)还书管理 可和数据库中图书信息表连接实现还书功效
(6)退出 退出程序,结束运行。
1.2总体设计步骤图
程序开始
登录界面
面
还书管理
借书管理
读者资料
图书资料
借书
确定
增
修删查
读者显示
系统界面
面
增
修删查
图书显示
程序结束
退出
2. 图书管理系统具体设计
2.1C++中应用程序编程
2.1.1结构体,存放书籍及借书信息
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct BOOK
{
int id,usr[10],total,store,days[10];
char name[30],author[20];
}books[100];
2.1.2页头函数,能够经过参数menu_item,显示目前状态
void page_title(char *menu_item)
{
printf(">>> 以下是图 书 管 理 系 统--请 按 要 求 操 作 <<<\n\n- %s -\n\n",menu_item);
}
初始界面,图1:
图1
2.1.1关键功效函数源代码
返回前请求确定函数,方便返回前观察结果
void return_confirm(void)
{
printf("\n任意键返回……\n");
getch();
}
数组中找到图书号匹配统计
int search_book(void)
{
int n,i;
printf("请输入图书序号:");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("书名:%s\n",books[n].name);
printf("作者:%s\n",books[n].author);
printf("存数:%d\n",books[n].store);
printf("总数:%d\n",books[n].total);
return n;
}
}
printf("\n输入有错或图书序号不存在.\n");
return -1;
}
此过程是在数组中找到图书号匹配统计,显示其信息并返
回数组下标,假如找不到对应统计则提醒错误并返回-1。
图书资料中借书函数
void book_out(void)
{
int n,s,l,d;
page_title("借书");
if((n=search_book())!=-1&&books[n].store>0)
{
printf("请输入借书证序号:");
scanf("%d",&s);
printf("请输入可借天数:");
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("此书已经全部借出.\n");
return_confirm();
}
此过程是借书函数,首先调用找书函数。图2:
图2
图书资料中还书函数
void book_in(void)
{
int n,s,l;
page_title("&qu ot;还书");
if((n=search_book())!=-1&&books[n].store<books[n].total)
{
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();
}
此过程是还书函数,首先调用找书函数。图3:
图3
图书资料中注册书函数
void book_add(void)
{
int n;
page_title("注册书");
for(n=0;n<100;n++)
if(books[n].id==0) break;
printf("序号:");
scanf("%d",&books[n].id);
printf("书名:");
scanf("%s",&books[n].name);
printf("作者:");
scanf("%s",&books[n].author);
printf("数量:");
scanf("%d",&books[n].total);
books[n].store=books[n].total;
return_confirm();
}
此过程是注册书函数,读者资料中函数和图书资料中函数基础一致。图4:
图4
图书资料中注销书函数
void book_del(void)
{
int n;
page_title("注销书");
if((n=search_book())!=-1) books[n].id=0;
printf("该书已注销.\n");
return_confirm();
}
此过程是注销书函数,读者资料中函数和图书资料中函数基础一致。图5:
图5
返回主界面函数
void main(void)
{
menu: page_title("操作选择单子");
printf("请按以上要求选择操作\n\n");
printf("1 借书\n2 还书\n\n");
printf("3 注册书\n4 注销书\n\n");
printf("\n0 退出\n");
switch(getch())
{
case '1' : book_out();break;
case '2' : book_in();break;
case '3' : book_add();break;
case '4' : book_del();break;
case '0' : exit(0);
}
goto menu;
}
此过程是控制退出界面选择函数,和初始界面基础一致。图6:
图6
2.2算法调试、测试过程中出现问题及处理方案
2.2.1本系统调试过程中碰到问题:
程序在储存图书信息时只能一次存入,并读取。再次添加新程序时将会把原来添加图书信息覆盖。
运行完程序一次有错误提醒。
程序运行到添加新图书时自动提醒错误需要调试。
借书管理模块中,当正确输入存在读者编号和所借书编号,系统进行判定时,提醒不存在此读者。
2.2.2本系统调试过程中碰到问题原因:
存放函数只能只写2进制文件,不能追加填写2进制文件。
首次运行程序后没相关闭操作界面,当点击编译时会有一个错误提醒,将上次运行时界面关闭即可。
指针指向位置出现错误造成程序传参数错乱无法运行,可使程序进入调试状态在传参出现错误位置一句一句查找传输参数是否是你所期望,如若不就加以修正。
2.2.3本系统调试过程中碰到问题处理措施及步骤:
一个一个输出全部读者编号,检验文件中是否有此读者。
假如发觉有此读者,那么,检验循环判定函数是否有此读者语句,检验其是否存在错误。
输出用于循环检验语句中读者信息时,仔细检验该语句是否存在乱码。
若有乱码,仔细分析乱码原因;若无乱码,再检验调用函数变量类型是否有错误,若有,加以更正。
课程设计总结和体会
在此次图书管理课程设计过程中,有很多东西值得我们思索并总结。
设计过程大致可分为以下多个步骤:
(1)思索总体设计方案:总体结构和模块外部设计,功效分配。思索要实现整个程序大致需要多个模块和其中用到Visual C++语言基础操作符、语句等。
(2)画出总体设计方案步骤图:用步骤图形式展现你基础编程思想。
(3)步骤图具体化:立即步骤图中几大模块具体实现思索清楚,能够用步骤图形式展现.并想好实现关键代码。
(4)编辑程序代码:这是一个至关关键复杂而且需要反复修改步骤,在此步骤中你将发觉总体设计和模块思想会存在很多问题,需不停改善.怎样实现各函数功效,达成预期效果也将是一项繁复工作。
(5)代码调试:在Visual C++6.0环境下输入代码并进行调试和正确运行。在调试过程中会碰到很多需要精化地方,需要十足耐心和细心,不停改善完善程序。
经过对图书馆系统利用,我们对数据库和MFC编程有了更深刻认识,深刻认识到需求分析关键性,愈加了解了一个系统各部门工作步骤细节。对概念设计步骤掌握愈加清楚,促进了对分析过程中标准要求及所得到数据结果原因认识。逻辑设计阶段中,因为整个系统数据复杂性和实际应用交叉性,发觉我们在理论和实际操作中不管是关系模型设计还是vc++中功效实现全部有很多不足。
针对此次大作业,我总结了一点点经验,以下:
(1) 要对系统功效和要求做出具体分析,并合理分解任务。
(2) 把分解出来子任务,并给其系统性做一个相对独立模块。
(3)在设计一个模块之前,要简单构想一下总界面显示情况。
(4)针对构想出来界面进行程序编写。
总而言之,经过此次课程设计,让我愈加明白了主动学习是最好方法。主动动手去做,广泛查阅资料,数次进行修改和完善,只有这么,才能有好设计展现出来。
关键参考资料
[1] Beck Zaratian.Microsoft Visual Visual C++ 6.0程序员指南.期望设备创作室译.北京:北京期望电脑企业出品,1998
[2]Richard C.Leinecker,Tom Archer. Visual C++ 6 宝典.张艳,张谦译.北京:电子工业出版社,1999
[3] 李强,贾云霞. Visual C++项目开发实践.北京:中国铁道出版社,
[4] 郑莉,董渊,张瑞丰.C++语言程序设计..
[5] 李闽溟等.Visual C++ 6.0 数据库系统开发实例导航[M]. 北京:人民邮电出版社
[6] 闪四清.《数据库系统原理和应用教程[M].清华大学出版社
展开阅读全文