当前位置:文档之家› 图书管理系统课程设计报告

图书管理系统课程设计报告

《管理信息系统实习》报告专业班级学生姓名指导教师王桃群时间 2012.3.13~2012.3.23成绩评语一、课程设计题目图书管理系统二、系统需求1.系统的准备操作系统:Windows xp数据库系统:SQL Server 2000 或 SQL Server 2005客户端开发工具:Visual Studio 2005或其他开发工具2.知识准备熟悉SQL Server 2000 或 SQL Server 2005的使用;熟悉C#、或其他语言进行数据库编程。

3.系统分析图书信息包括:每种图书都有书名、ISBN、一名或多名作者(译者)、出版社、定价和内容简介等;读者信息包括:借书证记录有借阅者的姓名、密码、所在单位和类别等;读者凭借书证借书,教师最多借书15本书,借书期限最长为90天,学生最多借书8本书,借书期限最长为30天。

对于超期未还的读者不能继续借书,每本书每超期一天罚款0.05元。

三、系统设计1.体系结构本系统使用c/s模式的两层结构,表示层(USL)和数据访问层(DAL)。

表示层(USL):为客户提供对应用程序的访问,以Windows应用程序或Web 应用程序的形式提供实现的功能。

业务逻辑层(BLL):实现应用程序的业务功能,以类库的形式为表示层提供服务。

数据访问层(DAL):实现整个系统所有的数据库连接、数据存取操作,以组件类库的形式为业务逻辑层提供服务。

此外,实体类,简单地说是描述一个业务实体的类。

业务实体直观一点的理解就是整个应用系统业务所涉及的对象,从数据存储来讲,业务实体就是存储应用系统信息的数据表,将数据表中的每一个字段定义成属性,并将这些属性用一个类封装,这个类就称为实体类。

