文档库 最新最全的文档下载
当前位置:文档库 › 课程设计报告

课程设计报告

目录

课程设计报告 (2)

一、课设名称 (2)

二、设计目的 (2)

三、设计要求 (2)

四、需求分析 (3)

4.1基本信息需求 (3)

4.2 处理需求 (3)

五、数据库设计 (6)

5.1数据库的概念设计 (6)

5、2 数据库的逻辑设计 (9)

六、系统设计 (11)

6.1 系统概述 (11)

6.2 系统流程图 (12)

七、程序模块设计 (14)

7.1 登录修改密码模块 (14)

7.2 系统查询模块 (19)

7.3 图书卡片维护模块 (27)

7.4 图书借还模块 (31)

7.5 用户管理模块 (39)

7.6 读者信息维护模块 (44)

八、课程设计总结 (49)

课程设计报告

一、课设名称

图书馆信息管理系统

二、设计目的

《数据库原理及应用》是一门实践性很强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。本课程设计的主要目的在于:

1、加深对数据库基础理论和基本知识的理解,培养学生运用所学理论知识对数据库进行组织、管理和使用的能力。

2、掌握数据库应用系统的整个设计过程(包括需求分析、概念结构设计、逻辑结构设计与物理设计与实施),提高运用数据库解决实际问题的能力。

三、设计要求

1、要求学生熟练掌握相关数据库的基础知识,独立完成设计任务,并完成课程设计报告。

2、学生必须仔细研读数据库课程设计任务书,课程设计以学生自学为主、指导教师指导为辅。

3、本次课程设计按照教学要求需要在三周时间内独立完成,学生要发挥自主学习的能力,充分利用时间,安排好课设的时间

计划,并在课设过程中不断检测自己的计划完成情况,及时地向指导教师汇报。

4、使用工具不限,可以使用.net C#、Delphi、PB、VB等。

5、可以做成C/S或者B/S。

6、使用软件工程的思想和方法进行工程设计。

四、需求分析

4.1基本信息需求

●图书卡片信息:图书编号,图书类别代码,图书名称,

作者姓名,出版社,出版日期,定价,内容摘要,实际数量,借出数量,卡片登记日期等。

●图书分类索引:图书类别代码,类别说明等。

●读者信息:读者编号,读者姓名,读者性别,读者职务,

工作单位,联系电话,家庭住址,E— mail,登记日期等。

●图书借阅信息:图书编号,读者编号,借阅数量,借阅

日期,应归还日期,实际归还日期,罚款金额等。

●用户信息:用户登录名,用户口令,用户权限,用户全

名,用户身份等。

4.2 处理需求

●图书卡片的维护

本模块至少应包括两个窗体:图书类别索引窗体和图书卡片维护窗体。

在图书类别索引窗体中实现图书类别索引信息的维护。注意:必须考虑到与图书卡片信息中的参照完整性规则。

在图书卡片维护窗体中,可将图书卡片的录入、修改、删除

和报废等功能放在同一个窗体中实现,但各功能之间必须有明确的分界,如采用分页控制等。

●读者信息的维护

本模块也可以将读者信息的登记、修改和删除等功能放在同一个窗体中实现。具体要求同上。

●图书借出处理

本模块的实现应使用一个独立的窗体,由于本模块的特殊性,必须保证图书编号和读者编号的正确性,程序中应控制拒绝不正确的图书编号,对于不存在的读者信息,应允许在本窗体中直接调用读者信息维护窗体采添加新的读者信息。借阅日期可用系统日期作为默认值,应归还日期应根据借阅日期按规则(如30天)自动计算,该字段应不允许自行修改。

为了保证数据库中数据的一致性,借阅数量应满足图书卡片信息中实际的库存量(实际数量一借出数量)要求,此外,借阅确认后应动态更新图书卡片信息中的借出数量。

●图书归还处理

本模块的实现同样使用一个独立的窗体,应能根据输入的图书编号和读者编号自动调出该读者的借阅信息,也可以根据读者编号,调出该读者的所有借阅信息,从中选出符合条件的借阅记录,若不存在正确借阅记录,系统应拒绝执行其他处理。

