大型数据库设计实践报告
题 目: 图书管理系统
专 业 软件工程(NIIT)
学 生 姓 名 杨雨童
班 级 学 号 B12041016
指 导 教 师 毛燕琴
指 导 单 位 计算机学院/软件学院
日 期 2014.5.30
评 分 细 则 | 评 分 项 | 总分 | 评分 | |
平时表现(20%) | 遵守机房规章制度 | 5 | ||
上机时的表现 | 5 | |||
学习态度 | 10 | |||
软件设计 及其实现 (45%) | 团队合作精神 | 5 | ||
程序准备情况 | 5 | |||
程序设计能力 | 10 | |||
软件设计合理性 | 10 | |||
用户界面设计 | 5 | |||
软件功能实现情况 | 10 | |||
报告 (25%) | 报告书写规范程度 | 10 | ||
内容详实程度 | 10 | |||
文字表达熟练程度 | 5 | |||
答辩(10%) | 回答问题准确度 | 10 | ||
评分等级 | 总评分 | |||
评 语 | 教师签名: 年 月 日 | |||
备 注 | 评分等级有五种:优秀、良好、中等、及格、不及格 |
一、课题总体介绍
图书管理系统具有系统管理员、图书管理员和读者三类用户,这三类用户分别拥有不同的权限。
系统管理员:管理用户信息(对应数据库中libUsers这张表)。
图书管理员:管理图书信息(对应数据库中libBooks这张表)。
读者:对图书的操作。
分工说明:
1.创建表,数据库的操作,包括系统连接数据库的各项操作,程序调试(江杰)
2.程序界面、框架设计,图书编码入库功能的实现(杨雨童)
3.系统管理员权限各项功能的实现(李健)
4.读者权限各项功能包括借书,还书,查询数目功能的实现(杨金霖)、
5.图书管理员权限中修改,删除图书信息功能的实现(陈维钊)
二、需求分析
读者
图书管理员
系统管理员
对图书的操作
管理用户信息
管理图书信息
借还
查询
增删改
查询
增删改
查询
系统管理员:管理用户信息(对应数据库中libUsers这张表),可对包括系统管理员和图书管理员及读者在内的用户信息进行查询,添加,删除,修改。
三、总体设计
图书馆系统,包含用户和图书两个主要的数据。由此我们的数据库要包含两张表,一张对应用户信息(此程序中的libUsers这张表),另一张对应图书信息(此程序中的libBooks这张表)。
1.对于用户信息这张表(下图),我们的图书管理系统要求用户包括系统管理员,图书管理员和读者三个用户,这三个用户对应的是三个不同的权限。在表中用属性userRank来定义,1,2,3分别表示系统管理员,图书管理员和读者。另外表中还有userID,userName,userPass这些基础属性,用来区别用户以及判断用户登录。我们还赋予了系统管理员用户登录的权限,在表中用userLock属性来表示,0,1分别表示该用户是否可以登录。
2.对于图书信息这张表(下图),主要是对图书信息的描述,这张表相对比较简单,用bookName,bookAuthor,bookPress,bookDate等属性来描述图书信息,方便用户查询到相应图书。
四、详细设计 (界面的设计,图书添加功能的实现)
(1)、各个界面的设计
1.登录界面
2.查询,添加,删除,修改功能
查询,修改,删除功能在系统中包括对用户信息的修改和对图书信息的修改。这个系统中的查询,修改,删除功能都是通过dataGridView控件来实现的,查询包括对用户信息的查询,对图书信息的查询,上图是对用户信息的查询,设置dataGridView与数据库中的表关联,即可把表中的信息显示到控件窗口中,以此来达到查询的目的。删除和修改功能都需要用户首先选中dataGridView控件中的一行,然后点击相应按钮跳转到对应的界面。例如修改功能(如下图),界面中有用户ID,用户名,密码,权限,分别对应libUsers表中的userID,userName,userPsaa和userRank这几个属性,用户可以通过在textbox控件中输入要修改的信息,就可以直接对表中的数据进行修改。
string userID = textBox3.Text.Trim();
string userName = textBox1.Text.Trim();
string userPass = textBox2.Text.Trim();
int userRank = comboBox1.SelectedIndex + 1;
int userLock = 0;
if (checkBox1.Checked == true)
{
userLock = 1;
}
conDatabase editUserCon = new conDatabase();
DataTable addDt = new DataTable();
addDt = editUserCon.select("libUsers");
if (textBox3.Text == "" || userName == "" || userPass == "")
{
MessageBox.Show("读者信息不能为空");
}
else
{
//string addString = "insert into libUsers values(" + userID +
string addString = "update libUsers SET userID=" + userID + ",userName=" + "'" + userName + "'" + ",userPass=" + "'" + userPass + "'" + ",userRank=" + userRank + ",userLock=" + userLock + " where userID=" + userIDold;
int res = editUserCon.edit(addString);
if (res > 0)
{
MessageBox.Show("修改成功!");
}
添加功能在这个系统中可以为用户表和图书表进行添加,这两者的实现方式相同,和上面修改功能也类似。同样是用户填写textbox信息对应到表中的属性实现对表的修改。
4.图书编码入库
将图书的信息同步到数据库,管理员对其进行管理。
string bookName = textBox2.Text.ToString().Trim();
string bookAuthor = textBox3.Text.ToString().Trim();
string bookPress = textBox4.Text.ToString().Trim();
int bookStatus = comboBox1.SelectedIndex;
string bookDate = dateTimePicker1.Value.Year.ToString() + "-" + dateTimePicker1.Value.Month.ToString() + "-" + dateTimePicker1.Value.Day.ToString();
conDatabase addBookCon = new conDatabase();
DataTable booksDt = new DataTable();
booksDt = addBookCon.select("libBooks");
五、测试数据和结果分析
1.登录
系统管理员登录,根据表中的用户名密码(sa,niit#1234)进行系统管理员登录,选择正确的权限。
如果用户名密码错误,则出现弹窗。
如果用户名密码没有输入,则出现弹窗。
如果成功登录,则进入下级界面。
2.用户及图书的查询,添加,删除,修改
3.借书
选择借阅操作系统教程这本书
确认借阅,成功借阅。
4.还书
之前已经借阅了操作系统教程这本书,点击还书按钮之后跳转到还书界面
选择操作系统教程这本书,点击归还,则成功还书。
六、调试和问题分析
对于界面的设计来说,主要是从自身出发,考虑平时学校的图书馆管理系统,再结合自身学习的知识来完成这个小型的图书管理系统。对于图书的编码入库功能,因为要和数据库进行连接,进行数据的同步更新,所以必须保证和数据库的连接没有问题。
七、软件使用说明
步骤:首先用户需要进行登录,系统给用户提供了三种权限,系统管理员,图书管理员和读者,用户在成功进入自己对应权限的界面后可以通过点击按钮进行操作。界面简单明了,易于操作,不需要过多说明。
八、总结
经过这段时间的努力基本完成了图书管理系统。对于这个图书管理系统,刚开始对于系统的基本功能是这样设计的:管理员对图书信息的管理以及系统管理员对读者信息的管理、读者的借书、还书。对于一个大型的程序,在实现的过程中,考虑到实际,对于具体的功能 进行了增加、删除。
同时通过这几天的程序及报告编写,把学过的C#知识运用到了实践。同时,通过和其它同学的交流,对于C#窗体程序和数据库的连接有了进一步的理解。我也发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还是比较脆弱。尤其是编写大型的程序所要拥有的知识和技能比较缺乏。程序编好了,还要经过调试和修改,这步也很关键,好的程序是经过了无数次的修改和调试才产生的。我们的程序基本上能够满足要求,但还有一些地方需要改进,在今后我们应该在多看书的同时还要加强实践的练习。才能进一步提高自己的编程能力。