《【毕业设计】基于C和Access的图书管理系统设计与实现.doc》由会员分享,可在线阅读,更多相关《【毕业设计】基于C和Access的图书管理系统设计与实现.doc(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图书管理系统设计报告学 院:信息科学与工程学院专业班级:08计科1班姓 名:*学 号:摘要本设计是一个图书信息管理系统的后台数据库的设计。由于时间和精力的限制本设计仅实现了图书管理系统基本功能的设计与实现。通过本次设计,达到了了解数据库应用系统的开发过程,熟悉了系统分析和设计的过程和方法的目的。在实践中掌握了知识,达到了学以致用的目标。本次设计首先通过查阅资料对图书领域的基本知识有一定的认识,了解用户各个方面的需求,包括现有的以及将来的可能增加的需求。然后按照数据库设计的六个阶段进行了设计与实现:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库的运行和维护。数据库在各种信
2、息的提供、保存、更新和查询方面都要求满足各种信息的输出和输入,符合用户的基本需求。应用Access建立数据库,选用C#作为开发工具,完成了对图书管理系统的实现。索引关键词:数据库设计 Access应用 C#设计目录第一章 绪 论11.1课题研究现状分析11.2 选题的目的及意义11.3 章节安排1第二章 系统需求分析22.1 用户调查2.图书管理系统数据流图22.3 数据字典5第三章 数据库设计73.1数据库概念结构设计73.2数据库逻辑结构设计93.3数据库实施10第四章 图书管理系统使用说明13.图书管理系统登录界面:13.办公室子系统界面:20.编目部子系统界面:24.流通部子系统界面:
3、29.读者子系统界面:34第五章 总结39第一章 绪 论随着数据库技术在各行各业的广泛应用,强大的数据库窗口技术、良好的数据库访问能力和友好的用户界面,日益成为设计者的得力助手。1.1课题研究现状分析在现今信息化发达的社会,图书的发行量与日俱增。传统的图书馆需要制作有署名与对应编号的书卡,由读者按分类查找再交由图书管理员来处理借书工作,还书也要人工翻阅大量的记录,这样使得工作量大并及其繁琐,效率变得低下。因此需要对书籍资源、读者资源、借书信息进行管理,及时了解各个环节中信息的变更,有利用管理效率的提高。建立网上电子图书管理系统的目的是实现无纸化图书管理,减轻管理员的工作量,方便读者查阅所需的图
4、书,还可以利用网络实现提醒读者还书的功能。管理员还可以对各种图书进行分析统计,对过时、损坏的图书进行删除,预约图书供应商订购更新的图书。达到降低成本提高工作效率的目标。1.2 选题的目的及意义目的:图书管理系统主要目的是对图书馆种类繁多的书籍进行管理,并且合理管理好用户的借还信息。提高图书馆的工作效率,降低管理成本。意义:通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握数据库设计的思想和方法。1.3 章节安排 第一章为绪论部分,介绍课题的基本情况。第二章为系统需求设计分析,主要为数据流图和数据字典。第三章介绍数据库的设计,主要介绍数据库的逻辑设计,结构设计等。
5、第四章主要为图书管理系统的各个界面说明。第二章 系统需求分析2.1 用户调查1.图书馆工作人员对功能的需求工作人员对功能的需求细分如下:、管理员信息的输入,查询,修改; 、书籍信息的输入,查询,修改;、借书信息的输入;4 、学生信息的输入,查询,修改。、图书信息更新:范围可按书编号,名称,价格,数量,类别等款目进行更新;、读者人个信息的输入、修改。查询。建立读者个人信息档案,获取当前读者的个人信息。并根据学号查询当前读者当前的借书情况等。.图书管理系统数据流图图书管理系统编目部子系统流通部子系统办公室子系统读者子系统图书借阅图书信息查询管理员信息录入管理员信息修改管理员信息检索读者信息录入,修
6、改借阅情况查询图书信息检索读者信息查询图书编目图书修改图书编目图2-1 系统功能分解图2-2 第0层数据流图数据输出数据来源数据存储数据处理数据流数据流检查有效性根据权限处理数据用户登录要求图2-3 第1层数据流图无效输入输出查询信息查询请求接受查询数据查询图书信息编目请求录入图书信息图书信息表数据文件输出修改信息修改请求修改图书信息图2-4 采编部数据流图图书借阅信息表输出借阅信息借阅请求判断读者借阅权限记录借阅信息接受读者信息输出查询信息图书查询请求接受查询数据查询图书信息图书信息表输出查询信息读者信息查询请求接受查询数据查询读者信息读者信息表图2-5 流通部数据流图输出查询信息查询请求接
7、受查询数据查询管理员信息管理员信息录入请求录入管理员信息管理员信息表数据文件输出修改信息修改请求修改管理员信息图2-6 办公室数据流图输出查询信息查询请求接受查询数据查询读者信息管理员信息录入请求录入读者信息读者信息表数据文件输出修改信息修改请求修改读者信息图2-7 读者系统数据流图输出查询信息图书查询请求接受查询数据查询图书信息图书信息表2.3 数据字典1. 主要数据项的定义 .图书信息表属性名数据类型长度允许空备注BookId数字长整型N唯一Booknamechar50NBookPrice货币货币NBookQuantity数字长整型NCategoryIDchar50N2.读者信息表属性名数
8、据类型长度允许空备注StudentId数字长整型N唯一StudentNamechar50NStudentAddresschar50NStudentBirthdaydatetime无N3.管理员信息表属性名数据类型长度允许空备注managerIDchar50N唯一managerNamechar50NmanagerZWchar50NmanagerAddresschar50NmanagerPSWchar50Y4.借阅图书信息表属性名数据类型长度允许空备注BorrowIdchar10NBookIdchar10NStudentIdchar50NBorrowQuantitydatetimeNBorrowD
9、atedatetimeN第三章 数据库设计3.1数据库概念结构设计1.数据库需要表述的信息有以下几种:(1)图书信息,(2)学生信息,(3)管理员信息(4)学生借阅图书信息管理员管理图书借阅读者借出日期学号出生姓名地址管理员号职位姓名密码书价书名书数量图3-1 系统E-R图借阅号图书编号借出数量借出日期图书类别通过分析整理可得图书管理系统E-R图为:由系统图可得其主要数据流和主要处理过程:. 主要数据流定义 (1)数据流名称:读者信息 定义:学号+密码姓名+性别+所属系+电子邮件+备注 (2)数据流名称:图书信息 定义:流水号+分类号+索取号+书名+作者+价格+出版社+出版日期+是否借出 (3
10、)数据流名称:管理员信息 定义:管理员编号+密码姓名+性别+联系电话 (4)数据流名称:借阅图书 定义:流水号+学号+书名+借书日期. 主要处理过程的定义 (1)处理过程:读者管理输入:读者编号 输出:读者的注册信息处理操作:对所有注册的读者信息建表,用学号作为读者统一编号,编号是唯一的。 (2)处理过程:管理员管理 输入:管理员编号号 输出:管理员的基本信息 处理操作:对所有管理员编号,建立管理员信息表,管理员编号具有唯一性, (3)处理过程:图书管理 输入:流水号 输出:图书的基本信息 处理操作:对所有进馆的图书编号,建立图书信息表,图书编号具有唯一性, (4)处理过程:图书查询 输入:流
11、水号 输出:所查询图书的相关信息 处理操作:用户登录后可以查询图书信息,按图书编号可以查询到某本书的详细情况,也可以通过书名,作者,出版社进行模糊查询(5)处理过程:图书借出 输入:流水号,学号 输出:图书借阅信息 处理操作:添加图书借阅记录,建立图书借阅信息表。3.2数据库逻辑结构设计通过E/R模型到关系模型的转化,可以得到如下关系模式:图书(流水号,分类号,索取号,书名,作者,价格,出版社,出版日期,是否借出)。读者(学号,姓名,性别,所属系,电子邮件,备注)。管理员(管理员编号,密码,姓名,性别,联系电话,所属部门)。部门(部门号,部门名称)借阅图书(流水号,学号,借书日期,书名,应还日
12、期,归还标记)。每个关系模式的主键码都用下划线标出。(1)流水号是图书的键码,每本书有唯一的流水号。一个读者可以同时借阅多本书,一个管理员可以处理多个读者的借阅事宜。(2)同一本书可以借给不同的同学,同一个读者可以再次借同一本书。于是借书关系的键码为流水号,学号和借书日期的组合。(3)要知道图书当前的状态,是在图书馆存放还是被借阅。需要在图书的模式中增加对应项用以表示图书当前的状态,现在增加是否借出项,并且约定取值和状态的对应关系如下:0:在图书馆中没有被借阅;1:已经被借出。3.3数据库实施 3.3.1数据库及表结构的创建 设本系统使用的数据库名为图书管理系统,根据已设计的关系模式及各模式的
13、完整性要求,现在就可以在SQL Server 2005数据库系统中实现这些逻辑结构。下面是创建基本表的SQL语句:create table 读者信息create table 管理员信息create table 借阅图书信息create table 图书信息下面是使用Access 2003 建立的图书管理系统:系统各基本表的属性如下:读者信息图书信息:管理员信息:借阅图书信息:3.3.2数据库前台的设计根据数据库的设计,该图书管理系统可以分成四个子模块:、图书管理子模块:、学生管理子模块:、系统子模块:根据3个模块的不同功能,可以分别设计不同的操作界面,以实现其功能。根据不同模块的权限不同,设计
14、登录界面,根据不同的权限访问不同的子系统。第四章 图书管理系统使用说明.图书管理系统登录界面:图书管理系统登录界面:有超级管理员和非超级管理员之分,超级管理员主要是可以对管理员进行添加删除修改功能,输入正确的用户名和密码就可以分别进入对应的操作界面。如下图:登录部分相关代码为:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System
15、.Windows.Forms;using System.Data.OleDb;namespace BookStore public partial class frmLogo : Form frmMain frm1; double op=0.05; public frmLogo(frmMain frm) InitializeComponent(); frm1 = frm; public frmLogo() InitializeComponent(); OleDbConnection con; private void button1_Click(object sender, EventArgs
16、 e) if (checkBox1.Checked != true) con = new OleDbConnection();/建立数据库连接 con.ConnectionString = Provider=Microsoft.Jet.OleDb.4.0;Data Source=BookStore.mdb; con.Open(); OleDbCommand cmd = new OleDbCommand(select * from Manager where managerID= + textBox1.Text + and managerPSW= + textBox2.Text + , con)
17、; OleDbDataReader r = cmd.ExecuteReader(); if (r.Read() frm1.Enabled = true; this.Visible = false; con.Close(); else MessageBox.Show(密码或用户名错误!); else con = new OleDbConnection();/建立数据库连接 con.ConnectionString = Provider=Microsoft.Jet.OleDb.4.0;Data Source=BookStore.mdb; con.Open(); if (textBox1.Text
18、= ) OleDbCommand cmd = new OleDbCommand(select * from Manager where managerID= + textBox1.Text + and managerPSW= + textBox2.Text + , con); OleDbDataReader r = cmd.ExecuteReader(); if (r.Read() frm1.Enabled = true; frm1.管理员注册ToolStripMenuItem.Visible = true; this.Visible = false; con.Close(); else Me
19、ssageBox.Show(密码或用户名错误!); else MessageBox.Show(你不是超级管理员!); textBox1.Text = ; textBox2.Text = ; con.Close(); private void button2_Click(object sender, EventArgs e) DialogResult dig = 0; dig = MessageBox.Show(你确定退出吗?, 信息提示!, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dig = DialogResult.Yes
20、) timer1.Start(); else return; private void timer1_Tick(object sender, EventArgs e) frm1.Opacity-=op; if (frm1.Opacity = 0) timer1.Stop(); this.Close(); frm1.Close(); 以超级管理员身份登录该系统,可以显示管理员界面,管理员可以快速进入各模块,没有权限限制。.管理员管理子系统界面:办公室系统主要进行对图书馆工作人员信息的管理。可以进行添加,修改,删除等操作。上图为管理员信息添加界面。1管理员信息修改界面:修改管理员信息时需填写欲修改
21、的管理员的管理员编号,然后在需要修改的项目上填写新信息,不需要修改的地方可以不填写。点击修改按钮确认管理员信息的修改。相关代码为: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.OleDb;namespace BookStore public partial
22、class frmUpdateManager : Form public frmUpdateManager() InitializeComponent(); OleDbCommand cmd; OleDbDataAdapter sdr; DataSet ds; private void frmUpdateManager_Load(object sender, EventArgs e) OleDbConnection con = new OleDbConnection();/建立数据库连接 con.ConnectionString = Provider=Microsoft.Jet.OleDb.4
23、.0;Data Source=BookStore.mdb; string str = select * from Manager; con.Open(); cmd = new OleDbCommand(str, con); sdr = new OleDbDataAdapter(cmd); ds = new DataSet(); sdr.Fill(ds, Manager); dataGridView1.DataSource = ds.TablesManager; textBox1.DataBindings.Add(Text, ds.TablesManager, managerID); textB
24、ox2.DataBindings.Add(Text, ds.TablesManager, managerName); textBox3.DataBindings.Add(Text, ds.TablesManager, managerZW); textBox4.DataBindings.Add(Text, ds.TablesManager, managerAddress); textBox5.DataBindings.Add(Text, ds.TablesManager, managerPSW); private void button2_Click(object sender, EventAr
25、gs e) string mana_id = textBox1.Text; string mana_name = textBox2.Text; string mana_ZW = textBox3.Text; string mana_address = textBox4.Text; string mana_PSW = textBox5.Text; cmd.CommandText = update Manager set managerName=name,managerZW=manaZW,managerAddress=address,managerPSW=manaPSW where manager
26、ID=manaid; OleDbParameter par = new OleDbParameter5; for (int i = 0; i 5; i+) pari = new OleDbParameter(); par0.ParameterName = name; par0.Value = mana_name; par1.ParameterName = manaZW; par1.Value = mana_ZW; par2.ParameterName = address; par2.Value = mana_address; par3.ParameterName = manaPSW; par3
27、.Value = mana_PSW; par4.ParameterName = manaid; par4.Value = mana_id; for (int j = 0; j 5; j+) cmd.Parameters.Add(parj); int n = cmd.ExecuteNonQuery(); if (n = 1) MessageBox.Show(学生信息修改成功!); else MessageBox.Show(修改失败错误!); 2,添加管理员:using System;using System.Collections.Generic;using System.ComponentMo
28、del;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.OleDb;namespace BookStore public partial class frmAddManager : Form OleDbConnection con; OleDbDataAdapter da; DataSet ds; public frmAddManager() InitializeComponent(); con = ne
29、w OleDbConnection();/建立数据库连接 con.ConnectionString = Provider=Microsoft.Jet.OleDb.4.0;Data Source=BookStore.mdb; da = new OleDbDataAdapter(select * from Manager, con); ds = new DataSet(Manager); private void frmAddManager_Load(object sender, EventArgs e) da.Fill(ds, Manager); BindingSource bs = new B
30、indingSource(); /绑定数据源 bs.DataSource = ds.TablesManager; /为绑定数据源赋值 dataGridView1.DataSource = bs;/和控件绑定 textBox1.Focus(); button2.Enabled = false; private void button1_Click(object sender, EventArgs e) con.Open(); OleDbCommand cmd = new OleDbCommand(select * from Manager where managerID=mana_id, con
31、); cmd.Parameters.Add(new OleDbParameter(mana_id, textBox2.Text); OleDbDataReader r = cmd.ExecuteReader(); if (r.Read() con.Close(); MessageBox.Show(学生学号已存在!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Error); textBox1.Text = ; textBox2.Text = ; textBox3.Text = ; textBox4.Text = ; textBox5.Text = ;
32、textBox1.Focus(); else if (textBox1.Text = ) MessageBox.Show(管理员姓名不能为空!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Error); else if (textBox2.Text = ) MessageBox.Show(管理员编号不能为空!, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Error); else MessageBox.Show(学生信息填写正确请保存!); button1.Enabled = false; button2.E
33、nabled = true; con.Close(); private void button2_Click(object sender, EventArgs e) string mana_id = textBox2.Text; string mana_name = textBox1.Text; string mana_ZW = textBox3.Text; string mana_address = textBox4.Text; string mana_PSW = textBox5.Text; con.Open(); OleDbCommand cmd = new OleDbCommand(insert into Manager values(mana_id,mana_name,mana_ZW,mana_address,mana_PSW), con); OleDbParameter par = new OleDbParameter5; for (int i = 0; i 5; i+) pari = new OleDbParameter(); par0.ParameterName = mana_id; par0.Value = mana_id; par1.ParameterName = mana_name; par1.Value = mana_name; par2
限制150内