1、高级程序设计语言图书管理系统设计报告学 院: 国土资源工程学院 专 业: 测 绘 工 程 成 员:*指导教师: 黄云铠 日 期: 2014 年 11 月 5 日 1 系统设计1.1 设计目标本系统是针对图书管理工作过程进行设计的,主要实现如下目标:注册用户可以登录此系统;非注册用户注册后可以使用本系统;读者可以查询、借阅、归还图书等; 管理员可以对读者、图书进行管理。1.2 数据库设计概述1.2.1 概念结构设计将从需求分析中得到的数据信息抽象为概念模型,经分析可得到数据库的E-R 模型。如图所示。图书名称 作者 编号出版日期价格种类出版社图 1-1 图书实体 ER 图密码读者姓名 编号专业借
2、阅时间借书量年龄性别图 1-2 实体读者 ER 图用户密码类型 编号图 1- 3 用户实体 ER 图1.2 项目规划图书管理系统是一个典型的数据库应用程序,由应用程序和后台数据库两部分构成。(1)应用程序应用程序主要包括登录,注册,用户信息,读者信息,图书信息管理,借阅图书,综合查询,出版社信息等几个部分组成。(2)数据库 数据库负责对图书信息,用户信息等数据的管理。2 数据库设计说明书21 数据库表结构2.1.1 图书表 book2.1.2 借阅信息表 borrow2.1.2 用户信息表 Reader2.1.4 用户信息权限表 right2.1.5 用户账号表 user2.1.6 管理员账号
3、表 usererheper2.2 数据关系图2.3 图书管理系统暂有数据(模拟运行)2.3.1 管理员学工号:2014701020 姓名:邢吉昌密码:1112.3.2 普通用户学工号:2014701021 姓名:猪八戒密码:333学工号:2014701022 姓名:孙悟空密码:4442.3.3 图书信息编号 作者 书名 出版社 出版日期 价格 书类H319584781 MARK C#入门经典 清华大学出版社 2011/4/5 21.56 计算机H319584782 哪吒 和猴子的那些事 天庭文印 2010/1/2 216.5 情感H319584783 二郎神 我也可以闹天宫 天庭文印 2009
4、/8/1 29.32 技术3 程序功能的实现3.1 登陆界面已注册用户登录时,用户类别选择普通用户或管理员,不选择会出现提示主要代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsFormsAppli
5、cation1public partial class LoginForm : Formpublic string password;private int ErrorTimes;string User, Pwd;bool flagshow = false;private bool yanzhengshuru()password = textBox3.Text;if(Typename.Text.Trim()=“)MessageBox.Show(“请选择登录类型“,“登录提示“,MessageBoxButtons.OK,MessageBoxIcon.Information);Typename.F
6、ocus();return false;else if(loginid.Text.Trim()=“)MessageBox.Show(“请输入用户名“, “登录提示“,MessageBoxButtons.OK, MessageBoxIcon.Information);loginid.Focus();return false;else if (password = “)MessageBox.Show(“请输入密码“, “登录提示“,MessageBoxButtons.OK, MessageBoxIcon.Information);textBox3.Focus();return false;else
7、return true;public LoginForm()InitializeComponent();private void cancelbtn_Click(object sender, EventArgs e)Application.Exit();private void LoginForm_Load(object sender, EventArgs e)private void LoginForm_Closing(object sender, FormClosingEventArgs e)Application.Exit();private void loginbtn_Click(ob
8、ject sender, EventArgs e)if (yanzhengshuru()if (Typename.Text.Trim() = “管理员“)SqlConnection conConnection = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “select AdminID,AdminPass from userhelper “;SqlCommand com = new
9、SqlCommand(cmd, conConnection);SqlDataReader reader = com.ExecuteReader();while (reader.Read()User = reader“AdminID“.ToString();Pwd = reader“AdminPass“.ToString();if (User.Trim() = loginid.Text reader.Close();conConnection.Close();if (flagshow = true)this.Hide();admin f1 = new admin ();f1.ShowDialog
10、();elseif (Typename.Text.Trim() = “普通用户“)SqlConnection conConnection1 = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection1.Open();string cnd = “select ReaderID,ReaderPassword from reader “;SqlCommand cnm = new SqlCommand(cnd, conConnection1);
11、SqlDataReader reader1 = cnm.ExecuteReader();while (reader1.Read()User = reader1“ReaderID“.ToString();Pwd = reader1“ReaderPassword“.ToString();if (User.Trim() = loginid.Text reader1.Close();conConnection1.Close();if (flagshow = true)this.Hide();读者查阅 f1 = new 读者查阅();f1.ShowDialog();elseMessageBox.Show
12、(“用户名不存在或密码错误!“, “提示“);ErrorTimes+;if (ErrorTimes = 3)MessageBox.Show(“登录次数过多,程序将关闭“);/Application.Exit();return;private void label1_Click(object sender, EventArgs e)private void label2_Click(object sender, EventArgs e)private void label3_Click(object sender, EventArgs e)private void button1_Click(o
13、bject sender, EventArgs e)this.Hide();注册 f1 = new 注册();f1.ShowDialog();private void usercomboBox_SelectedIndexChanged(object sender, EventArgs e)private void useracctxt_TextChanged(object sender, EventArgs e)private void textBox3_TextChanged(object sender, EventArgs e) 3.2 登陆界面如果学号已经存在,则会出现“*用户名已经存在
14、,请重新输入”的提示,当重新输入密码时,如果两次密码不相同,则会出现“*请注意,两次密码不一样”的提示主要代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsFormsApplication1publ
15、ic partial class 注册 : Formpublic 注册()InitializeComponent();public bool UserFlag;private void textBox3_TextChanged(object sender, EventArgs e)if (textBox2.Text.Trim() != textBox3.Text.Trim()label6.Visible = true;elselabel8.Visible = true;label6.Visible = false;private void 注册_Load(object sender, Even
16、tArgs e)private void textBox1_TextChanged(object sender, EventArgs e)SqlConnection conConnection = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “select ReaderID from reader “;SqlCommand com = new SqlCommand(cmd ,conCo
17、nnection );SqlDataReader readerUser = com.ExecuteReader();while (readerUser.Read ()if(textBox1.Text =readerUser“ReaderID“.ToString().Trim()label7.Visible = true;UserFlag = true;return;else if (textBox1.Text != readerUser“ReaderID“.ToString().Trim()label7.Visible = false;label9.Visible = true;UserFla
18、g = false;private void button1_Click(object sender, EventArgs e)int index = textBox4.Text.IndexOf(“);if (index 1)label10.Visible = true;label10.Text = “邮箱格式不正确,请重新输入“;elselabel10.Visible = true;label10.Text = “邮箱格式正确“;if(UserFlag=true )MessageBox.Show(“用户已经存在,请重新输入!“);return;if (UserFlag=false)SqlCo
19、nnection conConnection = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “insert into reader(ReaderID,ReaderPassword,ReaderEmall) values (“+textBox1.Text+“,“+“+textBox2.Text+“,“+“+textBox4.Text+“)“;SqlCommand com = new S
20、qlCommand(cmd,conConnection );com.ExecuteNonQuery();conConnection.Close();MessageBox.Show(“注册成功!点击确定,返回登录界面。“,“提示“);this.Close();LoginForm f2 = new LoginForm();3.3 管理员操作界面using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Lin
21、q;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication1public partial class admin : Formpublic admin()InitializeComponent();private void 查看用户信息ToolStripMenuItem_Click(object sender, EventArgs e)权限设置 f8 = new 权限设置();f8.ShowDialog();private void 查看用户信息ToolStripMenuItem1_Click
22、(object sender, EventArgs e)用户信息 fi = new 用户信息();fi.ShowDialog();private void 新增用户ToolStripMenuItem1_Click(object sender, EventArgs e)新增用户 f2 = new 新增用户();f2.ShowDialog();private void 删除用户ToolStripMenuItem1_Click(object sender, EventArgs e)用户信息 f3 = new 用户信息();f3.button2.Visible = true;f3.ShowDialog
23、();private void 录入书籍ToolStripMenuItem_Click(object sender, EventArgs e)书籍信息 f5 = new 书籍信息();f5.ShowDialog();private void 删除书籍ToolStripMenuItem_Click(object sender, EventArgs e)删除书籍 f6 = new 删除书籍();f6.ShowDialog();private void 还书处理ToolStripMenuItem_Click(object sender, EventArgs e)还书处理 f9 = new 还书处理(
24、);f9.ShowDialog();private void admin_Load(object sender, EventArgs e)private void 借阅处理ToolStripMenuItem_Click(object sender, EventArgs e)借阅处理 f10 = new 借阅处理();f10.ShowDialog();3.3.1 管理用户管理用户下共有三个子菜单3.3.1.1新增用户界面主要代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using Sy
25、stem.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsFormsApplication1public partial class 新增用户 : Formpublic 新增用户()InitializeComponent();private void button1_Click(object sender, EventArgs e)SqlConnection conConnec
26、tion = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “insert into reader(ReaderID,ReaderName,ReaderPassword,ReaderSex,ReaderAge,ReaderDept,ReaderZhuanYe,MaxNumber,ReaderEmall) values (“ + textBox1.Text + “,“ + “ + text
27、Box2.Text + “,“ + “ + textBox3.Text + “,“ + “ + textBox4.Text + “,“ + “ + textBox5.Text + “,“ + “ + textBox6.Text + “,“ + “ + textBox7.Text + “,“ + “ + textBox8.Text + “,“ + “ + textBox9.Text + “)“;SqlCommand com = new SqlCommand(cmd, conConnection);com.ExecuteNonQuery();conConnection.Close();Messag
28、eBox.Show(“添加成功!点击确定,返回登录界面。“, “提示“);this.Close();3.3.1.2 删除用户界面输入学号即可查询用户信息,如图,点击删除即删除该用户主要代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient
29、;namespace WindowsFormsApplication1public partial class 用户信息 : Formbool UserFlag;public 用户信息()InitializeComponent();private void button1_Click(object sender, EventArgs e)if(UserFlag=false )MessageBox.Show(“不存在该用户,请核对后再输入“,“警告“);return;if (UserFlag = true)SqlConnection conConnection = new SqlConnecti
30、on(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “select * from reader“;SqlCommand com=new SqlCommand (cmd,conConnection);com.CommandText = “select * from reader“;SqlDataReader dr = com.ExecuteReader();while (dr.Read()label11.Visible =
31、true;textBox2.Text = dr“ReaderName“.ToString().Trim();textBox3.Text = dr“ReaderPassword“.ToString().Trim();textBox4.Text = dr“ReaderSex“.ToString().Trim();textBox5.Text = dr“ReaderAge“.ToString().Trim();textBox6.Text = dr“ReaderDept“.ToString().Trim();textBox7.Text = dr“ReaderZhuanYe“.ToString().Tri
32、m();textBox8.Text = dr“MaxNumber“.ToString().Trim();textBox9.Text = dr“ReaderEmall“.ToString().Trim();conConnection.Close();private void textBox1_TextChanged(object sender, EventArgs e)SqlConnection conConnection = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Securit
33、y=True“);conConnection.Open();string cmd = “select ReaderID from reader “;SqlCommand com = new SqlCommand(cmd, conConnection);SqlDataReader readerUser = com.ExecuteReader();while (readerUser.Read()if (textBox1.Text = readerUser“ReaderID“.ToString().Trim()UserFlag = true;return;else if (textBox1.Text
34、 != readerUser“ReaderID“.ToString().Trim()UserFlag = false;private void button2_Click(object sender, EventArgs e)SqlConnection conConnection = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “delete from reader where Rea
35、derID=“ + textBox1.Text.Replace(“, “) + “;SqlCommand com = new SqlCommand(cmd, conConnection);com.ExecuteNonQuery();conConnection.Close();MessageBox.Show(“是否确认删除“, “提示“);3.3.1.3 查看用户信息界面该界面与删除用户界面代码基本相似,主要是将查询按钮隐藏,故代码不再列出3.3.2图书管理图书查询下共有2个子菜单3.3.2.1录入书籍页面主要代码如下:using System;using System.Collections.
36、Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsFormsApplication1public partial class 书籍信息 : Formpublic 书籍信息()InitializeComponent();private void button1_Click(object
37、 sender, EventArgs e)SqlConnection conConnection = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “insert into book (BookID,BookWrite,BookName,BookPublish,BookPublishDate,BookPrice,BookSort) values (“ + textBox1.Text +
38、“,“ + “ + textBox2.Text + “,“ + “ + textBox3.Text + “,“ + “ + textBox4.Text + “,“ + “ + textBox5.Text + “,“ + “ + textBox6.Text + “,“ + “ + textBox7.Text + “)“;SqlCommand com = new SqlCommand(cmd, conConnection);com.ExecuteNonQuery();conConnection.Close();MessageBox.Show(“录入成功“, “提示“);textBox1.Text
39、= “;textBox2.Text = “;textBox3.Text = “;textBox4.Text = “;textBox5.Text = “;textBox6.Text = “;textBox7.Text = “;3.3.2.2删除书籍删除书籍之前如需确认是否是所需删除的书籍,以防删除错误,可以先将所需删除的书籍的书名输入,点击检索后会出现该书的详细信息,若确认无误后点击删除即可删除该书主要代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;u
40、sing System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsFormsApplication1public partial class 删除书籍 : Formbool UserFlag;public 删除书籍()InitializeComponent();private void button1_Click(object sender, EventArgs e)if (UserFlag = false
41、)MessageBox.Show(“不存在此书,请核对后再输入“, “警告“);return;if (UserFlag = true)SqlConnection conConnection = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “select * from book“;SqlCommand com = new SqlCommand(cmd, conConnection);co
42、m.CommandText = “select * from book“;SqlDataReader dr = com.ExecuteReader();while (dr.Read()textBox1.Text = dr“BookID“.ToString().Trim();textBox2.Text = dr“BookWrite“.ToString().Trim();textBox4.Text = dr“BookPublish“.ToString().Trim();textBox5.Text = dr“BookPublishDate“.ToString().Trim();textBox6.Te
43、xt = dr“BookPrice“.ToString().Trim();textBox7.Text = dr“BookSort“.ToString().Trim();conConnection.Close();private void textBox3_TextChanged(object sender, EventArgs e)SqlConnection conConnection = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnec
44、tion.Open();string cmd = “select BookName from book “;SqlCommand com = new SqlCommand(cmd, conConnection);SqlDataReader readerUser = com.ExecuteReader();while (readerUser.Read()if (textBox1.Text = readerUser“BookName“.ToString().Trim()UserFlag = true;return;else if (textBox1.Text != readerUser“BookN
45、ame“.ToString().Trim()UserFlag = false;private void button2_Click(object sender, EventArgs e)SqlConnection conConnection = new SqlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “delete from book where BookName=“ + textBox3.Tex
46、t.Replace(“, “) + “;SqlCommand com = new SqlCommand(cmd, conConnection);com.ExecuteNonQuery();conConnection.Close();MessageBox.Show(“是否确认删除“, “提示“);3.3.3权限设置该界面可以设置普通用户的最大借书数量、最长借阅时间、超期罚款(元/天)、遗失赔率等,主要代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;us
47、ing System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsFormsApplication1public partial class 权限设置 : Formpublic 权限设置()InitializeComponent();private void button1_Click(object sender, EventArgs e)SqlConnection conConnection = new S
48、qlConnection(“Data Source=.sqlexpress;Initial Catalog=学生管理数据库;Integrated Security=True“);conConnection.Open();string cmd = “insert into Right(MaxNum,MaxTime,Fine,Times) values (“ + textBox1.Text + “,“ + “ + textBox2.Text + “,“ + “ + textBox3.Text + “,“ + “ + textBox4.Text + “)“;SqlCommand com = new SqlCommand(cmd, conConnection);com.ExecuteNonQuery();conConnection.Close();MessageBox.Show(“修改成功“, “提示“);this.Close();3.3.4还书处理输入书籍号后即可查询借阅人超期