当前位置:文档之家› 数据库实验报告华北电力大学

数据库实验报告华北电力大学

课程设计报告(2014--2015年度第2学期)名称:数据库原理课程设计题目:图书管理信息系统院系:计算机系班级:计科1203学号:学生姓名:指导教师:熊海军设计周数: 1成绩:日期:2015年6月25日《数据库原理课程设计》课程设计任务书一、目的与要求1.本实验是为计算机各专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力而设置的实践环节。

通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。

为后继课程和毕业设计打下良好基础。

2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。

3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界面设计和软件调试等各方面的能力。

是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。

二、主要内容针对一个具有实际应用场景的中小型系统(见题目附录)进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。

大致分为如下步骤:1. 理解系统的数据库需求,分析实体及实体间联系,画出E-R图:1.分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。

2.设计实体之间的联系,包括联系类型和联系的属性。

最后画出完整的E-R图。

2.根据设计好的E-R图及关系数据库理论知识设计数据库模式:1)把E-R图转换为逻辑模式;2)规范化设计。

使用关系范式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。

3)设计关系模式间的参照完整性,要求实现级联删除和级联更新。

4)用SQL语言完成数据库内模式的设计。

3.数据库权限的设计:1)根据系统分析,完成授权操作;2)了解学习收回权限的操作。

4.完成用户界面的设计,对重要数据进行加密。

5.连接数据库,用宿主语言实现系统所需的各种操作:1)实现数据记录的录入、删除、查询和修改。

2)以视图的形式完成复杂查询,比如多表、多条件等。

三、进度计划四、设计(实验)成果要求1.在DBMS(如oracle,SQL Server 2005/2008,DB2等)上完成完整的数据库的设计;2.使用可视化开发平台完成信息系统,要求可以正确运行;3.完成实验报告。

五、考核方式1.在微机上检查数据库模式的设计、三大完整性的设计、关系属于几范式等;2.在微机上检查系统的运行结果,要求学生阐述使用的相关技术;3.实验报告的检查。

六、题目附录1.学生信息管理信息系统2.图书管理信息系统3.物资管理信息系统4.汽车销售管理信息系统5.超市管理信息系统6.通讯录管理信息系统7.工资管理信息系统8.酒店管理信息系统9.小区物业管理信息系统学生姓名:指导教师:年月日一、课程设计(综合实验)的目的与要求1.本实验是为计算机科学与技术等专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力而设置的实践环节。

通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。

为后继课程和毕业设计打下良好基础。

2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。

3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界面设计和软件调试等各方面的能力。

是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。

二、设计(实验)正文1、系统功能图系统详细描述与E-R图设计一个借阅者可以借阅多种图书,每种图书可以被多个借阅者借阅(假设每种馆藏副本不止一本)。

每种图书有一个唯一的ID号作为标志,每一个借阅者和管理员有一个唯一的借阅者或管理员号,每一个图书对应一个图书类别,每一个图书类别有一个唯一的图书类别编号来定义不同的图书类别。

通过设置管理员和借阅者不同权限使管理员对图书信息和管理员信息具有增删改的权限,借阅者可以借阅图书。

根据用户需求,对象的类描述如下:1.4根据以上分析设计出系统的E-R 图如下:管理管理员借阅者图书借阅更新1 11nnn 帐号姓名 密码姓名 帐号 密码 性别 出生年月名称状态 作者出版社 出版日期 描述借阅日期借阅编号2、系统逻辑结构设计2.1根据以上E-R图得到系统逻辑模型如下:借阅者(借阅者帐号,借阅者姓名,借阅者密码,借阅者性别,借阅者出生年月)图书(图书编号,名称,作者,类别名称,状态,出版社,出版日期,描述)管理员(管理员编号,管理员姓名,管理员密码)类别(类别编号,类别名称)借阅(借阅编号,借阅者帐号,图书编号,借阅日期)说明:以上关系中,下划线部分为对应关系的主码,加黑部分为外码,且所有属性均非空。

