大作业报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北科技学院
《程序设计》大作业
班级: 电商B112 姓名: 赵世明学号:201104064223
设计题目:
评语:____________________________________ _____________________________________________
_____________________________________________
_________________________________________
_____________________________________________
评阅成绩: ___________ 评阅教师: ___________
目录
1 引言 (3)
1.1设计选题 (3)
1.2设计的目的 (3)
1.3本选题的设计背景 (3)
2 系统分析与设计 (3)
2.1 系统功能需求分析 (3)
2.2 系统功能模块设计 (4)
2.3 系统开发运行环境 (5)
3 数据库设计 (5)
4 模块详细设计与实现 (9)
4.1 登录模块 (9)
4.2管理员设置模块 (10)
4.3读者档案管理 (12)
4.4图书借还模块 (14)
4.5图书借阅档案查询模块 (19)
4.6 更改口令模块 (21)
结论 (24)
参考文献 (25)
1 引言
1.1设计选题
《图书借阅管理系统》
1.2设计的目的
通过本设计,掌握使用技术进行网络程序设计的基本知识,如:服务器控件、内部对象、数据库建立、数据库的读取、数据显示等;熟悉网络程序设计每个步骤中的任务和实施方法,并加深对C#语言的理解。
通过设计一个图书借阅管理系统,进一步熟悉网络环境下的程序设计方法,综合训练动手能力,提高分析问题、解决实际问题的能力。
也同时了解图书借阅的一个较为整体和全面的过程。
1.3本选题的设计背景
开发这个小图书管理系统是为了进一步提高图书信息管理的效率和质量,通过学习这门课程将理论运用到实践。
实现信息管理的系统化、规范化、自动化只需一到二名管理员即可操作系统,节省大量人力;可以迅速查到所需信息。
完成图书管理的操作。
图书馆管理系统是公司企业文化不可缺少的部分,对学校来说,更是必不可少。
所以图书馆管理系统应该能够为用户提供充足的信息和快捷的查询手段。
传统人工的方式管理图书已经不能满足这种需求,传统管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
因此此时建立一个计算机数据化的图书借阅管理系统非常有必要。
2 系统分析与设计
2.1 系统功能需求分析
本系统主要是对管学生信息进行理。
系统根据用户权限的不同,分为学生用户、教师用户、管理员用户。
系统包括如下功能:
(1)学生用户实现如下功能:
界面设计友好、美观,数据存储安全、可靠。
用户注册:实现管理员或者学生信息的注册,信息录入能实现客户端填写验证。
登录:用户登录到本系统。
修改个人信息:用户登录后,可以修改个人的信息,如:密码,联系方式等。
查询图书信息:按分类查询,以及按照关键字查询,实现按学号图书类别,条形码类别级等多种方式的查询。
借书:学生用户借书时限为如60天(可更改)。
教师用户借书时限为六个月(可更改)。
还书:用户归还图书,归还后可以查看用户归还图书情况。
可以查看还有哪些书没有归还。
(2)管理员用户要求实现如下功能:
登录:管理员登录到本系统。
修改个人密码:管理员登录后,可以修改管理员密码。
管理用户:对学生的基本信息进行添加、修改、删除。
管理图书:录入图书信息,包括图书名称,单价,出版社,出版日期等。
修改及删除图书信息。
操作成功给出信息提示。
查询图书信息:提供学生借阅基本信息的查询功能。
管理借阅信息:借阅记录信息的管理。
2.2 系统功能模块设计
通过对系统进行需求分析得到,系统主要包括七大功能模块,分别是系统设置,读者管理,图书管理,图书借还,系统查询。
功能模块图如下图所示:
2.3 系统开发运行环境
本系统开发平台: + ACCESS
本系统运行环境:Windows XP或以上版本(安装IIS5.0以上版本)
3 数据库设计
系统选用ACCESS数据库,根据系统功能需求分析,共建立10个数据表,分别是管理员权限表,图书借阅信息表,书架信息表,图书信息表,读者信息表,读者类型表,用户信息表,图书信息一览表。
管理员权限表(tb_admSet):用于设置不同用户管理员的权限。
其结构如下所示:字段名称数据类型是否主键默认值功能描述
是null 管理员名
userName varchar(10
0)
systemSet 是/否否Null 系统设置readerManage 是/否否Null 读者设置bookManage 是/否否Null 书目设置
图书借阅信息表tb_bookBorrow:用于设置不同用户管理员的权限。
其结构如下所示:
书架信息表tb_bookcase:用于设置书架编号和位置。
其结构如下所示:
图书信息表:用于显示图书信息,其结构如下所示:
图书类型tb_bookType用于显示图书类型,其结构如下所示:
读者信息表tb_readerInfo:用于显示读者信息,其结构如下所示:
读者类型表tb_readerType:用于显示读者类型,其结构如下所示:
添加用户表tb_user用于管理员对用户进行添加,其结构如下所示:
userPwd varchar(80) 否Null 用户密码
4 模块详细设计与实现
4.1 登录模块
登陆模块,主要实现不同操作权限的用户信息的登录。
设计思路:用户登录图书馆管理系统后,进入图书馆主界面,在此界面中,可看到图书借阅排行榜,通过排行榜可以看出借阅图书的名称、图书类型、借阅
次数等相关信息。
其运行界面图如下所示:
运行“entry.aspx”文件,进入登录界面,如上图所示,管理员登录用户名为赵世明,密码为111,选择“确定”单选按钮,进入程序主界面。
界面设计运用的关键技术说明:运用验证控件,script脚本等技术,以及添加背景图片等设计是的页面美观,可用性强。
登录模块关键程序代码如下:
if (!IsPostBack)
{
Session["userName"] = null;
}
}
protected void btnEntry_Click(object sender, EventArgs e)
{
string userName = txtName.Text;
string Pwd = txtPwd.Text;
string sql = "select * from tb_user where userName='" + userName + "' and userPwd='" + Pwd + "'";
if (dataOperate.seleSQL(sql) > 0)
{
Session["userName"] = txtName.Text;
Response.Redirect("index.aspx");
}
else
{
RegisterStartupScript("", "<script>alert('登录失败!')</script>");
}
4.2管理员设置模块
管理员设置模块:本程序有两种操作权限:管理员和读者。
两者分别具有不同的操作权限。
以及对书架的设置。
其运行界面图如下所示:
选择“系统设置”/“管理员设置”命令,进入管理员设置页面,所示,在这里可以添加、删除管理员,及设置管理员的操作权限。
界面设计运用的关键技术说明:运用绑定数据控件进行一系列的操作,同时
设计了提示框,返回页面,是的彼此页面相互关联,美观联系性强。
管理员权限设置模块关键程序代码如下:
string sql = "select * from tb_admSet";
gvAdmSet.DataSource = dataOperate.getDataset(sql, "tb_admSet");
//获取数据源
gvAdmSet.DataKeyNames=new string[] {"userName"}; //设置主键字段
gvAdmSet.DataBind();
//绑顶GridView控件显示管理员信息
}
protected void gvAdmSet_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string userName =
this.gvAdmSet.DataKeys[e.RowIndex].Value.ToString(); //获取主键字段
string sql = "delete from tb_admSet where userName='" + userName
+ "'";
dataOperate.execSQL(sql);
//删除管理员信息
bindUerManage();
//重新绑定管理员信息
}
public bool getSet()
{
string userName = Session["userName"].ToString(); //获取管理员登录名
string sql = "select * from tb_admSet where userName='" + userName
+ "'";
OleDbDataReader sdr = dataOperate.getRow(sql);
sdr.Read();
//读取一条记录
return Convert.ToBoolean(sdr["systemSet"]); //返回是否拥有权限
}
4.3读者档案管理
该模块包括读者类型管理和读者档案管理。
对读者类型进行修改和删除。
以
及对读者信息进行控制。
其运行界面图如下所示:
选择“读者管理”/“读者档案管理”命令,进入读者档案管理页面,在
这里可以添加、修改、删除读者信息,读者只具有系统查询权限。
界面设计运用的关键技术说明:运用gridview控件绑定数据源,进行相关
操作,自动生成insert,update,delete语句。
完成对信息的有效控制。
读者档案管理模块关键程序代码如下:
string userName = Session["userName"].ToString(); //获取管理员登录名
string sql = "select * from tb_admSet where userName='" + userName
+ "'";
OleDbDataReader sdr = dataOperate.getRow(sql);
sdr.Read();
//读取一条记录
return Convert.ToBoolean(sdr["systemSet"]); //返回是否拥有权限
}
protected void gvBookType_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string id = gvBookType.DataKeys[e.RowIndex].Value.ToString();
string seSql = "select count(*) from tb_bookInfo where bookType="
+ id;
if (dataOperate.seleSQL(seSql) <=0)
{
string sql = "delete tb_bookType where typeID=" + id;
dataOperate.execSQL(sql);
bindBookType();
}
else
RegisterStartupScript("", "<script>alert('不可以删除!
')</script>");
读者信息管理页面代码:
string userName = Session["userName"].ToString(); //获取管理员登录名
string sql = "select * from tb_admSet where userName='" + userName
+ "'";
OleDbDataReader sdr = dataOperate.getRow(sql);
sdr.Read();
//读取一条记录
return Convert.ToBoolean(sdr["readerManage"]); //返回是否拥有权限
}
protected void gvReaderInfo_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string id = gvReaderInfo.DataKeys[e.RowIndex].Value.ToString();
string sql = "delete tb_readerInfo where readerBarCode='" + id
+ "'";
dataOperate.execSQL(sql);
bindReaderInfo();
4.4图书借还模块
该模块中选择“图书借还”/“图书借阅”命令,进入图书借阅界面,如图
所示。
在这里我们可以通过详细的读者条码,姓名,性别,以及证件号码可以查
到读者借阅图书的详细信息。
其运行界面如图:
点击借阅后:
图书归还:
界面设计运用的关键技术说明:运用绑定数据控件绑定到数据表borrow表,获取相关字段信息,同时设计了提示框,返回页面,确保是否成功借阅归还。
图书借还模块关键程序代码如下:
图书借阅模块:
if (Convert.ToInt32(txtNum.Text.Trim()) > 0) //判断读者是否还可以借书
{
if (txtBookBarCode.Text.Trim() != "") //判断图书条形码是否为空
{
string bookBarCode = txtBookBarCode.Text; //获取图书条形码
//创建SQL语句在图书信息表中查询符合图书条形码条件的记录
string sql = "select * from tb_bookInfo where bookBarCode='" + bookBarCode + "'";
DataSet ds=dataOperate.getDataset(sql,"tb_bookInfo"); if(ds.Tables["tb_bookInfo"].DefaultView.Count>0)
{
gvBookBorrow.DataSource = ds.Tables["tb_bookInfo"].DefaultView; //获取数据源
gvBookBorrow.DataKeyNames = new string[] { "bookBarCode" }; //设置主键
gvBookBorrow.DataBind(); //绑定GridView控件
}else
RegisterStartupScript("","<script>alert('图书条形码错误!')</script>");
}
else
{
RegisterStartupScript("", "<script>alert('图书条形码
不能为空')</script>");
}
}
else
{
RegisterStartupScript("", "<script>alert('借阅数量已满!不
可以再借阅')</script>");
}
}else
RegisterStartupScript("", "<script>alert('请先输入正确的读者条形
码!')</script>");
}
protected void gvBookBorrow_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{ //设置图书类型
string bookType = e.Row.Cells[1].Text.ToString(); //获取图书类型编号
//创建SQL语句在图书类型表中查询符合图书类型编号条件的记录
string typeSql = "select * from tb_bookType where TypeID="
+ bookType;
OleDbDataReader typeSdr = dataOperate.getRow(typeSql);
typeSdr.Read();
//读取一条记录
e.Row.Cells[1].Text = typeSdr["typeName"].ToString();
//显示图书类型
e.Row.Cells[5].Text = typeSdr["borrowDay"].ToString();
//显示图书可借天数
}
}
protected void gvBookBorrow_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
//获取选中图书条形码
string bookBarCode = gvBookBorrow.DataKeys[e.NewSelectedIndex].Value.ToString();
//创建SQL语句使用内联接连接条件为图书类型编号,查询条件为符合
图书条形码的记录
string sql = "select * from tb_bookInfo as a inner join
tb_bookType as b on a.bookType=b.typeID where a.bookBarCode='" +
bookBarCode + "'";
OleDbDataReader sdr = dataOperate.getRow(sql); //获取图书信息
sdr.Read();
//读取一条记录
int borrowDay = Convert.ToInt32(sdr["borrowDay"]); //获取借阅天数
string bookName = sdr["bookName"].ToString(); //获取图书名称
string borrowTime = DateTime.Now.Date.ToShortDateString(); //获取借阅日期
string readerBarCode = txtReaderBarCode.Text; //获取读者条形码
string returnTime =
DateTime.Now.Date.AddDays(borrowDay).ToShortDateString(); //获取应
还日期
string readerName = txtReaderName.Text; //获取读者姓名
//创建SQL语句将图书借阅信息添加到图书借阅信息表中
string addSql = "insert into tb_bookBorrow values('" +
bookBarCode + "','" + bookName + "','" + borrowTime + "','" + returnTime
+ "','" + readerBarCode + "','" + readerName + "',0)";
图书归还模块:
//获取当前选择图书条形码
string bookBarCode = gvBookReturn.DataKeys[e.NewSelectedIndex].Value.ToString();
//创建SQL语句更新图书借阅表中是否归还字段
string updateSql = "update tb_bookBorrow set isReturn=1 where
bookBarCode='" + bookBarCode + "'and readerBarCode='" + txtReaderBarCode.Text + "'";
if (dataOperate.execSQL(updateSql)) //判断是否归还成功
{
RegisterStartupScript("", "<script>alert('归还成功!
')</script>");
gvBookReturn.DataSource = null; //将GridView控件数据源
设置为空
gvBookReturn.DataBind(); //绑定GridView控件
txtBookBarCode.Text = null; //将显示图书条形码设置
为空
}
else
{
RegisterStartupScript("", "<script>alert('归还失败!')</script>");
}
}
4.5图书借阅档案查询模块
该模块主要为图书档案进行查询,用户可以根据条形码,书名,书的类别以及出版社或作者进行查询。
设计思路:根据图书的条形码,图书类别,图书的名,图书的作者,图书的出版社的绑定进行查询,然后根据绑定的内容输入相对应的条件进行查询。
其运行界面图如下所示:
界面设计运用的关键技术说明:通过d“DropDownList”控件可让用户从预定义的下拉列表中选择一项。
有关“DropDownList”控件的所有属性的完整。
控件绑定数据源,点选相应下拉选项时,即可在下方显示出相应数据。
程序代码运用的关键技术说明:主要运用select语句从相应数据表获取相关数据。
相互关联,显示出设计效果。
图书借阅档案查询模块关键程序代码如下:
//自定义方法绑定图书类型
public void bindBookType()
{
string typeSql = "select * from tb_bookType";
ddlBookType.DataSource = dataOperate.getDataset(typeSql);
ddlBookType.DataTextField = "typeName";
ddlBookType.DataValueField = "typeID";
ddlBookType.DataBind();
}
//判断是否显示图书类型
protected void ddlCondition_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlCondition.SelectedValue.Trim() == "bookType")
{
txtKey.Visible = false;
ddlBookType.Visible = true;
RequiredFieldValidator1.Visible = false;
bindBookType();
}
else
{
txtKey.Visible = true;
RequiredFieldValidator1.Visible = true;
ddlBookType.Visible = false;
}
}
//查找搜索的图书信息
protected void btnSearch_Click(object sender, EventArgs e)
{
string Condition = ddlCondition.Text;
string key = "";
if (ddlBookType.Visible)
{
key = ddlBookType.SelectedValue;
}
else
key = txtKey.Text;
sql = "select * from view_bookInfo where " + Condition + " like '%" + key + "%'";
bindBookInfo(sql);
txtKey.Text = "";
}
public void bindBookInfo(string sql)
{
gvBookInfo.DataSource = dataOperate.getDataset(sql);
gvBookInfo.DataBind();
}
//绑定显示图书类型和书架
4.6 更改口令模块
该模块通过单击“更改口令”按钮,对当前的用户密码进行修改操作。
分析设计思路:通过更新管理员,用户的密码,得以更改口令。
界面设计运用的关键技术说明:密码验证控件,表单,以及脚本提示框
程序代码运用的关键技术说明:从数据库的表格里获取用户的密码和用户名使用update语句进行更新。
更改口令模块关键程序代码如下:
string sql="select * from tb_user where userName='"+Session["userName"].ToString()+"'";
OleDbDataReader sdr=dataOperate.getRow(sql);
sdr.Read();
if (txtOldPass.Text == sdr["userPwd"].ToString())
{
string upSql = "update tb_user set userPwd='" + txtNewPass.Text + "' where userName='"+Session["userName"].ToString()+"'";
if (dataOperate.execSQL(upSql))
{
RegisterStartupScript("", "<script>alert('更新成功!')</script>");
}
else
RegisterStartupScript("", "<script>alert('更新失败!')</script>");
}
else
RegisterStartupScript("", "<script>alert('原始密码输入错误')</script>");
}
结论
经过了将近三周时间不懈的努力,自己的的图书管理系统终于完成了,觉得很有成就感。
在这段时间里,学到了很多东西。
对这门课程又有了很多新的理解。
在这个小图书借阅管理系统中实现了界面设计友好、美观,数据存储安全、可靠。
基本信息设置保证了图书信息和读者信息的分类管理。
强大的查询功能,保证数据查询的灵活性。
实现对图书借阅、续借、归还过程的全程数据信息跟踪。
设置了读者借阅和图书借阅排行榜,为图书馆管理提供了真实的数据信息。
提供管理员修改自己密码的功能,保证系统的安全性。
提供灵活、方便的权限设置功能,使整个系统的管理分工明确。
采用人机对话的操作方式,方便管理员的日常操作。
系统最大限度地实现了易维护性和易操作性。
当然虽然近最大的努力去做了这个系统,但是还有一些存在的不足之处:不能实现过于全面的功能,比如读者对于在线资源,图书光盘的下载这一方面还没有实现等。
系统设计还不是够理想够美观。
在今后会利用所学知识逐步完善这些。
在这段时间中,我重新学习编程技巧,阅读相关图书和老师的ppt。
弄懂相关代码的含义。
根据老师对我所做的图书管理系统要求,整理思路,认真构思系统的整体结构和每个模块的功能实现。
同时建立数据库,并对每个模块进行详细地设计。
在设计的过程中,遇到好多麻烦,好多不懂的知识,通过积极翻阅书籍和请教老师以及各种的qq技术交流群和他们讨论出错原因,寻求解决的方法。
学到了很多调试代码以及整体设计思路。
尤其利用GridView控件最为常用。
在操作数据库的时候为了及时查看数据库信息,可以利用GridView 控件显示数据库信息,相关设置可以根据相应向导进行简单选择就可以了。
如果要利用GridView来显示你所需要的信息,而不是全部信息的时候,可以在控件向导中定义SQL语句。
通过了几个月的学习以及最后这个大作业图书管理系统的设计,我对这门课程又有新的认识,在实践的过程中巩固和提高自己所学的知识,大大提
高了我的动手能力和解决问题的能力。
同时,让我感受到与其他编程课程不同的优点。
很感激有机会选修这样的一门课程。
参考文献
[1]明安龙,宋桂岭,刘亮基础及应用教程[M].北京:机械工业出版社.2010.
[2]尚俊杰程序设计[M].北京:清华大学,北京交通大学.2004.
[3] 陈艳峰. Visual Studio数据库项目案例导航[M].清华大学出版社,2004年8月第一版.
[4] 李春葆Visual Studio数据库系统设计与开发[M].清华大学出版社,2005年09月第一版.。