图书管理系统设计

来源:互联网 发布:python 获取桌面路径 编辑:程序博客网 时间:2024/05/16 06:08

 

1.设计要求

设计并实现一个精简的图书管理系统,要求具有图书入库、查询、借书、还书、借书证管理等功能。

通过该图书馆系统的设计与实现,提高学生的系统编程能力,加深对数据库系统原理及应用的理解。

2.数据对象

2.1书籍

book

 

数据类型

约束

编号

Book_ID

int

primary key

类别

Type

nvarchar(10)

FOREIGN KEY(Type) REFERENCES type(Book_type)

书名

Title

nvarchar

 

出版社

Publisher

nvarchar

 

年份

Publish_year

int

check(publish_year>1800)

作者

Author

NVARCHAR

 

价格

Price

decimal(6,2)

 

总藏书量

Number

int

check(Number>=0)

库存

Stocks

int

check(Stocks>=0)

2.2书籍类型

type

 

数据类型

约束

类型

Book_type

nvarchar(10)

primary key

编号

Type_number

int

NOT NULL UNIQUE,check (Type_number  >0)

2.3借书证

library_card

 

数据类型

约束

借书证号

card_ID

int

primary key

姓名

Username

varchar(10)

 

单位

Company

nvarchar

 

类别 (教师 学生等)

Type

varchar(10)

check (Type in ( 'student', 'teacher' ) )

2.4管理员

manager

 

数据类型

约束

管理员ID

manager_ID

int

primary key

密码

Password

varchar(10)

not null

姓名

Name

varchar(10)

 

联系方式

Connection

int

 

2.5记录

record

 

数据类型

约束

书号

Book_ID

int

REFERENCES book(Book_ID)

借书证号

card_ID

int

REFERENCES Library_card(card_ID)

借期

borrow_data

data

 

还期

return_data

data

 

经手人

manager_ID

int

REFERENCES manager(manager_ID)

3 触发器设计

3.1 约束(未在逻辑结构设计中涉及的部分)

-出版年份不大于当前年份

-检查输入时,库存与总藏书量是否相等

-借出时检查是否有余量

-借出时检查借书证,如果类型为老师则最多借出5本书,学生最多借出3本书(目前仅考虑这两种类型)。

3.2 性质

-插入record(借出)更新库存

-删除record(还书)更新库存

-插入book检查是否已有信息完全相同的column,有则合并

 

4 基于IDE的图书管理系统设计

这一部分是对基本功能模块的思考

 

4.1.管理员登陆

-获取用户输入账号及密码

-在manager表中查找相应信息,判断是否正确

-记录登录状态

 

4.2.图书入库

 

————单本入库————

-输入书名、出版社等信息,输入数量

-输入的数量是小数、或者负数小数,则输出错误提示框。

-如果类型不存在,输出错误提示框

-如果出版年份大于现在年份,则数据库底层给出错误。

-如果信息完全相同借助于DB底层的触发器,自动合并

 

————单本删除————

在这里提供删除操作,对于书籍遗失等现象进行处理

-根据ID和数量,进行数据的更新

-如果删除数量大于库存,提供错误信息

-等于库存,根据总量选择update或者delete

-小于库存,进行update

 

————批量入库————

-从文档中读取数据,txt中信息类似于单本插入

-创建临时表,可在临时表上修改数据

 

4.3.图书查询

-提供信息匹配

-在book中选择符合条件的信息

4.4.借书

-输入book_ID和card_ID

-根据card_ID显示该借书证已借书籍

-判断库存,如果库存为0,返回record中该本书最早的还书时间

-考虑到生活中人工计算书号的可能性不大,在这里根据类别生成编号

由于图书馆的书需要用到的删除操作较少,我们考虑的编号方式是第一位是类别的ID,后三位是这本书的在该类书中的编号,比如小说对应1,则书籍编号为1000~1999。新插入的书的编号默认为现有该类型书最大的编号加一。如果某一类的书编号超出1000,入库无法继续进行,数据库会发出重新编码的要求。考虑到有可能的删除(比如书籍遗失),并且对于图书馆,删除的操作不会太多,这种编码方式在实现较快查找的同时,可以保证较高的利用率。

-读取管理员信息,现有时间,以40天为借阅期限,自动生成日期

-用DB底层的触发器,更改库存

 4.5.还书

-选择记录

-删除选中记录

-用DB底层的触发器,更改库存

 

4.6.借书证管理

————查找借书证————

-根据输入ID查找记录

 

————删除借书证————

-删除选中记录

-如果没有已借书籍,直接删除

-如果有已借书籍,继续删除则默认书籍全都返回,或者停止以进行进一步操作。

 

5.交互设计

这一部分主要是建立在Qt的基础上,对已有的IDE部分的设计进行补充。

 

5.1.管理员登陆

-欢迎以及显示当前登录状态

-密码显示*

-显示除查询界面以外的界面

 

5.2.图书入库

————单本入库————

-在输入书名的时候,会对显示的书籍进行查找

-如果在图书馆系统中已经存在,可以直接点击该信息,会自动将书名、出版社等信息自动填入输入框

-点击左侧类别,会自动填入类别

 

————单本删除————

-单击记录,会自动填入数量(总量)和ID

 

————批量入库————

-设置清空、删除此条的命令,方便用户进行处理

-双击信息可以对其进行编辑

-插入后错误信息会留下以方便用户对可能的错误信息进行处理

 

5.3.图书查询

-借助编辑文本以及按钮状态转变的信号,考虑不使用查询按钮,在用户操作时实时进行查询

-多种排序方式方便浏览(这一块由于中文特殊的编码方式,对于与此相关的排序效果不好)

-可以选择是否显示无余量的书目

 

5.4.借书

-根据card_ID显示用户信息,帮助管理员查看用户信息

-根据book_ID显示书籍信息,帮助确认书籍

 

5.5.还书

-单击借书记录可以读取Book_ID和card_ID

 

5.6.借书证管理

-新建借书证的时候,新建ID的方式与图书相似

-借书证类别选取

-返回对话框显示ID

 

5.7.显示

-borrow_info和manager在前面的要求里没有直接的完整的显示,考虑到这一点新增<借书记录>和<管理员信息>两栏,以对数据库信息进行更好的观察。考虑到我对这个书籍管理系统的定位是方便用户和管理员的操作,认为管理员的信息应该由上层负责人直接导入,管理员不应该对自己的信息进行随意的修改,所以这一块只提供浏览不提供修改。

 

5.8.撤销操作

-考虑到管理员错误操作的可能性,希望能提供撤销操作的事件。


 

1 1
原创粉丝点击