图书管理系统论文.docx
- 文档编号:6994203
- 上传时间:2023-01-15
- 格式:DOCX
- 页数:59
- 大小:546.62KB
图书管理系统论文.docx
《图书管理系统论文.docx》由会员分享,可在线阅读,更多相关《图书管理系统论文.docx(59页珍藏版)》请在冰豆网上搜索。
图书管理系统论文
目录
第1章概述1
1.1项目的目的和意义1
1.2项目体系结构及开发环境1
1.3系统基本功能1
第2章系统设计2
2.1系统的模块划分2
2.2数据库设计3
第3章系统的详细设计及实现5
3.1公共类5
3.2系统登录与主窗体7
3.4系统信息管理16
3.5读者信息管理21
3.6借还管理24
3.7查询操作32
3.8用户登录37
结论40
参考文献41
第1章概述
1.1项目的目的和意义
本次课程设计的题目是“图书管理系统”的设计与实现。
该设计是对本学期前八周所学的C#程序设计课程的巩固和深入应用。
利用前面学过的知识来解决实际问题,锻炼解决问题的能力和动手编程的能力。
同时初步理解软件开发步骤和软件工程思想。
1.2项目体系结构及开发环境
1.本系统采用Client/Server体系结构。
2.系统开发环境
1)开发平台:
MicrosoftVisualStudio2010
2)开发语言:
C#
3)数据库:
Access2010
3.系统运行环境
客户端:
操作系统:
Windows2007
服务器端:
数据库:
Access2010
1.3系统基本功能
在以上环境下对图书管理系统进行开发与设计。
主要实现系统登录、系统管理、图书管理、读者管理、用户管理等主要功能。
第2章系统设计
2.1系统的模块划分
图书管理系统是学校图书馆中实现借书还书等对图书管理的一个必不可少的系统,它涉及到学生、图书管理员、工作人员等信息的结合。
图书管理系统包括以下五个模块:
1.登录模块
登录模块提供用户登录界面,用户输入正确的用户名和密码后,根据身份不同(权限)可进入相应的系统主窗口(即导航页面),从而可以选择进入相应的子系统。
2.系统管理模块
系统管理模块主要完成管理员管理工作人员、学生和图书的基本信息,包括对工作人员和学生的姓名,性别、年龄等信息的浏览,添加,修改和删除以及对图书的图书类型,数量,类型描述等信息的浏览、添加、删除、和修改操作。
3.图书管理模块
图书管理模块主要进行图书的编号、类型、价格、出版社、出版时间等的录入、修改、删除和校审功能
4.读者管理模块
读者管理模块主要用于进行读者的借书证号、姓名、性别、身份(本科生、研究生、博士生)等信息的浏览、添加、修改和删除等操作。
5.用户管理模块
主要用于用户自我修改,由用户进行操作。
用户可以进行密码的修改。
学生选课系统功能模块图如图2-1所示。
图2-1系统功能模块图
2.2数据库设计
根据前面的分析,图书管理系统数据库(libraryMIS)中包括图书信息表“tbl_Book”、借出图书信息表“tbl_BookOut”、借阅者信息表“tbl_Person”、身份信息表“tbl_Identity”、图书类别信息表“tbl_Type”和管理员信息“tbl_Manager”表六个数据表。
表的结构、表字段的数据类型及相关说明如下:
1.图书信息表
系统用户表“tbl_Book”用于存放系统用户的相关数据。
其结构如表2-1所示。
表2-1图书信息表
列名
说明
数据类型
约束
BID
图书编号
字符串,长度为20
主键
BName
图书名
字符串,长度为20
非空
BWriter
作者
字符串,长度为10
非空
BPublish
出版社
字符串,长度为10
非空
BDate
出版日期
日期/时间
非空
BPrice
价格
字符串,长度为10
非空
BNum
数量
数字
非空
type1
类型
字符串,长度为20
非空
BRemark
备注
字符串,长度为50
无
2.借出图书信息表
学生信息表“tbl_BookOut”结构如表2-2所示。
表2-2借出图书信息表
列名
说明
数据类型
约束
OID
借出图书ID
自动编号
主键
BID
图书编号
字符串,长度为20
非空
PID
借书证编号
字符串,长度为20
非空
ODate
借出日期
日期/时间
非空
3.借阅者信息表
借阅者息表“tbl_Person”结构如表2-3所示。
表2-3借阅者信息表
列名
说明
数据类型
约束
PID
借书证编号
字符串,长度为20
主键
PName
姓名
字符串,长度为20
非空
PSex
性别
字符串,长度为2
非空
PPhone
电话
字符串,长度为20
非空
PN
身份证
字符串,长度为20
非空
续表2-3
PCode
密码
字符串,长度为15
非空
PMoney
罚款
数字类型
非空
identity1
身份
字符串,长度为10
非空
Premark
备注
字符串,长度为50
无
sys
权限
是/否
非空
4.选课信息表
课程信息表“tbl_Identity”结构如表2-4所示。
表2-4选课信息表
列名
说明
数据类型
约束
identity1
身份
字符串,长度为20
主键
longtime
最长借阅时间
数字类型
非空
bigNum
最大借阅数量
数字类型
非空
5.图书类别信息表
图书类别信息表“tbl_Type”结构如表2-5。
表2-5图书类别信息表
列名
说明
数据类型
约束
TID
列别ID
自动编号
主键
type1
文本
字符串,长度为20
非空
tRemark
文本
字符串,长度为50
非空
6.管理员信息表
管理员信息表“tbl_Manger”结构如表2-6
表2-6借阅者信息表
列名
说明
数据类型
约束
MName
名称
字符串,长度为10
主键
MCode
密码
字符串,长度为20
非空
manage
管理人员
是/否
无
work
工作人员
是/否
无
query
查询
是/否
无
第3章系统的详细设计及实现
3.1公共类
考虑到系统的各个模块都需要访问数据库,因此最好的方法是编写一些访问数据库的方法,如返回数据集的公共查询方法,执行数据操作的公共方法,并把它们放在一个公共的类(DataBase)中,然后在各模块中调用这些方法来实现对数据库的访问。
同样,在用户登录时,可能需要记录一些关于用户的信息,例如用户名、用户权限等,因此也需要使用到一些公共的静态变量,把这些变量放置在一个名为“ClassShared”的类中。
3.1.1添加DataBase公共类
首先为系统添加一个名为“DataBase”的公共类,用于存放访问数据库的公共方法。
添加公共类的方法和步骤如下:
(1)选择【项目】->【添加类】菜单项,将弹出【添加新项】对话框,保留默认的选择,在“名称”文本框中输入“DataBase”。
(2)单击【添加】按钮,则类“DataBase”已经被添加到项目中,并自动切换到该类的代码窗口。
(3)设置DataBase类的访问修饰符为“Public”。
3.1.2编写公共方法
因为在这些方法中需要使用到OleDbConnection、OleDbDataAdapter、DataSet和MessageBox,所以首先应当引入以下命名空间:
usingSystem.Data;
usingSystem.Data.OleDb;
usingSystem.Windows.Forms;
然后为“DataBase”类声明几个公共变量:
publicOleDbConnectiondataConnection=newOleDbConnection();
publicOleDbDataAdapterdataAdapter;
publicDataSetdataSet=newDataSet();
publicOleDbCommandcommand;
stringconnstr=@"Provider=Microsoft.Jet.OLEDB.4.0;"+@"DataSource=E:
\SelectCourse.mdb";
1.公共查询方法GetDataFromDB
GetDataFromDB是一个返回数据集的公共查询方法,如果正常访问则返回查询结果;否则返回null。
代码如下:
///
///此类用于调用数据库
///
publicclassDatasBase
{
//访问数据
stringstrcon="Provider=Microsoft.Ace.OleDb.12.0;"+@"DataSource=H:
\libratyMIS.accdb;"+
"PersistSecurityInfo=False;";
//定义几个公共变量
publicOleDbConnectionmyconn=newOleDbConnection();
publicOleDbCommandmycommand;
publicDataSetdataSet=newDataSet();
publicOleDbDataAdaptermyAdapter;
///
///此方法用于查询
///
///
///
publicDataSetGetDataFrom(stringsqlStr)
{
try
{
myconn.ConnectionString=strcon;
myconn.Open();//打开数据库
myAdapter=newOleDbDataAdapter(sqlStr,myconn);
dataSet.Clear();
myAdapter.Fill(dataSet);//填充数据集
myconn.Close();//关闭数据库
}
catch(Exceptionexp)
{
MessageBox.Show(exp.Message);
}
if(dataSet.Tables[0].Rows.Count!
=0)
{
//若查询值不为空
returndataSet;
}
else
{
//查询值为空?
returnnull;
}
}
2.公共数据操作方法WriteDB
公共数据操作方法WriteDB用于对数据进行添加、修改和删除操作,若操作成功则返回true;否则返回false。
代码如下:
///
///用于进行插入,更新,删除,等的写入工作
///
///
///
publicboolWriteDB(stringsqlStr)
{
try
{
myconn.ConnectionString=strcon;
myconn.Open();//打开数据库
mycommand=myconn.CreateCommand();//创建OledbDataCommand对象
mycommand.CommandText=sqlStr;
mycommand.ExecuteNonQuery();
myconn.Close();//关闭数据库
returntrue;
}
catch(Exceptionexp)
{
if(exp.Message=="至少一个参数没有被指定值")
MessageBox.Show("输入数据不合理!
?
");
else
MessageBox.Show(exp.Message);
returnfalse;
}
}
3.1.3添加ClassShared公共类
类似于添加DataBase公共类那样,为项目添加一个名为“ClassShared”的公共类,用来存放一些公共的静态变量,以在窗体之间传递数据。
3.2系统登录与主窗体
登录是每一个成功项目中不可缺少的模块,好的登录模块可以保证系统的可靠性和安全性。
本节首先为“学生选课系统”制作了一个简单的登录模块,登录成功后,应当进入系统的主窗体(导航界面),因此本节还详细介绍了主窗体的设计。
3.2.1登录界面设计
新建一个Windows应用程序,命名为“图书管理系统”,使用GroupBox、Label、TextBox、Button控件将出现的默认窗体Form1设计成如图3-1所示。
图3-1登录界面
3.2.2登录代码
接下来编写登录模块的代码。
【登录】按钮用于验证输入的用户名、用户密码和用户的身份,若正确则进入系统主界面;否则弹出错误提示,并等待用户的重新输入。
登录时,需要记录登录的用户名和用户权限,因此在“ClassShared”公共类中声明公共静态成员,声明后“ClassShared”公共类的代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceLibraryManage
{
publicclassClassShared
{
//数组“userInfo”用于记录登录的用户名和用户权限
publicstaticstring[]userInfo=newstring[2];
}
}
切换到“frmMain”窗体设计器,双击【登录】按钮,编写其单击事件的代码如下:
//【登录】按钮的单击事件代码
///
///单击确定按钮实现登录功能
///
///
///
privatevoidbtnYes_Click(objectsender,EventArgse)
{
try
{
if(rdManager.Checked)
{
DataSetds=newDataSet();
DatasBasedb=newDatasBase();
//要执行的sql语句
stringsqlStr="selectMCode,manager,workfromtbl_ManagerwhereMName='"+txtName.Text.Trim()+"'";
ds=db.GetDataFrom(sqlStr);
stringpassword=ds.Tables[0].Rows[0].ItemArray[0].ToString();
//判断密码长度
if(password.Length<6||password.Length>11)
{
MessageBox.Show("密码必须为6-12位数”,"提示!
");
}
else
{
if(password==txtPassword.Text.Trim())
{
frMainMangerob_frManger=newfrMainManger();
ClassShared.userInfo[0]=txtName.Text.Trim();
//将用户权限存储在静态数组中以备下次使用
if((bool)ds.Tables[0].Rows[0].ItemArray[1])
{
ClassShared.userInfo[1]="管理员";
}
else
{
ClassShared.userInfo[1]="工作人员";
}
ob_frManger.Show();
this.Hide();
}
else
{
MessageBox.Show("用户名或密码错误,请重新输入!
");
txtName.Text="";
txtPassword.Text="";
txtName.Focus();
}
}
}
else
{
DataSetds=newDataSet();
DatasBasedb=newDatasBase();
//查询用户名字和密码和身份,并将用户身份存储在静态数组中以下次使用
stringsqlStr="selectPName,PCode,identity1fromtbl_PersonwherePID='"+txtName.Text.Trim()+"'";
ds=db.GetDataFrom(sqlStr);
stringpassword=ds.Tables[0].Rows[0].ItemArray[1].ToString();
if(password.Length<6||password.Length>11)
{
MessageBox.Show("密码必须为a6-12位数","密码错误!
");
}
else
{
//判断密码是否正确
if(password==txtPassword.Text.Trim())
{
frMianStudentob_frMainStudent=newfrMianStudent();
ClassShared.userInfo[0]=ds.Tables[0].Rows[0].ItemArray[0].ToString();
ClassShared.userInfo[1]=ds.Tables[0].Rows[0].ItemArray[2].ToString();
ob_frMainStudent.Show();
this.Hide();
}
else
{
MessageBox.Show("用户名或密码输入错误,请重输");
txtName.Text="";
txtPassword.Text="";
txtName.Focus();
}
}
}
}
catch
{
MessageBox.Show("用户名或密码错误!
","错误");
}
}
3.3.1主窗体设计
在系统登录界面中,单击【登录】按钮验证用户名和用户密码,若正确则进入与身份相应的系统主界面(由于用户身份的不同设置了两个主界面);否则弹出错误提示,并等待用户的重新输入。
单击【取消】按钮则关闭登录界面,退出系统。
因为登录代码中包含了显示系统主界面的代码,所以在编写代码之前需要为应用程序添加两个名为“frmMain1”,“frmMain2”的主窗体。
如图3-2所示。
图3-2主窗体界面
3.3.2主窗体代码
主窗体即导航界面,是用户进入各子系统(系统管理,图书管理,读者管理,借还管理,用户登录和查询操作)的入口。
当主窗体载入时,将前面用公共静态数组“userInfo[]”保存的用户登录信息作为其标题显示在标题栏中;进入主窗体后,用户单击上面的按钮可以进入相应的子系统;并且,当用户单击主窗体的关闭按钮时,应当终止应用程序的运行。
因此应当编写主窗体“frmMain1”和“framMain2”的代码如下
//frmMain1
privatevoidtsAddUser_Click(objectsender,EventArgse)
{
AddUseraddUser=newAddUser();
addUser.MdiParent=this;
//表示如果不是当前要打开的界面不是第个那就将目前第个关闭
if(this.MdiChildren.Length>1)
{
vars=this.MdiChildren.FirstOrDefault();
s.Close();
}
addUser.MdiParent=this;
addUser.MaximizeBox=false;
addUser.Dock=DockStyle.Fill;
addUser.Show();
}
privatevoidfrMainManger_Load(objectsender,EventArgse)
{
//在加载时判断用户的身份(工作人员管理员)
if(ClassShared.userInfo[1]=="工作人员")
{
//当为工作人员时将管理员的权限置灰
tsSystemManager.Enabled=false;
tsReaderManger.Enabled=false;
tsBookManager.Enabled=false;
this.Text=ClassShared.userInfo[1];
}
else
{
//当为管理员是将借书和还书功能置灰
toolStripMenuItem1.Enabled=false;
this.Text=ClassShared.userInfo[1];
}
//显示用户信息,和当前时间
tssRow.Text=ClassShared.userInfo[1];
tssName.Text=ClassShared.userInfo[0];
toolStripStatusLabel5.Text=dateTimePicker1.Text;
dateTimePicker1.Visible=false;
}
//浏览用户并在主窗体中每次只开个窗体
privatevoidtsSkimUser_Click(objectsender,EventArgse)
{
SkimUserobj_SkimUser=newSkimUser();
obj_SkimUser.MdiParent=this;
//如果当前窗体不是第一个窗体,则将上个窗体关闭
if(this.MdiChildren.Length>1)
{
//得到当前窗体的前个窗体,并将其关闭
vars=this.MdiChildren.FirstOrDefault();
s.Close();
}
//关闭子窗体的最大化功能
obj_SkimUser.MaximizeBox=false;
//另子窗体适应父窗体
obj_SkimUser.Dock=DockStyle.Fill;
obj_SkimUse
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 论文