1、成绩课 程 设 计 课程名称_ 数据库系统课程设计_题目名称 图书馆借阅管理系统 学生学院 计算机学院 专业班级 12级网络工程1班 学 号_311323_学生姓名 丁 晗 指导老师_ 宋 玮_ 年 1 月17日 评价标准分数百分比(%)成绩论文论文结构包含:相关技术介绍、需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、系统测试方案和测试汇报、系统关键功效和使用说明、系统安装说明。要求论文完整、内容具体,格式规范。40程序系统运行正确;功效完善:有增、删、改、查功效,有基础报表、查询、统计和输入、输出功效;工作量充足;系统实现技术难度。30数据库设计E-R图设计正确;数据库逻
2、辑结构设计规范化;数据库物理设计合理。30总评成绩 优 良 中 及格 不及格总分目录一 相关技术介绍1二 需求分析1三 概念结构设计2四 逻辑结构设计3五 数据库物理设计4六 数据库实施7七 课程设计心得17八 参考文件17一相关技术介绍1.1 C+Builder 6 介绍 C+ Builder是由Borland企业推出一款可视化集成开发工具。C+ Builder含有快速可视化开发环境:只要简单地把控件(Component)拖到窗体(Form)上,定义一下它属性,设置一下它外观,就能够快速地建立应用程序界面;C+ Builder内置了100多个完全封装了Windows公用特征且含有完全可扩展性
3、(包含全方面支持ActiveX控件)可重用控件;C+ Builder含有一个专业C+开发环境所能提供全部功效:快速、高效、灵活编译器优化,逐步连接,CPU透视,命令行工具等。它实现了可视化编程环境和功效强大编程语言(C+)完美结合。1.2 Microsoft SQL Server 介绍 Microsoft SQL Server 是一个全方面数据库平台,使用集成商业智能 (BI)工具提供了企业级数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠存放功效,使您能够构建和管理用于业务高可用和高性能数据应用程序。Microsoft SQL Serve
4、r 数据引擎是该企业数据管了处理方案关键。另外 Microsoft SQL Server 结合了分析、报表、集成和通知功效。这使您企业能够构建和布署经济有效 BI 处理方案,帮助您团体经过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务各个领域。二 需求分析 2.1系统功效模块图图书借阅管理系统登录和账号管理用户注册和注销借阅管理工作人员注册和注销读者注册和注销旧书淘汰新书入库还书借书账号管理系统登录 2.2系统数据步骤图图书管理员入库/出库注册/注销还书借书用户信息库存图书和借阅信息库存读者2.3系统功效设计(1)密码和权限管理(2)书目查询(3)借书和还书
5、(4)读者注册和注销(5)新书入库和淘汰(6)账号管理(7)窗口管理三概念结构设计3.1 E-R图图书图书工作人员 n用户 1 注册和注销 借书读者 3.2属性描述l 读者:读者编号,读者姓名,用户名,密码,性别,工作地点,身份,已借书数量,备注;l 图书:书号,书名,作者,出版社,出版日期,索引书号,价格,状态(1为借出&0为在馆);l 图书馆工作人员:工作人员编号,姓名,登录密码;l 借书信息:借书单编号,读者编号,读者姓名,书号,书名,作者,借出日期,应还日期,工作人员编号; 四 逻辑结构设计 4.1表 (1)读者信息表名称数据类型是否为空说明ReaderID Char(7)Not nu
6、ll读者编号(主键)NameVarchar(8)Not null读者姓名UserNameVarchar(12)Not null用户名PasswordVarchar(12)密码GenderChar(2)性别UnitVarchar(50)工作单位IdentVarchar(10)身份NumberChar(2)Not null已借数量RemarkVarchar(500)备注 (2)图书信息表名称数据类型是否为空说明BookIDChar(5)Not null书号(主键)BookNameVarchar(50)Not null书名EditorVarchar(8)作者PublisherVarchar(50)出
7、版社PubDateDateTime出版日期BookIndexVarchar(20)索引书号Pricemoney价格StateChar(2)Not null状态(1.借出,0.在馆)(3)工作人员表名称数据类型是否为空说明LibrarianIDChar(5)Not null工作人员编号(主键)NameVarchar(50)Not null工作人员姓名(登录用户名)PasswordVarchar(12)Not null密码(4) 借书信息表名称数据类型是否为空说明TaskIDInt Identity(1000,1)Not null借书信息编号(主键)ReaderIDChar(7)Not null读
8、者编号ReaderNameVarchar(8)读者姓名BookIDChar(5)Not null书号BookNameVarchar(50)书名EditorVarchar(8)作者BorrowDateDateTimeNot null借出日期ReturnDateDateTimeNot null应还日期LibrarianIDChar(5)Not null工作人员编号五 数据库物理设计5.1创建数据库 开启SQL Server 企业管理器,创建一个名为BookBorrowingManager数据库5.2关系图5.3使用ODBC连接数据库(1)点击“开始”-“搜索”,输入ODBC,打开ODBC数据源管理
9、器,单击“添加”按钮,选择SQL Server。(2) 单击“完成”按钮,出现下图所表示界面。分别设置数据库别名和运行SQL Server数据库计算机名。(3)单击“下一步”按钮,在此界面设置数据库登录方法,一个是使用网络ID放式,一个是使用Windows系统登录方法,此课设使用网络ID方法。 (4)单击“下一步”按钮,在新界面选择对应数据库。在此选择创建好BookBorrowingManager数据库。 (5)单击“下一步”按钮,在出现界面设置语言种类、日志文件等。单击“完成”按钮,出现数据库连接测试界面。单击“测试”按钮,检验所创建别名是否能成功连接数据库。成功则创建完成,失败则返回检验。
10、六数据库实施6.1创建数据库6.2实施SQL语句创建表 create table Reader ( ReaderID char(7) not null primary key, Name varchar(8) not null, UserName varchar(8) not null, Password varchar(12), Gender char(2), Unit varchar(50), Ident varchar(10), Number char(2) not null, Remark varchar(500);create table book( BookID char(5) n
11、ot null primary key, BookName varchar(50) not null, Editor varchar(8), Publisher varchar(50), PubDate datetime, BookIndex varchar(20), Price money, state char not null);create table Librarian( LibrarianID char(5) not null primary key, Name varchar(50) not null, Password varchar(12) not null);create
12、table borrowing( TaskID int identity(1000,1)not null primary key, ReaderID char(7) not null, ReaderName varchar(8), BookID char(5)not null, BookName varchar (50), Editor varchar(8), BorrowDate datetime not null, ReturnDate datetime not null, LibrarianID char(5) not null);6.3写入数据直接在表中加入数据读者信息表图书信息表借书
13、信息表工作人员表 6.4数据库备份方案 (1)开启SQL Server 企业管理器,登录到指定数据库服务器,打开数据库文件夹,右击要进行备份数据库图标,在弹出快捷菜单中选择“全部任务”、“备份数据库”命令,打开“SQL Sever备份”对话框。 (2) 在“备份”选项中,选择备份类型(完全或差异);在“目标”选项组中,单击“添加”,打开“选择备份目标”对话框。 (3)在“重写”选项中,选择“追加到媒体”单选按钮,可将备份追加到设备上任何现有设备中;选择“重写现有媒体”单选按钮,可重写设备中现有备份。 (4)假如需要定时进行备份操作,能够选择“调度”复选框,然后选择路径,在打开“编辑调度”对话框
14、中对设置备份时间。 (5)设置完成后,则在“SQL Sever 备份”,对话框中单击“确定”,备份成功。 6.5数据库还原方案 (1)开启SQL Sever企业管理器,登录到指定数据库服务器,打开数据库文件夹,右击要进行备份数据库图标在弹出快捷菜单中选择“全部任务”、“备份数据库”命令,打开“还原数据库”对话框。 (2)在“还原为数据库”下拉列表框中选择要恢复数据库,在“还原”选项组中选择对应数据库备份类型。 (3)先中“选项”选项卡,能够进行其它选项设置。 (4)设置完成,单击“确定”按钮即可开始还原数据。 6.6输出已连接好数据库中数据方法 在c+builder 6.0中建立界面,拉入Qu
15、ery组件。把databasename属性值设为borrowing,以让她连接已连接好数据库;把SQL属性值设置为select * from xxx,查询语句查询xxx表(xxx为表名);最终将Active属性值设置为true。以使此组件运行。 假如需要让所查询表显示出来,需要拉入DataSourse和DBGrid组件。 例: Query name属性:ReaderTable Query1 Databasename属性:borrowing SQL属性:select * from Reader Active属性:true DataSource DataSet属性:ReaderTable Quer
16、y1 DBGrid DataSourse属性:BorrowingTableDataSource3 此时,就能够使DBGrid组件显示出Reader表内容。 6.7关键代码(1)登录代码void _fastcall TMainForm:NLoginClick(TObject *Sender) IdentityStr=; UserName=; PassStr=; Login(); if(IdentityStr=) ShowMessage(请选择身份); else if(IdentityStr=读者) NBrowsingBook-Enabled=true; NAlterUserPass-Enable
17、d=true; else if(IdentityStr=工作人员) NBrowsingBook-Enabled=true; BorrowingManage-Enabled=true; NAlterUserPass-Enabled=true; else if(IdentityStr=系统管理员) NAlterUserPass-Enabled=true; NBrowsingBook-Enabled=true; BorrowingManage-Enabled=true; SystemManage-Enabled=true; bool TMainForm:Login()int flag=-1;TLog
18、inForm *LoginForm;LoginForm=new TLoginForm(this);flag=LoginForm-ShowModal();while (flag!=mrYes) int msg=MessageDlg(您还没有登录,不能进入系统,放弃登录吗?,mtConfirmation,TMsgDlgButtons()mbYesShowModal();String strSQL;IdentityStr=LoginForm-IdentityComboBox-Text;if(IdentityStr=读者)strSQL=select * from Reader where UserNa
19、me=+LoginForm-UserEdit-Text+;else if(IdentityStr=工作人员)strSQL=select * from Librarian where LibrarianID=+LoginForm-UserEdit-Text+;else if(LoginForm-UserEdit-Text!=boss)| (LoginForm-PassEdit-Text!=boss) ShowMessage(非法管理员); IdentityStr=; return false; else UserName=LoginForm-UserEdit-Text; PassStr=Logi
20、nForm-PassEdit-Text; IdentityStr=LoginForm-IdentityComboBox-Text; return true; LoginQuery-SQL-Text=strSQL;LoginQuery-ExecSQL();LoginQuery-Active=true;if(LoginQuery-RecordCount=0) ShowMessage(该用户不存在,请先注册!); IdentityStr=; return false;if(LoginQuery-Fields-FieldByName(Password)-AsString!=LoginForm-Pass
21、Edit-Text) ShowMessage(密码错误); return false;UserName=LoginForm-UserEdit-Text;PassStr=LoginForm-PassEdit-Text;IdentityStr=LoginForm-IdentityComboBox-Text;LoginForm-Free();return true;(2)借书代码void _fastcall TBorrowingBook:BitBtn1Click(TObject *Sender) int BookNumber; ReaderTableQuery1-SQL-Text=select *
22、from Reader where ReaderID=+ReaderIDEdit-Text+; ReaderTableQuery1-ExecSQL(); ReaderTableQuery1-Active=true; if(ReaderTableQuery1-RecordCount=1) ReaderNameEdit-Text=ReaderTableQuery1-Fields-FieldByName(Name)-AsString; BookNumber=ReaderTableQuery1-Fields-FieldByName(Number)-AsInteger; if(BookNumber=Ma
23、xBookNumber) ShowMessage(读者已借满); return; else ShowMessage(读者没有注册,借书失败); return; BookTableQuery2-SQL-Text=select * from book where BookID=+BookIDEdit-Text+; BookTableQuery2-ExecSQL(); BookTableQuery2-Active=true; if(BookTableQuery2-RecordCount=1) BookNameEdit-Text=BookTableQuery2-Fields-FieldByName(B
24、ookName)-AsString; EditorEdit-Text=BookTableQuery2-Fields-FieldByName(Editor)-AsString; if(BookTableQuery2-Fields-FieldByName(State)-AsString=1) ShowMessage(该书已被借出,操作失败!); return; else ShowMessage(没有这本书,操作失败!); return; BorrowDateEdit-Text=DateToStr(Date(); ReturnDateEdit-Text=DateToStr(Date()+30); /
25、LibrarianIDEdit-Text=LibrarianID; String strSQL=; strSQL=Insert into borrowing(ReaderID,ReaderName,BookID,BookName,Editor,BorrowDate,ReturnDate,LibrarianID) values(; strSQL=strSQL+ReaderIDEdit-Text; strSQL=strSQL+,+ReaderNameEdit-Text; strSQL=strSQL+,+BookIDEdit-Text; strSQL=strSQL+,+BookNameEdit-Te
26、xt; strSQL=strSQL+,+EditorEdit-Text; strSQL=strSQL+,+BorrowDateEdit-Text; strSQL=strSQL+,+ReturnDateEdit-Text; strSQL=strSQL+,+LibrarianIDEdit-Text+); BorrowingTableQuery3-SQL-Text=strSQL; BorrowingTableQuery3-ExecSQL(); strSQL=Update book set state=1 where BookID=+BookIDEdit-Text+; /书状态置为1,借出状态 Bor
27、rowingTableQuery3-SQL-Text=strSQL; BorrowingTableQuery3-ExecSQL(); strSQL=Update Reader set Number=Number+1 where ReaderID=+ReaderIDEdit-Text+; /读者能借书减一 BorrowingTableQuery3-SQL-Text=strSQL; BorrowingTableQuery3-ExecSQL(); ShowMessage(借书成功); BorrowingTableQuery3-SQL-Text=select * from borrowing; Bor
28、rowingTableQuery3-Active=true; BorrowingTableQuery3-Last(); 6.8界面(1个主窗体,10个子窗体,子窗体不一一列出) 主界面系统登录界面书目查询界面借书界面还书界面新书入库界面6.9操作说明(1) 打开系统,点击“系统”菜单,选择“登录系统”,输入用户名和密码,并选择身份。身份有读者、工作人员和系统管理员。(2) 读者只能进行书目查询和更改自己账户信息操作;工作人员以自己编号为用户名,登录后能够进行书目查询、借书、还书、读者注册、读者注销、新书入库、旧书淘汰和更改自己账户等操作(工作人员只能改密码,不能改用户名);系统管理员只有一个,
29、用户名和密码全部是boss,用此身份登录后能进行读者和工作人员全部操作,而且能够对工作人员信息进行添加和删除。七课程设计心得 此次课程设计我选择了图书借阅管理系统。因为编程知识不足,刚开始毫无头绪,以后我数次去图书馆查阅书籍,选择了c+builder作为界面开发软件,并用Microsoft SQL Server 开发了数据库。在课程设计时,我花了大量时间,完成了一个包含10个子窗体比较完善图书借阅管理系统。即使其中还有很多小瑕疵,不过总体上对自己课设满意。八 参考文件1 魏俊鹏,于秋生. C+ Builder 6实用编程100例 中国铁道出版社 2 吴逸贤. 出色C+ Builder 6程序设计 科学出版社