资源描述
图书管理系统-11108122
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
《课程实习报告》
学 号: 20081004110
班级序号: 11108122
姓 名: 邹洋
指导老师: 杨之江
中国地质大学信息工程学院软件工程系
目 录
一、引言 4
二、需求分析 5
2.1 系统需求 5
三、总体设计 7
3。1 基本设计概念和处理流程 7
3.2 模块设计 7
四、数据库设计 9
4.1数据库的逻辑设计 9
4。2数据库的配置 11
五、详细设计 18
5。1 用户登录模块的设计与实现 18
5。2 主页面模块的设计与实现 19
5。3 更改密码模块的设计与实现 20
5.4添加书签模块的设计与实现 21
5.5图书搜索模块的设计与实现 22
六、代码 24
总 结 31
图书管理系统的设计和实现
1.1 背景
当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理.使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
图书管理系统(电子阅览室)主要提供网上的电子图书阅览平台,读者可以通过该系统阅览丰富的电子资源.在图书管理系统中,读者可以方便地对书目进行检索和阅览,足不出户便可尽览群书。图书管理系统主要提供网上的图书阅览平台.
电子阅览室可提供24小时的在线服务,最大限度的利用了当前互联网的各种优势,使得您无论身在何处,只要能接入互联网就可以享受到它所提供的方便,快捷的服务.它既具有传统图书馆的大部分功能,像图书的查阅及阅览,又新增了基于现有网络技术的许多实用的功能,像用户注册,书签,书评等。它充分的利用了互联网资源,使商家和用户都能从中获得益处.
1.2 目标
1.对图书资源进行分类,发布到网上,以供读者阅读。
2.为读者提供图书检索功能;
3.读者能方便地阅览电子图书;
4。 读者能方便地建立书签;
5. 读者能对书目进行评论;
6. 对读者的用户名、密码及权限进行管理.
二、需求分析
2.1 系统需求
随着互联网的爆炸性发展,人们越来越习惯于利用网络来实现所需的服务,网络已深深影响到人们生活的各个方面。另外,传统的图书馆不能满足一部分现代人的需要,而电子阅览室,由于其不受时间与空间的限制同时又具有传统图书馆的大部分功能,能够满足各类用户的常规与特殊需求,而且其方便快捷,实现技术又比较成熟,因此受到当代人的喜爱。
该系统主要分为两部分:读者部分和管理部分。为了方便读者查找自己感兴趣的主题进行阅读,要将图书按照内容进行分类。读者可以按照类别进行查找,逐级浏览。如果读者明确知道某本书的书名、作者等相关信息,图书搜索功能就很有用处了。有的读者会经常访问某些书目,或者是读者对某本书没有看完准备以后继续完成阅读,这时读者就要把以后还需要阅读的书目做上书签,以后便能方便的进行阅读了。他人对书的评价能够帮助我们选择阅读的对象.本系统的书评功能为读者提供发表意见的平台,以得到读者对书的评价和反馈。以上是个各为读者服务的功能.除此之外,本系统还可对用户的账号和书目的阅读权限进行管理。管理员需要给用户分配用户名和密码,及设定用户的级别。同时,还需要给图书资源也分级,以确定哪些级别的用户可以阅读。
2.2 功能需求
图书管理系统主要提供网上的电子图书阅览平台,读者可以通过该系统阅读丰富的电子图书资源。对于本系统,我们需要实现以下一些基本功能:
1 图书分类浏览:为了方便读者查找书目,将书目按照内容进行分类。这样读者就能很方便的找到自己感兴趣的主题进行阅读。
2 图书搜索:设定多种搜索条件,按条件搜索符合读者要求的图书。如果读者知道某本书的书名、作者等相关信息,利用图书搜索功能就很方便了。
3 书签功能:定义书签,方便读者中断后继续阅读.部分读者可能会定期的访问某些书目;又或者有的读者阅读某本书的时候没有看完,打算以后继续完成阅读,在这样的情况下,书签功能就会给读者带来很大的便利。
4 书评功能:读者可提交对书的评价.书评能够帮助读者更好选择阅读对象,了解图书内容,对读者阅读图书有很大的帮助。
5 权限管理:权限管理包括两部分内容:对用户帐号的管理和对书目阅读权限的管理。管理员需要给用户分配用户名和密码,同时设定用户的级别。同时,管理员还需要给阅读资源也分级,以确定哪些级别的用户可以阅读。
三、总体设计
3.1 基本设计概念和处理流程
互联网技术的飞速发展,ASP技术的灵活、易用、功能Dreamweaver、microsoftFrontpage、VBScript等设计工具的方便实用,以及数据库技术的发展给本系统的设计和实现提供了技术上的支持。本系统在数据库技术方面有如下优点:
图书搜索
开发统一,传统的数据库一般用VB,VC等开发,这些开发工具各有各的标准和方法,不是和开发WEB数据库应用,Web数据库的开发使用统一的HTML,任何人开发的数据库都有符合这个标准。
书签
图书浏览
图书借阅
图书查询
图书信息管理系统
密码管理
管理功能
图1 “图书信息管理系统”系统主模块功能图
3.2 模块设计
1。 用户登录模块:填写已分配的用户名称,填写正确的密码,进入主控制页面.
2。 图书查询模块:图书分类,按类型逐级显示.
3。 图书搜索模块:提供多种查询条件,可按需要进行查询。
4. 管理员模块:显示书评列表和一条书评内容,添加书评。
5。 图书入库模块:为喜爱的图书投票,显示投票结果,选出认为最值得一看的图书。
6。 权限管理模块:分配用户名和密码,设定用户的级别.同时,还要给图书资源进行分级,以确定哪些级别的用户可以阅读。
四、数据库设计
4。1数据库的逻辑设计
由于本电子商务系统没有海量数据的存储问题,其数据一般不是很多,所以没有必要选用像Oracle这样的数据库:另外,现今的各种主页空间很少有支持Oracle的,而支持Access的较多.另外现阶段尚处于演示阶段,对安全性要求不是很高,Access足可以胜任,所以我们选用了Microsoft Access 2000。
数据通信接口采用ODBC(Open Database Connectivity,开放数据库互连).ODBC是微软开发的一套读取数据库的解决方案,它的目的是将所有对数据库的底层操作全部隐藏在ODBC的驱动程序内核里。对于程序员来说,只要构建了一个指向数据库的连接,就可以采用统一的应用程序编程接口(Application Program Interface)实现对数据库的读写.目前ODBC驱动已经提供了对大多数常见类型数据库的支持,包括dBase,Informix,Access,SQL Server和Oracle等。也包括了对其它类型的数据库的支持,如文本,Excel电子表格等的支持。
根据系统功能设计的要求以及功能模块的划分,对于系统信息数据库,可以列出以下数据项和数据结构:
1.名称:用户信息表
表名称标识:UserInfo
2.名称:书目信息表
表名称标识:BookCategoryInfo
3.名称:书目类别表
表名称标识:BookInfo
4。名称:书评信息表
表名称标识:OrderInfo
5.名称:书签信息表
表名称标识:StuInfo
6。名称:书目表
5。名称:访问次数表
4.2数据库的配置
一个真正的、完整的站点是离不开数据库的。ODBC为应用程序提供了一种标准方法来操作相关的数据库:管理器根据数据源提供的数据库的位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接.
按如下步骤可以建立一个新的系统数据源。
首先,运行项目,输入用户ID和密码,单击“登录”按钮。如下图12所示.
<图12>
出现“图书管理系统”对话框中。如下图13所示。
<图13>
在“ 图书管理系统”对话框中,单击“系统”—〉“退出”按钮,即可退出。单击“查询”->“图书查询”如下图14所示。
〈图14〉
在“图书查询”对话框中,可按查询条件查询,如下图15所示。
〈图15〉
在“图书查询"对话框中,可按查询条件,输入“西游记"即可查询,如下图16所示。
〈图16〉
在“图书管理系统”对话框中,单击“图书"—〉“图书借阅”如下图17所示。
<图17>
在“图书管理系统”对话框中,单击“查询”—>“图书归还"如下图18所示。
<图18>
在“图书管理系统”对话框中,单击“查询”-〉“新书入库”如下图19所示。
<图19〉
在“图书管理系统”对话框中,单击“管理"—〉“查看管理员”如下图20所示。
〈图20〉
在“图书管理系统”对话框中,单击“管理”—〉“添加管理员"如下图21所示。
〈图21〉
在“图书管理系统”对话框中,单击“管理”—>“查看管理员”如下图20所示。
五、详细设计
整个系统除了用户登录外,主要有用户登录模块、 图书查询模块、图书搜索模块、管理员模块、图书入库模块和权限管理模块六个模块。通过本系统,读者可以方便的对书目进行检索和阅览,足不出户就可尽览群书。
5。1 用户登录模块的设计与实现
1. 登录模块的IPO图
功能:本模块主要用于对用户身份进行鉴别。用户通过表单提供用户名和密码信息,系统根据用户提供的登录信息对用户进行身份查询鉴别.如果身份合法,则将用户导向系统的主页面并记录用户的相关信息,留待以后的系统页面使用。
输入:用户名、密码
处理:
(1) 输入用户的登录信息。
在页面提供的表单出输入用户的用户名和密码信息,点击“登录"按钮提交表单信息到身份验证页面。或点击“重填”按钮,重新输入.
(2) 从form表单获取输入数据。
当用户单击“登录"按钮后,登录信息由form表单提交到logon.asp进行处理。
(3) 用户身份进行验证。
连接数据库,打开用户数据表usertype,检验用户登录信息。以输入数据“用户名”为查询条件创建数据集查看输入用户名是否存在。如果存在,继续检验输入的密码是否正确.密码和用户名都正确,则进入图书馆主页面frame。asp;如果用户名不存在或密码不正确,则给出登录失败的提示框,并返回首页重新登录。
输出:图书馆主页面
2.图书馆登录页面图如下图所示:
图15 图书管理系统登录页面图
5。2 主页面模块的设计与实现
本系统的主页面使用了框架结构。使用框架(frames)结构设计的HTML文件,能够将整个窗口分成几个独立的小窗口,每个窗口可以分别载入不同的文件.框架的主要优点是独立显示内容,能直观的分开内容。可以在一个框架中定义链接,在另一个框架中显示内容或触发操作,而不必从重设计整个屏幕。
主页模块的设计
1. 主页模块
功能:主页面中显示推荐书目和新书书目的书目、作者、访问次数和简单介绍等相关信息。通过书名超链接文本,就可以阅读到图书内容。
输入:点击书名的超链接文本
处理:
(1) 构造页面格式。
使用HTML语言的TABLE表格标签构造页面表单,构造放置各个字段及字段值的表单,美化页面。
(2) 连接数据库。
与数据库创建链接,使用SQL语言在数据库中选取符合条件的记录。在符合条件的记录中选取相关字段值组成记录集。显示在页面的相应位置中。
(3) 创建超链接文本。
将书名设置为超链接文本.用户点击想要阅读的图书的书名,程序就会将页面导向readbook.asp页面。在readbook.asp页面中,用户就可以看到图书的详细内容。
输出:用户要求的页面
2.模块所使用的数据表
使用SQL语言在数据库中选取新书书目表newbook中的条目编号id、新书信息description字段及书目信息表bookdetail中的书目编号bookid、书目名称name、作者author和阅读次数times共六个字段值组成记录集。在记录集中选取符合新书书目表中的新书书目编号bookid字段值与书目信息表中的书目编号bookid的字段值相同的记录,创建记录集RS.
5.3 更改密码模块的设计与实现
1.更改密码模块的IPO图
功能:留言查看页面如图7-23所示,在主页面的上部分中的top.asp页面中,点击“更改密码”,就会调用javascript脚本语言,生成一个窗口。用户在生成的窗口中输入新的密码,提交后程序会将数据表中的密码进行修改。
输入:点击更改密码的超链接文本。
(1) 构造页面格式。
使用HTML语言的TABLE表格标签构造页面表单,构造放置各个字段及字段值的表单,美化页面。
(2) 判断合法性.
对session对象中的用户名字段值进行判断,判断用户的登录是否合法。如果不合法,显示要求重新登录的提示语,重新登录。
(3) 输入新密码。
在页面的相应位置填入用户的旧密码、新密码,在重新输入一次新密码,以确保输入无误.然后提交到pass_action.asp页面进行处理。
5。4添加书签模块的设计与实现
1. 添加书签模块的IPO图
功能:在各种表格和表单构成的add_bookmark。asp页面中的适当位置输入用户选择的书签图标、书签的详细内容等信息后,提交到add_action.asp页面进行将一条新记录插入数据表的操作。
输入:新增加的书签信息的用户选择的表情图标和书签的详细内容.
处理:
(1) 构造页面格式。
应用表格进行页面布局,相应的字段名称后使用多行文本框或单选框表单组件,构成书签信息输入页面。
(2) 判断合法性。
在连接数据库之前,首先判断用户是否在阅读某一本书。然后判断要添加书签的书目是否存在。
(3) 连接数据库。
以上一页提交的图书的编号为条件选取数据表中的记录创建记录集,将记录中的用户名、书名和作者等信息显示在相应位置。
(4) 输入书签.
在相应表单元素中选取书签标图,输入书签的详细内容。提交到add_action。asp页面进行处理。
(5) 插入操作。
获取相关信息,在add_action。asp页面中打开数据库,使用recordset对象的insert into方法向书签信息表bookmark插入一条新记录。
5.5图书搜索模块的设计与实现
1。 书目搜索模块的IPO图
功能:搜索方式分为3种:通过书名、作者和十大热门来进行查询.查出的结果显示在名字为 searchresult的窗口中。用户可通过以上各查询方式,方便的查询自己想要阅读的书目。
输入:选择一种查询方式,输入查询条件。
处理:
(1) 构造页面格式。
使用HTML语言的TABLE表格标签构造页面表单.本模块使用了框架结构。单行文本框和单选框来确定查询条件.
(2) 查询条件.
在三种查询方式中选择一种作为读者的查询方式。然后在单行文本框中输入查询条件。
(3) 查询结果。
连接数据库,在相应的数据表中选取符合查询条件的记录。将查询结果显示在下面的窗口中
。
六、代码
6.1登录代码(Login)
namespace BookInfoM
{
public partial class Login : Form
{
public static string[] LuserID;
private int Logintimes=0;
public Login()
{
InitializeComponent();
}
private void Login_Load(object sender, EventArgs e)
{
combUserID。Text = ””;
txtPassWord。Text = "";
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (this。Text.Trim() != "")
{
if (txtPassWord。Text != ””)
{
SqlCommand command = CustomDataProvide。GetCommand(
"select * from UserInfo where UserID='” + combUserID。Text.Trim() +
”’and Password='" + txtPassWord.Text.Trim() + "'");
SqlDataReader dr;
try
{
command。Connection.Open();
dr = command。ExecuteReader();
dr。Read();
if (dr。HasRows)
{
Logintimes = 0;
Main main = new Main();
Main。LoginUser.UserID = dr.GetString(0);
Main.LoginUser 。UserName = dr。GetString(1);
Main。LoginUser .Password = dr.GetString(2);
Main。LoginUser .Isadmin = dr.GetBoolean(3);
Main.LoginUser。Day = (Week )dr。GetInt32(4);
this.Hide();
main。Show();
dr。Close();
command。Connection.Close();
command.Dispose(); }
else
{ Logintimes++;
if (Logintimes == 3)
{ MessageBox。Show(”对不起,你登录的次数
已经超过三次!”, "警告!");
Application。Exit();
}
if (BookInfoM.ClassCodes.DataValidate。IDExist(”select
UserID from UserInfo where UserID=’" + combUserID.Text.Trim().ToString()
+ ”’”) == true)
{ MessageBox。Show(”密码不正确", "警告!”);
txtPassWord.Text = ”"; }
else
{ MessageBox。Show("此用户ID不存在,请查
证后登录", "提示”);
combUserID.Text = "”;
txtPassWord.Text = "";
} } }
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示”, MessageBoxButtons.OKCancel, MessageBoxIcon。Information);
} }
else
{ MessageBox.Show("密码不能为空”, "提示”); } }
else
{ MessageBox。Show(”用户ID不能为空", ”提示"); } }
private void btnExit_Click(object sender, EventArgs e)
{
if (MessageBox.Show("你确认要退出该程序吗?",
"提示”, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
== DialogResult.Yes)
Application。Exit();
} } }
6.2主界面代码(Main)
namespace BookInfoM
{
public partial class Main : Form
{
public Main()
{
InitializeComponent();
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit(); }
private void 查询管理员ToolStripMenuItem_Click(object sender, Event
Args e)
{ UserManag.ViewAdmin view = new BookInfoM。UserManag。
ViewAdmin();
view。Show(); }
private void 注销ToolStripMenuItem_Click(object sender, EventArgs e)
{
Login flogin = new Login();
flogin。Show();
this.Close(); }
private void 添加管理员ToolStripMenuItem_Click(object sender,
EventArgs e)
{ AddAdmin addadmin = new AddAdmin();
addadmin。Show(); }
private void 修改管理员ToolStripMenuItem_Click(object sender,
EventArgs e)
{ ModAdmin modadmin = new ModAdmin();
modadmin。Show(); }
private void 图书查询ToolStripMenuItem_Click(object sender,
EventArgs e)
{ SearchBook SeachB = new SearchBook();
SeachB。Show(); }
private void 图书借阅ToolStripMenuItem_Click(object sender,
EventArgs e)
{ LendBook LendB = new LendBook();
LendB。Show(); }
private void 图书送还ToolStripMenuItem_Click(object sender,
EventArgs e)
{ ReturnBook ReturnB = new ReturnBook();
ReturnB.Show(); }
private void 删除管理员ToolStripMenuItem_Click(object sender,
EventArgs e)
{ ModAdmin modadmin = new ModAdmin();
modadmin.Show();
}
private void 库存查询ToolStripMenuItem_Click(object sender,
EventArgs e)
{ SearchBook SeachB = new SearchBook();
SeachB。Show(); }
private void 新书入库ToolStripMenuItem_Click(object sender,
EventArgs e)
{ BookWarehousing BookW = new BookWarehousing();
BookW.Show(); }
private void 帮助ToolStripMenuItem_Click(object sender,
EventArgs e)
{ HalpWord HalpW = new HalpWord();
HalpW。Show();
}
}
}
6。3图书查询代码(ViewAdmin)
namespace BookInfoM。UserManag
{
public partial class ViewAdmin : Form
{
public ViewAdmin()
{
InitializeComponent();
}
private void ViewAdmin_Load(object sender, EventArgs e)
{ txtUserID.Text = BookInfoM.Main.LoginUser.UserID;
txtUserName.Text = Main。LoginUser.UserName;
txtPassword.Text = "*******";
txtAdmin.Text = Main。LoginUser.Admin;
txtWorkday。Text = Main.LoginUser。Day。ToString();
}
private void btnExit_Click(object sender, EventArgs e)
{
this。Close();
}
private void button1_Click(object sender, EventArgs e)
{
ModAdmin modadmin = new ModAdmin();
modadmin.Show();
}
}
} 总 结
经过几周的学习琢磨,顺利的结束了此次课程设计。期间查阅了大量技术资料,学习到了许多新的知识。在这次课程设计的过程中,受到了许多同学和老师的帮助!在编写这个系统中遇到诸多困难,但都一一解决,并有很大的收获。
C#是一门功能十分强大的语言,在课程设计的过程中,从一些书籍及网络资源中看到许多实现程序功能的方法,由于个人精力及时间的限制,没有及时应用到课程设计中,在今后的学习开发过程中将会试着使用一些更好的实现功能的方法,提高程序的运行效率和正确性。
在这次课程设计的过程中,也反映出了许多问题,比较突出的是对一些基础知识掌握的不够牢靠,在使用的时候不能够灵活运用.在以后的学习生活中,会注意对基础只是的记忆理解,避免“模糊记忆" .提高编写程序的效率.
如果有同学也希望学习C#这门语言的话,建议多看下Microsoft官方配套Studio .NET 2005出版的MSDN帮助文档,里面对几乎所有的类及空间的使用都做了比较经典的讲解,无论是初学者还是资深程序员都是最直接的参考学习资料!
经过这次实习,我发现C#语言的美妙,以后还要加强这方面的学习,这样就能为将来做更好的准备!
30
展开阅读全文