ASP系统说明.docx
- 文档编号:17155073
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:18
- 大小:275.18KB
ASP系统说明.docx
《ASP系统说明.docx》由会员分享,可在线阅读,更多相关《ASP系统说明.docx(18页珍藏版)》请在冰点文库上搜索。
ASP系统说明
实现步骤
我们在SQLServer的企业管理器中新建一个数据库,名为:
BookStore。
在本数据库下建立图书管理系统所需要的数据表。
首先,我们建立一张用户表,该表用于存储不同身份的用户数据,如表所示。
字段名
数据类型
备注
Code
varchar(10)
用户证件号,主键
userdispname
varchar(32)
用户昵称
UserName
varchar(32)
用户姓名
password
Varchar(32)
用户密码
fpassword
varchar(16)
用户界面显示的用户密码,始终为’******’
type
char
(1)
用户类型
U:
普通用户
S:
管理员
存储图书信息的表,如表所示,用于存放图书管理系统中所有已录入的书目信息。
字段名
数据类型
备注
Code
Varchar(32)
图书编号,主键
Name
varchar(32)
书名
sourcecode
varchar(32)
图书源码
Selfcode
varchar(32)
自编代码
isbn
varchar(32)
ISBN号
yyear
Varchar(32)
出版年份
version
Varchar(32)
图书版数
author
varchar(32)
作者
price
int
图书价格
presscode
Varchar(32)
出版社编码
loccode
varchar(32)
书架号
memo
varchar(200)
备注
Num
int
在库数量
存储图书借阅信息的表,如表所示。
改表存放了所有读者的借阅信息,借书和还书都对该表进行操作。
字段名
数据类型
备注
Usercode
varchar(32)
用户证件号
Bookcode
Varchar(32)
图书编号
status
int
借阅状态
BorrowDate
Varchar(10)
借阅时间
returnDate
Varchar(10)
归还时间
存储出版社信息表,如表所示。
该表存放了系统中的所有权限情况,本系统中只有四类权限:
学生、老师、普通管理员和总管理员。
字段名
数据类型
备注
Code
varchar(10)
出版社编号
abbrName
varchar(32)
简略名称
fullname
varchar(32)
出版社全称
此外,我们的数据库系统中还存在一个存储过程(Procedure),名为dt_bookInfo,该存储过程用于返回图书馆中不同种类书籍的数量。
图书管理系统实现功能分为如下三个模块:
⏹“用户管理”模块
在本模块中,图书管理员可以输入用户编号、用户姓名、用户昵称和用户密码创建一个图书管理系统的新用户,该用户默认为普通用户。
同时,图书馆管理员也可以查看当前系统中所有用户一览信息。
该用户一览界面上提供了三个按钮:
“编辑”、“修改密码”、“删除”,分别对应着:
修改用户基本信息、修改用户密码和删除该用户功能。
管理员登入系统后,单击这些按钮即可方便地实现对注册用户的管理操作。
⏹“图书检索和借还书”模块
本模块提供给普通读者查询书目信息的功能,提供浏览器模式的图书信息检索工具。
检索时可按书名、ISBN、作者、出版社、备注进行任意条件查询。
本模块中提供的检索功能是一个模糊查询。
本页面中,对检索结果进行了分页显示,每页显示10条数据,在网页上提供了:
“首页”、“上页”、“下页”、“尾页”和页码数字。
用户可以方便地快速定位到某一页。
本模块还提供了为某读者借阅书籍的功能,首先输入检索条件检索需要借阅的书籍,待检索到的书籍在库数量不为0时,在页码上输入读者证件号,即可对根据检索条件检索出来的书籍进行借阅。
如果检索到的书籍在库数量为0,此时则无法借阅相关书籍。
页面上会提示在库数量为0时无法借阅。
本模块同时还提供了图书归还功能,首先根据读者证件号,查阅该读者当前正在借阅的书籍一览。
在页面上,当前正在借阅的书籍一览以表格的形式显示出来。
每行的最后一列提供了一个“归还”按钮,管理员单击该按钮即可对该本书籍进行归还操作。
⏹“图书管理”模块:
图书管理模块主要提供了针对图书馆藏书的管理功能。
该模块提供了添加图书的功能,管理员可以在本模块上录入图书馆引进的新书。
图书维护:
管理员实现对图书的维护,通过检索特定的书籍,管理员可以对该书籍的基本信息进行修改操作,如修改图书名称、在库数量、作者、定价等等。
本模块还提供了图书销毁功能,管理员通过条件检索,获得待销毁图书一览信息,直接在页面上单击一个“删除”按钮即可完成对该图书的销毁操作。
系统框架图
图书管理系统的系统框架图如下所示:
系统展示图(运行之后)
登陆界面:
用户管理界面:
图书管理-新增
图书管理-修改
图书管理销毁
查询
借阅
归还
关键代码:
⏹数据库连接字符串获取代码
01
02
SqlConnectionconn;
conn=newSqlConnection(System.Configuration.ConfigurationManager.AppSettings["connection"]);
第1行声明一个SqlConnection对象conn,用于连接SQLServer数据库。
第2行从Web.config配置文件中读取Key为Connection的字符串,根据该字符串生成一个SqlConnection对象。
接下来我们看一下web.config文件内容:
该文件是一个XML文件,我们可以看到Key为Connection的标记的Value正是一个SQLServer连接字符串。
xmlversion="1.0"standalone="yes"?
>
-- ⏹数据以表格形式显示到页面代码 在图书管理系统中,我们随处可见数据表中的数据以表格的形式显示在网页上,这是通过一个DataGrid控件来实现的。 以用户信息为例,该页面是userinfo.aspx,表格相关代码如下: DataGridID="DataGrid1"runat="server"AllowPaging="True"AllowSorting="True" AutoGenerateColumns="False"BorderColor="Black"CellPadding="2"font-name="verdana" Font-Names="verdana"Font-Size="8pt"HeaderStyle-BackColor="#F8FAFC"Width="100%" OnCancelCommand="Grid1_Cancel"OnEditCommand="Grid1_Edit"OnItemCommand="Grid1_Mod"OnPageIndexChanged="Grid1_PageIndexChanged"OnUpdateCommand="Grid1_Update"PageSize="10"OnItemDataBound="DataGrid1_ItemDataBound"OnDeleteCommand="DataGrid1_DeleteCommand"> Mode="NumericPages"NextPageText="下一页"PrevPageText="上一页"/> BoundColumnDataField="Code"HeaderText="用户编码"ReadOnly="True"> BoundColumn> BoundColumnDataField="userdispName"HeaderText="用户名称"> BoundColumn> BoundColumnDataField="username"HeaderText="登录名称"> BoundColumn> BoundColumnDataField="fpassword"HeaderText="登录密码"ReadOnly="True"> BoundColumn> EditCommandColumnButtonType="LinkButton"CancelText="取消"EditText="编辑"HeaderText="编辑"UpdateText="更新"> EditCommandColumn> ButtonColumnCommandName="modipwd"HeaderText="修改密码"Text="修改密码"> ButtonColumn> ButtonColumnCommandName="Delete"HeaderText="删除"Text="删除"> ButtonColumn> DataGrid> 上表的代码中,标签 BoundColumn>对应到查询SQL语句的一个字段,而 EditCommandColumn>则对应编辑命令、同理 ButtonColumn>对应于一个按钮命令,如删除和修改密码。 我们在标签 DataGrid>中注册了几个处理事件,如下: OnCancelCommand="Grid1_Cancel"OnEditCommand="Grid1_Edit"OnItemCommand="Grid1_Mod"OnPageIndexChanged="Grid1_PageIndexChanged"OnUpdateCommand="Grid1_Update"PageSize="10"OnItemDataBound="DataGrid1_ItemDataBound"OnDeleteCommand="DataGrid1_DeleteCommand" 这些事件分别对应于后台代码文件中的函数,此处不再赘述,仅仅分析一下填充该DataGrid的代码: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 publicvoidBindGrid() { SqlDataAdapterdtcmd=null; SqlDataReaderdataR=null; DataTabledt=newDataTable(); stringstr2="selectcount(*)asnumsfromuserinfosheet"; cmd=newSqlCommand(str2,conn); conn.Open(); dataR=cmd.ExecuteReader(); if(dataR.Read()) { if(dataR["nums"].ToString()=="0") Msg.Text=""; else Msg.Text="合计: 记录数"+dataR["nums"].ToString(); } conn.Close(); stringstr1="select*fromuserinfosheetorderbycode"; dtcmd=newSqlDataAdapter(str1,conn); dtcmd.Fill(dt); #region用来判断当前删除是否为当前页的最后一条记录 if((this.DataGrid1.CurrentPageIndex==this.DataGrid1.PageCount-1)&&this.DataGrid1.Items.Count==1) { if(this.DataGrid1.CurrentPageIndex-1>1) { this.DataGrid1.CurrentPageIndex=this.DataGrid1.CurrentPageIndex-1; } else { this.DataGrid1.CurrentPageIndex=0; } } #endregion DataGrid1.DataSource=dt; DataGrid1.DataBind(); } 第1行是函数名,填充DataGrid函数名为BindGrid 第3~5行声明了三个变量,用于从数据库中获取数据以及将保存数据 第6~16行打开到数据库的连接,执行一条SQL语句获取用户表中用户的数量,用户数会在页面上显示。 第17行关闭到SQLServer的连接。 第18~20行通过执行一条SQL语句,从数据库中将userinfosheet表中的数据取出来保存到一个DateTable对象中。 第35~36行将上一步取到的数据设置到DataGrid对象的DataSource属性中,调用DataBind函数使得userinfosheet表中的数据填充到DataGrid控件中,对用户来说此时页面上显示出一张表格。 ⏹图书借阅处理代码 借阅图书涉及到两张数据表的更新,分别是bookinfosheet和lendinfo。 其代码如下: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 stringCodeStr=e.Item.Cells[0].Text; stringuserCode=tb_usercode.Text.Trim(); if(userCode=="") { Msg.Text="请输入借阅者证件号! "; return; } intnumber=int.Parse(e.Item.Cells[6].Text.Trim()); if(number>0) { stringsql_insert; stringsql_update; stringtoday=DateTime.Today.Year.ToString()+"-"+(DateTime.Today.Month>9? DateTime.Today.Month.ToString(): "0"+DateTime.Today.Month.ToString()); today+="-"+(DateTime.Today.Day>9? DateTime.Today.Day.ToString(): "0"+DateTime.Today.Day.ToString()); sql_insert="insertintolendInfo(usercode,bookcode,borrowDate)values('"+userCode+"','"+CodeStr+"','"+today+"')"; sql_update="updatebookinfosheetsetnum=num-1wherecode='"+CodeStr+"'"; SqlTransactiontrans=null; try { conn.Open(); trans=conn.BeginTransaction(IsolationLevel.Serializable); cmd=newSqlCommand(sql_insert,conn,trans); cmd.ExecuteNonQuery(); cmd.CommandText=sql_update; cmd.ExecuteNonQuery(); trans.Commit(); conn.Close(); DataGrid1.EditItemIndex=-1; BindGrid(); Msg.Text="借阅成功! "; } catch(SqlException) { trans.Rollback(); Msg.Text="借阅失败,请重试! "; return; } finally { if(conn.State==ConnectionState.Open) { conn.Close(); } } } else { Msg.Text="该书已经没有库存! "; } 图书借阅操作分为三个步骤,首先输入借阅者证件号。 然后生成两条SQL语句,分别用于将bookinfosheet表中相应书籍的在库数量减一和在lendinfo表中增加一条对应读者的借书记录。 第1~7行代码获取读者编号和图书编号,并判断页面上是否输入了读者编号,如果没有输入则在页面上显示一条提示消息。 第8~9行获取该书的在库数量,并且判断在库数量是否大于0,若不大于0则在页面上显示一条提示消息,该书已经没有库存,无法借阅。 第11~20行生成两条SQL语句,分别用于更新bookinfosheet中对应书籍的在库数量和向lendinfo表中插入一条借书记录。 第21~48行执行上一步生成的两条SQL语句,在这里为了确保数据库信息一致性和完整性,我们将这两条SQL语句放入一个事务(Transaction)中执行。 这两条SQL语句要么全部执行,要么全部不执行。 当两条SQL语句执行成功时候,页面上显示一条借阅成功的消息,否则在页面上显示一条借阅失败的消息。 ⏹图书归还处理代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 stringCodeStr=e.Item.Cells[0].Text; stringuserCode=e.Item.Cells[2].Text; stringborrowDate=e.Item.Cells[4].Text; stringsql_update1; stringsql_update2; stringtoday=this.getToday(); sql_update1="updatelendInfosetstatus=1,returnDate='"+today+"'wherebookcode='"+CodeStr+"'ANDusercode='"+userCode+"'ANDborrowDate='"+borrowDate+"'"; sql_update2="updatebookinfosheetsetnum=num+1wherecode='"+CodeStr+"'"; SqlTransactiontrans=null; try { conn.Open(); trans=conn.BeginTransaction(IsolationLevel.Serializable); cmd=newSqlCommand(sql_update2,conn,trans); cmd.ExecuteNonQuery(); cmd.CommandText=sql_update1; cmd.ExecuteNonQuery(); trans.Commit(); conn.Close(); DataGrid1.EditItemIndex=-1; BindGrid(); Msg.Text="归还成功! "; } catch(SqlExceptionex) { trans.Rollback(); Msg.Text="归还失败,请重试! "; return; } finally { if(conn.State==ConnectionState.Open) { conn.Close(); } } 归还图书的处理流程和借阅图书类似。 主要执行了两步操作: 更新读者借书表中相应记录,将借阅状态标记为“已还”并且更新还书日期。 更新书籍表中响应记录,将在库数量加一。 这两步操作同样也是放在了一个事务中执行,这两条SQL语句要么全部执行,要么全部
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP 系统 说明