图书管理系统课程设计报告

图书管理系统课程设计报告
图书管理系统课程设计报告

目录

第1章绪论 (2)

第2章需求分析 (2)

第3章总体设计 (3)

第4章数据库设计 (4)

§4.1 概念结构设计 (4)

§4.2 逻辑结构与物理结构设计 (5)

第5章详细设计 (7)

第6章编码 (8)

第7章测试 (14)

§7.1 测试 (14)

§7.2 发现错误和解决方法 (17)

第8章设计总结 (17)

学习体会(附录1) (17)

致谢(附录2) (18)

参考文献(附录3) (18)

第1章绪论

图书馆是信息交换和资源流通的重要媒介,对图书馆的信息化管理将大大提高图书资源的利用和信息的交换速度。图书管理系统是通过将借阅信息以数据库的形式由网络传输来完成各用户(教师或学生)所要的借阅方面的需求(如借阅,归还,预订等)。以打破传统的人工选课模式,极大地方便了使用人员和管理人员,节约了时间和空间,实现图书借阅自动化,自由化,使图书资源得到充分利用。建立图书管理系统,使每个用户自由地选到自己需要的图书,避免传统借书模式的繁琐、低效率、借阅程序臃肿等等的缺点,减轻相关人员的负担。

本图书管理系统运用SQLServer2000、C++Builder等软件实现了基本的管理员登录、图书管理、读者管理、借还图书、图书查询以及信息维护等功能的图书管理系统。

第2章需求分析

图书管理系统主要包括系统管理、读者管理、图书采购、图书编目、图书流通、统计、查询等一系列的功能。

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).管理员信息维护:可以执行管理员密码修改、信息更新及删除。

第3章总体设计

1、系统软件结构图

图3-1 【图书管理系统登录】结构图

2、系统边界图

图3-2 【系统边界图】结构图

3、安全设计

(1).数据库的安全性

数据库表的完整性设计,如主键和外键的确定。

(2).访问权限的设计

管理员才具有登陆本系统的权限,在管理员登陆的前提下进行借书、还书、信息维护等操作。

(3).密码保护

a.登陆界面时,密码以*形式显示;

b.登录时连续三次密码错误则强制退出;

c.修给管理员密码时需要输入两次以确认。

第4章数据库设计

§4.1 概念结构设计

图书管理系统ER图如下:

图4-1 图书管理系统的ER图

该系统中所有操作都由图书管理员完成。因此将管理员设为单独的一个表。借阅人、借书证分别作为一个实体,也是必不可少的。

首先由管理员对采购的图书进行馆藏号编号,所以有实体图书。

系统红需要图书类别以确定借阅人限购数量,因此创建图书类别表。

便于图书馆内图书信息的统计与查询,因此出版社作为实体存在。

借阅人持借书证借书,产生表借阅,以及显示信息借阅历史。

借阅人所需图书已借出时,可以通过管理员对所需图书预约,因此有表预约§4.2 逻辑结构与物理结构设计

1.逻辑结构设计

逻辑结构设计,将概念模型转化为关系模型。

图书馆的关系模型根据图4-1图书馆管理的ER图设计。并用关系模式的形

式表示。

借阅(借阅证号,馆藏号,借书时间,还书时间,到期时间,罚款金额,实交金额)

借阅人(借阅证号,姓名,借阅人类别号* ,联系方式)

借阅人类别(借阅人类别号,类别名,限借数量)

借阅历史(借书证号,馆藏号,借书时间,还书时间,罚款数额)

借阅证(借阅证号,状态编号*,现借数量,密码)

借阅证类别(类别编号,类别名)

出版社(出版社编号,社名,地址)

图书(馆藏号,图书名,在库情况,作者,类型,出版社编号,单价,购书时间,isbn*,备注)

图书类别(isbn,书目名,库存量,剩余数量)

登录人员表(登录帐号,密码)

管理员(编号,姓名,密码)

预约(借阅证号,预约时间,截止时间,isbn*)

第5章详细设计

在这次图书管理系统的设计中,我负责借阅人信息维护和管理员信息维护两个模块,两个模块功能类似。现以管理员信息维护为例具体如下。

图5-1 管理员信息维护的流程图

连接数据库,在窗体中通过各个组件来完成界面的设计。

管理员信息管理,可以进行查询数据并进行相关处理,可以新增数据,删除数据,返回主页面或退出该管理系统。

在借阅人信息维护中,与管理员信息维护功能相似,不同之处是,只能对查询所得数据进行修改,而不能删除或新增。

第6章编码

鉴于两个模块功能及实现方式相似,所以现同样以管理员信息维护模块为例叙述编码过程.

管理员信息维护界面截图如下:

所用控件有: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("新增管理员成功!");

相关主题
相关文档
最新文档