2.功能模块框图3.数据库设计1. 读者类别表(ReaderType)2. 读者信息表(Reader)3. 图书信息表(Book)4. 借阅信息表(Borrow)四、系统实现登录的代码实现:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace BooksMng{public partial class BookLogin : Form{public BookLogin(){InitializeComponent();}private void textBox2_TextChanged(object sender, EventArgs e){}private void btnlogin_Click(object sender, EventArgs e){//连接数据库SqlConnection conn = new SqlConnection("server=.;database=Booksmng; integrated security=True");conn.Open();SqlCommand cmd = conn.CreateCommand();//mandText="select count(*) from Users where userName='"+txtName.Text+"'and userPwd='"+txtPwd.Text+"'";mandText = "select count(*) from Users where userName=@userName and userPwd=@userPwd";cmd.Parameters.Add("@userName", SqlDbType.VarChar, 20).Value = txtName.Text; cmd.Parameters.Add("@userPwd", SqlDbType.VarChar, 20).Value = txtPwd.Text;try{int count = Convert.ToInt32(cmd.ExecuteScalar());if (count != 0){MessageBox.Show("登陆成功!");BookMain frm = new BookMain();frm.Show();}}catch (SqlException ex){//MessageBox.Show("登录失败!");MessageBox.Show(ex.Message);}}private void FrmLogin_Load(object sender, EventArgs e){}}}图书管理部分,主要的代码实现如下:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace BooksMng{public partial class BookManage : Form{public BookManage(){InitializeComponent();}private void Form2_Load(object sender, EventArgs e){DataBind();}private void DataBind(){//连接数据库SqlConnection conn = new SqlConnection("server=.; database=BooksMng;integrated security=True");//SqlConnection conn = new SqlConnection("server=.; database=BooksMng;integrated security=True");conn.Open();SqlCommand cmd = conn.CreateCommand();//mandText = "select * from Book";mandText = "select bkID 编号, bkName 书名,bkAuthor 作者,bkPages 页数,bkPress 出版社 from Book";SqlDataAdapter sda = new SqlDataAdapter(cmd);DataSet ds = new DataSet();sda.Fill(ds);dgvBooks.DataSource = ds.Tables[0];txtName.DataBindings.Clear();txtAuthor.DataBindings.Clear();txtPage.DataBindings.Clear();txtPress.DataBindings.Clear();txtName.DataBindings.Add("Text",ds.Tables[0],"书名");txtAuthor.DataBindings.Add("Text",ds.Tables[0],"作者");txtPage.DataBindings.Add("Text",ds.Tables[0],"页数");txtPress.DataBindings.Add("Text", ds.Tables[0], "出版社");//上面的代码是在窗体Load时,将Books表中的所有记录,即所有的图书信息显示在网格DataGrid空间中。

//}//下面是实现添加功能private void btnAdd_click(object sender, EventArgs e){SqlConnection conn = new SqlConnection("server=.; database=BooksMng;integrated security=True");conn.Open();SqlCommand cmd = conn.CreateCommand();mandText = "insert into Book(bkName, bkAuthor,bkPages,bkPress)values(@bkName,@bkAuthor,@bkPages,@bkPress)";cmd.Parameters.Add("@bkName", SqlDbType.VarChar, 30).Value = txtName.Text;cmd.Parameters.Add("@bkAuthor", SqlDbType.VarChar, 30).Value = txtAuthor.Text; cmd.Parameters.Add("@bkPages", SqlDbType.Int).Value=Convert.ToInt32(txtPage.Text);//类型转换cmd.Parameters.Add("@bkPress", SqlDbType.VarChar, 50).Value = txtPress.Text;try{cmd.ExecuteNonQuery(); //执行上述SQL命令MessageBox.Show("图书添加成功!");DataBind();//重新将数据库绑定到DataGrid}catch (SqlException ex){MessageBox.Show("图书添加失败");MessageBox.Show(ex.Message);}}private void btnSearch_Click(object sender, EventArgs e){//连接数据库SqlConnection conn = new SqlConnection("server=.; database=BooksMng;integrated security=True");conn.Open();SqlCommand cmd = conn.CreateCommand();String sql = "";//按作者查找if (txtAuthor.Text != ""){sql += "select bkID 编号, bkName 书名,bkPages 页数,bkPress 出版社 from Book where bkAuthor=@bkAuthor";}try{mandText=sql;cmd.Parameters.Add("@bkAuthor", SqlDbType.VarChar, 30).Value = txtAuthor.Text;SqlDataAdapter sda=new SqlDataAdapter(cmd);DataSet ds=new DataSet();sda.Fill(ds);dgvBooks.DataSource = ds.Tables[0];}catch(SqlException ex){MessageBox.Show("查找失败");MessageBox.Show(ex.Message);}}private void btnDelete_Click(object sender, EventArgs e){//连接数据库SqlConnection conn = new SqlConnection("server=.; database=BooksMng;integrated security=True");conn.Open();SqlCommand cmd = conn.CreateCommand();mandText = "delete from Book where bkID=@bkID";cmd.Parameters.Add("@bkID", SqlDbType.Int).Value = Convert.ToInt32(dgvBooks[0, dgvBooks.CurrentRow.Index].Value);try{if (MessageBox.Show("确定要删除该图书吗?", "确定删除", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK){cmd.ExecuteNonQuery();MessageBox.Show("删除成功!");DataBind();}}catch (SqlException ex){MessageBox.Show("删除失败");MessageBox.Show(ex.Message);}}//下面做更新图书信息private void btnUpdate_Click(object sender, EventArgs e){SqlConnection conn = new SqlConnection("server=.; database=BooksMng;integrated security=True");conn.Open();SqlCommand cmd = conn.CreateCommand();mandText = "update Book set bkName=@bkName, bkAuthor=@bkAuthor, bkPages=@bkPages,bkPress=@bkPress where bkID=@bkID";cmd.Parameters.Add("@bkID", SqlDbType.Int).Value = Convert.ToInt32(dgvBooks[0, dgvBooks.CurrentRow.Index].Value);cmd.Parameters.Add("@bkName", SqlDbType.VarChar, 30).Value = txtName.Text;cmd.Parameters.Add("@bkAuthor", SqlDbType.VarChar, 30).Value =txtAuthor.Text; cmd.Parameters.Add("@bkPages", SqlDbType.Int).Value =Convert.ToInt32(txtPage.Text);//类型转换cmd.Parameters.Add("@bkPress", SqlDbType.VarChar, 50).Value = txtPress.Text;try{if (MessageBox.Show("确定要更新图书信息吗?", "确认更新", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK){cmd.ExecuteNonQuery();MessageBox.Show("更新成功!");DataBind();}}catch (SqlException ex){MessageBox.Show("更新失败");MessageBox.Show(ex.Message);}}}//图书可以添加成功借书实现主要代码如下:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace BooksMng{public partial class BookBorrow : Form{public BookBorrow(){InitializeComponent();}//获取读者可借天数private int GetLendDay(int rdID){SqlConnection conn = new SqlConnection("server=.;database=BooksMng;integrated security=true");conn.Open();SqlCommand cmd = conn.CreateCommand();mandText = "select CanLendDay from ReaderType where rdType=(select rdType from Reader where rdID=" + rdID + ")";return Convert.ToInt32(cmd.ExecuteScalar());}private void btnBorrow_Click(object sender, EventArgs e){SqlConnection conn = new SqlConnection("server=.;database=BooksMng;integrated security=true");conn.Open();SqlCommand cmd = conn.CreateCommand();mandText = "insert intoBorrow(rdID,bkID,ldContinueTimes,IdDateOut,ldDateRetPlan,lsHasReturn)values(@rdID,@bkID,0,@IdDateOut,@ldDateRetPlan,0)";cmd.Parameters.Add("@rdID", SqlDbType.Int).Value = Convert.ToInt32(txtrdID.Text); cmd.Parameters.Add("@bkID", SqlDbType.Int).Value =Convert.ToInt32(txtbkID.Text);//类型转换cmd.Parameters.Add("@IdDateOut", SqlDbType.DateTime).Value = DateTime.Now;//借书时间为当前的系统时间//应还日期为=借书日期+可借天数cmd.Parameters.Add("@ldDateRetPlan", SqlDbType.DateTime).Value =DateTime.Now.AddDays(GetLendDay(Convert.ToInt32(txtrdID.Text)));try{cmd.ExecuteNonQuery();MessageBox.Show("借书成功!");}catch (SqlException ex){MessageBox.Show("借书失败");MessageBox.Show(ex.Message);}}}}五、系统运行效果图书管理模块的运行结果如下:首先,设计一个用户登录界面,以管理员的身份登录来实现图书的添加、查找、删除、更新的功能。

相关主题