C#毕业设计——基于C#+asp.net+sqlserver的网上图书订阅系统设计与实现(毕业论文+程序源码)——图书订阅系统

基于C#+asp.net+sqlserver的网上图书订阅系统设计与实现(毕业论文+程序源码)

大家好,今天给大家介绍基于C#+asp.net+sqlserver的网上图书订阅系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦

文章目录:

1、项目简介

  1. 网上图书订阅系统基于 Microsoft SQL Server 2000和ASP.NET平台,以C#为编程语言开发,实现了网上图书预订和借阅,订阅信息查询,图书和用户信息的修改,借阅排行和新到图书的查询等功能,这样不但可将管理员从繁重的劳动中解脱出来,提高管理图书的效率,更重要的是可以使每一位读者足不出户就能够通过上网来轻松订阅图书,查询相关订阅信息。
  2. 本文共五章:第一章 引言;第二章 理论基础;第三章 系统需求分析;第四章 系统设计;第五章 系统实施及测试。

2、资源详情

项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:7432个字24页
包含内容:整套源码+完整毕业论文


3、关键词:

图书预订;图书借阅;订阅信息查询;图书管理

4、毕设简介

提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。

1 引言
1.1 选题背景
省略

1.2 国内研究现状
省略

1.3 课题研究的意义
根据对图书订阅系统现状的调查与分析,我深刻地认识到人工订阅的传统模式必须被淘汰,取而代之的将是结合了计算机与网络技术的、更加自动化的网上图书订阅系统。因此,我选择了网上图书订阅系统作为我的研究课题。

这种系统采用B/S结构模式,实现了足不出户订阅读书。它利用计算机和数据库技术实现动态改变数据库信息,使用户的订阅和查询等服务请求都能在瞬间完成,节省了用户时间,同时方便、准确地更新了数据库,大大减轻了管理员的工作量;它顺应了当今信息化发展趋势,实现了科学化、信息化、合理化的图书订阅管理。

2 理论基础
2.1 数据库技术
省略

2.2 面向对象技术
面向对象技术(OOT)是一种软件开发和程序设计技术,C#具有面向对象编程语言的所有特性,它是微软公司专门为.NET量身定做的编程语言,与.NET有着密不可分的联系。C#的类型就是.NET框架所提供的类型,C#本身并无类库,而是直接使用.NET框架所提供的类库。另外,类型安全检查、结构化异常处理也都是交给CLR处理的。因此,C#是最适合开发.NET应用的编程语言。

C#不仅具有C++的强大功能,而且具有Visual Basic简单易用的特性。具有以下三个典型的特点:
 默认情况下,C#代码在.NET框架提供的受控环境下运行,不允许直接操作内存。
 C#具有面向对象编程语言所应有的一切特性,如封装、继承和多态。在C#中,每种类型都可以看作一个对象。但C#只允许单继承,从而避免了类型定义的混乱。
 C#没有全局函数,没有全局变量和常量,所有的都必须封装在一个类中。因此,用C#编写的代码具有更好的可读性,而且减少了发生命名冲突的可能。

2.3 B/S架构的WEB程序设计技术
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着 Internet技术的兴起,对C/S结构的一种变化或者改进的结构。目前,B/S架构主要使用4种语言:ASP、ASP.NET、PHP、JSP,其中ASP.NET功能强大,编写容易。与ASP相比,ASP.NET增加了很多特性,功能也更为强大:
 使用NET提供的所有类库,可以执行以往ASP所不能实现的许多功能。
 引入了服务器端控件的概念,这样使开发交互式网站更加方便。
 引入了ADO.NET数据访问接口,大大提高了数据访问效率。
 提供ASP.NET的可视化开发环境Visual Studio. NET,进一步提高编程效率。
 保持对ASP的全面兼容,ASP.NET运行速度快。
 ASP.NET全面支持面向对象程序设计。

3 需求分析
3.1 图书订阅系统现状描述
在当今社会不断朝信息化、网络化发展的大背景下,我国很多地方的图书订阅却仍停留在纸介质的基础上,用户的借阅、归还、查询服务都是由管理员进行人工分析处理,工作流程大致如图所示:

在这里插入图片描述

