您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页学校图书管理系统课程设计报告正文

学校图书管理系统课程设计报告正文

来源:意榕旅游网


软件工程课程作业

用软件工程分析一个图书管理系统

计算机科学与技术学院 班

王灵() 范玖豪() 向双() 余其林()

目录

第1章 绪论................................................................................................................ 3 第2章 需求分析........................................................................................................ 3 第3章 总体设计........................................................................................................ 6 第4章 数据库设计.................................................................................................... 8 第5章 详细设计...................................................................................................... 11 第6章 编码 ............................................................................................................ 12 第7章 测试.............................................................................................................. 18 第8章 设计总结 .................................................................................................... 20

第1章 绪论

图书馆是信息交换和资源流通的重要媒介,对图书馆的信息化管理将大大提高图书资源的利用和信息的交换速度。图书管理系统是通过将借阅信息以数据库

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

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

第2章 需求分析

2.1基本需求规格说明

2.1.1 系统概貌

本系统是一个基于图书信息管理的系统,通过对数据库的调用实现对各用例功能的实现。

2.1.2 功能要求

在图书管理系统中,管理员要为每个读者建立借阅账户,并給读者发放不同类的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。

借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。如果有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。然后提交还书请求,系统接受后删除借阅纪录,并登记并修改可借阅图书的数量。

图书管理员定期或不定期对图书信息进行入库、修改、删除等图书信息管理以及注销(不外借),包括图书类别和出版社管理。

为系统维护人员提供权限管理、数据备份等通用功能。 2.1.3 性能要求

安全性:提供身份验证,用户信息保密,用户数据安全策略 友好性:提供有好的图形界面

稳定性:系统提供7*24的无间断服务,并保证数据安全备份。 系统安全性:增强系统安全级别,管理各个管理员权限,防止非法

人员盗用管理员权限进行非法操作。

2.2 用例分析

2.3数据流图分析

2.3.1 顶层数据流图

读者信息图书信息图书管理员图书借还信息统计数据图书查询结果统计结果系统数据维护图书管理系统系统管理员 2.3.2 0层数据流图

图书管理员读者信息读者信息管理读者借阅信息读者类别统计数据信息统计统计结果图书管理员系统维护有效读者信息已借数系统数据维护图书借阅信息统计项信息图书类别图书管理员系统管理员借还书信息图书借还管理图书状态图书信息管理图书信息罚金标准图书信息图书管理员图书查询结果 2.3.3 1层数据流图

2.3.3.1 读者信息管理

读者类别表读者类别录入新读者有效读者信息待修改读者修改读者待删除读者删除的读者信息删除读者修改的读者信息信息统计读者借阅信息读者信息表已借数有效读者信息图书借阅管理新读者信息接收图书管分析理员读者信息数据 2.3.3.2 图书信息管理

图书类别表新图书信息接收图书管分析理员图书信息数据添加图书有效图书信息图书状态图书信息修改图书修改的图书信息删除的图书信息图书状态删除图书图书信息统计项信息图书信息表图书借阅管理待修改信息待删除信息图书借阅管理图书管理员查询图书图书查询结果 2.3.3.3 图书借还管理

图书信息表读者信息表图书信息图书状态读者信息共借数读者已借书处理还书信息表借书管理借阅状态图书状态处理还书信息在“库”状态已还数已借数预借信息操作员姓名罚金类别表还书管理罚款金额操作员姓名图书管理员图书借还信息接收分析数据罚金标准用户信息表续借管理借书日期借书信息预还信息借书信息表违规状态计算罚金图书借阅信息信息统计 2.3.3.4 统计信息

图书信息表借书信息表统计项信息图书总量统计总量统计条件图书管统计条件信息理员接收数据图书借阅统计条件图书借阅信息图书总量信息图书管理员信息输出图书借阅排行图书借阅排行信息统计结果信息吐着借阅统计条件读者借阅排行信息读者借阅排行读者信息表读者借阅信息 2.3.3.5 系统设置

用户信息设置用户信息用户信息表用户信息图数据管理员系统维护数据接收信图书类别信息息读者类别信息图书类别设置图书类别信息图书类别表图书类别图书信息管理读者类别设置读者类别信息读者类别表读者类别读者信息管理罚金标准信息罚金标准设置罚金类别表图书借还管理罚金标准信息罚金类别

第3章 总体设计

1、系统软件结构图

图书管理系统登录 借书界面 还书界面 图书信息维护 图书证信息维护管理员信息维护 借阅人信息维护 退出系统

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

2、系统边界图

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

3、安全设计

(1).数据库的安全性

数据库表的完整性设计,如主键和外键的确定。 (2).访问权限的设计

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

(3).密码保护

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

b.登录时连续三次密码错误则强制退出; c.修给管理员密码时需要输入两次以确认。

第4章 数据库设计

§4.1 概念结构设计

图书管理系统ER图如下:

图书+馆藏号+图书名+在库情况+作者+类型+出版社编号+单价+购书时间+isbn+备注图书类别分类*1+分类名+isbn+库存量+剩余数量管理员+编号+姓名+密码属于1..*1出版社+社名+编号+地址1..*1..*1借出借阅生成11借阅历史+借阅证号+馆藏号+还书时间+借书时间+罚金数额借书证持有11+借阅证号+密码+状态编号+现借数量+借阅证号+馆藏号+借书时间发出请求+还书时间+到期时间10..*+罚款金额+实交金额选择0..*借阅人+借阅证号+姓名+联系方式+借阅人类别号预约1申请0..*+借阅证号+预约时间+截止时间+isbn

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

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

