当前位置:文档之家› 图书管理系统设计与实现报告

图书管理系统设计与实现报告

JIANGSU UNIVERSITY项目实践 II图书管理系统Library Management System学院名称:计算机科学与通信工程专业班级:嵌软1201学号:**************:******:***2014年6 月[正文]一、课程设计概述目的:通过本项目实践的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,为学生综合应用本专业所学习的多门课程知识创造实践机会,使每个学生了解软件工具与环境对于项目开发的重要性,并且重点深入掌握好一、两种较新或较流行的软件工具或计算机应用技术,提高学生今后参与开发稍大规模实际软件项目和探索未知领域的能力和自信心。

任务:假设图书馆委托大学生为他创建一个图书管理系统,以便能够科学管理、提高效益。

开发环境:vs2010 sqlserver2008二、项目的需求分析(1)所有人员需要登陆才能操作系统,可以修改密码。

(2)图书管理员可以添加图书(包括书号、书名、出版社、作者、图书简介、价格、封面图片等信息)、删除图书,假设每种图书只有一本。

图书管理员可以添加借阅者(包括借书证号、姓名、类别(教师或学生)、学院、性别、照片等信息)、删除借阅者。

(3)借阅者可以根据书名或者作者模糊查询图书(模糊查询是指在查询语句中使用like关键字),可以查看自己所借图书信息。

(4)借阅者可以借阅图书,此时需要记录借书日期和应还日期信息(设置借阅日期为30天)。

借阅者包括教师和学生,教师最多可以借阅10本图书,学生最多可以借阅5本图书。

借阅者如果有超期图书则不能再借。

(5)借阅者还书时,检查是否超期,如果超期,按照0.1元/天计算罚款金额,缴纳罚款后还书。

如果图书丢失,按照图书价格的两倍赔偿。

(6)实现系统时请考虑数据的参照完整性,例如借阅图书时应该是存在的图书,删除图书时同时删除该图书的借阅信息。

三、概念模型四、数据模型管理员列名数据类型允许null值主键Uid Varchar 否是password Varchar 否否列名数据类型允许null值主键Uid Int 否是Password Varchar 否否Name varchar 是否sex varchar 是否department varchar 是否type varchar 否否num int 否否图书借阅五、功能设计模块描述:图书管理系统的功能模块如下图所示:主程序流程图借书代码:private void button2_Click(object sender, EventArgs e) {if (textBox2.Text != ""){if (flag != 0){SqlConnection 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 + "','" + 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);//查看要借阅的图书是否可借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())//检查是否超期{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();//关闭readerstring s = (string)com.ExecuteScalar();string ss = (string)cos.ExecuteScalar();int 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);//被借的书状态显示为已借出tt.ExecuteNonQuery();cc.ExecuteNonQuery();}elseMessageBox.Show("已借出");}elseMessageBox.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='已借出'", con); tt.ExecuteNonQuery();cc.ExecuteNonQuery();}elseMessageBox.Show("已借出");}elseMessageBox.Show("教师最多借阅10本");}if (i != 0)MessageBox.Show("图书借阅成功");}elseMessageBox.Show("你有超期图书未还,借阅失败");}}elseMessageBox.Show("请输入要借阅的索书号");}六、运行过程系统运行过程的截图与说明1、登录界面点击左上角登录,可切换登录类型2、用户操作界面用户可以根据作者或作品名进行模糊查询,可根据索书号借阅图书,可查看自己的借阅记录,点击左上角设置可修改密码。

3、管理员操作界面管理员可进行添加图书、删除图书、添加借阅者、删除借阅者、缴纳罚款、还书等操作,点击左上角设置可修改密码。

4、添加、删除用户界面管理员通过此界面进行添加、删除用户操作5、添加、删除图书界面管理员可进行添加、删除图书操作6、缴纳罚款界面管理员可进行收取超期或丢书罚款七、个人遇到的困难、解决方法与个人小结此部分请详细说明困难1:调试过程中出现截断二进制字符串错误解决方法:错误原因是数据溢出,调大数据库中相关字段范围困难2:缺少对象实例化解决方法:select语句中有空格,导致取出的数据为NULL,重新写一遍select语句,注意空格情况个人小结:在这次的项目实践中,因为事先没有做总体的规划,导致在开发过程中不断的发现之前设计的数据库不满足要求,而不断的重新建表,浪费了很多时间,在以后的实践中,一定要对项目进行总体的设计后再着手写代码。

此外,在实践过程中,总是出现一些明明代码正确,运行结果却错误的情况,出现这些情况的原因大多是空格等细小因素的原因,而这种状况又是最伤人脑筋的情况,因为不好检查出错误,在以后的实践中一定要细心仔细,只有这样,才能避免浪费时间。

相关主题