图3-1 工作流程图
3.2 现行系统存在的主要问题分析
图书订阅系统的使用是否方便,运行速度是否迅速,信息处理是否准确,直接影响到人们能否及时获得图书信息,然而,现在系统显然不能人们的需求,它存在的主要问题有:
(1) 用户使用很不方便。用户为了借阅或归还图书,可能会排很长的队,这显然是对时间很大的浪费;另外,用户还必须记住所借每本书的借阅时间,并要经常提醒自己及时归还,以免超期,而在生活节奏越来越快的今天,人们日常事务已很繁琐,这种事情会很容易被遗忘。
(2) 管理图书信息相当困难。图书的馆藏量越来越大,管理员要对馆藏的图书信息进行人工管理,工作量相当大,如用户借阅时,要查找厚重的记录册,然后对馆藏数量进行修改;归还时,又要再次修改相应的图书信息。
(3) 处理效率低,准确度差。采用人工方式,不但增加了工作量,浪费了人力,更重要的是不可避免地会降低处理效率,且出错机率大。

3.3 提出解决方案
根据对现有图书现状及存在问题的分析,特提出以下解决方案:
(1) 利用ASP.NET和C#编程语言,结合SQL Server 2000数据库技术。建立一个网上图书订阅系统。
(2) 利用网络技术,通过IIS配置服务器的站点属性,使用户在家就可登录到图书订阅系统,实现网上图书订阅和查询。
(3) 采用SQL Server 2000数据库技术,将图书信息,用户预订信息,用户借阅信息存储在不同的数据表内,实现信息分类管理,并通过编程技术动态改变数据信息。
(4) 通过编程对数据库相关数据表的访问,实现用户对不同信息进行查询。如:用户查询其借阅信息,只需访问借阅信息表,找到该用户的借阅信息,然后在用户端的浏览器上显示出来。

所有功能的后台处理对用户都是透明的,用户只需向服务器提出请求,系统就会迅速、及时提供所需信息,大大地方便了用户。同时,由于采用了计算机和数据库技术,极大减轻了管理员工作量,提高了处理准确度。

4 系统设计
4.1 系统总体架构
本系统的总体功能结构如图:
在这里插入图片描述

图4-1 系统模块图

4.2 数据库的设计
根据前面功能模块的设计,系统数据库表包括有“用户信息表”,“用户类别表”,“图书信息表”,“图书类别表”,“图书缓存表”,“添加图书表”,“新书表”,“当前借阅信息表”,“预订信息表”,“借阅历史表”,“还书记录表”,“借阅超期表”, “借阅排行表”,“留言信息表”。

表1:tb_user
功能说明:存放用户信息,包括一般用户和管理员
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 系统功能模块设计
4.3.1 登录模块
在这里插入图片描述

图4-2 登录页面

用户在登录框内输入登录信息,系统账号信息记录到Session变量,并判断该密码和账号是否匹配,如果匹配则登录成功,进一步判断该用户是一般用户还是管理员,然后跳转到对应的用户页面。关键代码如下:

