数据库课程设计说明书题目:系别:专业:学生姓名:学号:指导教师:年月日摘要利用计算机对大量的图书进行管理,能够大大提高效率,减轻人们的工作量。
本课程设计利用sql server 2008,C# 实现了图书管理系统的书籍管理、用户管理、借书、还书、查询图书、修改密码等功能,将理论与实践很好的结合起来,增强了自己的动手能力,加深了对课堂上所学知识的理解。
关键词:sql server; 图书管理; C#目录引言 (1)1 课程设计概述 (1)1.1 目的 (1)1.2 任务 (1)1.3 开发环境 (2)2 项目的需求分析 (2)3 数据库概念模型 (3)4 数据库物理模型 (4)5 程序流程图 (5)5.1 管理员操作流程图 (5)5.2 读者操作流程图 (6)6 界面设计 (7)6.1 登录 (7)6.2 管理员界面 (8)6.3 增加图书 (9)6.4 更新图书 (10)6.5 还书处理 (11)6.6 用户管理 (12)6.7 用户界面 (13)6.8 修改密码 (14)7 总结 (16)参考文献 (17)附录 (18)引言随着社会的发展,对知识的需求也不断地增长。
在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一定的位置,如何科学地管理图书馆不但关系到读者求知的方便程度,也关系到图书馆的发展,因此,开发一套完善的图书馆管理系统就成不可少了。
图书馆在正常运行中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。
因此需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,以此提该高管理效率。
图书管理系统使用便捷,能及时准确的记录用户信息,为用户提供丰富的图书信息。
图书管理系统能够优化图书资源、方便学生借阅。
节省人力资源。
从图书的入库登记到查询浏览,从借书证发放到图书的借阅,形成了一个整体自动化管理模式,从软件工程的角度进行了科学而严谨的阐述。
通过一个图书馆管理信息系统,使图书馆的信息管理工作系统化、规范化、自动化,从而达到提高企业人事管理效率的目的。
1 课程设计概述1.1 目的复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,综合应用本专业所学习的多门课程,了解软件工具与环境对于项目开发的重要性,并且重点深入掌握好一、两种较新或较流行的软件工具或计算机应用技术1.2 任务1.所有人员需要登陆才能操作系统,可以修改密码。
2.图书管理员可以添加图书(包括书号、书名、出版社、作者、图书简介、价格)、删除图书。
图书管理员可以添加借阅者(包括借书证号、姓名、类别(教师或学生)、学院、性别)、删除借阅者。
3.借阅者可以根据书名或者作者模糊查询图书(模糊查询是指在查询语句中使用like关键字),可以查看自己所借图书信息。
4.借阅者可以借阅图书,此时需要记录借书日期和应还日期信息(设置借阅日期为30天)。
借阅者包括教师和学生,教师最多可以借阅10本图书,学生最多可以借阅5本图书。
借阅者如果有超期图书则不能再借。
5.借阅者还书时,检查是否超期,如果超期,按照0.1元/天计算罚款金额,缴纳罚款后还书。
如果图书丢失,按照图书价格的两倍赔偿。
1.3 开发环境系统开发平台:Microsoft Visual Studio2010系统开发语言:C#数据库管理软件:SQL Server 20052 项目的需求分析系统主要有两类用户:管理员和读者,读者负责图书的管理和读者的管理及还书处理;读者可以查询图书、借阅及查看所借图书。
系统功能结构图1如下:图2.1 系统功能结构图3 数据库概念模型在前面的需求分析中,我们了解到系统要实现的功能,然而这仅仅停留在用户层面,我们需要将其抽象为信息结构即概念模型,这便是概念结构设计要做的工作。
概念结构是各种数据模型的共同基础,它比数据模型更独立与机器、更抽象,从而更稳定,概念结构设计也是整个数据库设计的关键。
系统实体主要包括几下几类:用户(借阅证号、姓名、密码、学院、班级、类别(教师、学生))、图书(书号、书名、出版社、作者、价格),用户和图书之间为多对多关系,E-R图如图3.1所示:图3.1 E-R图4 数据库物理模型概念结构是各种数据模型的共同基础,为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。
其转换规则如下:1、一个实体转换为一个关系模式,关系的属性为实体的属性,关系的码为实体的码。
2 、一个m:n联系转换为一个关系模式,关系的属性为与该联系相连的各实体的码以及联系本身的属性,关系的码为各实体码的组合。
3、一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
根据概念设计转换为关系模型主要有三张表:用户表、借阅信息表、图书表。
其主要结构如下:表4.1 用户(users)表表4.2图书(book)表表4.3 借阅(borrow)表5 程序流程图5.1 管理员操作流程图首先进入登录界面,输入用户名密码,系统验证成功,进入主界面,可对图书及用户进行添加,修改,删除等操作,并进行还书处理,退出。
图5.1 管理员操作流程图5.2 读者操作流程图读者进入操作界面,输入用户名密码,验证成功可进行图书查询、借阅,查看借阅信息,修改密码。
图5.2 用户操作流程图6 界面设计6.1 登录用户输入用户名密码及选择用户类型后,系统进行验证,验证成功则根据用户类型进入相关页面,验证不通过则给予相应提示。
界面如图6.1,6.2所示:图6.1登陆界面图6.2登陆错误提示6.2 管理员界面若用户是管理员,则进入管理员界面,包括书籍管理、还书处理和用户管理三个主菜单。
如图6.3所示:图6.3 管理员主界面6.3 增加图书管理员在添加图书界面,输入书号,书名,作者,价格等信息后,点击确定按钮进行图书添加。
如图6.4所示:图6.4 增加图书界面6.4 更新图书管理员对图书进行修改和删除操作,如图6.5所示:图6.5 更新图书界面6.5 还书处理管理员录入相应的书号、借书号进行处理,系统更新图书及读者借阅信息。
如图6.6所示:图6.6 还书处理6.6 用户管理管理员用户的信息进行添加,修改,查询。
如图6.7所示:图6.7 用户管理6.7 用户界面若用户类型是学生和教师,则进入用户主界面,可以输入关键字查询图书,并进行借阅,还可查看自己的借阅信息。
如图6.8、6.9所示。
图6.8 查阅图书界面图6.9 查看借阅信息界面6.8 修改密码管理员和用户可以更改自己的初始密码。
如图6.10所示:图6.10修改密码界面7 总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. 本次课程设计虽然很辛苦,实在是受益匪浅。
通过本次课程设计,在设计过程中碰到了很多问题,刚开始要设计的时候,还真不知道从哪里下手但最终在同学和老师的帮助下得到了解决,让我学会了好多书本上没有的东西,通过本次课程设计我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。
通过这次课程设计,经历了遇到问题、分析问题、解决问题的反反复复,感觉自己的动手能力以及分析、解决问题的能力有了很大提升;这次课程设计包含了数据库、C#及开发工具visual studio的使用,使得理论与实践得到了很好的结合,也为以后从事开发工作打下了一定基础。
课程最后,感谢老师的传道、授业、解惑,老师!您幸苦了!!参考文献[1]汤涛,邰晓翠 2.0高级程序设计[M].北京:人民邮电出版社,2007[2]齐立波.C#入门经典.北京:清华大学出版社[M],2006.[3]王珊,萨师煊.数据库系统概论[M].北京:高等教出版社,2006.[4]蔡永鸿,李文国.管理信息系统理论与实务[M].北京:清华大学出版社,2011附录关键代码○1数据库连接字符串写为静态类,使用时直接调用。
public static class Connection{public static string ConnString{get { return "Data Source=.;Initial Catalog=library;Integrated Security=True"; }}}○2数据库访问类DBaccess类,包括getTable(string sql)返回datatable类型的数据集、ExecuteSql(string sql)执行增加、修改、删除等语句返回值为布尔型、GetScalar(string sql)返回查询的单个值。
using System;using System.Data.SqlClient;using System.Data;namespace 图书管理系统{public static class DbAccess{private static string constr = Connection.ConnString; //获得数据库连接字符串public static DataTable GetTable(string sql){using (SqlConnection con = new SqlConnection(constr)) // using 自动关闭连接,释放资源{try{SqlDataAdapter adapter = new SqlDataAdapter(sql, con);DataSet ds = new DataSet();adapter.Fill(ds, "mytable"); //填充数据集return ds.Tables[0]; //返回表}catch (Exception e){throw new Exception(e.Message); //抛出异常}}}public static Boolean ExecuteSql(string sql){SqlConnection con = new SqlConnection(constr);SqlCommand cmd = new SqlCommand(sql, con); //定义命令con.Open(); //打开连接try{cmd.ExecuteNonQuery(); //执行命令return true;}catch (Exception e){return false;throw new Exception(e.Message);//跑出异常}finally{con.Dispose(); //释放资源}}public static int GetScaler(string sql){using (SqlConnection con = new SqlConnection(constr)){SqlCommand cmd = new SqlCommand(sql, con);try{con.Open();int i = (int)cmd.ExecuteScalar(); //类型转换return i;}catch (Exception e){throw new Exception(e.Message);}finally{con.Dispose();}}}}}。