信管毕业设计.doc_第1页
信管毕业设计.doc_第2页
信管毕业设计.doc_第3页
信管毕业设计.doc_第4页
信管毕业设计.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图书管理管理系统学生姓名: 林德冰 胡文男 郭晓玉 余卿 郭雪莉 邢赵丽 学 号:10014020 10014014 10014010 10014047 10014011 10014041 学 院: 计算机与信息工程学院 专业年级: 10信管 题 目: 基于asp.net的图书管理系统 指导教师: 曹骞 评阅教师: 第1章 导论11.1 系统调研与可行性分析11.1.1 现状调查11.1.2 可行性分析11.1.3 软件开发计划21.1.4 asp.net2.0和sql server 2005 概述2第2章 系统分析52.1 系统功能模块52.1.2 模块框架图62.2 系统er图7第3章 系统详细设计83.1 开发运行环境83.2 数据库设计83.3 实现数据库9第4章 主要功能模块设计134.1 程序主界面134.2 书目检索模块134.3 读者管理模块204.4 图书管理模块24第5章 系统测试34结论35致谢36参考文献37 asp.net课程设计说明书 第 30 页 共 37 页第1章 系统分析根据系统分析,图书管理系统的要求如下 :(1) 需求分析: 能够输入图书的综合情况和进行新书入库、现有图书信息修改以及删除; 能够实现对读者档案的查询和编辑管理; 能够进行借阅历史的查询功能;(2)系统性能要求: 系统安全、可靠; 功能齐全; 操作方便、界面友好; 易于维护和扩充。1.1 系统功能模块图书管理系统需要实现的功能主要有三大块:“书目检索”、“读者管理”、“图书管理”模块。 1.1.1 功能的实现:1.“书目检索”模块:(1) 普通检索:书目检索提供给普通读者查询书目信息的功能,提供浏览器模式的图书信息检索工具。检索时可按书名、isbn、作者、出版社、索引号,以及丛书名进行任意条件组合,精确或模糊检索中文或英文图书。(2) 书目高级检索:书目高级检索提供给普通读者或管理员用来查询书目信息的平台,提供浏览器模式的图书信息检索工具。检索范围条件包括书号、书名、isbn、作者、出版社和主题,可使用其中的一个或多个条件进行高级检索。2. “读者管理”模块:(1) 读者登录:读者通过管理人员提供的用户名和密码进行登录,登录系统后可以修改密码。(2) 读者信息:读者可以查看自己的信息,并可以对自己的联系方式进行修改。(3) 读者借阅历史:读者可以查看自己的所有借书记录。(4) 读者当前借阅:读者查看自己目前所借阅图书情况。(5) 读者借阅过期催还:读者查看自己是否有过期未还图书。(6) 管理员登录:对于图书馆管理人员,通过管理员登录页面进入系统,分为两个权限,高级管理员可以实现对用户的维护和图书的维护,普通管理员可以实现图书的借阅与归还。3. “图书管理”模块:(1) 图书借阅:普通管理员实现用户对图书的借阅。(2) 图书归还:普通管理员实现对图书的归还。(3) 添加用户:高级管理员实现添加用户信息。(4) 用户维护:高级管理员实现添加图书信息。(5) 添加图书:高级管理员实现添加图书信息。(6) 图书维护:高级管理员实现对图书的维护,包括图书的查询、修改和删除。(7) 修改密码:此功能为公共功能,所有用户都可以使用此功能进行秘密的修改。1.1.2 模块框架图图书管理系统图书管理读者管理书目检索读者借阅过期催还修改密码添加维护图书用户维护添加用户图书借阅图书归还管理员登录读者当前借阅读者借阅历史读者信息读者登录书目高级检索普通检索1.2 系统er图 通过对图书管理系统的分析,可以得出该系统涉及三个实体:读者、图书、管理员。通过对各实体数据关系的整理,画出如下er图:电话邮件系院姓名id 权限读者借还书日期借还书 价格isbn号id索引号图书书名作者管理管理员权限姓名id 图2-1 图书管理系统系统er图第2章 系统详细设计2.1 开发运行环境系统开发环境:microsoft visual studio 2005运行平台:windows xp数据库:sql server 2005 web服务器: iis5.1 2.2 数据库设计本系统使用的数据库管理系统为sql server 2005,下面介绍图书管理系统数据库的结构设计。 设计数据库 图书管理系统具有用户表users,用于存储不同身份的用户数据,其模式如表3.1所示。表3.1 users(用户)表字段名数据类型备注useridvarchar(50)用户id,主键userpasswordvarchar(50)用户密码userpowerint用户权限usernamevarchar(50)用户姓名usersexbit用户性别userdepartvarchar(50)用户系院usertelephonevarchar(50)用户电话useremailvarchar(50)用户电子邮件 存储图书信息的表book,如表3.2所示,用于存放图书管理系统中所有已录入的书目信息。表3.2 book(图书)表字段名数据类型备注bookidint图书id,自动增加,主键booknamevarchar(50)书名bookisbnvarchar(50)isbn号bookauthorvarchar(50)作者bookpublishvarchar(50)出版社bookpublishdatedatetime出版时间bookclassifyvarchar(50)分类booksubjectvarchar(50)主题bookindexvarchar(50)索取号bookpricemoney价格bookpagenumint页数bookseriesvarchar(50)系列bookdescriptiontest描述 存储图书借阅信息的表borrow,模式如表3.3所示。改表存放了所有读者的借阅信息,借书和还书都对该表进行操作。表3.3 borrow(图书借阅)表字段名数据类型备注borrowidint图书借阅id,自动增加,主键useridvarchar(50)用户编号bookidint图书编号borrowbegindatedatetime借阅时间borrowenddatedatetime应还时间或还书时间borrowstateint借阅状态 存储用户权限表power,模式如表3.4所示。该表存放了系统中的所有权限情况,本系统中只有四类权限:学生、老师、普通管理员和总管理员。表3.4 power (权限)表字段名数据类型备注idint权限id,自动增加,主键namevarchar(50)权限名称2.3 实现数据库 下面给出数据库实现的sql命令(在sql server2005中执行通过)。(1) 创建users表create table dbo.users(userid varchar(50) not null,userpassword varchar(50) not null,userpower int not null,username varchar(50) not null,usersex bit not null,userdepart varchar(50) not null,usertelephone varchar(50) null,useremail varchar(50) null, constraint pk_users primary key clustered (userid asc)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on primary) on primary(2) 创建book表create table dbo.book(bookid int identity(1,1) not null,bookname varchar(50) not null,bookisbn varchar(50) not null,bookauthor varchar(50) not null,bookpublish varchar(50) not null,bookpublishdate datetime not null,bookclassify varchar(50) not null,booksubject varchar(50) not null,bookindex varchar(50) not null,bookprice money not null,bookpagenum int not null,bookseries varchar(50) null,bookdescription text null, constraint pk_book primary key clustered (bookid asc)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on primary) on primary textimage_on primary(3) 创建borrow表create table dbo.borrow(borrowid int identity(1,1) not null,userid varchar(50) not null,bookid int not null,borrowbegindate datetime not null,borrowenddate datetime not null,borrowstate int not null, constraint pk_borrow primary key clustered (borrowid asc)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on primary) on primary(4) 创建power表create table dbo.power(id int not null,name varchar(50) not null, constraint pk_power primary key clustered (id asc)with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on) on primary) on primary数据关系图为了保证数据的完整性和有效性,为borrow数据表增加两个外键关系,并设置外键关系对复制、插入、更新的强制关系,而且级联更新和删除相关字段。borrow、users、book表之间关系图设置如图所示:borrow * pkborrowidfkuserid fk bookidborrowbegindateborrowenddate borrowstatebook *pkbookidbooknamebookisbnbookautherbookpublishbookpublishdatebookclassifybooksubjectbookindexbookpricebookpagenum user*pkuseriduserpassworduserpowerusernameusersexuserdepartusertelephoneuseremail 图3-1 borrow、users、book表之间关系图 第3章 主要功能模块设计3.1 程序主界面 程序启动后,进入程序主界面, 图4-1 主页面3.2 书目检索模块 1.检索页面 书目检索页面用于完成读者查阅图书信息的功能。 图4-2 检索页面 当用户设置好相应查询条件,单击“确定”按钮时,系统使用session对象来存放用户设置的查询条件,并转向查询结果页面显示数据。“确定”按钮单击事件代码:1. /确定按钮单击事件2. protected void confirm_click(object sender, imageclickeventargs e)3. 4. this.sessionclassify = rblclassify.selecteditem.text;/使用session来存放查询条件5. this.sessiontype = ddltype.selectedvalue;6. this.sessioncontent = txtcontent.text.trim();7. this.sessionmode = int.parse(rblmode.selectedvalue);8. response.redirect(booksearchresult.aspx);/转向查询结果页面9. 第47行使用session来存放查询条件;第8行转向查询结果页面。 2.检索结果页面 查询结果页面用于显示根据传递过来的参数查询出的数据。 图4-3 检索结果页面 该页面用来显示查询结果,girdviewbind方法代码如下: 1. /查询数据,绑定到gridview控件 2. private void gridviewbind() 3. 4. sqlparameter params = new sqlparameter4; 5. database db = new database();6. params0=db.makeinparam(classify,sqldbtype.varchar,50, 7.sessionclassify.tostring(); /分类8. params1 = db.makeinparam(type, sqldbtype.varchar, 50, 9.sessiontype.tostring(); /字段名10. params2 = db.makeinparam(content, sqldbtype.varchar, 50, 11.sessioncontent.tostring(); /字段值12. params3 = db.makeinparam(mode, sqldbtype.int, 4, 13.int.parse(sessionmode.tostring(); /查询模式 14. dataset ds = db.getdataset(proc_bookconditionquery, params);15. ds.casesensitive = false;16. gridview1.datasource = ds;17. gridview1.databind();18. 第4行创建参数数组对象params;第5行创建database类对象db;第613行使用database类方法makeinparam方法实例化参数,并将参数存放在 params对象中;第14行使用database类方法getdataset方法查询数据,并将结果赋给dataset对象;第16行说明指示datatable对象中的字符串比较不区分大小写;第1718行为girdview控件指定数据源并绑定数据。3. 书刊详细信息书刊详细信息用于显示图书的详细信息,通过传递过来的书号进行查询,将查询到的结果放在相应的控件中显示。 图 4-4 书刊详细信息页面 该页面用来显示图书详细信息,在页面的page_load事件中添加代码,showbookdetails()方法代码如下:protected void page_load(object sender, eventargs e) if (!ispostback) showbookdetails(); 1. /显示书刊详细信息 2. private void showbookdetails() 3. 4. int bookid = int.parse(requestbookid.tostring();/取出传递过来的书号 5. book book = new book();/创建book对象 6. if (book.loaddata(bookid)/根据书号查询书刊详细信息,如果查询到 7. 8. txtname.text = book.bookname;/将书刊信息赋给相应控件显示 9. txtisbn.text = book.bookisbn; 10. txtauthor.text = book.bookauthor; 11. txtpublish.text = book.bookpublish; 12 txtpublishdate.text = book.bookpublishdate.year.tostring() + 年 + 13.book.bookpublishdate.month.tostring() + 月; 14. txtclassify.text = book.bookclassify; 15. txtsubject.text = book.booksubject; 16. txtindex.text = book.bookindex; 17. txtprice.text = book.bookprice + 元; 18. txtpagenum.text = book.bookpagenum.tostring(); 19. txtseries.text = book.bookseries; 20. txtdescription.text = book.bookdescription; 21. database db = new database();/创建database类对象 22. if (db.getrecord(select * from borrow where bookid= + bookid + and 23.borrowstate=0)/查询该图书是否可借 24. 25. txtguancang.text = 不可借; 26. 27. else 28. 29. txtguancang.text = 可借; 30. 31. 32. else 33. 34. response.write(显示图书信息失败!); 35. 36. 第4行获取传递过来的参数bookid号;第5行创建book类对象book;第6行使用book类方法loaddata方法来查询书刊详细信息,并返回查询结果;第820行将查询出的图书详细信息分别赋给相应的控件显示;第21行创建database类对象db;第2230行使用database类的getrecord方法查询该图书是否可借,并给出相应提示。4.读者书目高级检索读者书目高级检索页面用于实现读者对图书信息的高级查询功能。 图4-5 读者高级检索页面“高级搜索”单击事件代码: protected void imagebutton1_click(object sender, imageclickeventargs e) gridviewbind(); 1. /高级搜索按钮事件 2. private void gridviewbind() 3. 4. hashtable ht = new hashtable(); /创建哈希表对象 5. if (txtbookid.text.trim() != )/当条件输入框不为空时,将条件添加到哈希表中 6. 7. ht.add(bookid, int.parse(txtbookid.text.trim(); 8. 9. if (txtbookname.text.trim() != )10. 11. ht.add(bookname, txtbookname.text.trim();12. 13. if (txtbookisbn.text.trim() != )14. 15. ht.add(bookisbn, txtbookisbn.text.trim();16. 17. if (txtbookauthor.text.trim() != )18. 19. ht.add(bookauthor, txtbookauthor.text.trim();20. 21. if (txtbookpublish.text.trim() != )22. 23. ht.add(bookpublish, txtbookpublish.text.trim();24. 25. if (txtbooksubject.text.trim() != )26. 27. ht.add(booksubject, txtbooksubject.text.trim();28. 29. database db = new database(); /实例化一个database类30. gridview1.datasource = db.advancedsearch(book, ht); 31. gridview1.databind();32. 第4行创建哈希表对象ht;第516行判断每个查询条件,如果不为空,添加到哈希表中;第17行创建database类对象db;第18行使用database类的advancedsearch方法进行查询图书信息,并将查询结果赋给gridview控件;在该页面中单击查询出的图书书名超链接,同样转向该图书的详细信息页面。3.3 读者管理模块1. 读者登录读者登录页面用于完成读者登录系统的功能,是读者查看自身基本信息以及借阅情况的登录页面。需要用户输入的信息在登录页面下方给予了相应提示。当读者单击“登录”按钮时,系统将根据用户的输入对其进行身份验证,流程如图: 用户登录名:userid 用户密码:userpassword 页面输入: 实例化user对象,利用checkpassword方法,获取用户密码和权限信息 用户存在 y提示该用户不存在密码正确? n y 使用session变量,保存用户和权限 n提示输入密码错误转到读者信息主页面 结束 图4-6 读者登录页面 “登录”按钮单击事件代码:1. /登录按钮事件2. protected void imagebutton1_click(object sender, imageclickeventargs e)3. 4. users user = new users();5. if (user.checkpassword(txtname.text.trim()/验证用户是否存在并取出用户密码和权限6. 7. if (user.userpassword = txtpwd.text.trim()/如果用户密码和输入密码相同8. 9. this.sessionuserid = txtname.text;/使用session对象存储用户名和权限10. this.sessionuserpower = user.userpower;11. response.redirect(readerloginmain.aspx);12. 13. else/密码错误,给出提示14. 15. lblmessage.text = 您输入的密码错误;16. 17. 18. else/用户不存在19. 20. lblmessage.text = 您输入的用户名错误!; 21. 22. 第4行创建user类对象user;第5行判断用户是否存在和查询用户的密码和权限;第716行,判断用户输入的密码和数据库密码是否一致,如果相同,存储用户的用户名和权限并转到读者主页面;如果不同,给出密码错误提示;第1821行给出用户不存在的错误提示。2.读者信息主页面在该页面可以显示读者自己目前的信息,还进行书目检索,查询自己所有的书刊借阅情况以及修改密码等。 图4-7 读者信息主页面3.管理员登录管理员登录页面实现管理员登录功能。该页面具有自动导航的功能,不同用户登录,根据其不同身份,将进入不同的系统功能页,普通管理员进入借书还书页面,总管理员进入系统管理页面。 图4-8 管理员登录页面 “登录”按钮单击事件代码: 1. /登录按钮单击事件 2. protected void imgbtnlogin_click(object sender, imageclickeventargs e) 3. 4. users user = new users();/创建users对象user 5. if (user.checkpassword(txtuserid.text.trim()/根据用户编号查询用户密码 6. 7. if (user.userpassword = txtpwd.text.trim()/输入密码与用户密码相同 8. 9. if (user.userpower = 1)/如果该用户是总管理员 10. 11. sessionuserid = txtuserid.text.trim();/存储用户编号 12. response.redirect(adminmain.aspx);/转向总管理员操作界面 13. 14. else if (user.userpower = 2)/用户是普通管理员 15. 16. response.redirect(borrow/borrowbook.aspx);/转向借书还书界面 17. 18. 19. else/密码错误,给出提示 20. 21. lbl_message.text = 您输入的密码错误!; 22. 23. 24. else/用户不存在,给出提示 25. 26. lbl_message.text = 该用户不存在!; 27. 28. 第四行创建users类对象user;第523行查询用户密码,且该用户存在,其中718行为输入密码与查询到用户密码相同,然后根据权限转向不同页面;第1922行密码输入错误,给出提示;第2427行为用户不存在,给出提示。3.4 图书管理模块1. 添加用户信息添加用户页面实现向数据库中添加用户信息功能。 图4-9 添加用户页面在该页面中,用户类型使用sqldatasource来实现从数据库中取出权限放到下拉列框中。按照填写要求填写用户信息,然后单击“添加”按钮实现将用户信息添加到数据库中。“添加”按钮单击事件参考代码如下: 1. /添加按钮单击事件 2. protected void imgbtnadd_click(object sender, imageclickeventargs e) 3. 4. if (page.isvalid) 5. 6. users user = new users();/创建users对象user 7. user.userid = txtuserid.text.trim(); 8. if (!user.checkuser(user.userid)/使用checkuser方法验证用户是否存在 9. 10. /为user对象属性赋值 11. user.userpassword = txtpassword.text.trim(); 12. user.userpower = convert.toint16(ddluserpower.selectedvalue); 13. user.username = txtusername.text.trim(); 14. user.usersex = convert.toboolean(rblusersex.selectedvalue); 15. user.userdepart = txtuserdepart.text.trim(); 16. user.usertelephone = txtusertelephone.text.trim(); 17. user.useremail = txtuseremail.text.trim(); 18. if (user.insertbyproc()/要插入用户不存在,使用insertbyproc方法执行插入 19. 20. lblmessage.text = 成功添加用户!; 21. 22. else/插入失败,给出提示 23. 24. lblmessage.text = 添加用户失败!; 25. 26. 27. else/用户存在,给出提示 28. 29. lblmessage.text = 数据库中存在具有该编号的用户,请重新输入!; 30. 31. 32. 第4行如果页面验证有效执行if语句;第6行创建users类对象user;第8行使用使用users类checkuser方法检查要添加用户数据库中是否存在,若存在给出提示,若不存在执行插入操作;第1117行为user对象属性赋值;第18行使用insertbyproc方法插入用户,并根据执行结果给出相应提示信息。2.添加图书信息添加图书页面实现向数据库中添加图书信息功能。 图4-10 添加图书信息页面“添加”按钮单击事件代码如下:1. /添加按钮单击事件2. protected void imagebutton1_click(object sender, imageclickeventargs e)3. 4. if (page.isvalid)5. 6. book book = new book();/创建book类对象book7. book.bookname = txtname.text.trim();/为book对象各属性赋值8. book.bookisbn = txtisbn.text.trim();9. book.bookauthor = txtauthor.text.trim();10. book.bookpublish = txtpublish.text.trim();11. book.bookpublishdate = convert.todatetime(ddlyear.selecteditem.text + - + 12.ddlmonth.selecteditem.text + - + ddlday.selecteditem.text);13. book.bookclassify = rblclassify.selecteditem.text;14. book.booksubject = txtsubject.text;15. book.bookindex = txtindex.text;16. book.bookprice = convert.todouble(txtprice.text);17. book.bookpagenum = int.parse(txtpagenum.text);18. book.bookseries = txtseries.text;19. book.bookdescription = txtdescription.text;20. if (book.i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论