string strComm="select * from tb_user where userid='"+userid+"'";//查找用户信息表
		…………
			  	if((sdr["userpassword"].ToString()==userpwd))//密码正确
					{
						string strComm1="select * from tb_userkind where kindid='"+sdr["userkind"].ToString()+"'";//查找该用户权限
…………
	if(sdr1["kindname"].ToString()=="管理员")//如果身分是管理员,则跳转到管理员页面
	Response.Redirect("admin.aspx?name="+ System.Web.HttpUtility.UrlEncode(sdr["username"].ToString()));

4.3.2 信息查询模块
在这里插入图片描述

图4-3 信息查询模块图
管理员可输入账号查看用户信息,也可以浏览的方式查看所有用户信息。以浏览方式查看信息效果图:
在这里插入图片描述

图4-4 用户信息浏览
采用数据绑定,将用户信息表中一般用户的账号绑定到DataGrid控件,关键代码如下:

string strComm="select userid,username,userkind  from tb_user where userkind='002'";
			SqlDataAdapter sda=new SqlDataAdapter(strComm,Conn);
			DataSet ds=new DataSet();
			sda.Fill(ds,"tb_user");
			dg.DataSource=ds.Tables["tb_user"].DefaultView;
			dg.DataBind();

用户账号为超级链接,点击可查看详细信息:
在这里插入图片描述

图4-5 用户详细信息
查询馆藏图书信息:
在这里插入图片描述

图4-6 图书信息查询
从上图可知,用户根据四种关键字类型选择进行精确或模糊查询,以“编号”,“模糊查询”为例,输入“a”,查询结果如下:
在这里插入图片描述

图4-7 查询结果
关键代码如下:

…………
if(rd_id.Checked)//如果关键字类型为编号
…………		
else  //如果为模糊查询
…………
string strComm="select * from tb_book where bookid like '%"+srchkey+"%'";//查找编号类似的图书	
…………
if(ds.Tables["tb_book"].Rows.Count>0)//查找的图书存在,绑定到控件
{
dg_bk.DataSource=ds.Tables["tb_book"].DefaultView;
	dg_bk.DataBind();
}
else
Response.Write("<script>alert(\"类似编号不存在!\");</script");
…………

借阅排行查询:需要访问tb_cntborrow表,这是用来记录所借图书借阅量的表,表中记录的产生是在用户借阅图书时,同时更新tb_cntborrow表中,该图书编号对应的借阅数量。当用户点击“借阅排行”时,按借阅量降序显示。
更新借阅量关键代码如下:

string strcnt="select * from tb_cntborrow where bookid='"+id+"'";//表中是否已存在该图书
						…………//如果有,则借阅量+1更新
						{
						……………………
							string ordnum=sdrstr["ordernum"].ToString();
							int ordtim=int.Parse(ordnum)+1;
							string updtcnt="Update tb_cntborrow set ordernum='"+ordtim+"' where bookid='"+id+"'";
……………………}
						Else//如果该编号图书不存在,插入图书信息,借阅量设为1
						{…………
string strin="insert into tb_cntborrow (bookid,bookname,ordernum)values('"+id+"','"+bkname+"','1')";
…………

借阅超期查询:访问超期信息表tb_overborrow,该表的产生在后面的章节中介绍。

新书查询:访问新书信息表tb_newbook。系统规定15天内到馆的图书为新书,新书入库时,系统将新书信息加入该表,在用户页面加载时,删除表内到馆时间超过15天的图书,剩下的即为新书,关键代码如下:

	string strComm="select * from tb_newbook";………………
DateTime t1=DateTime.Parse(tim);
				TimeSpan ts=DateTime.Now-t1;
				int n=ts.Days;
				if(n>15)
				{ string strComm1="delete  from tb_newbook where intime='"+tim+"'";
………………   }
	

4.3.3 数据管理模块
该模块主要是系统在实现特定功能时,对相关数据表的更新操作,以及根据需要对数据库中的数据进行删除或修改。
在这里插入图片描述

图4-8 数据管理模块
预订:首先查找tb_book表中是否有该图书,如果没有,弹出提示信息;如果有,下一步就在tb_user表中查找登录用户,即Session[“User”]的学历,不同的学历允许不同的预订数量,再从tb_reserve预订信息表中查找到该用户的预订数量,如果已达到允许量,则不能继续预订;否则可预订,首先根据需要更新图书暂存信息表tb_bkcache,再将相关信息插入tb_reserve表,并对tb_book表中该编号图书的信息作更新。

以用户学历是本科为例,允许预订数量为2本,实现预订的关键代码如下:

…………	
string strsel="select * from tb_book where bookid='"+id+"' ";
//判断该书是否已被预订、借阅完
		…………
			if(!sd.Read())
			{
				Response.Write("<script>alert(\"书已借完\");</script");
              }
…………
string strdgr=ds.Tables["tb_user"].Rows[0]["degree"].ToString();//用户学历
……
		int num=(int)Comm3.ExecuteScalar();//已预订数量
				…………
					if(strdgr=="本科")	{
						if(num<2)//满足预订条件,对相关表进行操作
…………
						lb_msg.Text="您已预订";//已达到允许预订量  
						txb_msg.Text=num.ToString();
						lb_msg2.Visible=true;
						lb_msg2.Text="本!";
…………

借阅:不同学历有借阅数量限制,功能实现部分代码跟预订类似,不再累述。所不同的是,借阅后,会更新借阅数量表tb_cntbook,同时,将相关信息插入用户借阅历史表tb_brohistory。更新tb_cntborrow的关键代码如下:

……………

string strcnt="select * from tb_cntborrow where bookid='"+id+"'";//表中是否已存在该图书
						…………//如果有,则借阅量+1更新
						{
						……………………
							string ordnum=sdrstr["ordernum"].ToString();
							int ordtim=int.Parse(ordnum)+1;
string updtcnt="Update tb_cntborrow set ordernum='"+ordtim+"' where bookid='"+id+"'";
……………………}
Else//如果该编号图书不存在,插入图书信息,借阅量设为1
						{……………………
String	strin="insert	into	tb_cntborrow (bookid,bookname,ordernum)values('"+id+"','"+bkname+"','1')"; 
……………………}

归还图书:如果是超期图书,用户不能自行归还,须由管理员处理,借阅时间超过30天,为超期图书;如果没有超期,需做以下处理:将相关信息插入还书记录表tb_return,更新图书信息表tb_book,如果表中该书没借完,则数量+1更新,否则,从tb_bkcache中,找到该图书信息,插入到tb_book,数量设为1,最后,删除tb_borrow中,该条借阅信息。

判断是否超期、超期提示关键代码:

…………	
string tim=ds.Tables["tb_borrow"].Rows[0]["ordertime"].ToString();//获取借阅时间
……
DateTime t1=DateTime.Parse(tim);
	TimeSpan ts=DateTime.Now-t1;
…………
			if(tover<=3&&tover>0)//如果没有超期,但离超期时间小于3天
			{
				Label1.Text="离超期还有";
				txb_over.Text=tover.ToString();//显示离超期还有几天
              }
	…………
				if(ndays>30)
				{……
				Label1.Text="借阅超期";
				txb_over.Text=over.ToString();//显示超期时间

归还不能完成,显示提示信息:

if(ndays>30)//如果超期
			{
				Response.Write("<script>alert(\"书已超期,需由管理员退还!\");</script");
}
Else//没有超期
			{……
	string strCm="insert into tb_return(userid,bookid,bookname,returntime)values('"+usrid+"','"+bookid+"','"+bknm+"','"+notim+"')";//插入到归还记录表
…………}			

添加图书:
在这里插入图片描述

图4-9 新书入库
后台处理时,查找图书类别表tb_bookkind,自动将类别名转换为类别编号,同时将该类别图书编号自动加1更新;入馆时间,默认为系统当前时间,新书信息需要插入到图书信息表和新书表,即tb_book和tb_newbook。

设置新书编号的关键代码如下:

………………
int d=Convert.ToInt32(Comm1.ExecuteScalar());//将该类编号总数转化为整形
int n=d-1;
………………
string num=ds.Tables["tb_book"].Rows[n]["bookid"].ToString();//找到最后一条记录的图书编号bookid
string str1=num.Substring(1,4);//取最后4个字母,如编号为A0006,则取0006
string str2=num.Substring(0,1);//取第一个字母,如编号为A0006,则取A
…………接下页…………

string str3=(int.Parse(str1)+1).ToString().PadLeft(4,'0');//先将0006转化为整形,加1,得到7,再在7前添0,补足4位
string bkid=str2+str3;//将第一个字母与后4位字母相加,如A+0007得到A0007,即新书编号为A0007
………………

预订超期处理:系统打开后,对数据库中的预订信息表进行查找,找到预订超期的图书(预订允许时间为3天),并取消,取消即是将该条预订信息删除,同时图书信息表作数量更新。关键代码如下:

string strComm="select * from tb_reserve";
string rsvtim=sdr["reservetime"].ToString();//获取预订时间
				DateTime rsvt1=DateTime.Parse(rsvtim);
				TimeSpan rsvts=DateTime.Now-rsvt1;//到当前时间为止,计算预订时间
				int rsvn=3;//允许预订时间为三天
				int rsvndays=rsvts.Days;//将预订时间转换为天数
			//	int rsvover=rsvndays-rsvn;
				if(rsvndays>3)//如果大于三天,则为预订超期图书,作处理
…………
	string strq=sdr1["quantity"].ToString();//如果馆内还有该书,则数量加1
						int quan=Int32.Parse(strq)+1;
string strUpdate="update tb_book set quantity='"+quan+"'where bookid='"+bkid+"'";
…………
	string strIns1="insert	into	tb_book (bookid,bookname,bookkind,author,publisher,intime,quantity)values('"+bkid+"','"+bknam+"','"+bkknd+"','"+bkaut+"','"+bkpub+"','"+bkinti+"','1')";//如果馆内无该书,则插入图书信息,数量为1
…………

借阅超期:这是管理员需要了解的信息,因此,在管理员主页加载时,系统将借阅信息表tb_borrow中超期记录插入到超期信息表tb_overborrow。

4.3.4 系统管理模块
该模块主要是为了更好的地管理系统而设计的。
在这里插入图片描述

图4-10 系统管理模块
网站计数器:个记录网站访问量,代码如下:

	Application.Lock();//锁定
	Application["Count"]=Convert.ToInt32(Application["Count"])+1;
	Application.UnLock();//解锁
	lbct.Text=Application["Count"].ToString();

留言板的功能有:查看所有留言和回复,留言,管理员回复留言。
在这里插入图片描述

图4-11 留言板
注销: Session值清空,返回登录页面。关键代码为:

Session.Abandon();
Response.Redirect("login.aspx");

5 系统实施及测试
5.1 实施概况
本系统的运行环境是Windows +IIS,IIS是Internet Information Server的缩写,它是微软公司主推的服务器,它与WindowNT Server完全集成在一起,因而用户能够利用Windows NT Server和NTFS(NT File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。

本系统配置站点的配置如下:
网站IP地址:127.0.0.1
TCP端口:80
虚拟目录名称:mysite
本地路径:C:\InetPub\wwwroot\bkorder
默认文档:login.aspx
系统的编程环境为C#.NET,数据库为 SQL Server 2000。
为检验系统功能的实现情况,数据准备情况大体如下:
用户信息表中有一个管理员和一个用户;图书信息表中有各类别图书,数量最少为1;预订、借阅信息表中都有超期图书。

5.2 测试方案
本系统几乎所有功能都是对数据库操作,因此,检验功能实现与否是通过检查数据库中数据的变化情况。以“图书借阅”为例,设账号为“2003215026”用户,学历为“本科”,已借阅信息如图:
在这里插入图片描述

图5-1 借阅信息
系统规定,本科生可借阅4本图书,该用户已借3本,因此,可再借一本,如图示:
在这里插入图片描述

图5-2 借阅成功
现在该用户已借阅4本书,达到可借数量,不能继续借阅,如图示:
在这里插入图片描述

图5-3 借阅失败
可见,已达到了预期目标!

5.3 测试结果
该系统经过多次测试,预期功能都能正常实现,能够实现图书的预订和借阅,并能根据用户需要提供相关查询信息,但系统还存在一些不完善的地方,比如:系统运行速度较慢,实际应用中,由于数据量的增加,这种缺陷更加明显;有些界面在使用时不是很友好,如查看图书信息时,不能在页面加载时就显示,而必须通过“点击查看”按钮;系统没有对某些信息形成必要的统计报表,如超期图书信息,管理员如果能将超期信息打印并公布出来,对用户是一种很好的提醒;另外,可能是程序设计方面的问题,系统在运行过程中,偶尔会出现一些意想不到的错误。

结 论

网上图书订阅系统实现了读者随时登录系统,都可方便地进行图书预订、借阅,查询馆藏图书和当前的预订、借阅信息等功能;解决了人工订阅图书时,操作繁琐,订阅信息查询困难,出错率高的问题,极大地方便了读者的订阅和查询。

参考文献

[1] 东方人华.C#编程技术[M].北京:清华大学出版,2001。
[2] (美)威克斯.C#和.NET架构[M].北京:人民邮电出版社,2002。
[3] 黎卫东.ASP.NET网络开发入门与实践[M].北京:人民邮电出版社,2004。
[4] 方睿.网络数据库原理及应用[M].成都:四川大学出版社,2005。
[5] 王晟.Visual C#.NET数据库开发经典案例解析[M].北京:清华大学出版社,2005。
[6] 王保健.ASP.NET网站建设专家[M].北京:清华大学出版社,2005。
[7] 桂思强.ASP.NET与数据库程序设计[M].北京:中国铁道出版社,2002。

致 谢
省略


5、资源下载

本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。

序号毕业设计全套资源(点击下载)
本项目源码基于C#+asp.net+sqlserver的网上图书订阅系统设计与实现(源码+文档)_C#_BS架构_网上图书订阅系统.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业设计方案专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值