本模块应不提供对读者借阅信息的修改功能,唯一能够修改的是图书的归还日期,归还日期也可采用系统日期作为默认值,必须符合归还日期大于或等于借出日期的常识性规则。

图书归还处理确认后,必须根据归还日期确定是否进行罚款登记(依据一个简单的规则,如以0.05元/天计算),自动添人罚款金额字段。同时必须更新图书卡片信息中的借出数量字段,以保证数据的一致性。

●信息查询和统计处理

图书管理信息的查询应包括以下功能:

a.图书信息查询

图书信息查询应提供多种不同的查询手段,如按图书类别、按图书编号、按作者、按出版社、按出版日期等,应支持不确定查询(即所谓的模糊查询)。查询结果应以主表明细格式显示,即查询结果记录显示在一个表格中,在明细部分显示当前记录的所有信息。

b.读者信息查询

读者信息查询应提供的查询手段包括:按读者编号、按读者姓名、按联系电话、按登记日期等,同样能够支持不确定查询。查询结果的处理要求同上。

c.图书借阅信息的查询和统计

图书借阅信息的查询应包括:

a)以图书信息为主体的查询

即统计所有借出图书的情况(以图书编号为关键字),含借出数量和剩余数量;某一种图书的借出明细情况,即借阅该图书的读者、以及借出日期,哪些已超过应归还的日期等。

b)以读者为主体的查询

即查询所有已经借阅图书但尚未归还的读者,并且,显示某读者的借阅明细信息,或者直接输入读者编号查询该读者的借阅信息。

c)到期未归还图书的借阅信息查询

即统计并查询所有已经到期但尚未归还的图书及读者的相关信息。

用户管理模块

本模块可以在同一个窗体中处理系统用户的添加、修改和删除等,用户的身份主要有管理月和一般用户,只有管理员才能执行用户管理操作。用户的权限应分别针对图书卡片、读者信息、图书借阅处理设定相应的权限,如是否具有编辑权限等,一般用户应默认具有信息查询的权限。

五、数据库设计

5.1数据库的概念设计

实体和属性的定义:

图书(图书编号,类别编号,书名,作者,出版社,出版日期,价格,摘要,现有数量,借出数量,登记日期)

读者(读者编号,姓名,性别,所在系,班级,电话)

图书类别(类别编号,类别名称)

用户(用户名,用户密码,用户类型,用户全名)

5-1 图书类别实体

图5-2 图书实体

图5-3 用户实体

图5-4 图书借阅关系

图5-5 实体之间的关系

5、2 数据库的逻辑设计

由E-R图可得关系有:(主码用下划线标出)

a)图书(图书编号,类别编号,书名,作者,出版社,出

版日期,价格,摘要,现有数量,借出数量,登记日期)

b)读者(读者编号,姓名,性别,所在系,班级,电话)

c)图书类别(类别编号,类别名称)

d)借阅(图书编号,读者编号,借阅数量,借阅日期,应归

还日期,实际归还日期,罚款金额)

e)用户(用户名,用户密码,用户类型,用户全名)

由得到的关系我一共建立了5个表,我用的数据库是SQL-Server 2005,下面是我建立的5个表:

图5-6 图书种类表

图5-7 图书卡片表

图5-8 图书借阅表

图5-9 读者表

图5-10 用户表

六、系统设计

6.1 系统概述

课设我用的是C#开发。我在设计系统时,主要是按照各个功能

模块来具体实现的。几个主要的模块是登录修改密码模块、图书卡片维护模块、读者信息维护模块、图书借还模块、系统信息查询模块、还有用户管理模块。在这些模块当中,都要访问数据库,我建了一个访问数据库的类DB,在这里主要运用了访问数据库https://www.wendangku.net/doc/0c14924507.html,的几个类对象:connenction、command、datareader、

dataadapter、dataset。DB类在每一个功能模块上都有所运用,完成针对某个数据表的数据库增、删、改、查功能。在具体的某一个模块,我也封装了类。像读者信息维护模块,我建立了一个Reader类,在这个类里面,有读者的一些属性。另外还有一些需要用到的函数。像添加读者信息时,首先要判断该读者是否已经存在,我就把判断读者是否已经存在的函数放在了读者类里面。