2.2满足三范式的证明:2.3参照完整性各个关系间的参照情况如下图所示:2.4 SQL语言创建各表借阅者表:CREATE TABLE TB_Reader(Rnum varchar(20)primary key,Rname varchar(20)not null,Rpwd varchar(20)not null,Rsex varchar(20)not null,Rbirth varchar(20)not null)图书表:CREATE TABLE TB_Book(Bnum varchar(20)primary key,Bname varchar(20)not null,Bstate int not null,Btype varchar(20)not null,Bauthor varchar(20)not null,Bpublisher varchar(20)not null,Bpublish varchar(20),Bdescrib varchar(20) ,foreign key(Btype)references TB_Type(typename))管理员表:CREATE TABLE TB_Admin(Anum varchar(20)primary key,Aname varchar(20)not null,Apwd varchar(20)not null,)借阅表:CREATE TABLE TB_Borrow(Id int primary key,Bnum varchar(20)not null,Rnum varchar(20)not null,Rtime varchar(20)not null,Rtime varchar(20),foreign key(Bnum)references Book(Bnum),foreign key(Rnum)references Reader(Rnum),on delete cascadeon update cascade)权限表:CREATE TABLE TB_Type(Typenum varchar(20)primary key,Typename varchar(20)not null,)建表结果:2.5建成各表的截图●Admin表●Book表●Borrow表●Reader表●Type表3.连接并操作数据库举例:3.1连接数据库<?xml version="1.0"encoding="utf-8" ?><configuration><configSections></configSections><connectionStrings><add name="Library.Properties.Settings.LibraryConnectionString"connectionString="Data Source=.;Initial Catalog=Library;Persist Security Info=True; Integrated Security = True;"providerName="System.Data.SqlClient" /></connectionStrings></configuration>4.界面设计与运行结果根据系统所需实现的功能及系统的用户类型不同,将界面设计如下:◆登陆界面◆借阅者操作界面◆管理员操作界面◆管理员管理界面◆借阅者管理界面◆图书管理界面图书类别管理界面三、课程设计总结或结论通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,对数据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据表的创建,学会了不少有关数据库开发过程中的知识。

同时增强了自己在数据库中应用SQL语言的灵活性,其中包括,插入、删除、修改、查询,牵涉表和表之间的联系,约束项的设置,使逻辑更严密。

此外在前台界面编写时自学了很多C#编程语言的知识,收获很大。

在实验过程中,遇到的问题很多,比如插入操作在前台页面获取的值为空,数据库拒绝了此插入操作,我的解决方法是将所有表的所有属性都改成了不能为空,避免了数据在页面和数据库之前传输操作时的错误.在整个过程中,我上网和从书中查了不少资料,学以致用,自我创新,从学到用,从用又到学,不断修改,完善系统。

虽然不能达到老师要求那样的约束完善的图书馆管理系统,特别是对借阅者借阅图书部分的实现比较简单。

但在这短短的一周,也实现了较为完善的基本功能,体会到加强理论学习对完善系统会有很多帮助。

另外,在发现问题、分析问题和解决问题的过程中,学到了很多东西,最后感谢老师的悉心教导。

