湖南工学院南校区经济与管理系
数据库课程设计
课题名称: 图书管理系统
系 别: 经济管理系
专 业: 电子商务
姓 名:
班 级: 电商0901班
学 号:
指导老师: 哈哈
完成时间: 20##年12月
湖南工学院
20##年12月
目录
第1章 课程设计及其要求... 2
第2章 需求分析... 3
第3章 总体设计... 4
第4章 数据库设计... 5
§4.1 概念结构设计... 5
§4.2 逻辑结构与物理结构设计... 6
第5章 详细设计... 8
第6章 编码... 9
第7章 系统测试,发布及其维护... 15
§7.1 测试... 15
发现错误:修改信息后,edit中仍显示刚输入信息。... 16
第9章设计总结... 17
学习体会... 17
致谢... 17
参考文献... 17
图书馆是信息交换和资源流通的重要媒介,对图书馆的信息化管理将大大提高图书资源的利用和信息的交换速度。图书管理系统是通过将借阅信息以数据库的形式由网络传输来完成各用户(教师或学生)所要的借阅方面的需求(如借阅,归还,预订等)。以打破传统的人工选课模式,极大地方便了使用人员和管理人员,节约了时间和空间,实现图书借阅自动化,自由化,使图书资源得到充分利用。建立图书管理系统,使每个用户自由地选到自己需要的图书,避免传统借书模式的繁琐、低效率、借阅程序臃肿等等的缺点,减轻相关人员的负担。
本图书管理系统运用SQLServer20##、C++Builder等软件实现了基本的管理员登录、图书管理、读者管理、借还图书、图书查询以及信息维护等功能的图书管理系统。
图书管理系统主要包括系统管理、读者管理、图书采购、图书编目、图书流通、统计、查询等一系列的功能。
1、读者管理
(1).新学期建立新班级,删除毕业班读者。
(2).为新生办理新借阅证。
(3).读者管理能完成读者调动、借书证挂失、补办、停止借阅、单独打印读者条码等日常事务。
(4).读者类别可以分类,可为每一类读者指定借阅规则。
(5).读者可以通过管理员远程预约图书。
2、采编管理
(1).有完善的采编功能,能对新采购图书可以进行有效采编。
(2).图书采编能对相关图书进行分类别号编号,借助可扩展的编目库减轻编目人员的工作。
(3).图书注销有完整的备查档案。
3、 流通管理
(1).借书完全通过输入借阅证号,识别借书证是否有效,根据设定的规则进行管理。提示读者已借书数、超期图书应缴罚款等参考信息。 根据图书的种类确定借阅期限。罚款单价根据图书种类确定。
(2).还书完全通过条码识别,自动作超期记录。
(3).图书预约可以为读者提供方便,可以进行管理及打印到书通知。
(4).图书损坏、丢失处理能显示每本书上次损坏的记录以及其它信息。
4、 统计管理
(1).综合统计统计图书馆目前的各种指标。
(2).馆藏统计可以统计、分析各时期的图书馆藏量、分类馆藏量,并以表格两种显示。
5、 查询管理
(1).读者可以通过WEB进行图书检索,可以随意安排检索条件、检索项目。
(2).借阅综合查询可以查询按全体读者、各类别读者、某个部门、班级、个人进行借阅图书、超期图书 、借还书日期、借阅天数的查询。
(3).超期图书汇总可以按部门查询已超期图书,可打印催还图书通知单。
(4).可查询图书的被借阅史、读者的借阅史。
(5).应收超期罚款、已收罚金的明细、汇总帐。
(6).已注销、损坏图书查询。
6、 其它辅助功能
(1).借阅人信息维护:对借阅人信息修改、删除。
(2).管理员信息维护:可以执行管理员密码修改、信息更新及删除。
1、系统软件结构图
图3-1 【图书管理系统登录】结构图
2、系统边界图
图3-2 【系统边界图】结构图
3、安全设计
(1).数据库的安全性
数据库表的完整性设计,如主键和外键的确定。
(2).访问权限的设计
管理员才具有登陆本系统的权限,在管理员登陆的前提下进行借书、还书、信息维护等操作。
(3).密码保护
a.登陆界面时,密码以*形式显示;
b.登录时连续三次密码错误则强制退出;
c.修给管理员密码时需要输入两次以确认。
图书管理系统ER图如下:
图4-1 图书管理系统的ER图
该系统中所有操作都由图书管理员完成。因此将管理员设为单独的一个表。
借阅人、借书证分别作为一个实体,也是必不可少的。
首先由管理员对采购的图书进行馆藏号编号,所以有实体图书。
系统红需要图书类别以确定借阅人限购数量,因此创建图书类别表。
便于图书馆内图书信息的统计与查询,因此出版社作为实体存在。
借阅人持借书证借书,产生表借阅,以及显示信息借阅历史。
借阅人所需图书已借出时,可以通过管理员对所需图书预约,因此有表预约
1.逻辑结构设计
逻辑结构设计,将概念模型转化为关系模型。
图书馆的关系模型根据图4-1图书馆管理的ER图设计。并用关系模式的形式表示。
借阅(借阅证号,馆藏号,借书时间,还书时间,到期时间,罚款金额,实交金额)
借阅人(借阅证号,姓名,借阅人类别号* ,联系方式)
借阅人类别(借阅人类别号,类别名,限借数量)
借阅历史(借书证号,馆藏号,借书时间,还书时间,罚款数额)
借阅证(借阅证号,状态编号*,现借数量,密码)
借阅证类别(类别编号,类别名)
出版社(出版社编号,社名,地址)
图书(馆藏号,图书名,在库情况,作者,类型,出版社编号,单价,购书时间,isbn*,备注)
图书类别(isbn,书目名,库存量,剩余数量)
登录人员表(登录帐号,密码)
管理员(编号,姓名,密码)
预约(借阅证号,预约时间,截止时间,isbn*)
2.物理结构设计
在这次图书管理系统的设计中,我负责借阅人信息维护和管理员信息维护两个模块,两个模块功能类似。现以管理员信息维护为例具体如下。
图5-1 管理员信息维护的流程图
连接数据库,在窗体中通过各个组件来完成界面的设计。
管理员信息管理,可以进行查询数据并进行相关处理,可以新增数据,删除数据,返回主页面或退出该管理系统。
在借阅人信息维护中,与管理员信息维护功能相似,不同之处是,只能对查询所得数据进行修改,而不能删除或新增。
鉴于两个模块功能及实现方式相似,所以现同样以管理员信息维护模块为例叙述编码过程.
管理员信息维护界面截图如下:
所用控件有:TDataSource、TADOQuery、TADOConnection、TLabel、TEdit、TButton、TDBGird。
主要程序如下:
void __fastcall Tadmisterinfor::Button5Click(TObject *Sender)
{
if(Edit5->Text=="")
{
ShowMessage("请输入管理员编号!");
return;
}
else
{
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("UPDATE 管理员 SET 编号='" + Edit5->Text + "' where 编号='"+Edit1->Text+"'");
ADOQuery1->ExecSQL();
ShowMessage("编号修改成功!");
Edit1->Text=Edit5->Text;
Edit5->Text="";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from 管理员 where 编号='"+Edit1->Text+"'");
ADOQuery1->ExecSQL();
ADOQuery1->Active=true;
}
}
void __fastcall Tadmisterinfor::Button1Click(TObject *Sender)
{
if(Edit1->Text=="")
{
ShowMessage("请输入编号!");
return;
}
else
{
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from 管理员 where 编号="+Edit1->Text);
ADOQuery1->ExecSQL();
ADOQuery1->Active=true;
ADOQuery1->Open();
if(ADOQuery1->IsEmpty())
ShowMessage("无此管理员!");
}
}
//---------输入编号并查询数据----------
void __fastcall Tadmisterinfor::Button2Click(TObject *Sender)
{
if(Edit2->Text=="")
{
ShowMessage("请输入管理员姓名!");
return;
}
else
{
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("UPDATE 管理员 SET 姓名='" + Edit2->Text + "' where 编号='"+Edit1->Text+"'");
ADOQuery1->ExecSQL();
ShowMessage("姓名修改成功!");
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from 管理员 where 编号='"+Edit1->Text+"'");
ADOQuery1->ExecSQL();
ADOQuery1->Active=true;
}
}
//--------修改信息-----------------------------------------
void __fastcall Tadmisterinfor::Button3Click(TObject *Sender)
{
if(Edit3->Text==""||Edit4->Text=="")
{
ShowMessage("请输入密码和确认密码!");
return;
}
else
{
if(Edit3->Text==Edit4->Text)
{
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("UPDATE 管理员 SET 密码='" + Edit3->Text + "' where 编号='"+Edit1->Text+"'");
ADOQuery1->ExecSQL();
ShowMessage("密码修改成功!");
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from 管理员 where 编号='"+Edit1->Text+"'");
ADOQuery1->ExecSQL();
ADOQuery1->Active=true;
}
else
{
ShowMessage("两次密码输入不一致!");
return;
}
}
}
//--------------修改并确认密码----------------------------------------
void __fastcall Tadmisterinfor::Button4Click(TObject *Sender)
{
if(Edit1->Text=="")
{
ShowMessage("请输入管理员编号!");
return;
}
else
{
if(mrYes==MessageDlg("确定删除?",mtWarning,TMsgDlgButtons()<
{
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("delete from 管理员 where 编号='"+Edit1->Text+"'");
ADOQuery1->ExecSQL();
ShowMessage("删除成功!");
Edit1->Text=="";
}
else
return;
}
}
//--------------------删除信息-----------------------------------------
void __fastcall Tadmisterinfor::Button6Click(TObject *Sender)
{
if(Edit6->Text==""||Edit7->Text==""||Edit8->Text==""||Edit9->Text=="")
{
ShowMessage("请输入全部信息!");
return;
}
else
{
if(Edit7->Text==Edit8->Text)
{
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from 管理员 where 编号='"+Edit9->Text+"'");
ADOQuery1->ExecSQL();
ADOQuery1->Open();
if(!ADOQuery1->IsEmpty())
{
ShowMessage("此编号已存在!");
return;
}
else
{
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("insert into 管理员(编号,姓名,密码) values('" + Edit9->Text +"','"+Edit6->Text+"','"+Edit7->Text+"')");
ADOQuery1->ExecSQL();
ShowMessage("新增管理员成功!");
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from 管理员 where 编号='"+Edit9->Text+"'");
ADOQuery1->ExecSQL();
ADOQuery1->Active=true;
Edit9->Text="";
Edit8->Text="";
Edit7->Text="";
Edit6->Text="";
}
}
else
{
ShowMessage("两次密码输入不一致!");
return;
}
}
}
//--------------新增管理员---------------
设置控件属性如下:
借阅人信息维护界面截屏如下:
所用控件有:TDataSource、TADOQuery、TADOConnection、TLabel、TEdit、TButton、TDBGird。
1. 对管理员信息维护的测试
1)输入 2008101 点击确定
2)在信息修改处依次输入 2008111
黄
123
123
3)新增
输入 123
华
123
123
4)删除
记录删除
2. 对借阅人信息维护测试
与上例相似,略去不举
第8章 设计过程中遇到的问题及解决的办法
解决方法:在代码后加一段重复,问题解决。
本图书馆管理系统主要实现了基础信息维护、读者管理、图书管理、图书流通管理等功能,建立了包含在图书管理系统主窗体下的六个功能子窗体,即借书、还书、图书信息维护、图书证信息维护、借阅人信息维护以及管理员信息维护,实现了一个图书管理系统的基本维护与实现。
就总体而言,这次课程设计的结果相当满意,但由于数据量比较小、实现功能都比较基础简单,我们的作品还有改进空间
对我个人所做的借阅人信息维护和管理员信息维护,我则找到了和其他组员的差距。虽然要求的功能都能一一实现,但对于控件的使用,界面的设计与规划等都较为稚嫩,有待提高。
在这次课程设计中,我们不仅组建团队,完成图书管理系统数据库的物理及逻辑结构的设计,同时也分工完成数据库的建立,用户界面设计以及相关功能的实现。通过这次课程设计,并把所学与实际结合起来,为以后对项目的接手,处理打下基础。更重要的是,在这次课程设计中,我深深体会到了团队精神的重要性,对于我们团队意识的培养有极大的促进作用。总之,在这次数据库课程设计中,我受益匪浅。
在此感谢,此次课程设计中给予指导的范进老师、李兴旺老师、曹毅老师,以及李行,曾志斌等同学的帮助。
[1] 王珊,萨师煊·数据库系统概论〔第四版〕·北京·高等教育出版社·20##·/*中文教材*/
[2] 康诺利等著·何玉洁等译·数据库设计教程(第二版)·北京·机械工业出版社·2005.1·/*译著*/
管理信息系统实习报告专业班级学生姓名指导教师时间成绩评语王桃群20xx32320xx313一课程设计题目图书管理系统二系统需求1系…
课程设计报告20xx20xx学年第二学期课学学专指业导班教生姓程程序设计语言课程设计图书管理系统名号级师课程设计名称20xx年8月…
沈航北方科技学院课程设计说明书课程名称教学部专业数控班级B042111学号B04211123学生姓名指导教师赵小磊20xx年6月链…
课程设计报告图书馆管理系统目录1题目与要求22系统总体设计要给出必要的文字说明及必要的图示321功能需求分析明确选题的功能需求32…
C语言课程设计学生姓名袁盛升学生学号所在班级任课教师姜林10211121图书馆管理系统设计目的图书信息包括登录号书名作者名分类号出…
图书管理系统一背景资料1图书馆有各种图书若干万册2每种图书都有书名图书编号作者译者出版社定价和内容简介3借书证记录有借阅者的姓名工…
河南理工大学图书管理系统一背景资料1图书馆有各种图书若干万册2每种图书都有书名图书编号作者译者出版社定价和内容简介3借书证记录有借…
西安邮电大学计算机学院数据库课程设计报告题目图书管理系统专业名称班级软件1205学生姓名学号8位04123139指导教师樊珊起止时…
目录第1章绪论2第2章需求分析2第3章总体设计3第4章数据库设计441概念结构设计442逻辑结构与物理结构设计5第5章详细设计7第…
课程设计报告实验名称:图书管理系统学院:六安职业技术学院系别:信息系姓名:学号:专业:系统维护0901任课教师:20##年6月2日…
课程设计报告基于JSP的图书管理系统专业班级计科姓名XXX学号123456指导老师XXXX20xx年1月1日第一章绪论11课题的研…