图书馆管理系统课程设计报告书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图书馆管理系统
班级:软件0801班
小组成员:
日期: 2011年1月10日
第一章系统概述
1.1系统背景
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机网被广泛应用于管理信息系统的外部环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息处理,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与管理信息系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好图书馆信息而设计的。
图书馆作为一种信息资源的集聚地,图书和用户借阅资料繁多,包含很多的信息数据的管理。
本案例的问题定义是:为了减轻新生入学(或新员工入公司)、不断增加、修改图书给图书馆带来的不便而设计的。
图书馆管理系统是办公自动化不可缺少的一部分,是适应现代管理制度要求、推动学生学籍管理走向科学化、规范化的必要条件。
该软件最终的使用者是学校,公司,图书馆管理者,并提供以下的功能:
1.默认页提供关于图书馆的基本信息;
2.图书馆管理者可以根据读者信息创建读者的帐户;
3.如果读者输入的电子邮件 ID 在数据库中已存在,系统将显示错误页;
4.图书馆管理者必须先登录才能在了解图书馆的详细信息和自己的基本信息,
并可以对图书进行添加、查找、修改、注销等的操作,还可对读者进行管理与归类;
5.读者必须先登录才能对图书进行借阅、归还、续借等操作。
1.2 可行性研究
1.2.1 [技术条件方面的可能性]
技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。
图书馆管理系统的工作主要是在读者和图书馆之间架起一座桥梁,能相互沟通信息和处理信息。
所使用的语言是C#和SQL之间连接,这是大家还比较熟悉的内容,可
行性绝对可行。
1.2.2.[法律方面的可行性]
●合同责任:符合国家标准的合同,经双方签字后生效
●侵犯专利权:有
●侵犯版权:有
当今社会发展迅速,知识量的积累更是与日俱增,无论是学校的图书馆还是公司的资料库,学生或员工的知识渴求的越显强烈,书籍资料的借阅量也是越来越高,而逐渐显现出来的读者信息管理质量问题是越来越严重。
一方面,管理员为了将读者的部分个人信息记录下来,需要每一位新读者自己填写他们个人资料,并且能够对读者进行编号和排序,对他们的信息进行修改和查询操作。
另一方面,为了能够使读者信息更加安全,必须限制非管理员对读者信息的访问权。
为了能够解决这些问题,需要建立一个安全完善的管理平台,能够使读者信息能够快速完整地自动记录在案,并且不能够随便被任何人非法窃取,这对学校和公司的读者信息管理都有着非常重要的作用。
1.2.3.[使用方面的可行性]
●用户单位的行政管理:自定
●工作制度:自定
●人员素质等能否满足要求:可以满足
从社会效益上看,随着技术的发展,采用软件管理图书馆日常工作,毫无疑问会在使用过程中产生新的需求和问题,这样也会不断地促进信息技术和软件应用的革新。
用哲学的思维分析可概括为软件应用促进技术进步,技术进步反作用于软件的应用,从而双方面同时促使社会不断朝前。
经过研究,此系统的用户无使用方面的问题。
第二章 需求分析
2.1 需求
2.1.1功能需求
2.1.1.1登录界面
为了方便进行管理,我们设置了一个登陆界面。
对于不同身份的人应该进入不同的管理界面。
因此将登陆界面分成了以下两个部分:
2.1.1.1.1 管理员登录
图书管理系统
用户个人信息管理
信息录入 信息查询 打印读者信息 信息修改与删除
图书才查询借阅退还管理
查询图书管理
借阅图书管理 读者登录模式 管理员信息管理
信息录入
信息查询
读者登录模式
信息修改与删除
图书信息管理
信息修改与删除 图书清单 新进图书
图书查询 退还图书管理
用户登录界面管理
管理员登录模式
2.1.1.1.2 用户登录 2.1.1.1.1 管理员登录 (1) 管理员信息
此模块包括管理员的姓名、密码、年龄和性别。
(2) 图书信息
此模块包括图书的类别、名称、作者、出报社、内容简介以及图书馆里的现有数量。
(3) 借阅图书
此模块包括借阅图书的用户、借阅的时间。
(4) 密码的更改
管理员可根据自己的喜好更改自己的登录密码。
2.1.1.1.2 用户登录 (1) 读者的信息
显示当前读者的个人信息。
(2) 图书的信息
此模块包括图书的类别、名称、作者、出报社、内容简介以及图书馆里的现有数量。
(3) 密码的更改
用户可以更改自己的登录的密码。
登录界面流程图
2.1.1.2 管理员信息管理
登 陆 界 面
管 理 员 登 陆 用 户 登 录
管理员信息
图书信息。
读者信息 图书信息。
对于图书馆管理员,客户和管理员要清楚的知道管理员的详细信息,比如管理员个人信息和所分配的工作时间等。
1.管理员姓名 2.管理员工号 3.管理员工作时间 4.管理员信息更新
管理员信息管理流程图
2.1.1.3 图书信息管理 2.1.1.
3.1图书清单
1.图书名
2.图书编号
3.类型
4.作者
5.已借出的本数
6.所剩本数
7.曾经借过此书的人和所借时间 2.1.1.3.2新进图书信息 2.1.1.3.3图书查询 (1) 按类型 (2) 按作者 (3)
按图书名
2.1.1.
3.4图书信息的更新及删除
对影碟信息进行修改,添加或删除。
管 理 员 信 息 管 理
管 理 员 姓 名
管
理 员 工 作 时 间
管 理 员 工 号
管
理 员 信 息 更 新
图书信息管理
图 书 清 图 书 查 新
进 图 书 图
书
信 息
图书信息管理流程图
2.1.1.4 用户信息管理
管理员和用户自己可以查看的基本信息,通过用户的信息便于管理员有效的管理用户的借阅信息,可以让自己了解自己的借阅情况。
2.1.1.4.1 个人基本信息
1. 学号
2. 姓名
3. 密码
4. 年龄
5. 性别
6. 生日
7. 电话号码 2.1.1.4.2 功能 1. 能借阅的书本数量 2. 已借书数量
3. 曾经借过的书及所借时间
4. 用户信息的更改 2.1.1.4.3 查询 1.管理查询
管理员可以查询图书馆里的藏书情况,用户的基本信息情况 2.用户查询
用户可以查询图书馆里的藏书情况和自己的借阅信息 2.1.1.4.4 注销和修改用户信息
用户信息管理流程图
2.1.1.5 图书借阅管理。
用 户 信 息 管 理 学生读者基本信息
功 能
查 询
姓
名
学
号
能
借阅的书本数量
已
借 书 数 量
用户信息的更改
管
理 员 查
询
用
户 查 询
2.1.1.5.1 图书借书管理
(1) 读者查询方式
按类型(如小说类、专业类、杂志类)或按出版日期等查询,系统给与提示,若按其中一种查询系统会给出这类查询的所有信息。
(2) 图书的借阅
查找到读者所需的书本,若该书没有被借阅或还有库存,则借阅成功,记录借阅的图书的基本信息,借阅的日期和借阅者的详细信息。
借书管理流程图
2.1.1.5.2 图书还书管理
(1)退还图书的详细信息
如退还信息,图书信息
(2)还书读者的详细信息
(3)罚款计算方式
设定归还期限,超过归还期限不退还图书者按超过天数增加借阅费用;若没有超期就无需罚款。
(4)赔偿方式
针对退还时图书损坏或丢失者,照原价赔偿。
图书还书管理
返
还
图书
信息
返
还
读
者
信
息
罚
款
计
算
方
式
赔
偿
方
式图书借书管理
读者查询方式图书的借阅
按类型按
出
版
日
期
借
阅
成
功
借
阅
失
败
还书管理流程图
2.1.2数据需求
总体E-R 属性图
图书属性图
图书信息
图书编号 定 价
ISBN 号
书 名
作 者
出版社
出版日期
书库
到馆日期
…
n
…
图书管理员
m
馆长
图书
管理
管理员ID
密码
图书ID
书名
用户
管理
…
用户ID
密码
借阅操作
图书事务处理
n
m
n
m
n
借阅信息属性图
用户信息属性图
2.1.3性能需求
[说明程序对运行时间、存储空间和计算精度的特殊要求] 2.1.3.1运行时间
a 用户登录请求、个人信息填写完毕后的提交、个人信息更改、删除的操
作,响应时间应该在1.5s 之内——用户不应感到系统有延迟的时间;
b 管理者对图书进行信息查询,返回记录在100行之内的,响应时间应不超过2s ,超过100行记录的情况,应该进行分页显示结果信息;
c 统计分析涉及的数据表众多且数据量大,统计分析时要求系统响应速度快。
2.1.
3.2存储空间
存储过程要是存储已经编译好并经过优化的放置于数据库服务器端SQL 语句,这些语句可供应用程序直接调用。
因为存储过程是为各功能模块提供商能的数据访问接口。
2.1.3.3计算精度
1、个人信息:真实,准确。
2、对图书和读者进行信息查询,应执行不完全匹配的模糊查询;
用 户 信 息
用户编号
所属年级 用户类别
姓 名
性 别
密 码 借 阅
编 号 书目编号 读者编号
借阅日期
应还日期
2.2 环境
2.2.1运行环境
描述运行软件系统所需的软、硬件环境。
2.2.1.1 软件环境:
操作系统:Windows XP,Windows Vista,Windows 7
数据库:Oracle 10g,
前台环境:Dreamweaver,Visual
2.2.1.2 硬件环境:
Cpu:Pentium 166 MHz 以上,内存至少128 MB,硬盘空间80 M,显示器800*600或更高分辨率。
数据库服务器硬件需求:
具有 Pentium III 处理器且满足以下要求的计算机:
最低 256MB 内存
最小 20 GB 硬盘
鼠标
键盘
接口:
系统之间不提供应用程序级别的接口,数据共享通过Oracle数据库表的公共访问来实现。
2.2.2开发环境
描述开发软件系统所需的软、硬件环境。
2.2.2.1 软件环境:
操作系统:Windows XP,Windows Vista,Windows 7
开发软件:本系统需用Oracle 10g和平台,以C#为编程语言。
.NET通过技术访问Oracle 10g数据库服务器中的资源。
提供了一组优化的访问数据库的专用对象,不论服务器使用何种数据库系统, 都提供相同的接口。
2.2.2.2 硬件环境:
Cpu: Pentium 166 MHz 以上,内存至少128 MB,硬盘空间80 M,显示器800*600
或更高分辨率。
数据库服务器硬件需求:
具有 Pentium III 处理器且满足以下要求的计算机:
最低 256MB 内存
最小 20 GB 硬盘
鼠标
键盘
接口:
系统之间不提供应用程序级别的接口,数据共享通过Oracle数据库表的公共访问来实现。
第三章 软件设计
3.1 总体设计
3.1.1 软件结构设计
《图书馆管理系统》总体结构设计
3.1.2 数据库设计
[将ERD 模型导成关系模型,并进行数据的规范化(达到3范式)。
最后以表单的形式给出数据库中的具体表的结构以及字段的说明。
设计数据库的索引,数据库的视图等对象。
表2-1 XX 表 字段名 类型 长度 约束 说明 XH Char 6 主键 学号 XM Char 20 姓名 … … … … …
对程序当中所采用的数据库相关的名称和标识符、在数据库当中的位置、定义、度量单位、格式和值域、敏感程度、数据项名、缩写词和代码,包括用于数据库的规格说明等进行定义。
] 3.1.3 其它
图书管理员
系统管理员
借书
还书
图书预定
查询读者信息
注销读者信息
修改读者信息
读者登记
系
统设置
管理员信息维
护信息统计查询
新书入库
查询图书信息
删除图书信息
修改图书信息
图书馆管理系统
登录系统
基本业务
图书管理
读者管理
系统管理
3.1.3.1 故障处理维护要求
a. 在数据访问、增改时,用户输入一些不合理的数据的时候,能够进行一些合理的提示信息,不能因为输入错误而导致系统的错误,或者窗口关闭;
b.数据库要求有备份机制,以防止数据的全部丢失;
3.1.3.2 安全保密要求
a.安全性
进行图书跟读者的信息查询和信息的修改,必须是已经登录的用户。
b.可扩充性
系统在开发完毕以后,应允许在后续的答辩中进行功能的扩展或者功能的重新解释和实现。
c.健壮性
系统应该保证在一次开机三个月之内稳定运行,数据库在一些事故中能够在系统安装好之后,两小时内恢复。
3.2 模块详细设计
3.2.1 读者模块设计
借阅者(borrower):主要以自助服务为主,读者通过客户端浏览器登录系统,进行一些权限之内的自主操作,服务器端对其操作进行反馈。
读者第一次登录系统需阅读图书馆管理系统操作手册,并按规定进行后续操作,以方便管理和操作。
读者在操作中遇到困难,可随时阅读我们的在线帮助手册,并可提交意见,以便我们对系统改进。
借阅者可在线进行以下操作:
a.查询图书信息(未登录也可)
b.修改自身资料
c.预定图书
d.对系统进行反馈(给出建议和意见)
借阅者的活动图
3.2.2图书管理员模块设计
图书管理员(Librarian):管理员需登录系统,经过系统认证后,获取对系统的操作权限。
图书管理员的操作一般是是由借阅者先提出请求,得到认可后完成请求,并将结果反馈给借阅者,是双方的一个互动的过程。
图书管理员一般可进行以下操作:
a.借书
b.还书
c.图书续借
d.超期罚款
图书管理员的活动图
3.2.3 馆长模块设计
馆长(Administrator):系统管理员具有系统操作的最高权限,其操作也具有不可逆性,所以系统管理员的操作一定要慎之又慎,以防对系统或数据产生致命性损坏。
系统管理员的操作一般是自主操作,当然有时也会收到图书管理员的一些操作请求,并给予其一定帮助,以保证图书管理员操作的效率。
系统管理员一般可进行以下操作:
a.图书管理:包括新书入库、修改图书信息、删除图书、查询图书信息等b.读者管理:包括读者登记、修改读者信息、读者注销、查询读者信息等c.数据库管理:包括数据库的备份和恢复等
d.系统设置:包括对系统信息的设置和图书管理员的管理等
馆长进行读者和图书信息维护的活动图
第四章系统实现4.1 登录模块
4.1.1模块界面
1.图书管理员和馆长的登陆
2.管理员窗口
3.馆长窗口
4.关于窗口
4.1.2功能说明
扼要说明本模块(或本组模块)的功能,需要输入/输出的数据项,描述输入数据的输入形式和验证手段,以及对界面操作过程需要特别注意的地方进行说明。
4.1.3原代码清单
1.登录窗口
private void button1_Click(object sender, EventArgs e)
{
bool isuser = false;
string message = "";
input();
if (logintype.Text.Trim() == "管理员")
{
if (input())
{
isuser = yanzhengUser(logintype.Text, loginid.Text, loginpwd.Text, ref message);
if (isuser)
{
Adminform adminform = new Adminform();
adminform.Show();
this.Hide();
}
else
{
MessageBox.Show(message, "登陆失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
if(logintype.Text.Trim()=="馆长")
{
if (input())
{
isuser = yanzhengUser(logintype.Text, loginid.Text, loginpwd.Text, ref message);
if (isuser)
{
ManagerForm managerform = new ManagerForm();
managerform.Show();
this.Hide();
}
else
{
MessageBox.Show(message, "登陆失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
}}}}
private bool input()
{
if(loginid.Text.Trim()== "")
{
MessageBox.Show("请输入用户名");
loginid.Focus();
return false;
}
else if(loginpwd.Text.Trim()=="")
{
MessageBox.Show("请输入密码");
loginpwd.Focus();
return false;
}
else if (logintype.Text.Trim() == "")
{
MessageBox.Show("请选择类型");
return false;
}
else
{
return true;
}}
public bool yanzhengUser(string logintype, string loginid, string loginpwd,ref string message)
{
int count = 0;
bool isuser = false;
if(logintype=="管理员")
{
string sql = string.Format("select count(*) from Madmin where mName='{0}'and mPwd='{1}'",loginid,loginpwd);
try
{
SqlCommand command = new SqlCommand(sql,DBHelper.connection);
DBHelper.connection.Open();
count = (int)command.ExecuteScalar();
if (count == 1)
{
isuser = true;
}
else
{
message="用户名或密码错误";
isuser=false;
}
}
catch(Exception ex)
{
message=ex.Message;
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
}
}
if (logintype == "馆长")
{
string sql = string.Format("select count(*) from Madmin where mName='{0}'and mPwd='{1}'", loginid, loginpwd);
try
{
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
DBHelper.connection.Open();
count = (int)command.ExecuteScalar();
if (count == 1)
{
isuser = true;
}
else
{
message = "用户名或密码错误";
isuser = false;
}
}
catch (Exception ex)
{
message = ex.Message;
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
}
}
return isuser ;
}
2.管理员窗口
private void tsmiAddStudent_Click(object sender, EventArgs e)
{
AddSdReader addSdReader = new AddSdReader();
addSdReader.ShowDialog();
}
private void tsmiAddTeacher_Click(object sender, EventArgs e)
{
AddTcReader addTcReader = new AddTcReader();
addTcReader.ShowDialog();
}
private void tsmiUpdateStudent_Click(object sender, EventArgs e) {
SelectSdReader selectSdReader = new SelectSdReader();
selectSdReader.ShowDialog();
}
private void tsmiUpdateTeacher_Click(object sender, EventArgs e) {
SelectTcReader selectTcReader = new SelectTcReader();
selectTcReader.ShowDialog();
}
private void tsmiAddBook_Click(object sender, EventArgs e)
{
Addnewbook addnewbook = new Addnewbook();
addnewbook.ShowDialog();
}
private void tsmiUpdateBook_Click(object sender, EventArgs e)
{
Updatebook updatebook = new Updatebook();
updatebook.ShowDialog();
}
private void tsmiAboat_Click(object sender, EventArgs e)
{
AboutForm aboutform = new AboutForm();
aboutform.ShowDialog();
}
private void bkborrowtc_Click(object sender, EventArgs e)
{
bkborrow bkborrow = new bkborrow();
bkborrow.ShowDialog();
}
private void bkbacktc_Click(object sender, EventArgs e)
{
bkback bkback = new bkback();
bkback.ShowDialog();
}
3.馆长窗口
private void tsbtnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void tsmiSystem_Click(object sender, EventArgs e)
{
SystemForm systemForm = new SystemForm();
systemForm.ShowDialog();
}
private void tsmiAddAdmin_Click(object sender, EventArgs e)
{
AddAdmin addAdmin = new AddAdmin();
addAdmin.ShowDialog();
}
private void tsmiSelectAdmin_Click(object sender, EventArgs e)
{
SelectAdmin selectAdmin = new SelectAdmin();
selectAdmin.ShowDialog();
}
private void tsmiAboat_Click(object sender, EventArgs e)
{
AboutForm aboutform = new AboutForm();
aboutform.ShowDialog();
}
private void ManagerForm_FormClosed(object sender, FormClosedEventArgs e) {
Application.Exit();
}
4.关于窗口
int index = 0;
private void timer_Tick(object sender, EventArgs e)
{
if (index < ilAnimation.Images.Count - 1)
{
index++;
}
else
{
index = 0;
}
picAnimation.Image = ilAnimation.Images[index];
}
4.2 添加信息管理模块
4.2.1模块界面
1.新增图书窗口
2.创建学生读者信息窗口
3.创建教师读者信息窗口
4.新增管理员窗口
4.2.2 功能说明
4.2.3 原代码清单
1.新增图书窗口
private bool ValidatInput()
{
if (txtName.Text == "")
{
MessageBox.Show("请输入职工号", "输入提示", MessageBoxButtons.OK, rmation);
txtName.Focus();
return false;
}
if (txtPassword.Text == "")
{
MessageBox.Show("请输入密码", "输入提示", MessageBoxButtons.OK, rmation);
txtPassword.Focus();
return false;
}
if (txtpswAgain.Text == "")
{
MessageBox.Show("请输入确认密码", "输入提示", MessageBoxButtons.OK, rmation);
txtpswAgain.Focus();
return false;
}
if (!(txtPassword.Text == txtpswAgain.Text))
{
MessageBox.Show("两次输入不一致", "输入提示", MessageBoxButtons.OK, rmation);
txtpswAgain.Focus();
return false;
}
if (txtAge.Text == "")
{
MessageBox.Show("请输入读者姓名", "输入提示", MessageBoxButtons.OK, rmation);
txtAge.Focus();
return false;
}
if (!rdoMale.Checked && rdoFemale.Checked)
{
MessageBox.Show("请选择读者性别", "输入提示", MessageBoxButtons.OK, rmation);
rdoMale.Focus();
return false;
}
if (txtTel.Text == "")
{
MessageBox.Show("请输入读者姓名", "输入提示", MessageBoxButtons.OK, rmation);
txtAge.Focus();
return false;
}
return true;
}
private void btnSave_Click(object sender, EventArgs e)
{
if (ValidatInput())
{
string name = txtName.Text;
string pwd = txtPassword.Text;
string sex = rdoMale.Checked ? rdoMale.Text : rdoFemale.Text;
string number = txtTel.Text;
string age = txtAge.Text;
string sql = string.Format("INSERT INTO
Madmin(mName,mPwd,mAge,mSex,mNumber)VALUES(\'{0}\',\'{1}\',\'{2}\' , \'{3}\',\'{4}\')",
name, pwd, age,sex, number);
try
{
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
DBHelper.connection.Open();
int result = command.ExecuteNonQuery();
if (result < 1)
{
MessageBox.Show("添加失败!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("添加成功!", "操作提示", MessageBoxButtons.OK, rmation);
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("操作数据库出错!", "操作演示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
}}}
2.创建学生读者信息窗口
private bool ValidatInput()
{
if (txtReaderName.Text == "")
{
MessageBox.Show("请输入用户名", "输入提示", MessageBoxButtons.OK, rmation);
txtReaderName.Focus();
return false;
}
if (txtPassword.Text == "")
{
MessageBox.Show("请输入密码", "输入提示", MessageBoxButtons.OK, rmation);
txtPassword.Focus();
return false;
}
if (txtpswAgain.Text == "")
{
MessageBox.Show("请输入确认密码", "输入提示", MessageBoxButtons.OK, rmation);
txtpswAgain.Focus();
return false;
}
if (!(txtPassword.Text == txtpswAgain.Text))
{
MessageBox.Show("两次输入不一致", "输入提示", MessageBoxButtons.OK, rmation);
txtpswAgain.Focus();
return false;
}
if (txtName.Text == "")
{
MessageBox.Show("请输入读者姓名", "输入提示", MessageBoxButtons.OK, rmation);
txtName.Focus();
return false;
}
if (!rdoMale.Checked && rdoFemale.Checked)
{
MessageBox.Show("请选择读者性别", "输入提示", MessageBoxButtons.OK, rmation);
rdoMale.Focus();
return false;
}
return true;
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnSave_Click(object sender, EventArgs e)
{
if (ValidatInput())
{
string sno = txtReaderName.Text;
string name = txtName.Text;
string pwd= txtPassword.Text;
string sex = rdoMale.Checked ? rdoMale.Text : rdoFemale.Text;
string number = txtTel.Text;
string mail=txtEmail.Text;
string adress=txtAddress.Text;
string grade = cboGrade.SelectedText;
string cboclass = cboClass.SelectedText;
string sql = string.Format("INSERT INTO
Reader(rSno,rName,rPwd,rSex,rNumber,rEmail,rAdress,rGrade,rClass)VALUES(\'{0}\',\'{1}\',\'{2 }\',\'{3}\',\'{4}\',\'{5}\',\'{6}\',\'{7}\',\'{8}\')",
sno, name, pwd, sex, number, mail, adress, grade, cboclass);
try
{
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
DBHelper.connection.Open();
int result = command.ExecuteNonQuery();
if (result < 1)
{
MessageBox.Show("添加失败!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("添加成功!", "操作提示", MessageBoxButtons.OK, rmation);
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("操作数据库出错!", "操作演示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
}}}
3.创建教师读者信息窗口
private bool ValidatInput()
{
if (txtReaderName.Text == "")
{
MessageBox.Show("请输入职工号", "输入提示", MessageBoxButtons.OK, rmation);
txtReaderName.Focus();
return false;
}
if (txtPassword.Text == "")
{
MessageBox.Show("请输入密码", "输入提示", MessageBoxButtons.OK, rmation);
txtPassword.Focus();
return false;
}
if (txtpswAgain.Text == "")
{
MessageBox.Show("请输入确认密码", "输入提示", MessageBoxButtons.OK, rmation);
txtpswAgain.Focus();
return false;
}
if (!(txtPassword.Text == txtpswAgain.Text))
{
MessageBox.Show("两次输入不一致", "输入提示", MessageBoxButtons.OK, rmation);
txtpswAgain.Focus();
return false;
}
if (txtName.Text == "")
{
MessageBox.Show("请输入读者姓名", "输入提示", MessageBoxButtons.OK, rmation);
txtName.Focus();
return false;
}
if (!rdoMale.Checked && rdoFemale.Checked)
{
MessageBox.Show("请选择读者性别", "输入提示", MessageBoxButtons.OK, rmation);
rdoMale.Focus();
return false;
}
return true;
}
private void btnSave_Click(object sender, EventArgs e)
{
if (ValidatInput())
{
string sno = txtReaderName.Text;
string name = txtName.Text;
string pwd = txtPassword.Text;
string sex = rdoMale.Checked ? rdoMale.Text : rdoFemale.Text;
string number = txtTel.Text;
string mail = txtEmail.Text;
string adress = txtAddress.Text;
string sql = string.Format("INSERT INTO
Teacher(tId,tName,tPwd,tSex,tNumber,tEmail,tAdress)VALUES(\'{0}\',\'{1}\',\'{2}\' ,
\'{3}\',\'{4}\',\'{5}\',\'{6}\')",
sno, name, pwd, sex, number, mail, adress);
try
{
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
DBHelper.connection.Open();
int result = command.ExecuteNonQuery();
if (result < 1)
{
MessageBox.Show("添加失败!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("添加成功!", "操作提示", MessageBoxButtons.OK, rmation);
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("操作数据库出错!", "操作演示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
}}}
4.新增管理员窗口
private bool ValidatInput()
{
if (textBox1.Text == "")
{
MessageBox.Show("请输入图书编号", "输入提示", MessageBoxButtons.OK, rmation);
textBox1.Focus();
return false;
}
if (textBox2.Text == "")
{
MessageBox.Show("请输入图书名称", "输入提示", MessageBoxButtons.OK, rmation);
textBox2.Focus();
return false;
}
if (textBox3.Text == "")
{
MessageBox.Show("请输入图书数目", "输入提示", MessageBoxButtons.OK, rmation);
textBox3.Focus();
return false;
}
return true;
}
private void btnok_Click(object sender, EventArgs e)
{
if (ValidatInput())
{
string id = textBox1.Text;
string name = textBox2.Text;
string Number = textBox3.Text;
string sore = comboBox1.SelectedText;
FileStream fs = new FileStream(ofdImage.FileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] byteImage = br.ReadBytes((int)fs.Length);
string sql = String.Format("insert into
Bmanage(bookId,bookName,bookNumber,bookSore,bookPhoto)values(\'{0}\',\'{1}\',\'{2}\',\'{3}\' ,\'{4}\')",
id, name, Number, sore, byteImage);
try
{
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
DBHelper.connection.Open();
int result = command.ExecuteNonQuery();
if (result < 1)
{
MessageBox.Show("添加失败!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("添加成功!", "操作提示", MessageBoxButtons.OK, rmation);
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("操作数据库出错!", "操作演示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
}}}
4.3 图书管理员模块
4.3.1模块界面
1.系统管理员的查找及修改窗口
2.学生读者的查找及修改窗口
3.教师读者的查找及修改窗口
4.图书的查找及修改窗口
4.3.2 功能说明
4.3.3原代码清单
1.管理员的查找及修改窗口
//查找管理员
private void FillListView()
{
string name;
string sex;
string age;
string tel;
string sql = string.Format("select mName,mSex,mAge,mNumber from Madmin where mName like \'%{0}%\'", txtReaderName.Text);
try
{
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
DBHelper.connection.Open();
SqlDataReader dataReader = command.ExecuteReader();
lvClerk.Items.Clear();
if (!dataReader.HasRows)
{
MessageBox.Show("抱歉,没有您要找的用户!", "结果提示", MessageBoxButtons.OK, rmation);
}
else
{
while (dataReader.Read())
{
name = dataReader["mName"].ToString();
sex = dataReader["mSex"].ToString();
age = dataReader["mAge"].ToString();
tel = dataReader["mNumber"].ToString();
ListViewItem lviClerk = new ListViewItem(name);
lviClerk.Tag = (string)dataReader["mName"];
lvClerk.Items.Add(lviClerk);
lviClerk.SubItems.AddRange(new string[] {sex, age, tel });
}
}
dataReader.Close();
}//连接数据库,将数据读取出放入lvAdmin
catch (Exception ex)
{
MessageBox.Show("查询数据库出错!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
}
}
//实现查找功能
private void btnSearch_Click(object sender, EventArgs e)
{
if (txtReaderName.Text == "")
{
MessageBox.Show("请输入管理员名", "输入提示", MessageBoxButtons.OK, rmation);
txtReaderName.Focus();
}
else
{
FillListView();//调用函数
}
}
//实现修改功能
private void btnUpdata_Click(object sender, EventArgs e)
{
string bookid = textBox1.Text;
string bookname = textBox2.Text;
string booknumber = textBox3.Text;
string booksore = textBox4.Text;
string b=txtReaderName.Text;
int a;
string sql = string.Format("UPDATE Madmin SET
mName={0},mSex={1},mAge={2},mNumber={3} where mName={4}", bookid, bookname, booknumber, booksore,b);
try
{
DBHelper.connection.Open();
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
a = command.ExecuteNonQuery();
if (a == 0)
{
MessageBox.Show("管理员信息不存在!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("修改已成功");
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("操作数据库出错!", "操作演示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
}}
2.学生读者的查找及修改窗口
//查找学生读者
private void FillListView()
{
string sno;
string name;
string sex;
string number;
string email;
string adress;
string grade;
string rclass;
string sql = string.Format("select
rSno,rName,rSex,rAdress,rNumber,rEmail,rGrade,rClass from Reader where rName like \'%{0}%\'", txtReaderName.Text);
try
{
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
DBHelper.connection.Open();
SqlDataReader dataReader = command.ExecuteReader();
lvStudent.Items.Clear();
if (!dataReader.HasRows)
{
MessageBox.Show("抱歉,没有您要找的用户!", "结果提示", MessageBoxButtons.OK, rmation);
}
else
{
while (dataReader.Read())
{
sno = (string)dataReader["rSno"];
name = (string)dataReader["rName"];
sex = (string)dataReader["rSex"];
adress = dataReader["rAdress"].ToString();
number = dataReader["rNumber"].ToString();
email = dataReader["rEmail"].ToString();
grade = dataReader["rGrade"].ToString();
rclass = dataReader["rClass"].ToString();
ListViewItem lviStudent = new ListViewItem(name);
lviStudent.Tag = (string)dataReader["rSno"];
lvStudent.Items.Add(lviStudent);
lviStudent.SubItems.AddRange(new string[] { name, sex, number, email, adress, grade, rclass });
}
}//连接数据库,将数据读取出放入lvStudent
dataReader.Close();
}
catch (Exception ex)
{
MessageBox.Show("查询数据库出错!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
}
}
//实现查找功能
private void btnSearch_Click(object sender, EventArgs e)
{
if (txtReaderName.Text == "")
{
MessageBox.Show("请输入读者名", "输入提示", MessageBoxButtons.OK, rmation);
txtReaderName.Focus();
}
else
{
FillListView();
}
}
//实现修改功能
private void btnUpdata_Click(object sender, EventArgs e)
{
string sno = textBox1.Text ;
string name = textBox2.Text ;
string sex=textBox3.Text;
string number=textBox4.Text;
string email=textBox5.Text;
string adress=textBox6.Text;
string grade=textBox7.Text;
string rclass=textBox8.Text;
string b = txtReaderName.Text;
int a;
string sql = string.Format("UPDATE Reader SET
rSno={0},rName={1},rSex={2},rAdress={3},rNumber={4},rEmail={5},rGrade={6},rClass={7} where rName={8}", sno, name, sex, adress, number, email, grade, rclass,b);
try
{
DBHelper.connection.Open();
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
a = command.ExecuteNonQuery();
if (a == 0)
{
MessageBox.Show("读者信息不存在!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("修改已成功");
this.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("操作数据库出错!", "操作演示", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine(ex.Message);
}
finally
{
DBHelper.connection.Close();
} }
3.教师读者的查找及修改窗口
//查找教师读者
private void FillListView()
{
string sno;
string name;
string sex;
string number;。