四、参考文献[1] 王珊,萨师煊.《数据库系统概论》高等教育出版社.[2] 宋雨. 软件工程. 北京:中国电力出版社,2007(2).[3] 宋雨,程晓荣,黄志强. 计算机综合实践指导. 北京:清华大学出版社,2004(3).[4] 刘婕,张琳. C#.NET2.0+SQL Server动态网站开发从基础到实践. 北京:电子工业出版社,2007(1).[5] Pressman RS,郑人杰,马素霞. 软件工程: 实践者的硏究方法[M]. 北京:机械工业出版社,2011(10).[6] 李铭. C#高级编程. 北京:清华大学出版社,2010(11).附录➢Admin表:➢Borrow表:➢Reader表:➢Type表:部分程序代码://MainLoginusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using BLL;namespace Library{public partial class MainLogin : Form{BLL.ReaderBLO rb = new ReaderBLO();AdminBLO ab = new AdminBLO();public MainLogin()InitializeComponent();comboBox1.SelectedIndex = 0;}private void bt_login_Click(object sender, EventArgs e){string num=tb_num.Text.Trim();string pwd=tb_pwd.Text.Trim();int index = comboBox1.SelectedIndex;if (index==0){bool flag = rb.IsReaderLogin(num, pwd);if (flag){Form adl = new ReaderManage(num, pwd);this.Hide();adl.Show();}else{MessageBox.Show("账户和密码不匹配,请重新输入!", "警告", MessageBoxButtons.OK);tb_num.Text = "";tb_pwd.Text = "";tb_num.Focus();}}else{bool flag = ab.IsAdminLogin(num, pwd);if (flag){Form adl = new AdminManage();this.Hide();adl.Show();}else{MessageBox.Show("账户和密码不匹配,请重新输入!", "警告", MessageBoxButtons.OK);tb_num.Text = "";tb_pwd.Text = "";tb_num.Focus();}}}private void bt_exit_Click(object sender, EventArgs e){Application.Exit();}private void llb_login_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){Form adl = new AdminLogin();this.Hide();adl.Show();}protected override void OnClosing(CancelEventArgs e){//退出提示,真的要退出,才允许退出if(MessageBox.Show(this, "确认退出?", "提示信息:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes){e.Cancel = false;}else{e.Cancel = true;}}private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {try{System.Diagnostics.Process.Start("");}catch{//访问链接失败}}}}//AdminManageusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using BLL;namespace Library{public partial class AdminManage : Form{BookBLO bb = new BookBLO();AdminBLO ab = new AdminBLO();public AdminManage(){InitializeComponent();bt_TopManage.Enabled = false;}//分别按图书编号、图书名、出版社查找图书private void bt_sure_Click(object sender, EventArgs e){string num = tb_num.Text.Trim();DataTable dt = bb.SearchBorrowBookByNum(num);if (dt.Rows.Count>0){dataGridView1.DataSource = dt;bt_TopManage.Enabled = true;tb_num.Enabled = false;}else{MessageBox.Show("未找到相应编号的图书!", "警告", MessageBoxButtons.OK);}}private void bt_T opManage_Click(object sender, EventArgs e)string num= tb_num.Text.Trim();bool b = ab.LogoutBookByBnum(num);if (b){MessageBox.Show("更新图书状态成功!", "提示", MessageBoxButtons.OK);dataGridView1.DataSource=bb.SearchBorrowBookByNum(num);tb_num.Enabled = true;tb_num.Text = "";}else{MessageBox.Show("更新图书状态未成功!", "提示", MessageBoxButtons.OK);}}private void类别管理T oolStripMenuItem_Click(object sender, EventArgs e){Form adl = new TypeManage();//this.Hide();adl.Show();}private void图书管理T oolStripMenuItem_Click(object sender, EventArgs e){//图书信息添加页面Form adl = new ManageBook();//this.Hide();adl.Show();}private void借阅者管理ToolStripMenuItem_Click(object sender, EventArgs e)Form adl = new ManageReader();//this.Hide();adl.Show();}private void管理员管理ToolStripMenuItem_Click(object sender, EventArgs e){//添加管理员页面Form adl = new ManageAdmin();//this.Hide();adl.Show();}private void退出登录T oolStripMenuItem1_Click(object sender, EventArgs e){MainLogin lo = new MainLogin();lo.Show();this.Visible = false;}}}//ReaderManageusing System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using BLL;namespace Library{public partial class ReaderManage : Form{BookBLO bb = new BookBLO();ReaderBLO rb = new ReaderBLO();private string rNum;private string rPsw;public ReaderManage(){InitializeComponent();comboBox1.SelectedIndex = 0;}public ReaderManage(string num, string psw){InitializeComponent();comboBox1.SelectedIndex = 0;rNum = num;rPsw = psw;dataGridView1.AllowUserT oResizeColumns = false;dataGridView1.AllowUserT oResizeRows = false;dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;}private void bt_sure_Click(object sender, EventArgs e){int i = comboBox1.SelectedIndex;string s = tb_insert.Text.Trim();if (i == 0)//图书编号{dataGridView1.DataSource = bb.SearchBookByNum(s);}if (i == 1)//图书名称{dataGridView1.DataSource = bb.SearchBookByName(s);}if (i == 2)//出版社{dataGridView1.DataSource = bb.SearchBookByPublisher(s);}}private void bt_borrow_Click(object sender, EventArgs e){string bnum = tb_num.Text.Trim();{bool b = rb.BorrowBook(bnum, rNum);if (b){MessageBox.Show("借阅图书成功!", "提示", MessageBoxButtons.OK);dataGridView1.DataSource = bb.SearchBookByNum(bnum);}else{MessageBox.Show("此书已被借出或不存在!", "提示", MessageBoxButtons.OK);tb_num.Focus();}}}private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e){e.PaintParts = DataGridViewPaintParts.All ^ DataGridViewPaintParts.Focus;}private void bt_IsBorrow_Click(object sender, EventArgs e){DataTable dt = new DataTable();dt = rb.GetAllBookByNum(rNum);if (dt.Rows.Count > 0){dataGridView1.DataSource = dt;}else{MessageBox.Show("查询错误!", "提示", MessageBoxButtons.OK);}}private void logout_Click(object sender, EventArgs e){MainLogin lo = new MainLogin();lo.Show();this.Visible = false;}}。

相关主题