总的来说,在整个系统的设计当中。在完成某项功能时,用到的方法主要有后台的存储过程,视图。还有就是封装的几个类。运用了这几种方法之后,实现功能起来就不难了,每一个功能模块都有相同的地方,代码也很相似,有的地方还可以复制代码,像调用存储过程。

6.2 系统流程图

图6-1 系统流程图

七、程序模块设计

7.1 登录修改密码模块

7.1.1 模块分析

在登录时,主要完成对用户的认证过程。在这里,需要从数据库的用户表里查询是否存在该用户。另外,比较重要的是根据具体的用户类型赋予具体的用户权限,管理员拥有全部权限,用户没有用户管理的权限等。在修改密码模块,要更新用户表的密码字段,在这里调用了modifypass存储过程。系统当前的登录用户信息可以检测显示出来。

7.1.2 界面设计

图7-1 登录界面

图7-2 修改密码界面

7.1.3 代码设计与分析

登录窗体的主要代码:

private void btnLog_Click(object sender, EventArgs e) {

string ty = comboBox1.Text.Trim ();

string na = textUserName.Text.Trim ();

string pa = textPassword.Text.Trim ();

Users us=new Users ();

if (textUserName.Text != "" && textPassword.Text != "")

{

if (us.isuserexits(na, pa, ty))

{

MainFrame.result = DialogResult.OK;

https://www.wendangku.net/doc/0c14924507.html,erna = na;

https://www.wendangku.net/doc/0c14924507.html,erpa = pa;

https://www.wendangku.net/doc/0c14924507.html,erty = ty;

MessageBox.Show("登录成功");

this.Close();

}

else MessageBox.Show("用户不存在或密码错误");

}

else MessageBox.Show("输入不能为空");

代码分析:

登录主要调用了users类的isuserexits()函数,根据输入的用户名,用户密码和用户类型可以判断是否存在该条记录。isuserexits()函数访问了数据库。

修改密码的主要代码:

private void button1_Click(object sender, EventArgs e) {

if(textBox4.Text == ""|| textBox5.Text == "") {

MessageBox.Show("密码输入有空");

return;

}

if (textBox4.Text != textBox5.Text)

{

MessageBox.Show("两次密码输入不一致");

return;

}

string name = textBox2.Text;

string pas = textBox4.Text;

//调用存储过程modifypass修改密码

SqlConnection conn = new

SqlConnection("Server=localhost;Database=StuScoMan;uid= sa;pwd=123");

conn.Open();

SqlCommand comm = new SqlCommand("modifypass", conn);

https://www.wendangku.net/doc/0c14924507.html,mandType =

CommandType.StoredProcedure;

SqlParameter sp1 =

comm.Parameters.Add("@name", SqlDbType.VarChar);

sp1.Value = textBox2.Text;

sp1.Direction = ParameterDirection.Input;

SqlParameter sp2 = comm.Parameters.Add("@pas", SqlDbType.VarChar);

sp2.Value = textBox4.Text;

sp2.Direction = ParameterDirection.Input;

comm.ExecuteNonQuery ();

conn.Close();

MessageBox.Show("密码修改成功");

this.Close();

}

代码分析:

登录模块先判断两次输入的密码是否为空和两次输入的密

码是否相等。然后就是调用存储过程。在调用存储过程时,参数的输入要正确,不管是参数名字还是参数的类型都不能有错,要和建立存储过程时的参数类型保存一致,这样才能调用成功。

7.1.4 运行结果

图7-3 用户登录运行结果

图7-4 用户修改密码运行结果

7.2 系统查询模块

7.2.1 模块分析

该模块包括了系统查询的几项内容。有读者信息查询、借

阅查询、到期未还查询。该模块的操作对象不是系统的基本表,而是另外的几个视图,用视图的目的是更好的保护数据的安全性。首先把内容显示在datagridview上,然后根据需要用dataview的筛选字符串对内容进行筛选。

7.2.2 界面设计

图7-5 读者信息查询

相关文档