数据库设计图书管理系统.docx
《数据库设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《数据库设计图书管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
数据库设计图书管理系统
目录
1、绪论3
1.1数据库应用系统简介3
1.2VisualStudio2010开发平台3
2、系统需求分析3
3、数据库设计4
3.1系统功能设计4
3.2数据库中的表格应用5
3.3图书管理系统组成6
3.4模块功能实现6
3.4.1管理员模块实现6
3.4.2学生功能模块实现6
3.4.3教师功能模块实现7
3.5数据库概念结构设计7
3.5.1该系统的流程图为7
3.5.2该系统的E-R图7
3.5.3数据库逻辑结构设计8
3.5.4数据表详细说明9
4、通用类的生成11
4.1连接数据库11
4.2操作数据库中的数据11
4.3用户登录代码11
4.4借阅书籍代码13
4.5归还书籍代码15
4.6人员信息查询代码16
4.7主菜单设计代码17
5、系统测试20
5.1开发与测试环境20
5.2程序调试情况20
5.3功能显示20
5.3.1运行主窗口20
5.3.2主界面21
5.3.3人员信息查询界面22
5.3.4借书界面22
5.3.5还书界面23
六.组类成员个人总结报告24
七.【参考文献】26
1、绪论
1.1数据库应用系统简介
SQLService2005数据库是微软公司精心打造的企业级数据库开发平台,该产品不仅包含了丰富的企业及数据管理功能,还集成了商业智能等特性。
数据库由DBMS(数据库管理系统)处理,DBMS则由开发人员和用户通过应用程序直接或间接地使用。
它主要包括四个要素:
用户数据、元数据、索引和应用元数据。
1.2VisualStudio2010开发平台
VisualStudio是一套完整的开发工具集,用于生成ASP.NETWeb应用程序、XMLWebServices,桌面应用程序和移动应用程序。
VB、VC++、VC#和VJ#全都使用相同的集成开发环境(IDE),利用此IDE可以共享工具且有助于创建混合语言解决方案。
另外,这些语言利用了.NETFramework的功能,通过此框架可使用简化ASPWeb应用程序和XML.WebService开发的关键技术。
2、系统需求分析
图书管理系统:
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大提高了其安全性。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包括很多的信息数据的管理,所以我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效地查询和修改图书情况。
3、数据库设计
3.1系统功能设计
✧用户登录:
验证管理员的身份是否合法。
✧主菜单窗口:
用户的操作主窗口。
✧系统设置:
管理员实现对系统的设置功能。
✧读者管理:
管理员和教师实现对读者的管理功能。
✧图书管理:
所有用户包括管理员、教师、学生实现对书籍的管理。
✧图书借还:
管理员对书籍借阅情况进行查看,学生和教师可以借阅书籍、归还书籍。
✧系统查询:
所有用户实现对图书管理系统的查询功能。
✧图书借阅排行榜:
用户查看书籍借阅的信息。
✧读者借阅排行榜:
读者查看自己借阅的书籍信息。
3.2数据库中的表格应用
分别为book表、bookcategory表、group表、category表、user表、userbook表。
它们的E-R图如下所示。
3.3图书管理系统组成
LoginForm.cs窗体:
登录界面
MenuForm.cs窗体:
主菜单界面
InfoForm.cs窗体:
人员信息查询界面
LendForm.cs窗体:
借阅书籍
ReturnForm.cs窗体:
归还书籍
Program.cs文件:
图书管理系统应用程序主入口文件
App.config文件:
配置数据库连接字符串等信息
3.4模块功能实现
3.4.1管理员模块实现
管理员功能模块共包括登录、系统设置、读者管理、图书管理、查看图书借书还书情况、系统查询等功能。
3.4.2学生功能模块实现
学生功能模块包括登录、图书管理、查看图书借书还书情况、系统查询等功能。
3.4.3教师功能模块实现
管理员功能模块共包括登录、读者管理、图书管理、查看图书借书还书情况、系统查询等功能。
3.5数据库概念结构设计
3.5.1该系统的流程图为
3.5.2该系统的E-R图
3.5.3数据库逻辑结构设计
该图书管理系统的实体及其跟别对应的属性为:
书籍(书籍ID号,书籍名称,作者,出版社,ISBN,出版时间,出版时间,数量)
用户类别(类别名称,类别编号)
图书分类(图书分类编号,图书类名,图书简介,父分类)
用户(用户ID号,用户密码,用户名称,用户类别)
借书信息(书籍ID号,用户ID号,借阅时间,借阅数量,状态)
3.5.4数据表详细说明
Book表
BookCategory表
Group表
Category表
User表
UserBook表
4、通用类的生成
本系统的主要操作都需要与数据库发生交互,为了提高代码的重用性和规范性,把与数据库交互的功能单独放在一个类中,在该类中实现数据库的增加、删除、修改、查询等通用功能。
4.1连接数据库
(1)定义数据库连接字符串,代码如下:
usingSystem.Data.SqlClient;
(2)创建Connection对象,代码如下:
SqlConnectioncon=newSqlConnection();
(3)打开连接,代码如下:
con.Open();
(4)关闭连接,代码如下:
con.Close();
4.2操作数据库中的数据
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=sqlConnection1.ConnectionString;
conn.Open();
SqlCommandcmd=newSqlCommand("selectcount(*)fromuser1whereusername='"+textBox1.Text+"'andpassword='"+textBox2.Text+"'",conn);
4.3用户登录代码
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(textBox1.Text=="")//判断用户名是否为空
{
MessageBox.Show("用户名不能为空","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
if(textBox2.Text=="")//判断密码是否为空
{
MessageBox.Show("请输入密码","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else//用户名及密码不为空的情况下执行如下代码
{
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=sqlConnection1.ConnectionString;
conn.Open();
SqlCommandcmd=newSqlCommand("selectcount(*)fromuser1whereusername='"+textBox1.Text+"'andpassword='"+textBox2.Text+"'",conn);
inti=Convert.ToInt32(cmd.ExecuteScalar());
if(i>0)
{
cmd=newSqlCommand("select*fromuser1whereusername='"+textBox1.Text+"'",conn);
SqlDataReadersdr=cmd.ExecuteReader();
sdr.Read();
stringgroupid=sdr["groupid"].ToString().Trim();
stringid=sdr["id"].ToString().Trim();
sdr.Close();
cmd=newSqlCommand("selectcount(*)fromgroup1whereid='"+groupid+"'andgroupname='"+comboBox1.Text+"'",conn);
intj=Convert.ToInt32(cmd.ExecuteScalar());
if(j>0)
{
conn.Close();
Form2main=newForm2();
main.id=id;
main.groupid=groupid;
main.name=textBox1.Text;
main.time=DateTime.Now.ToShortDateString();
main.Show();
//this.Hide();
}
else
{
MessageBox.Show("类型错误");
}
}
else
{
MessageBox.Show("用户名或密码错误");
}
}
}
4.4借阅书籍代码
publicpartialclassForm4:
Form
{
publicstringnames;
publicstringnameid;
publicForm4()
{
InitializeComponent();
}
privatevoidForm4_Load(objectsender,EventArgse)
{
this.bookTableAdapter.Fill(this.libraryDataSet1.book);
textBox1.Text=names;
textBox2.Text=nameid;
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringmysql;
inti;
i=dataGridView1.RowCount;
mysql="insertintouserbook(id,bookid,userid,createdate,number)values("+i+",'"+textBox5.Text+"','"+textBox2.Text+"','"+dateTimePicker1.Value+"','"+textBox3.Text+"')";
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=sqlConnection1.ConnectionString;
conn.Open();
SqlCommandcmd=newSqlCommand();
cmd.CommandText=mysql;
cmd.Connection=conn;
cmd.ExecuteNonQuery();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
this.Close();
}
privatevoiddataGridView1_CellClick(objectsender,DataGridViewCellEventArgse)
{
try
{
if(e.RowIndextextBox5.Text=dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
}
catch(Exceptionex)
{
MessageBox.Show("需要选中一个学生记录","信息提示");
}
}
}
4.5归还书籍代码
publicpartialclassForm5:
Form
{
publicstringnames;
publicstringnameid;
SqlDataAdaptermyda=newSqlDataAdapter();
DataSetmyds=newDataSet();
SqlConnectionconn=newSqlConnection();
publicForm5()
{
InitializeComponent();
}
privatevoidForm5_Load(objectsender,EventArgse)
{
textBox1.Text=names;
textBox2.Text=nameid;
conn.ConnectionString=sqlConnection1.ConnectionString;
conn.Open();
stringmysql="select*fromuserbook,bookwhereuserbook.bookid=book.idanduserid='"+nameid+"'";
myda=newSqlDataAdapter(mysql,conn);
myda.Fill(myds,"userbook");
dataGridView1.DataSource=myds.Tables["userbook"];
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
stringmysql="select*fromuserbook";
myda=newSqlDataAdapter(mysql,conn);
SqlCommandBuildermycmdbuilder=newSqlCommandBuilder(myda);
myda.Update(myds,"userbook");
this.dataGridView1.DataSource=myds.Tables[0];
}
}
4.6人员信息查询代码
publicpartialclassForm3:
Form
{
SqlDataAdaptermyda=newSqlDataAdapter();
DataSetmyds=newDataSet();
publicForm3()
{
InitializeComponent();
}
privatevoidForm3_Load(objectsender,EventArgse)
{
stringmysql;
SqlConnectionconn=newSqlConnection();
conn.ConnectionString=sqlConnection1.ConnectionString;
conn.Open();
mysql="select*fromuser1";
myda=newSqlDataAdapter(mysql,conn);
myda.Fill(myds,"user1");
dataGridView1.DataSource=myds.Tables["user1"];
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
SqlCommandBuildermycmdbuilder=newSqlCommandBuilder(myda);
if(myds.HasChanges())
{
try
{
myda.Update(myds,"user1");//更新数据源
}
catch(Exception)
{
MessageBox.Show("数据修改不正确,"信息提示");}
}
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
SqlCommandBuildermycmdbuilder=newSqlCommandBuilder(myda);
myda.Update(myds,"user1");
this.dataGridView1.DataSource=myds.Tables[0];
}
}
4.7主菜单设计代码
publicpartialclassForm2:
Form
{
publicstringid;
publicstringname;
publicstringtime;
publicstringty;
publicstringgroupid;
SqlDataAdaptermyda=newSqlDataAdapter();
DataSetmyds=newDataSet();
SqlConnectionconn=newSqlConnection();
publicForm2()
{
InitializeComponent();
}
privatevoid图书借阅ToolStripMenuItem_Click(objectsender,EventArgse)
{
Form4frm4=newForm4();
frm4.names=name;
frm4.nameid=id;
frm4.Show();
}
privatevoidForm2_Load(objectsender,EventArgse)
{
switch(groupid)
{
case"1":
ty="学生?
;
系统设置ToolStripMenuItem.Enabled=false;
读者管理ToolStripMenuItem.Enabled=false;
break;
case"2":
ty="教师";
系统设置ToolStripMenuItem.Enabled=false;
break;
case"3":
ty="管理员";
break;
}
toolStripStatusLabel1.Text="登录用户名:
"+name+"用户权限:
"+ty+"登录时间:
"+time;
conn.ConnectionString=sqlConnection1.ConnectionString;
conn.Open();
stringmysql2="selectusername,count(userbook.number)numfromuserbook,user1whereuserbook.userid=user1.idgroupbyusernameorderbycount(userbook.number)desc";
myda=newSqlDataAdapter(mysql2,conn);
myda.Fill(myds,"user1");
dataGridView2.DataSource=myds.Tables["user1"];
stringmysql="selectbookname,count(userbook.number)numfromuserbook,bookwhereuserbook.bookid=book.idgroupbybooknameorderbycount(userbook.number)desc";
myda=newSqlDataAdapter(mysql,conn);
myda.Fill(myds,"book");
dataGridView1.DataSource=myds.Tables["book"];}
privatevoid读者类型管理ToolStripMenuItem_Click(objectsender,EventArgse)
{
Form3frm=newForm3();
frm.Show();
}
privatevoidstatusStrip1_ItemClicked(objectsender,ToolStripItemClickedEventArgse)
{
}
privatevoidmenuStrip1_ItemClicked(objectsender,ToolStripItemClickedEventArgse)
{
}
privatevoid图书归还ToolStripMenuItem_Click(objectsender,EventArgse)
{
Form5frm5=newForm5();
frm5.names=name;
frm5.nameid=id;
frm5.Show();
}
5、系统测试
5.1开发与测试环境
数据库:
MicrosoftSQLServer
开发工具:
MicrosoftVisualStudio2010
开发环境:
Microsoft.NETFrameworkSDKv2.0
开发语言:
C#语言
5.2程序调试情况
在数据库连接时一定要注意窗体和相应显示控件的绑定关系。
在把系统从一台计算机移植到另一台计算机时一定要把数据文件Libra