资源描述
数据库课程设计报告
系 (院): 计算机科学学院
专业班级: 计算机科学与技术
姓 名:
学 号:
指引教师:
设计时间: .12.12 - .12.23
设计地点:
目录
一、课程设计目 3
二、设计任务及规定 3
三、需求分析 4
四、总体设计 4
五、详细设计与实现 5
1、数据库操作公共类: 5
2、登陆界面及代码实现 10
3、系统管理员 12
4、图书管理员 14
5、读者管理员 20
5、读者 27
六、课程设计小结 28
指引教师意见: 30
一、课程设计目
通过对图书管理信息系统系统分析、系统设计、编码和调试等工作实践,理解管理信息系统普通设计办法和实现思路,进一步理解数据库设计基本理论及办法。
二、设计任务及规定
规定完毕一种具备一定实用价值图书管理信息系统,重要任务涉及:
在SQL Server 或SQL Server 环境下建立图书管理信息系统所使用数据库,运用公司管理器或查询分析器建立各种数据库对象,涉及:数据表、视图、约束、存储过程和触发器等;
理解数据库引擎技术,并掌握使用ADO.NET连接数据库服务器和客户端应用程序;
掌握使用C#或其她语言开发一种数据库系统基本办法和环节,应用程序功能涉及:数据输入、修改和删除;数据浏览和查询;数据图形化、报表以及打印输出;系统顾客登录和权限管理;
理解多层C/S或B/S体系构造数据库系统开发过程:需求分析、系统设计、系统实现及文档收集和整顿。
三、需求分析
在做这个课程设计,重要涉及到是咱们此前学习过C#有关技术和数据库某些知识,就感觉上来讲,这两某些比重应当都差不多。要做出图书管理系统,一方面要对数据库建立、修改和维护可以比较熟悉掌握,此外就是数据库与VS之间连接,是直接绑定到VS里面还是通过查询语句让表内容在DataGridView控件中显示出来,以及这两种之间长处和害处,在开始做这个课设之前,咱们心里都要有数,此外,考虑到就是提高访问速度以及可维护性了。至于其她功能实现,就各凭本领了。
四、总体设计
该系统重要由五大功能模块构成:图书管理、读者管理、借阅管理、数据记录和系统管理。各大功能模块又由某些子功能模块构成,其总体设计框架如下。
五、详细设计与实现
1、数据库操作公共类:
class SQLhelper
{
private static SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\计算机学习\数据库\数据库课程设计\汪刚\数据库课程设计\数据库课程设计\MSI_KS.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");//Decrypt(System .Configuration . ConfigurationManager. AppSettings ["connectionString"] ) );
//打开数据库链接
public static void OpenConn()
{
try
{
if (conn.State == ConnectionState.Closed)
conn.Open();
}
catch
{
throw new Exception("数据库连接失败!");
}
}
//关闭数据库连接
private static void CloseConn()
{
if (conn != null)
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
public static int ExecuteNonQuery(string sql)
{
int rows = 0;
try
{
OpenConn();
SqlCommand cmd = new SqlCommand(sql,conn);
rows = cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
CloseConn();
}
return rows;
}
public static int ExecuteNonQuery(string sql,SqlParameter[] parameters)
{
int rows = 0;
try
{
OpenConn();
SqlCommand cmd = new SqlCommand(sql,conn);
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
rows = cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
CloseConn();
}
return rows;
}
public static int ExecuteStoredProc(string storedProcName,SqlParameter[] parameters)
{
int rows = 0;
try
{
OpenConn();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = storedProcName;
cmd.Connection = conn;
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
rows = cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
CloseConn();
}
return rows;
}
/// <summary>
/// 执行简朴SQL语句,返回成果集中首行首列
/// </summary>
/// <param name="sql">要执行SQL查询语句</param>
/// <returns></returns>
public static object ExecuteScalar(string sql)
{
object obj = null;
try
{
OpenConn();
SqlCommand cmd = new SqlCommand(sql,conn);
obj = cmd.ExecuteScalar();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
CloseConn();
}
return obj;
}
/// <summary>
/// 执行简朴SQL语句,返回成果集中首行首列
/// </summary>
/// <param name="sql">要执行SQL查询语句</param>
/// <param name="parameters"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql,SqlParameter[] parameters)
{
object obj = null;
try
{
OpenConn();
SqlCommand cmd = new SqlCommand(sql,conn);
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
obj = cmd.ExecuteScalar();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
CloseConn();
}
return obj;
}
/// <summary>
/// 执行一条带参数SQL语句,返回DataTable对象
/// </summary>
/// <param name="sql">SQL查询语句</param>
/// <param name="parameters"></param>
/// <param name="TableName">DataSet中表名</param>
/// <returns></returns>
public static DataTable GetDataTable(string sql,SqlParameter[] parameters,string TableName)
{
DataTable dt = null;
{
OpenConn();
SqlCommand cmd = new SqlCommand(sql,conn);
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds,TableName);
dt = ds.Tables[0];
}
return dt;
}
/// <summary>
/// 执行存储过程,返回DataTable对象
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters"></param>
/// <param name="TableName">Data中表名</param>
/// <returns></returns>
public static DataTable ExecuteStoredProc(string storedProcName,SqlParameter[] parameters,string TableName)
{
DataTable dt = null;
try
{
OpenConn();
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = storedProcName;
cmd.Connection = conn;
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds,TableName);
dt = ds.Tables[0];
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
CloseConn();
}
return dt;
}
2、登陆界面及代码实现
代码实现:(重要是验证顾客名和密码)
string name = User_Name.Text;
string code = User_Code.Text;
string sql = string.Format(" select * from Reader_sort where reader_name='{0}'",name);
DataTable temp = SQLhelper.GetDataTable(sql,null,"Reader_sort");
if (temp.Rows.Count!= 0)
{
if (temp.Rows[0][3].ToString() == name)
{
if (temp.Rows[0][2].ToString() == code)
{
string temp_sort = temp.Rows[0][1].ToString();
if (User_Sort.Text == temp_sort)
{
switch (temp_sort)
{
case "系统管理员":
string name_temp = User_Name.Text;
System_administrator System_admin_temp = new System_administrator(name_temp);
System_admin_temp.Show();
this.Hide();
break;
case "图书管理员":
string name_temp1 = User_Name.Text;
Book_administrator book_admin_temp = new Book_administrator(name_temp1);
book_admin_temp.Show();
this.Hide();
break;
case "读者管理员":
string name_temp2 = User_Name.Text;
Reader_administrator Reader_admin_temp = new Reader_administrator(name_temp2);
Reader_admin_temp.Show();
this.Hide();
break;
case "读者":
string name_temp3 = User_Name.Text;
Common_Reader reader_temp = new Common_Reader(name_temp3);
reader_temp.Show();
this.Hide();
break;
}
}
else
MessageBox.Show("权限错误!");
}
else
{
MessageBox.Show("密码不对的,请重新输入!");
User_Code.Text = null;
}
}
else
MessageBox.Show("顾客名不存在!");
}
else
{
MessageBox.Show("顾客不存在!");
}
图形界面:
3、系统管理员
代码实现:(某些重要功能)
添加: System_administrator admin_temp = new System_administrator( null);
string sql_update = string.Format("select * from Reader_sort");
admin_temp.dataGridView1.DataSource = SQLhelper.GetDataTable(sql_update,null,"Reader_sort");
int i = admin_temp .dataGridView1 .NewRowIndex;//获取新行行号
i = i + 1;
string reader_name = add_reader_name.Text;
int code = int.Parse(add_code.Text);
string item_sort = add_sort.Text;
string sql = string.Format("insert into Reader_sort values('{0}','{1}','{2}','{3}')",i,item_sort,code,reader_name);
int rows= SQLhelper.ExecuteNonQuery(sql );
if (rows <= 0)
{
MessageBox.Show("添加失败!");
}
修改: update_index = update_index + 1;
string reader_name = modify_reader_name.Text;
int code = int.Parse(modify_code.Text);
string item_sort = modify_sort.Text;
string sql = string.Format("update Reader_sort set sort_name='{0}' ,sort_code='{1}',reader_name='{2}' where sort_ID='{3}'",item_sort ,code ,reader_name ,update_index );
int rows = SQLhelper.ExecuteNonQuery(sql);
if (rows <= 0)
{
MessageBox.Show("修改失败!");
}
删除: DialogResult temp = MessageBox.Show(this,"与否删除该选中行","拟定删除",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if (temp == DialogResult.Yes)
{
string delete_currentcell = dataGridView1.CurrentRow.Cells[0].Value.ToString();
string sql = string.Format("delete Reader_sort where sort_ID='{0}'",delete_currentcell);
int rows = SQLhelper.ExecuteNonQuery(sql);
if (rows <= 0)
{
MessageBox.Show("删除失败");
}
else
{
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);//删除选中行
}
}
图形界面:
4、图书管理员
关于添加、修改、删除操作与系统管理员类似,这里不再赘述,图书管理员中,重要用到技术有:
C/S或B/S模式:
业务实体类: public class Book_entiry
{
#region 私有字段
private int Book_id;
private string book_code;
private string book_name;
private string book_author;
private string book_press;
private string book_datapress;
private string book_isbn;
private string book_catalog;
private string book_languague;
private int book_pages;
private string book_price;
private string book_datain;
private string book_brief;
private string book_cover;
private string book_sum;
#endregion
#region 公有属性
public int bkID
{
get { return Book_id;}
set { Book_id = value;}
}
public string bkCode
{
get { return book_code;}
set { book_code = value;}
}
public string bkName
{
get { return book_name;}
set { book_name = value;}
}
public string bkAuthor
{
get { return book_author;}
set { book_author = value;}
}
public string bkPress
{
get { return book_press;}
set { book_press = value;}
}
public string bkDatePress
{
get { return book_datapress;}
set { book_datapress = value;}
}
public string bkISBN
{
get { return book_isbn;}
set { book_isbn = v
展开阅读全文