资源描述
《高级程序设计语言》
图书管理系统设计报告
学 院: 国土资源工程学院
专 业: 测 绘 工 程
成 员:********************************
指导教师: 黄云铠
日 期: 2014年11月5日
1 系统设计
1.1 设计目标
本系统是针对图书管理工作过程进行设计的,主要实现如下目标:
注册用户可以登录此系统;
非注册用户注册后可以使用本系统;
读者可以查询、借阅、归还图书等;
管理员可以对读者、图书进行管理。
1.2数据库设计概述
1.2.1概念结构设计
将从需求分析中得到的数据信息抽象为概念模型,经分析可得到数据库的E-R模型。如图所示。
图书
名称
作者
编号
出版日期
价格
种类
出版社
图1-1 图书实体ER图
密码
读者
姓名
编号
专业
借阅时间
借书量
年龄
性别
图1-2 实体读者ER图
用户
密码
类型
编号
图1- 3 用户实体ER图
1.2 项目规划
图书管理系统是一个典型的数据库应用程序,由应用程序和后台数据库两部分构成。
(1)应用程序
应用程序主要包括登录,注册,用户信息,读者信息,图书信息管理,借阅图书,综合查询,出版社信息等几个部分组成。
(2)数据库 数据库负责对图书信息,用户信息等数据的管理。
2 数据库设计说明书
2.1 数据库表结构
2.1.1 图书表book
2.1.2 借阅信息表borrow
2.1.2用户信息表Reader
2.1.4 用户信息权限表right
2.1.5用户账号表user
2.1.6 管理员账号表usererheper
2.2数据关系图
2.3图书管理系统暂有数据(模拟运行)
2.3.1管理员
学工号:2014701020 姓名:邢吉昌密码:111
2.3.2普通用户
学工号:2014701021 姓名:猪八戒密码:333
学工号:2014701022 姓名:孙悟空密码:444
2.3.3图书信息
编号 作者 书名 出版社 出版日期 价格 书类
H319584781 MARK C#入门经典 清华大学出版社 2011/4/5 21.56 计算机
H319584782 哪吒 和猴子的那些事 天庭文印 2010/1/2 216.5 情感
H319584783二郎神 我也可以闹天宫 天庭文印 2009/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 WindowsFormsApplication1
{
public partial class LoginForm : Form
{
public 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.Focus();
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
{
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(object 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 SqlCommand(cmd, conConnection);
SqlDataReader reader = com.ExecuteReader();
while (reader.Read())
{
User = reader["AdminID"].ToString();
Pwd = reader["AdminPass"].ToString();
if (User.Trim() == loginid.Text & Pwd.Trim() == textBox3.Text)
{
flagshow = true;
}
}
reader.Close();
conConnection.Close();
if (flagshow == true)
{
this.Hide();
admin f1 = new admin ();
f1.ShowDialog();
}
}
else
{
if (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);
SqlDataReader reader1 = cnm.ExecuteReader();
while (reader1.Read())
{
User = reader1["ReaderID"].ToString();
Pwd = reader1["ReaderPassword"].ToString();
if (User.Trim() == loginid.Text & Pwd.Trim() == textBox3.Text)
{
flagshow = true;
}
}
reader1.Close();
conConnection1.Close();
if (flagshow == true)
{
this.Hide();
读者查阅 f1 = new 读者查阅();
f1.ShowDialog();
}
else
{
MessageBox.Show("用户名不存在或密码错误!", "提示");
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(object 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登陆界面
如果学号已经存在,则会出现“*用户名已经存在,请重新输入”的提示,当重新输入密码时,如果两次密码不相同,则会出现“*请注意,两次密码不一样”的提示
主要代码如下:
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 WindowsFormsApplication1
{
public partial class 注册 : Form
{
public 注册()
{
InitializeComponent();
}
public bool UserFlag;
private void textBox3_TextChanged(object sender, EventArgs e)
{
if (textBox2.Text.Trim() != textBox3.Text.Trim())
{
label6.Visible = true;
}
else
{
label8.Visible = true;
label6.Visible = false;
}
}
private void 注册_Load(object sender, EventArgs 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 ,conConnection );
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;
UserFlag = false;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
int index = textBox4.Text.IndexOf("@");
if (index < 1)
{
label10.Visible = true;
label10.Text = "邮箱格式不正确,请重新输入";
}
else
{
label10.Visible = true;
label10.Text = "邮箱格式正确";
}
if(UserFlag==true )
{
MessageBox.Show("用户已经存在,请重新输入!");
return;
}
if (UserFlag==false)
{
SqlConnection 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 SqlCommand(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.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class admin : Form
{
public admin()
{
InitializeComponent();
}
private void 查看用户信息ToolStripMenuItem_Click(object sender, EventArgs e)
{
权限设置 f8 = new 权限设置();
f8.ShowDialog();
}
private void 查看用户信息ToolStripMenuItem1_Click(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();
}
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 还书处理();
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 System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication1
{
public partial class 新增用户 : Form
{
public 新增用户()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conConnection = 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 + "'," + "'" + textBox2.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();
MessageBox.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;
namespace WindowsFormsApplication1
{
public partial class 用户信息 : Form
{
bool UserFlag;
public 用户信息()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if(UserFlag==false )
{
MessageBox.Show("不存在该用户,请核对后再输入","警告");
return;
}
if (UserFlag == true)
{
SqlConnection conConnection = new SqlConnection(@"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 = true;
textBox2.Text = dr["ReaderName"].ToString().Trim();
textBox3.Text = dr["ReaderPassword"].ToString().Trim();
textBox4.Text = dr["ReaderSex"].ToString().Trim();
展开阅读全文