数据库图书馆管理系统课程设计报告

上传人:抢*** 文档编号:104514468 上传时间:2022-06-10 格式:DOC 页数:22 大小:534KB
收藏 版权申诉 举报 下载
数据库图书馆管理系统课程设计报告_第1页
第1页 / 共22页
数据库图书馆管理系统课程设计报告_第2页
第2页 / 共22页
数据库图书馆管理系统课程设计报告_第3页
第3页 / 共22页
资源描述:

《数据库图书馆管理系统课程设计报告》由会员分享,可在线阅读,更多相关《数据库图书馆管理系统课程设计报告(22页珍藏版)》请在装配图网上搜索。

1、课程设计报告( 2011-2012年度第2学期)名 称:数据库原理课程设计 题 目:图书管理信息系统 院 系: 计算机系 班 级: 学 号: 学生姓名: 指导教师: 阎蕾 设计周数: 1周 成 绩: 日期:2012年 7月4日数据库原理课程设计课程设计任 务 书一、 目的与要求1. 本实验是为网络工程、信息安全等专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力而设置的实践环节。通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。为后继课程和毕业设计打下良好基础。2. 通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。3. 通过对一个数据库系统的设计

2、,培养学生对数据库需求分析、数据库方案设计、系统编码、界面设计和软件调试等各方面的能力。是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。二、 主要内容针对一个具有实际应用场景的中小型系统(见题目附录)进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。大致分为如下步骤:1. 理解系统的数据库需求,分析实体及实体间联系,画出E-R图:1 分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。2 设计实体之间的联系,包括联系类型和联系的属性。最后画出完整的E-R图。2根据设计好的E-R图

3、及关系数据库理论知识设计数据库模式:1) 把E-R图转换为逻辑模式;2) 规范化设计。使用关系范式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。3) 设计关系模式间的参照完整性,要求实现级联删除和级联更新。4) 用SQL语言完成数据库内模式的设计。3数据库权限的设计:1) 根据系统分析,完成授权操作;2) 了解学习收回权限的操作。4完成用户界面的设计,对重要数据进行加密。5连接数据库,用宿主语言实现系统所需的各种操作:1) 实现数据记录的录入、删除、查询和修改。2) 以视图的形式完成复杂查询,比如多表、多条件等。三

4、、 进度计划序号设计(实验)内容完成时间备注1根据任务书完成信息模型(概念模型、逻辑模型、完整性、规范化)的设计,并基于选用的DBMS实现该信息模型,然后录入初始数据2根据任务书完成各种数据定义和数据操作,并保留所有SQL语句。3数据库权限设计,用户界面设计4用可视化开发工具环境开发学生选定的信息系统(C/S或者B/S模式)5系统的完善与验收四、 设计(实验)成果要求1 在DBMS(如oracle,SQL Server 2005/2008,DB2等)上完成完整的数据库的设计;2 使用可视化开发平台完成信息系统,要求可以正确运行;3 完成实验报告。五、 考核方式1 在微机上检查数据库模式的设计、

5、三大完整性的设计、关系属于几范式等;2 在微机上检查系统的运行结果,要求学生阐述使用的相关技术;3 实验报告的检查。六、 题目附录1 学生信息管理信息系统2 学生成绩管理信息系统3 图书管理信息系统4 物资管理信息系统5 汽车销售管理信息系统6 超市管理信息系统7 通讯录管理信息系统8 工资管理信息系统9 酒店管理信息系统10 小区物业管理信息系统学生姓名: 指导教师: 年 月 日一、课程设计的目的与要求1. 本实验是为网络工程、信息安全等专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力而设置的实践环节。通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。为后继课

6、程和毕业设计打下良好基础。2. 通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。3. 通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界面设计和软件调试等各方面的能力。是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。二、设计正文1 需求分析 11 图书管理信息系统就是实现图书的管理12 可分为三种用户:管理员,其权限最大,有增删图书信息,更改图书种类,增加图书,修改普通用户信息;普通用户,对图书进行查阅,借书和还书。2 系统功能设计,可以用模块结构图、功能结构图来描述。功能结构图:用户登录普通用户系统管

7、理员修改用户信息增删图书借阅记录还书查询图书借阅图书增删图书增删用户3 数据库概念设计(含ER图)管理借阅管理员书籍用户 1 N M 1 1 1 1从属拥有拥有 1 N 1分类账户 管理员账户4 数据库逻辑设计4.1图书管理员表:admin:普通用户表:Reader:借阅图书信息用户表:IssueBook:图书表:Book:图书所属大类表:SmallClassOfBook:图书所属小类表:BigClassOfBook:4.2数据库关系图:5 系统编码与实现。主要功能截图和部分核心代码:5.1登录界面:部分代码:using System;using System.Collections.Gene

