《图书管理系统设计与实现报告(共12页).doc》由会员分享,可在线阅读,更多相关《图书管理系统设计与实现报告(共12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 JIANGSU UNIVERSITY 项 目 实 践 II图书管理系统Library Management System学 院 名 称 : 计算机科学与通信工程 专 业 班 级 : 嵌软1201 学 号 : 学 生 姓 名 : 史 禹 指 导 教 师 : 宋和平 2014年 6 月 正文一、课程设计概述目的:通过本项目实践的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,为学生综合应用本专业所学习的多门课程知识创造实践机会,使每个学生了解软件工具与环境对于项目开发的重要性,并且重点深入掌握好一、两种较新或较流行的软件工具或计算机应用技术,提
2、高学生今后参与开发稍大规模实际软件项目和探索未知领域的能力和自信心。任务:假设图书馆委托大学生为他创建一个图书管理系统,以便能够科学管理、提高效益。开发环境:vs2010 sqlserver2008二、项目的需求分析(1) 所有人员需要登陆才能操作系统,可以修改密码。(2) 图书管理员可以添加图书(包括书号、书名、出版社、作者、图书简介、价格、封面图片等信息)、删除图书,假设每种图书只有一本。图书管理员可以添加借阅者(包括借书证号、姓名、类别(教师或学生)、学院、性别、照片等信息)、删除借阅者。(3) 借阅者可以根据书名或者作者模糊查询图书(模糊查询是指在查询语句中使用like关键字),可以查
3、看自己所借图书信息。(4) 借阅者可以借阅图书,此时需要记录借书日期和应还日期信息(设置借阅日期为30天)。借阅者包括教师和学生,教师最多可以借阅10本图书,学生最多可以借阅5本图书。借阅者如果有超期图书则不能再借。(5) 借阅者还书时,检查是否超期,如果超期,按照0.1元/天计算罚款金额,缴纳罚款后还书。如果图书丢失,按照图书价格的两倍赔偿。(6) 实现系统时请考虑数据的参照完整性,例如借阅图书时应该是存在的图书,删除图书时同时删除该图书的借阅信息。三、概念模型四、数据模型管理员列名数据类型允许null值主键UidVarchar否是passwordVarchar否否用户列名数据类型允许nul
4、l值主键UidInt否是PasswordVarchar 否否Namevarchar是否sexvarchar是否departmentvarchar是否typevarchar否否numint否否图书列名数据类型允许null值主键IdInt否是nameVarchar 是否pressVarchar 是否authorVarchar 是否instructionVarchar 是否priceNumeric是否借阅列名数据类型允许null值主键UidInt否是idVarchar 否是outtimeDatetime是否intimeDatetime是否statevarchar否否归还列名数据类型允许null值主键
5、UidInt否是idVarchar 否是intimeDatetime是否Priceint否否五、功能设计模块描述:图书管理系统的功能模块如下图所示:图书管理系统管理员登录用户登录删除用户添加用户删除图书添加图书罚款缴纳归还图书密码修改修改密码借阅查询图书借阅图书检索主程序流程图开始登录管理员登陆借阅者登陆判断借书查阅借阅者信息管理密码修改图书信息管理密码修改图书查阅主要代码:借书代码: private void button2_Click(object sender, EventArgs e) if (textBox2.Text != ) if (flag != 0) SqlConnectio
6、n con = new SqlConnection(); con.ConnectionString = data source =RUNQUQPHLOAYYPH;initial catalog =tushuguanli;integrated security=true; con.Open();/创建数据库连接 string id = textBox2.Text;/获得索书号 /将借阅者uid,图书id,借阅时间,应还时间写入数据库 SqlCommand co = new SqlCommand(insert into jieyue values( + login.ss + , + id + ,
7、+ System.DateTime.Now + , + System.DateTime.Now.Date.AddDays(30) + ,未还), con); /检索登录的借书证号类型为学生还是老师 SqlCommand com = new SqlCommand(select type from userlogin where uid= + login.ss + , con); /查看该借阅证号已借几本书 SqlCommand comm = new SqlCommand(select num from userlogin where uid= + login.ss + , con); /查看要借
8、阅的图书是否可借 SqlCommand cos = new SqlCommand(select state from books where id= + id + , con); /查看尚未归还的图书的应还日期 SqlCommand jie = new SqlCommand(select intime from jieyue where (uid= + login.ss + and state=未还), con); SqlDataReader myReader = jie.ExecuteReader(); bool x = false; while (myReader.Read()/检查是否超
9、期 string ee = myReader.GetValue(0).ToString();/获得读取到的数据 DateTime t = Convert.ToDateTime(ee);/将字符串转换成日期类型 DateTime t1 = DateTime.Now; if (t t1)/比较应还日期和现在日期的大小 x = true; else x = false; break; myReader.Close();/关闭reader string s = (string)com.ExecuteScalar(); string ss = (string)cos.ExecuteScalar(); i
10、nt a = (Int32)comm.ExecuteScalar();/执行sql语句 int i = 0; if (x = true)/未超期 if (s = 学生)/借书证类型为学生 if (a 5)/借的数目5 if (ss = 可借) i = co.ExecuteNonQuery();/执行sql语句 SqlCommand cc = new SqlCommand(update userlogin set num= + a+ + , con);/借书数目加一 SqlCommand tt = new SqlCommand(update books set state=已借出, con);/
11、被借的书状态显示为已借出 tt.ExecuteNonQuery(); cc.ExecuteNonQuery(); else MessageBox.Show(已借出); else MessageBox.Show(学生最多借阅5本); else if (a 10) if (ss = 可借) i = co.ExecuteNonQuery(); SqlCommand cc = new SqlCommand(update userlogin set num= + a+ + , con); SqlCommand tt = new SqlCommand(update books set state=已借出,
12、 con); tt.ExecuteNonQuery(); cc.ExecuteNonQuery(); else MessageBox.Show(已借出); else MessageBox.Show(教师最多借阅10本); if (i != 0) MessageBox.Show(图书借阅成功); else MessageBox.Show(你有超期图书未还,借阅失败); else MessageBox.Show(请输入要借阅的索书号); 六、运行过程系统运行过程的截图与说明1、登录界面点击左上角登录,可切换登录类型2、用户操作界面用户可以根据作者或作品名进行模糊查询,可根据索书号借阅图书,可查看自
13、己的借阅记录,点击左上角设置可修改密码。3、管理员操作界面管理员可进行添加图书、删除图书、添加借阅者、删除借阅者、缴纳罚款、还书等操作,点击左上角设置可修改密码。4、添加、删除用户界面管理员通过此界面进行添加、删除用户操作5、添加、删除图书界面管理员可进行添加、删除图书操作6、缴纳罚款界面管理员可进行收取超期或丢书罚款七、个人遇到的困难、解决方法与个人小结此部分请详细说明困难1:调试过程中出现截断二进制字符串错误解决方法:错误原因是数据溢出,调大数据库中相关字段范围困难2:缺少对象实例化解决方法:select语句中有空格,导致取出的数据为NULL,重新写一遍select语句,注意空格情况个人小结:在这次的项目实践中,因为事先没有做总体的规划,导致在开发过程中不断的发现之前设计的数据库不满足要求,而不断的重新建表,浪费了很多时间,在以后的实践中,一定要对项目进行总体的设计后再着手写代码。此外,在实践过程中,总是出现一些明明代码正确,运行结果却错误的情况,出现这些情况的原因大多是空格等细小因素的原因,而这种状况又是最伤人脑筋的情况,因为不好检查出错误,在以后的实践中一定要细心仔细,只有这样,才能避免浪费时间。专心-专注-专业