南京邮电大学本科生毕业设计顾峰论文.docx
《南京邮电大学本科生毕业设计顾峰论文.docx》由会员分享,可在线阅读,更多相关《南京邮电大学本科生毕业设计顾峰论文.docx(67页珍藏版)》请在冰豆网上搜索。
南京邮电大学本科生毕业设计顾峰论文
南京邮电大学
毕业论文
题目
图书管理系统的设计与开发
专业
信息管理与信息系统
学生姓名
顾峰
班级学号
B10111729
指导教师
指导单位
日期:
年月日至年月日
毕业设计(论文)原创性声明
本人郑重声明:
所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。
除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。
对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。
论文作者签名:
顾峰
日期:
2014年5月1日
摘要
图书管理系统是一个不可缺少的部分,它的功能对于图书的管理者和读者来说都至关重要,直接关系到图书的借用率,开发图书管理系统能够为管理员和读者提供充足的信息和快捷的查询手段。
本文在详细调查了图书管理业务流程的基础上,对图书管理系统的功能结构和数据库进行了设计,并采用VisualBasic和C语言技术实现了系统主要功能。
关键词:
图书管理系统,VisualBasic,C
ABSTRACT
LibraryManagementSystemisanindispensablepartofitsfunctionalityformanagersandbookreadersarecriticaltoborrowbooksdirectlyrelatedtotherateofdevelopmentoflibrarymanagementsystemtoprovideadequateinformationforadministratorsandreadersandfastquerytool.Inthispaper,adetailedinvestigationofthebasicbooksonbusinessprocessmanagement,anddatabasestructuresforfunctionallibrarymanagementsystemwasdesignedusingVisualBasicandCtoachievethemainfunction.
Keywords:
LibraryManagementSystem,VisualBasic,AC
第一章系统分析………………………………………………………1
1.1开发背景…………………………………………………………………………1
1.2需求分析………………………………………………………………………1
第二章系统设计………………………………………………………2
2.1系统总体构……………………………………………………………………2
2.2数据库设计………………………………………………………………………2
2.3编码设计………………………………………………………………………4
第三章系统实施………………………………………………………5
3.1登录……………………………………………………………………………5
3.2系统主界面……………………………………………………………………7
3.3书库管理………………………………………………………………………7
1)新书登记……………………………………………………………………7
2)借书/还书…………………………………………………………………13
3)缴费…………………………………………………………………………21
4)书籍挂失……………………………………………………………………25
5)图书信息查询………………………………………………………………30
6)借书信息查询………………………………………………………………31
3.4借阅证管理……………………………………………………………………32
1)办理借阅证…………………………………………………………………32
2)借阅证信息查询……………………………………………………………35
3)借阅证挂失…………………………………………………………………35
3.5系统/其它……………………………………………………………………36
1)添加账号……………………………………………………………………38
2)修改密码……………………………………………………………………41
3)退出…………………………………………………………………………42
结束语(四号、宋体)………………………………………………×
致谢(四号、宋体)……………………………………………………×
参考文献(四号、宋体)………………………………………………×
附录(四号、宋体)…………………………………………………
第一章系统分析
1.1开发背景
随着信息技术的发展,在图书馆的管理中运用传统的手工操作方式在现在这个数字化的时代已显得极不适应,因此,工作人员和读者对于运用计算机来辅助协调和管理自身工作的需求正在逐步提高。
随着我国现代化技术的不断提高和普及,学校也在不断的提高它的各个部门的管理质量,而图书馆管理就是对图书的编目、查询及读者信息的管理,重要的是图书的信息管理,包括图书的采购、编目、下架、遗失等。
因此,图书的管理是一个工作量比较大而且较为繁杂的工作,至今还有很多学校仍然采用人工管理的方式,由两三个工作人员管理图书档案,对于借书还书都是用手工来进行操作,而一旦借阅者较多时就容易因忙碌导致错误的产生,这样的情况在今天这样一个科技高速发展、工作节奏加快的年代真是感觉太原始了。
自从管理信息系统这一新兴的管理方法引入我国,在我国企业管理中已有20多年的时间。
现在,管理信息系统已经广泛应用于各行各业。
因此在这样的前提下,我选择了“图书馆管理信息系统”这样一个较为普遍,同时又较为典型的课题。
在当今这样一个科技高速发展的社会里,仅有理论知识是显然不行的,所以,我希望通过开发这个系统,能更好地把理论与实际结合起来,充分将自己所学的专业知识应用于实践之中,并在实践中不断充实自己,提高自己的专业技能水平,以获取更多的教益
1.2需求分析(四号、黑体、顶格)
经过仔细分析系统需求之后,本图书管理系统主要完成的主要功能如下:
●进入系统前需要身份验证、用户名、密码,输入正确后方可进入。
●用户可以根据需要进行书库管理。
●用户可以进行借书证的办理、查询、挂失等操作。
●用户可以添加账户和修改密码。
●
图1.2需求分析
●身份验证:
提供系统的访问控制功能。
●书库管理:
包括新书登记、借书、还书、书籍挂失、图书信息查询、借书信息查询等功能。
●借阅证管理:
提供办理借阅证、借阅证信息查询、借阅证挂失功能。
●系统管理功能:
包括添加账号、修改密码和退出系统等功能。
第二章系统设计
2.1系统总体结构
通过对图书管理系统的功能分析,可以定义出系统的功能模块图如下:
图2.1系统总体结构
2.2数据库设计
●管理员基本信息表
字段名称
数据类型
可否为空
约束条件
说明
WorkID
int
NOTNULL
主键
成员ID
User_Name
VARCHAR(24)
NOTNULL
无
姓名
Password
VARCHAR(24)
NOTNULL
无
密码
表2.2.1管理员基本信息表
●图书信息表
字段名称
数据类型
可否为空
约束条件
说明
Book_ID
VARCHAR(50)
NOTNULL
主键
书籍ID
Book_Name
VARCHAR(50)
NOTNULL
无
书名
Writer
VARCHAR(50)
NOTNULL
无
作者
Press
VARCHAR(50)
NOTNULL
无
出版社
Price
float
NOTNULL
无
单价
InLibrary_Date
datetime
NOTNULL
无
入库时间
Total_Amount
int
NOTNULL
无
总量
Now_Amount
int
NOTNULL
无
现存量
表2.2.2图书信息表
●借阅卡信息表
字段名称
数据类型
可否为空
约束条件
说明
Proof_ID
VARCHAR(50)
NOTNULL
主键
借阅卡ID
Name
VARCHAR(50)
NOTNULL
无
姓名
Sex
VARCHAR(50)
NOTNULL
无
性别
Birth_Time
datetime
NOTNULL
无
出生日期
Address
VARCHAR(50)
NOTNULL
无
地址
ID_Number
VARCHAR(50)
NOTNULL
无
身份证号
Tel_Number
VARCHAR(50)
NOTNULL
无
电话号码
Now_Borrow_Amount
int
NOTNULL
无
现借书量
表2.2.3借阅卡信息表
●借书信息表
字段名称
数据类型
可否为空
约束条件
说明
BorrowID
int
NOTNULL
主键
借书ID
Proof_ID
VARCHAR(50)
NOTNULL
外键(Proof_Info)
借书卡ID
Book_ID
VARCHAR(50)
NOTNULL
外键(Book_Info)
书籍ID
Borrow_Date
datetime
NOTNULL
无
借出时间
表2.2.4借书信息表
●罚单信息表
字段名称
数据类型
可否为空
约束条件
说明
Puni_ID
int
NOTNULL
主键
罚单ID
Proof_ID
VARCHAR(50)
NOTNULL
无
借书卡ID
Book_ID
VARCHAR(50)
NOTNULL
无
书籍ID
Borrow_Date
datetime
NOTNULL
无
借出时间
Return_Date
datetime
NOTNULL
无
还书时间
Puni_Money
float
NOTNULL
无
罚金
表2.2.5罚单信息表
2.3编码设计
●WorkID,BorrowID,Puni_ID都设置了标识规范,增加记录时自动加1,保持其唯一性。
●Borrow_Date,Return_Date,InLibrary_Date都设置成datetime类型,插入记录时自动获取当前日期,不需要管理员输入日期。
●Proof_ID,Book_ID,ID_Number,Tel_Number,Proof_ID由于它们只是代表一个标识,不是一个表示大小的数字,所以用VARCHAR类型,用int或long可能会有溢出现象。
第三章系统实施
3.1登陆
●功能说明:
验证管理员的用户名和密码是否正确,正确则进入主界面。
●源代码:
头文件:
usingSystem.Data.SqlClient;
连接数据库:
SqlConnectioncon=newSqlConnection("server=20100310-1827\\SQLEXPRESS;database=Library;IntegratedSecurity=True");
程序主体:
privatevoidbutton_exit_Click(objectsender,EventArgse)//退出
{
Application.Exit();
}
privatevoidbutton_log_Click(objectsender,EventArgse)//登录
{
if(this.UserName.Text.Trim()==""||this.PassWord.Text.Trim()=="")
MessageBox.Show("用户名和密码都不能为空!
");
if(con.State==ConnectionState.Closed)
con.Open();
Stringstr="selectcount(*)fromAdmin_InfowhereUser_Name='"+this.UserName.Text.Trim()+
"'andPassword='"+this.PassWord.Text+"'";
SqlCommandcom=newSqlCommand(str,con);
inti=Convert.ToInt32(com.ExecuteScalar());
if(i>0)
{
Form2form2=newForm2();//系统主界面
form2.Show();
this.Visible=false;
}
else
{
MessageBox.Show("用户名或密码输入有误,请重新输入!
");
this.UserName.Text="";
this.PassWord.Text="";
}
}
●界面演示:
登录名和密码正确的话进入系统主界面(图3.1.1);登录名或者密码不正确的话会弹出提示对话框,并将用户名、密码栏置空(图3.1.2);如果用户名或者密码有空,弹出对话框并将用户名、密码栏置空(图3.1.3)。
图3.1.1
图3.1.2
图3.1.3
图3.1.4
3.2系统主界面
●功能说明:
选择各个功能模块
●源代码:
privatevoidForm2_FormClosing(objectsender,FormClosingEventArgse)
{
Application.Exit();
}
privatevoidbutton_exit_Click(objectsender,EventArgse)
{
Application.Exit();
}
privatevoidbutton_new_book_Click(objectsender,EventArgse)
{
Form3form3=newForm3();//新书登记
form3.Show();
}
//初始化对应界面,和上面类似,不再赘述
……
●界面演示:
如图3.1.4
3.3书库管理
1)新书登记:
●功能说明:
入库的实现过程是首先要输入书籍的各种信息,包括书的书号、书名、作者、出版社、价钱、总量、现存量等,这里书的数量由两个变量来记录,总量代表图书馆中这种这种书的总量,现存量是目前正在管中的量,两者之差就是被读者借出去的数量。
其中每个信息不能有遗漏或者格式不正确,因为这是每一本书的基本信息,在函数的实现过程中有检验的功能。
然后判断图书馆中是否存在这种图书,如果存在,那么时间简单的把库存的数量加上新加入的数量,如果不存在,那么就要新建记录。
●源代码:
连接数据库:
SqlDataAdapterda=newSqlDataAdapter();
DataSetds=newDataSet();
程序主体:
//主界面调用的每个模块的返回按钮都是隐藏本体,以后不再写出返回按钮的操作带代码
privatevoidbutton_back_Click(objectsender,EventArgse)//返回
{
this.Visible=false;
}
privatevoidbutton_in_Click(objectsender,EventArgse)//入库
{
intres;
//检验输入数据是否合法
if(this.textBox_book_no.Text.Trim()==""||this.textBox_name.Text.Trim()==""
||boBox_press.Text.Trim()==""||this.textBox_price.Text.Trim()==""
||this.textBox_total.Text.Trim()==""||this.textBox_writer.Text.Trim()=="")
{
MessageBox.Show("请正确填写要求的数据!
","新书入库登记");
this.textBox_book_no.Text="";
this.textBox_name.Text="";
boBox_press.Text="";
this.textBox_price.Text="";
this.textBox_total.Text="";
this.textBox_writer.Text="";
}
//判断书库中是否有该书,有,仅把数量加进去,没有,加进一条新的记录
else
{
if(con.State==ConnectionState.Closed)
con.Open();
Stringstr1="selectTotal_AmountfromBook_InfowhereBook_ID='"
+this.textBox_book_no.Text.Trim()+"'";
SqlCommandcom1=newSqlCommand(str1,con);
inttotal_num=Convert.ToInt32(com1.ExecuteScalar());
Stringstr2="selectNow_AmountfromBook_InfowhereBook_ID='"
+this.textBox_book_no.Text.Trim()+"'";
SqlCommandcom2=newSqlCommand(str2,con);
intnow_num=Convert.ToInt32(com2.ExecuteScalar());
intnum1=Convert.ToInt32(this.textBox_total.Text);
total_num+=num1;
now_num+=num1;
Stringstr="selectcount(*)fromBook_InfowhereBook_ID='"
+this.textBox_book_no.Text.Trim()+"'";
SqlCommandcom=newSqlCommand(str,con);
inti=Convert.ToInt32(com.ExecuteScalar());
if(i>0)
{
Stringstr3="updatedbo.Book_InfosetTotal_Amount='"+
total_num.ToString().Trim()+"',Now_Amount='"+now_num.ToString().Trim()
+"'whereBook_ID='"+this.textBox_book_no.Text.Trim()+"'";
da.UpdateCommand=newSqlCommand(str3,con);
res=da.UpdateCommand.ExecuteNonQuery();
if(res>0)
MessageBox.Show("新书入库成功!
","新书登记");
else
MessageBox.Show("新书入库失败!
","新书登记");
}
else
{
Stringbookid=this.textBox_book_no.Text.ToString().Trim();
Stringname=this.textBox_name.Text.ToString().Trim();
Stringwriter=this.textBox_writer.Text.ToString().Trim();
Stringpress=boBox_press.Text.ToString().Trim();
floatprice=(float)Convert.ToDouble(this.textBox_price.Text.ToString().Trim());
Stringdt=DateTime.Now.ToString();
inttotalaccount=Convert.ToInt32(total_num.ToString().Trim());
intnowacount=Convert.ToInt32(now_num.ToString().Trim());
Stringstr3="insertintodbo.Book_Info(Book_ID,Book_Name,Writer,Press,Price,"+
"InLibrary_Date,Total_Amount,Now_Amount)"+"values('"+bookid+"','"+name+"','"
+writer+"','"+press+"','"+price+"','"+dt+"','"+totalaccount+"','"+nowacount+"')";
da.InsertCommand=newSqlCommand(str3,con);
res=da.InsertCommand.ExecuteNonQuery();
if(res>0)
MessageBox.Show("新书入库成功!
","新书登记");
else
MessageBox.Show("新书入库失败!
","新书登记");
}
con.Close();
}
}
//主界面调用的每个模块的关闭按钮都是隐藏本体,以后不再写出关闭按钮的操作带代码
privatevoidForm3_FormClosing(objectsender,FormClosingEventArgse)
{
this.Visible=false;
}
privatevoidbutton_check_Click(objectsender,EventArgse)//查询
{
if(con.State==ConnectionState.Closed)
con.Open();
inti;
Stringstr1;