首先由管理员对采购的图书进行馆藏号编号,所以有实体图书。 系统红需要图书类别以确定借阅人限购数量,因此创建图书类别表。 便于图书馆内图书信息的统计与查询,因此出版社作为实体存在。 借阅人持借书证借书,产生表借阅,以及显示信息借阅历史。 借阅人所需图书已借出时,可以通过管理员对所需图书预约,因此有表预约

§4.2 逻辑结构与物理结构设计

1.逻辑结构设计

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

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

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

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

借阅历史(借书证号,馆藏号,借书时间,还书时间,罚款数额) 借阅证(借阅证号,状态编号*,现借数量,密码) 借阅证类别(类别编号,类别名) 出版社(出版社编号,社名,地址)

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

图书类别(isbn,书目名,库存量,剩余数量) 登录人员表(登录帐号,密码) 管理员(编号,姓名,密码)

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

2.物理结构设计 实体 属性 说明 备注 借阅人 借阅证号(primary key) 借阅主体 去图书馆借书的人 姓名 借阅人类别号(foreign key) 联系方式 借阅证 借阅证号(primary key) 类别编号 状态编号 借阅数量 密码 馆藏号(primary key) 图书名 在库情况 作者 类型 出版社编号 单价 购书时间 Isbn(foreign key) 编号(primary key) 姓名 密码 借书时需要的证件, 借阅的凭证 借书时只认证件不认人。 图书 被借阅的主图书馆里的物品 体 管理员 管理图书馆图书馆里的管理人的人 员,负责图书的管理工作。 预约 借阅证号(primary key) 时间(primary key) isbn (foreign key) 提前预订要 借的图书 图书类别 出版社 isbn (primary key) 书目名 库存量 剩余数量 出版社编号(primary key) 社名 地址 图书的具体 属于哪类,已经是具体的一类书 出版该图书 的机构 借阅 借阅证号(primary key) 馆藏号(primary key) 借书时间(primary key) 还书时间 到期时间 罚款 借阅历史 借阅证号(primary key) 馆藏号(primary key) 借书时间(primary key) 还书时间 罚款数额 借阅人类别 借阅人类别号(primary key) 类别名 限借数量 借阅证状态 状态编号(primary key) 状态名 借书的有关 信息 之前的借书 记录 借阅人主体 的分类,决定借书权限。 是否可用 图书在库情在库编号(primary key) 况 在库名 是否在库 第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 + \"' ='\"+Edit1->Text+\"'\"); ADOQuery1->ExecSQL();

ShowMessage(\"姓名修改成功!\"); ADOQuery1->Active=false; ADOQuery1->SQL->Clear();

ADOQuery1->SQL->Add(\"select * from 管理员 where 编号='\"+Edit1->Text+\"'\"); ADOQuery1->ExecSQL(); ADOQuery1->Active=true;

} }

//--------修改信息-----------------------------------------

where 编号

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(\"确定删除?\

{

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; } } }

//--------------新增管理员---------------

设置控件属性如下: 组件名 属性名 admisterinfor Edit1 Edit2 … Edit9 Label1 Label2 Lable3 Lable4 Lable5 Lable6 Lable7 Lable8 Caption Text Text … Text Caption Autosize Caption Autosize Caption Autosize Caption Autosize Caption Autosize Caption Autosize Caption Autosize Caption 属性新内容 管理员信息维护 … 请输入管理员编号 False 姓名 False 密码 False 密码确认 False 编号 False 姓名 False 密码 False 密码确认 Lable9 Button1 Button2 Button3 Button4 Button5 Button6 Dbgrid1

Autosize Caption Autosize Caption Caption Caption Caption Caption Caption Datasource False 编号 False 查询 确认修改 确认修改 删除该账号 确认修改 新增管理员 Datasource1 借阅人信息维护界面截屏如下:

所用控件有:TDataSource、TADOQuery、TADOConnection、TLabel、TEdit、TButton、TDBGird。

第7章 测试

§7.1 测试

1. 对管理员信息维护的测试

1)输入 点击确定

2)在信息修改处依次输入 黄 123 123

3)新增 输入 123 华 123 123

4)删除 记录删除

2. 对借阅人信息维护测试 与上例相似,略去不举

§7.2 发现错误和解决方法

发现错误:修改信息后,edit中仍显示刚输入信息。 解决方法:在代码后加一段重复,问题解决。

第8章 设计总结

本图书馆管理系统主要实现了基础信息维护、读者管理、图书管理、图书流通管理等功能,建立了包含在图书管理系统主窗体下的六个功能子窗体,即借书、还书、图书信息维护、图书证信息维护、借阅人信息维护以及管理员信息维护,实现了一个图书管理系统的基本维护与实现。

就总体而言,这次课程设计的结果相当满意,但由于数据量比较小、实现功能都比较基础简单,我们的作品还有改进空间

在这次课程设计中,我们不仅组建团队,完成图书管理系统数据库的物理及逻辑结构的设计,同时也分工完成数据库的建立,用户界面设计以及相关功能的实现。通过这次课程设计,并把所学与实际结合起来,为以后对项目的接手,处理打下基础。更重要的是,在这次课程设计中,我深深体会到了团队精神的重要性,对于我们团队意识的培养有极大的促进作用。总之,在这次数据库课程设计中,我受益匪浅。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务