8、ric;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace BookManagementSystem public partial class frmLogin : Form private Boolean IsPass; private int count = 0; public frmLogin() InitializeComponent(); private void frmLogin_FormCl

9、osing(object sender, FormClosingEventArgs e) Program.DataOperator.CloseConnection(); Environment.Exit(1); private void BtnLogin_Click(object sender, EventArgs e) if (account.Text.Equals() MessageBox.Show(帐号不能为空); return; if (checkBox.Checked) Program.IsAdministrator = true; IsPass = Program.DataOper

10、ator.CheckAdmin(account.Text, password.Text); if (IsPass) Program.CurrentAccount = account.Text; this.Dispose(); else Program.IsAdministrator = false; IsPass = Program.DataOperator.CheckUser(account.Text, password.Text); if (IsPass) Program.CurrentAccount = account.Text; this.Dispose(); MessageBox.S

11、how(帐号或密码错误); count+; if (count = 5) MessageBox.Show(错误登录次数太多!, 错误,MessageBoxButtons.OK,MessageBoxIcon.Error); Program.DataOperator.CloseConnection(); Environment.Exit(1); return; private void name_KeyPress(object sender, KeyPressEventArgs e) BtnLogin.Enabled = true; private void BtnExit_Click(objec

12、t sender, EventArgs e) Program.DataOperator.CloseConnection(); Environment.Exit(1); private void frmLogin_Load(object sender, EventArgs e) account.Focus(); 5.2图书查询:部分代码如下:private void BookManagementSystem_Load(object sender, EventArgs e) this.Activate(); listView1.Select(); ClassOfBook = Program.Dat

13、aOperator.GetBigClassOfBook(); IssueBook.Add(借书); IssueBook.Add(还书); IssueBook.Add(所有借还记录); BookManage.Add(书籍管理); BookManage.Add(人员管理); BookManage.Add(书籍类别管理); SetBtn1(); private void SetBtn1() currbtn = btn1; listView1.Select(); listView1.Dock = DockStyle.None; button1.Dock = DockStyle.Top; button2

14、.Dock = DockStyle.Bottom; button3.SendToBack(); button3.Dock = DockStyle.Bottom; listView1.BringToFront(); listView1.Dock = DockStyle.Bottom; listView1.Dock = DockStyle.Fill; listView1.Clear(); listView1.Items.Add(, 所有书籍, 0); AddItemTolistView(0, ClassOfBook); 5.3借书界面:借书部分代码:public frmIssueBook(stri

15、ng no, string name, string CountOfBook, string txt) this.b = true; InitializeComponent(); this.BookNo.Text = no; this.BookName.Text = name; this.CountOfBook.Text = CountOfBook; this.synopsis.Text = txt; private void frmIssueBook_Load(object sender, EventArgs e) NoOfPersonal.Text = Program.CurrentAcc

16、ount; BookNo.ReadOnly = b; BookName.ReadOnly = b; button3.Enabled = !b; /MessageBox.Show(IssueOfDate.Text); this.AcceptButton = button1; private void button1_Click(object sender, EventArgs e) string sdata = new string4; sdata0 = BookNo.Text; sdata1 = NoOfPersonal.Text; sdata2 = NameOfPersonal.Text;

17、sdata3 = IssueOfDate.Text; if (sdata0 = | sdata1 = | sdata2 = | sdata3=) MessageBox.Show(资料不完整!); return; / MessageBox.Show(sdata0+ +sdata1+ +sdata2+ +sdata3); switch (Program.DataOperator.IssueBook(sdata) case 1: MessageBox.Show(你已借了这本书!); break; case 2: MessageBox.Show(借书成功!); this.Close(); break;

18、 case 3: MessageBox.Show(失败!); this.Close(); break; 5.4借书提示信息:5.5管理员界面:管理员进行书籍,人员管理部分代码如下: private void bookBindingNavigatorSaveItem_Click(object sender, EventArgs e) if (MessageBox.Show(确定要保存吗?, 保存确定, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.No) return; this.Validate(); this

19、.bookBindingSource.EndEdit(); this.bookTableAdapter.Update(this.mydata2DataSet.Book); private void frmBookManager_Load(object sender, EventArgs e) / TODO: 这行代码将数据加载到表“mydata2DataSet.Book”中。您可以根据需要移动或移除它。 this.bookTableAdapter.Fill(this.mydata2DataSet.Book); 图片PictureBox.SizeMode = PictureBoxSizeMode

20、.StretchImage; private void InImage_Click(object sender, EventArgs e) if (openFileDialog.ShowDialog() = DialogResult.OK) 图片PictureBox.Image = Program.DataProcessor.GetImageFromFilePath(openFileDialog.FileName); private void GetBookClass_Click(object sender, EventArgs e) 大类ComboBox.Items.Clear(); for

21、each (string sdata in pBigClassOfBook) 大类ComboBox.Items.Add(sdata); private void 大类ComboBox_SelectedIndexChanged(object sender, EventArgs e) ArrayList SmallClassOfBook = Program.DataOperator.GetSmallClassOfBook(大类ComboBox.Text); 小类ComboBox.Items.Clear(); foreach (string sdata in SmallClassOfBook) 小类

22、ComboBox.Items.Add(sdata); private void SerchBox_Click(object sender, EventArgs e) try string SerchData=new string3; for (int i = 0; i SerchData.Length; i+) SerchDatai = %; if(SerchBoxNo.Text!=) SerchData0 = SerchBoxNo.Text; if(SerchBoxName.Text!=) SerchData1 = SerchBoxName.Text; string CmdString =

23、SELECT 书籍编号, 书名, 作者, 出版社, 现有数量, 小类, 大类, 内容简介, 入库时间, 图片 FROM dbo.Book + where 书籍编号 like + SerchData0 + + and 书名 like % + SerchData1 + %; / MessageBox.Show(CmdString); Program.SerchCmd1.CommandText = CmdString; try this.bookTableAdapter.FillBy(this.mydata2DataSet.Book); catch (System.Exception ex) Sys

24、tem.Windows.Forms.MessageBox.Show(ex.Message); catch (Exception ex) / MessageBox.Show(ex.Message); 5.6管理员观察看借还信息:部分代码如下:private void issueBookBindingNavigatorSaveItem_Click(object sender, EventArgs e) if (MessageBox.Show(确定要保存吗?, 保存确定, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult

25、.No) return; this.Validate(); this.issueBookBindingSource.EndEdit(); this.issueBookTableAdapter.Update(this.mydata2DataSet.IssueBook); private void frmIssueReturnManager_Load(object sender, EventArgs e) / TODO: 这行代码将数据加载到表“mydata2DataSet.IssueBook”中。您可以根据需要移动或移除它。 this.issueBookTableAdapter.Fill(thi

26、s.mydata2DataSet.IssueBook); 5.7本实验中将所有的数据库查询,更新,删除等操作设置成方法,组合在一个类中。代码如下:using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Windows.Forms;using System.Collections;using System.IO;using System.Drawing ;namespace BookManagementSys

27、tem public class DataOperation SqlConnection sqlconn; SqlCommand cmd; SqlParameter para; public DataOperation() try sqlconn = new SqlConnection(Data Source=LENOVO-PC;Initial Catalog=MYDATA2;Persist Security Info=True;User ID=sa;Password=123456123); sqlconn.Open(); cmd = sqlconn.CreateCommand(); catc

28、h (Exception ex) MessageBox.Show(ex.Message); public void CloseConnection() sqlconn.Close(); public Boolean CheckAdmin(string account, string password) cmd.CommandText = select * from admin where account= + account + and password= + password + ; SqlDataReader thisReader = cmd.ExecuteReader(); if (th

29、isReader.Read() thisReader.Close(); return true; else thisReader.Close(); return false; public DataSet GetAllBookData() SqlDataAdapter thisAdapter = new SqlDataAdapter(Select * from Book, sqlconn); DataSet thisDataSet=new DataSet(); thisAdapter.Fill(thisDataSet, Book); return thisDataSet; / thisAdap

30、ter.Fill(thisDataSet,Boo public ArrayList GetBigClassOfBook() cmd.CommandText = select * from BigClassOfBook; SqlDataReader thisReader = cmd.ExecuteReader(); ArrayList p = new ArrayList(); while (thisReader.Read() p.Add(thisReader大类); thisReader.Close(); return p; public ArrayList GetSmallClassOfBoo

31、k(string BigClassOfBook) cmd.CommandText = select * from SmallClassOfBook where 小类 LIKE +BigClassOfBook+%; SqlDataReader thisReader = cmd.ExecuteReader(); ArrayList p = new ArrayList(); while (thisReader.Read() p.Add(thisReader小类.ToString().Split(new Char + )1); thisReader.Close(); return p; /public

32、 public ArrayList GetSmallClassOfBook() cmd.CommandText = select * from SmallClassOfBook ; SqlDataReader thisReader = cmd.ExecuteReader(); ArrayList p = new ArrayList(); while (thisReader.Read() p.Add(thisReader小类.ToString(); thisReader.Close(); return p; public int IssueBook(string Insert) try cmd.

33、CommandText = select * from IssueBook where 图书编号=+Insert0+ and +借书人编号=+Insert1+ and +还书日期=None; SqlDataReader thisReader = cmd.ExecuteReader(); if (thisReader.Read() thisReader.Close(); return 1; thisReader.Close(); cmd.CommandText = insert into IssueBook values(图书编号,借书人编号,借书人姓名,借书日期,还书日期); para = n

34、ew SqlParameter(图书编号, SqlDbType.NVarChar,50); para.Value = Insert0; cmd.Parameters.Add(para); para = new SqlParameter(借书人编号, SqlDbType.NVarChar,50); para.Value = Insert1; cmd.Parameters.Add(para); para = new SqlParameter(借书人姓名, SqlDbType.NVarChar,50); para.Value = Insert2; cmd.Parameters.Add(para);

35、para = new SqlParameter(借书日期, SqlDbType.NVarChar,100); para.Value = Insert3; cmd.Parameters.Add(para); para = new SqlParameter(还书日期, SqlDbType.NVarChar, 100); para.Value = 未还; cmd.Parameters.Add(para); cmd.ExecuteNonQuery(); cmd.CommandText=UPDATE Book set 现有数量=现有数量-1 where 书籍编号=+Insert0+; cmd.Execu

36、teNonQuery(); return 2; catch (Exception ex) MessageBox.Show(ex.Message); return 3; public int ReturnBook(string updata) try cmd.CommandText = select * from IssueBook where 图书编号= + updata0 + and + 借书人编号= + updata1+; SqlDataReader thisReader = cmd.ExecuteReader(); if (!thisReader.Read() thisReader.Cl

37、ose(); return 1; thisReader.Close(); cmd.CommandText = UPDATE IssueBook set 还书日期= + updata2 + where 图书编号= + updata0 + and 借书人编号= + updata1+; /MessageBox.Show(cmd.CommandText); cmd.ExecuteNonQuery(); cmd.CommandText = UPDATE Book set 现有数量=现有数量+1 where 书籍编号= + updata0+; cmd.ExecuteNonQuery(); return 2

38、; catch (Exception ex) MessageBox.Show(ex.Message); return 3; public string ReturnBookNameContenAndCount(string no) try cmd.CommandText = select * from Book + where 书籍编号= + no+; SqlDataReader thisReader = cmd.ExecuteReader(); string sdata = new string3; thisReader.Read(); sdata0 = thisReader书名.ToStr

39、ing(); sdata1 = thisReader内容简介.ToString(); sdata2 = thisReader现有数量.ToString(); thisReader.Close(); return sdata; catch (Exception ex) MessageBox.Show(ex.Message); return null; ; public ArrayList GetBookNamesFromPersonalNo(string no) cmd.CommandText = select 书名 from IssueBook left outer join Book on

40、IssueBook.图书编号=Book.书籍编号 + where IssueBook.借书人编号= + no + and IssueBook.还书日期=未还; SqlDataReader thisReader = cmd.ExecuteReader(); ArrayList p = new ArrayList(); try while (thisReader.Read() p.Add(thisReader书名.ToString(); return p; catch (Exception ex) MessageBox.Show(ex.Message); return null; finally

41、thisReader.Close(); public string GetBookNoFromName(string name) cmd.CommandText = select 书籍编号 from Book where 书名= + name + ; SqlDataReader thisReader = cmd.ExecuteReader(); try thisReader.Read(); return thisReader书籍编号.ToString(); catch (Exception ex) MessageBox.Show(ex.Message); return null; finall

42、y thisReader.Close(); public string GetPersonalNameFromNo(string no) cmd.CommandText = select 借书人姓名 from IssueBook where 借书人编号= + no + ; SqlDataReader thisReader = cmd.ExecuteReader(); try thisReader.Read(); return thisReader借书人姓名.ToString(); catch (Exception ex) MessageBox.Show(ex.Message); return null; finally thisReader.Close(); public void InsertImage(string FilePath) cmd.CommandText = insert into temptable values (t);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!