1、目录目录11概述11.1 课程设计目的11.2 设计任务与要求11.3 开发环境22 系统设计的基本概念与原理22.1 基本概念与知识22.2 系统设计实现的基本原理与过程22.2.1 可行性分析32.2.2 系统需求32.2.3 系统的性能要求43 系统的总体设计与分析43.1 系统功能设计43.2 系统架构设计43.3 子系统与模块设计53.3.1用户注册53.3.2管理员登录53.3.3用户登录63.3.4图书管理63.3.5数据库设计64 系统详细设计与实现104.1主页界面104.2注册页面114.3登陆界面164.4管理员界面174.4.1 个人信息查看和修改184.4.2 图书查
2、阅214.4.3 图书管理234.4.4 用户管理264.5用户界面274.5.1用户个人信息274.5.2图书查询314.5.3图书借阅345 系统调试与运行385.1 系统安装与部署385.2 系统运行与测试396 课程设计总结39401概述1.1 课程设计目的当今的社会,竞争日益激烈。若想谋得一份不错的工作,就要不断“充电”,尤其是我们在校的学生,面临着很强的就业压力,更要努力提高自身的素质。在这种形式下,书籍渐渐成为人们获得知识,并增长知识的主要途径,而图书馆就自然而然地在人们地生活中占据了十分重要的位置。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动
3、化、信息化的管理越来越广泛应用于各个领域。因此图书的管理应顺应时代发展的需求,用信息化替代麻烦又容易出错的人工操作。学校的图书信息管理是基础性的管理工作。加强图书管理,不但关系到学生读者的查询、阅览的方便程度,而起然可以充分利用好学校的每一份资源,能够使学校整体呈现出优良的风气和面貌,促进学校各项工作的顺利展开。因此,对图书管理系统进行有针对性的研究,并由此构造出一个适合我校图书信息管理系统的模型,将具有重要的使用价值。图书借阅管理系统采用的是计算机信息化管理,将用户分成学生和管理人员。管理人员负将数据输入到系统的数据库中,并且可以随时查询、添加、用户信息,查询、添加、删除、修改图书信息还可以
4、管理图书的借出、结算等。书籍用户可以借书, 查询书籍,预约书籍。采用数据库保存用户及图书信息,不易丢失而且更新迅速方便。1.2 设计任务与要求完成图书管理系统的详细设计; 系统掌握软件开发过程中详细设计的写法; 完成图书管理系统的详细设计报告。1.3 开发环境dreamweaver cs5,Visual Studio 2010,SQL Server 7.0 2 系统设计的基本概念与原理2.1 基本概念与知识详细设计也称过程设计,是程序设计的蓝图。该设计是在数据设计、体系结构设计和接口设计完成之后进行的。过程设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程尽可能的简明
5、易懂。结构化程序设计是实现上述目标的关键技术,因此是过程设计的逻辑基础。过程设计的结果基本上决定了最终程序设计的质量。2.2 系统设计实现的基本原理与过程一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉。在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工。一个最典型的手工处理还书过程就是:读者将要借的书和借阅证交给工作人员,工作人员将每本书上附带的描述书的信息的卡片和读者的借阅证放在一个小格栏里,并在借阅证和每本书贴的借阅条上填写借阅信息。这样借书过程就完成了。还书时,读者将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借
6、阅证,并填好相应的还书信息,这样还书过程就完成了。 以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们将会看到排队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更多的时间在选择书和看书上。 为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面掌握图书的流通情况。2.
7、2.1 可行性分析 图书借阅系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。 本系统的设计主要从以下几方面做起:系统业务流程分析、系统的功能设计、系统的数据库结构设计、系统输入/输出设计等。作这些工作需对数据库知识有足够认识,并深入的了解ASP.NET的使用和管理系统的相关知识。 在信息时代的今天,人类需要对在政治、经济、军事、文化、科研、教育等领域产生的大量信息进行管理,并对数据进行加工处理,数据库技术则是信息管理与数据处理的先进技术。随着信息量的不断增加,作为计算机的三大主要应用(
8、科学计算、过程控制和数据处理)之一的数据处理,已迅速上升为计算机应用的主要方面,数据库技术则成为人们日常生活中处理数据不可缺少的有力工具,并且现代的信息管理系统几乎都以数据库技术作为核心。2.2.2 系统需求系统需求分析的基本任务是准确的回答系统必须实现什么功能。具体表现为:可以进行文本操作;添加、删除、修改基本信息;添加、删除、修改图书基本信息;查询符合条件的相应的图书和服务、学生记录信息;系统用户、用户权限的添加和删除。数据的集中存储,实现数据的共享;数据处理与查询,以提高办公效率;统计分析与数据的操作;界面统一,操作简便,提高用户办公效率。密码设置:每个操作员均有自己的密码,可以防止非本
9、系统人员进入本系统;又因每个人的权限不一致,故可以防止越权操作。资料维护:为了存放图书、读者档案的全部数据,本系统将每一本图书和每位读者的信息进行管理。系统维护包括对各种表记录的修改、删除、添加等操作。系统查询:可以按图书条形码、用户ID等相关信息进行查询。2.2.3 系统的性能要求当用户在暂时不进行任何操作时,退出登陆。用户只能在许可的权限范围内进行对系统的操作。系统需要具有一定容错能力和数据恢复能力,为了让客户满意延迟尽量保持在用户可以忍受的范围内。系统将来要面对系统扩充方面的变动,诸如在线支付等方面;系统需要提供简单的查询条件保存与提取功能;系统没有选择模块化,对于今后系统扩展有一定影响
10、。3 系统的总体设计与分析3.1 系统功能设计程序应该尽量实现所有的实际工作中的要做的事情。用计算机进行办公,最大的好处就是能够轻松的完成那些重复的、繁重的、公式化的、需要大量的人力、物力和时间的工作。3.2 系统架构设计根据需求分析与系统功能设计目标,结合实际情况,图书借阅信息的管理的主要功能为用户的设定、读者管理、数据的录入和发布、数据的修改、数据的删除等。具体功能图如下: 图3.1 图书借阅管理系统3.3 子系统与模块设计3.3.1用户注册没有注册的用户先注册填写自己的详细信息,等管理员同意之后即可登录查看,借阅,还书等。3.3.2 管理员登录(1)管理员信息 管理员查看自己基本信息,也
11、可修改自己基本信息。(2)图书维护 添加,删除书籍,类型增加。(3)用户维护 查看用户信息。3.3.3 用户登录 (1)读者信息 在管理员界面可以添加一些读者对读者进行维护(2)读者借阅 当读者登录以后可以开始借阅图书,或者是归还图书 3.3.4 图书管理(1)图书借阅(2)图书归还(3)图书维护3.3.5数据库设计数据是整个系统运行的基础,数据库设计的合理性直接影响数据库应用系统的功能实现和效率。数据库系统是在文件系统的基础上发展而来的,经历了层次数据库、网状数据库、关系数据库三个阶段。计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计
12、和传播等操作。3.3.5.1 安全性借助基于角色的安全特性和网络加密功能确保应用程序能够在任何网络环境下均处于安全状态。3.3.5.2 数据转换服务实现从不同来源析取、转换和调用数据操作的自动化。3.3.5.3数据库E-R图类型 图3.1学生用户图书的E-R模型学生用户条形码图书借阅书名作者借阅借阅借阅出版社次数 图3.2管理员用户图书的ERA模型类型管理员条形码图书管理书名作者借阅借阅借阅出版社次数手机号码管理员用户名用户编号学生用户管理用户ID用户名学院系 图3.3管理员用户学生用户的ERA模型3.3.5.4 数据库的设计和实现通过上面需求分析和改面结构设计,就可以将它转换成数据库系统支持
13、的数据模型,即数据库逻辑结构。本系统使用了SQL Sever2008数据库。系统图书信息表的设计如3.4表所示。表3.4 图书信息表(tb_bookInfo)字段名称数据类型是否主键默认值功能描述bookBarCodevarchar(100)是null图书条码bookNamevarchar(50)否Null图书名字bookTypeint否Null图书类型bookConcernvarchar(100)否Null出版社authorvarchar(80)否Null作者pricemoney否Null价格borrowSumint否Null借阅数量系统用户信息表的设计如表3.5所示。表3.5 用户信息表(
14、tb_user)字段名称数据类型是否主键默认值功能描述UserIDint是Null用户IDuserNamevarchar(50)否Null用户姓名userPwdvarchar(50)否Null用户密码DeptVarchar(50)否Null学院MajorVarchar(50)否Null专业PhoNumVarchar(50)否Null电话号码 系统借阅信息表的设计如表3.6所示。表3.6 借阅信息表(tb_bookBorrow)字段名称数据类型是否主键默认值功能描述bookBarcodevarchar(50)否Null图书条码bookNamevarchar(50)否Null图书名borrowTi
15、medatetime否Null借阅时间returnTimedatetime否Null还书时间userNamevarchar(50)否Null读者姓名管理员表的设计如表3.7所示。 表3.7字段名称数据类型是否主键默认值功能描述AdmIDInt是Null管理员IDnamevarchar(50)否Null管理员姓名AdmPwdVarchar(50)否Null密码PhoNumVarchar(50)否Null电话号码图书类型分类如3.8所示。 表3.8字段名称数据类型是否主键默认值功能描述BooktypeInt是Null图书类型号Typenamevarchar(50)否Null类型名称4 系统详细设计
16、与实现4.1主页界面 运行default.aspx,进去到主页面。可以查看最新新闻和报告。用户和管理员登陆按右上角的登陆按钮,进入到登陆页面。4.2注册页面没有注册的用户没法进入图书馆查询借阅书籍,所以先注册账号。 public partial class AdminUserView_ApplyInfo : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) /连接数据库,绑定数据源 SqlConnection conn = new SqlConnection(server=(local);uid=sa
17、;pwd=gst123456;database=BooksLib); string SQL = select userID,userName,dept,major,phoNum from tb_app; SqlCommand cmd = new SqlCommand(SQL, conn); conn.Open(); GV.DataSource = cmd.ExecuteReader(); GV.DataBind(); conn.Close(); protected void GV_SelectedIndexChanged(object sender, EventArgs e) protecte
18、d void GV_RowDeleting(object sender, GridViewDeleteEventArgs e) int ab = Convert.ToInt32(GV.DataKeyse.RowIndex.Value); SqlConnection cnn = new SqlConnection(Server=(local);uid=sa;pwd=gst123456;database=BooksLib); string SQL = delete tb_app where userID=+ab;/表示删除xs表里id为ab那行的数据 SqlCommand cmd = new Sq
19、lCommand(SQL,cnn); cnn.Open(); cmd.ExecuteNonQuery(); cnn.Close(); abc();/将删除后的数据重新显示 void abc()/代码打包 SqlConnection cnn = new SqlConnection(Server=(local);uid=sa;pwd=gst123456;database=BooksLib); string SQL = select userID,userName,dept,major,phoNum from tb_app ; SqlCommand cmd = new SqlCommand(SQL,
20、 cnn); cnn.Open(); GV.DataSource = cmd.ExecuteReader(); GV.DataBind(); cnn.Close(); protected void IB_Add_Click(object sender, ImageClickEventArgs e) /连接数据库 SqlConnection conn = new SqlConnection(); conn.ConnectionString = Persist Security Info=false;user id =sa;pwd=gst123456;database=BooksLib;serve
21、r=(local); conn.Open(); for (int i = 0; i this.GV.Rows.Count; i+ ) / int ab = Convert.ToInt32(GV.DataKeyse.RowIndex.Value); String uID = GV.Rows0.Cells1.Text.ToString(); /获取第一行第一列内容,因为每执行一次循环就将用户申请信息从申请表中删除,因此每次都只用渠道第一行的数据主码即可 SqlCommand selectCmd = new SqlCommand(); selectCmd.Connection = conn; /从申
22、请表中获取申请者的信息 selectCmd.CommandText = select userName from tb_app where userID = + uID + ; String uName = selectCmd.ExecuteScalar().ToString(); selectCmd.CommandText = select userPwd from tb_app where userID = + uID + ; String uPwd = selectCmd.ExecuteScalar().ToString(); selectCmd.CommandText = select
23、 dept from tb_app where userID = + uID + ; String uDept = selectCmd.ExecuteScalar().ToString(); selectCmd.CommandText = select major from tb_app where userID = + uID + ; String uMajor = selectCmd.ExecuteScalar().ToString(); selectCmd.CommandText = select phoNum from tb_app where userID = + uID + ; S
24、tring uPhoneNumber = selectCmd.ExecuteScalar().ToString(); /将申请表的信息插入用户表中,至此申请的用户可以登录 SqlCommand insertCmd = new SqlCommand(); insertCmd.Connection = conn; insertCmd.CommandText = insert into tb_user values( + uID + , + uName + , + uPwd + , + uDept + , + uMajor + , + uPhoneNumber + ); insertCmd.Exec
25、uteNonQuery(); /将申请者的信息从申请表中删除 SqlCommand deleteCmd = new SqlCommand(); deleteCmd.Connection = conn; deleteCmd.CommandText = Delete from tb_app where userID = + uID + ; deleteCmd.ExecuteNonQuery(); conn.Close(); abc(); /* * * * * * * SqlConnection conn_2 = new SqlConnection(); conn_2.ConnectionStrin
26、g = Persist Security Info=false;user id =sa;pwd=gst123456;database=BooksLib;server=(local); conn_2.Open(); /获取借阅人的信息,及要借阅的图书信息 SqlCommand selectCmd_1 = new SqlCommand(); selectCmd_1.Connection = conn_2; selectCmd_1.CommandText = select bookName from tb_bookInfo where bookBarCode = + s + ; String bkN
27、ame = selectCmd_1.ExecuteScalar().ToString(); DateTime borrowTime = DateTime.Now; DateTime returnTime = borrowTime.AddDays(30); selectCmd_1.CommandText = select userName from tb_user where userID= + userID + ; String uName = selectCmd_1.ExecuteScalar().ToString(); string strID = GridLog.DataKeyse.Ro
28、wIndex.Value.ToString();/strID该行的ID string strSQL = Delete from table + WHERE id = + strID; * * * * * SqlConnection conn = new SqlConnection(); conn.ConnectionString = Persist Security Info=false;user id =sa;pwd=gst123456;database=BooksLib;server=(local); conn.Open(); SqlCommand myCom = new SqlComma
29、nd(); myCom.Connection = conn; myCom.CommandText = Delete from tb_app where userID = + GridView1.Rowse.RowIndex.Cells0.Text + ; myCom.ExecuteNonQuery(); conn.Close(); * * * * * * * * * SqlConnection conn = new SqlConnection(); conn.ConnectionString = Persist Security Info=false;user id =sa;pwd=gst12
30、3456;database=BooksLib;server=(local); conn.Open(); SqlCommand myCom = new SqlCommand(); myCom.Connection = conn; / myCom.CommandText = insert into tb_app values ( + readerID + , + userName + , + password + , + department + , + major + , + phoneNumber + ); myCom.CommandText = select userID from tb_a
31、pp where userID = + GridView1.Rowse.RowIndex.Cells0.Text + ; String userID = myCom.ExecuteScalar().ToString(); myCom.CommandText = select userName from tb_app where userID = + GridView1.Rowse.RowIndex.Cells0.Text + ; String userName = myCom.ExecuteScalar().ToString(); myCom.CommandText = select user
32、Pwd from tb_app where userID = + GridView1.Rowse.RowIndex.Cells0.Text + ; String userPwd = myCom.ExecuteScalar().ToString(); myCom.CommandText = select dept from tb_app where userID = + GridView1.Rowse.RowIndex.Cells0.Text + ; String dept = myCom.ExecuteScalar().ToString(); myCom.CommandText = selec
33、t major from tb_app where userID = + GridView1.Rowse.RowIndex.Cells0.Text + ; String major = myCom.ExecuteScalar().ToString(); myCom.CommandText = select phoNum from tb_app where userID = + GridView1.Rowse.RowIndex.Cells0.Text + ; String phoNum = myCom.ExecuteScalar().ToString(); myCom.CommandText =
34、 insert into tb_user values ( + userID + , + userName + , + userPwd + , + dept + , + major + , + phoNum + ); / GridViewRow row = (GridViewRow)GridView1.Rows0; / for (int i = 0; i = GridView1.Rows.Count - 1; i+) SqlDataReader rd = myCom.ExecuteReader(); conn.Close(); * * * * * * * * * * * * SqlConnec
35、tion conn = new SqlConnection(); conn.ConnectionString = Persist Security Info=false;user id =sa;pwd=gst123456;database=BooksLib;server=(local); conn.Open(); SqlCommand myCom = new SqlCommand(); myCom.Connection = conn; / myCom.CommandText = Delete from tb_app where userID = + GridView1.Rowse.RowInd
36、ex.Cells0.Text + ; / myCom.ExecuteNonQuery(); string strID = GridView1.DataKeyse.RowIndex.Value.ToString(); string strSQL; strSQL = Delete from tb_app + WHERE userID = + strID; / myCom.NoreturnSql(strSQL); myCom.CommandText = strSQL; myCom.ExecuteReader(); / ClientScript.RegisterStartupScript(GetTyp
37、e(), Message, alert(制定规则删除成功!);); / GridBind(); conn.Close(); */ 4.3登陆界面 图4.3登陆界面本程序有两种操作权限:管理员和读者。 选择下拉列表用户类型,输入用户ID和密码,分别可进入到普通用户和管理员界面。4.4管理员界面图4.4 管理员界面管理员可拥有的操作包括:个人信息查看和修改;图书查阅;图书管理;用户管理。4.4.1 个人信息查看和修改 点击个人信息,可以查看自己的基本信息并可修改。protected void Page_Load(object sender, EventArgs e) SqlConnection c
38、onn = new SqlConnection(); conn.ConnectionString = Persist Security Info=false;user id =sa;pwd=gst123456;database=BooksLib;server=(local); conn.Open(); SqlDataAdapter adapter = new SqlDataAdapter(); SqlCommand myCom = new SqlCommand(); myCom.Connection = conn; string uName1 = SessionuNameOut.ToStrin
39、g(); myCom.CommandText = select admID,Name,phoNum from tb_admin where admID = + uName1 + ; / Response.Write(myCom.CommandText); adapter.SelectCommand = myCom; DataSet dataset = new DataSet(tb_admin); adapter.Fill(dataset); adminID.Text = dataset.Tables0.Rows0.ItemArray0 + ; adminName.Text = dataset.Tables0.Rows0.ItemArray1 + ; phone.Text = dataset.Tables0.Rows0.ItemArray2 + ; conn.Close(); protected void IB_Reset_Phone_Click(object sender, ImageClickEventArgs e) this.phoneNumber.Text = ; protected void IB_Modify_Phon