MS报告 廖俊波 11127.docx
- 文档编号:5012611
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:26
- 大小:234.05KB
MS报告 廖俊波 11127.docx
《MS报告 廖俊波 11127.docx》由会员分享,可在线阅读,更多相关《MS报告 廖俊波 11127.docx(26页珍藏版)》请在冰豆网上搜索。
MS报告廖俊波11127
一.设计目的
通过对图书管理信息系统的系统分析、系统设计、编码、调试等工作的实践,了解管理信息系统的一般设计和实现思路,从Windows或Web两个不同切入点熟悉和掌握软件设计和实现的一般方法,深入了解SQLServer2005数据库设计的基本理论及方法。
该软件系统的编写要求学生具备C#、SQLServer、XML、ADO.NET等多种程序设计工具和技术,并能熟练地加以综合应用。
该实习采用较复杂的真实案例来供学生进行练习,让学生从软件设计最初的需求分析开始,全面地了解软件工作和程序设计的方法。
本实习相对单门课程的实习更具有系统性和综合性,能以软件工程的标准来规范学生的编程行为。
实习过程中需要学生掌握多种开发和测试工具,能让学生灵活、熟练地应用所学的知识,为将来走向社会打下良好的基础。
二.开发环境介绍
1.C#语言
C#是微软公司设计的、简洁的、类型安全的、面向对象的语言,它松散地基于c/c++语言,开发人员可以使用C#语言来构建在.NETFramework上运行各种安全的,可靠的应用程序。
C#也是一种面向对象的语言,它支持封装、继承和多态性的概念。
C#程序所有的变量和方法,都封装在类定义中,甚至包括Main()方法(应用程序和入口)。
通过继承和多态等技术,类可以从另一个类中派生过来,同时也可以实现任意数量的接口。
2.VISUALSTUDIO软件
VisualStudio是微软公司出品的一个快速可视化程序开发工具软件。
借助微软在操作系统和办公自动化软件的垄断地位,VisualStudio在短短的几年内风靡全球。
VisualStudio是极具特色和功能强大的软件,主要表现:
所见即所得的界面设计,基于对象的设计方法,极短的软件开发周
期,较易维护的代码。
同时众多的ACTIVE控件,提高了软件的使用效率。
VisualStudio介绍为开发人员提供了所有必需的工具和框架支持,以便创建具有“AJAX样式”的交互式Web用户界面的、富有吸引力和表现力的Web应用程序。
开发人员可以利用这些丰富的客户端和服务器端框架,轻松地生成能够与任何后端数据提供程序相集成的、在任何现代浏览器内运行并且对ASP.NET应用程序服务和Microsoft平台具有完全访问权限的、以客户端为中心的Web应用程序。
3.SQLServer2005
MicrosoftSQLServer2005是一个完整的商务智能(BI)平台,其中为用户提供了可用于构建典型和创新的分析应用程序所需的各种特性、工具和功能。
本文简要介绍了您在构建分析应用程序时将要用到的一些工具,并着重介绍了一些新增功能,这些新增功能使复杂BI系统的构建和管理比以往更加轻松。
SQLServer2005通过在可伸缩性、数据集成、开发工具和强大的分析等方面的革新更好的确立了微软在BI领域的领导地位。
SQLServer2005能够把关键的信息及时的传递到组织内员工的手中,从而实现了可伸缩的商业智能。
从CEO到信息工作者,员工可以快速的、容易的处理数据,以更快更好的做出决策。
SQLServer2005全面的集成、分析和报表功能使企业能够提高他们已有应用的价值,即便这些应用是在不同的平台上。
三.需求分析
1.功能要求
①实现读者的借阅/归还/续借图书功能,包含超期罚款,考虑软件的负荷要求和操作简便。
②实现图书信息管理,包括书号,图书编号,书名,作者,出版社,图书类别。
③实现用户管理,包括系统管理员,图书管理员,读者,借阅管理员,读者管理员,不同用户类别的权限管理。
④实现信息浏览,管理员的查询功能和用户的查询功能,不同的身份查询的内容应该有所差异。
⑤读者的简单管理功能,读者查询,修改个人信息功能。
2.设计模块图
⑴图书管理部分
图1图书管理部分的结构图
⑵读者管理部分
图2读者管理部分的结构图
⑶借阅管理部分
图3借阅管理部分的结构图
⑷数据统计部分
图4数据统计部分结构图
⑸系统管理部分
图5系统管理部分结构图
⑹读者部分
图6读者部分结构图
四.总体设计
1.数据库
⑴创建数据库
数据库名称librarySYS,不限制文件最大值,数据文件和日志文件不存放在系统盘中。
createdatabaseDBLibrary
onprimary(name='Library',
filename='c:
\DBLibrary.mdf',
size=2MB,
filegrowth=1024KB)
logon(name='Library_log',
filename='c:
\DBLibrary_log.ldf',
size=1024KB,
filegrowth=10%)
go
⑵创建表
考虑到系统的实际需求,系统至少需要七张数据库表:
①读者类别表(ReaderType)
②读者信息表(Reader)
③图书信息表(Books)
④借阅信息表(Borrow)
⑤用户表(Users)
⑥罚款缴纳表(CaptureFine)
⑨权限表(UserPriv)
⑶设置权限
读者权限的设计:
读者只能进行个人信息和读者借阅信息查询操作,密码修改等操作。
管理者权限的设计:
图书馆管理者能够进行信息查询,系统维护,事务处理,密码修改等相关操作。
信息查询:
主要包括读者查询,图书查询。
系统维护:
图书维护,读者维护,用户维护。
事务处理:
借书与还书管理,图书证挂失与恢复,用户操作记录,图书过期与丢失罚款处理。
2.程序流程
五.详细设计和实现
1.使用SOLserver2005创建数据库和表
----创建数据库DBLibrary-----------------------------
createdatabaseDBLibrary
onprimary(name='Library',
filename='c:
\DBLibrary.mdf',
size=2MB,
filegrowth=1024KB)
logon(name='Library_log',
filename='c:
\DBLibrary_log.ldf',
size=1024KB,
filegrowth=10%)
go
useDBLibrary
go
----创建表ReaderType--------------------------------
createtableReaderType(
TypeNamenvarchar(10)notnull,
CanLendQtyintnotnull,
CanLendMonthintnotnull,
CanContinueTinmesintnotnull,
FineRatenumeric(10,2)notnull,
DateValidsmallIntnotnull)
go
----创建表Reader-----------------------------------
createtableReader(
rdIDchar(8)notnull,
rdNamenvarchar(20)notnull,
rdPwdchar(32)notnulldefault'e10adc3949ba59abbe56e057f20f883e',
rdSexnchar
(1)notnulldefault'男',
rdTypenvarchar(8)notnull,
rdDeptnvarchar(20)notnull,
rdDateRegsmalldatetimenotnull,
IsValidbitnotnullDefault(0)
primarykey(rdID))
go
----创建表Books-------------------------------------
createtableBooks(
bkCodechar(8)notnull,
bkISBNchar(16)notnull,
bkNamenvarchar(50)notnull,
bkClassvarchar(20)notnull,
bkLanguagesmallIntnull,
bkAuthornvarchar(50)notnull,
bkPressnvarchar(50)notnull,
bkDatePresssmalldatetimenull,
bkPagesintnull,
bkPricenumeric(10,2)notnull,
bkDateInsmalldatetimenotnulldefaultGetDate(),
bkCoverimagenull,
bkBrieftextnull,
IsExistbitnulldefault1,
primarykey(bkCode))
go
----创建表Borrow------------------------------------------
createtableBorrow(
rdIDchar(8)notnull,
bkCodechar(8)notnull,
ContinueTimessmallintnulldefault0,
DateLendsmalldatetimenulldefaultGetDate(),
DateReturnsmalldatetimenull,
OverDaysintnulldefault0,
FineMoneynumeric(10,2)nulldefault0,
IsReturnbitnulldefault0,
OperatorLendnvarchar(20)null,
OperatorRetnvarchar(20)null,
----组合主键--------------------
primarykey(rdID,bkCode),
----bkCode字段为Books表中bkCode字段的外键---------
foreignkey(bkCode)referencesBooks(bkCode),
----rdID字段为Reader表中rdID字段的外键-----------
foreignkey(rdID)referencesReader(rdID))
go
----创建Users------------------------------------------------------
createtableUsers(
UsersIDchar(8)null,
UserNamenvarchar(20)notnull,
UserPwdchar(32)notnull,
UserRolenvarchar(20)notnull)
go
----创建表CaptureFine-----------------------------------------------
createtableCaptureFine(
DateReturnsmalldatetimenotnull,
rdIDchar(8)notnull,
bkCodechar(10)notnull,
bkNamenvarchar(50)notnull,
OverDaysintnotnull,
FineMoneynumeric(10,2)notnull,
DateCapturnsmalldatetimenull,
OperaorFinenvarchar(20)notnull,
IsCapturebitnotnullDefault(0))
go
----创建表UserPriv---------------------------------------------------
createtableUserPriv(
UserRolenvarchar(20)notnull,
UserPrivnvarchar(20)notnull)
go
2.创建窗体
在VISUALSTUDIO中创建相应的10个windows窗体,并在窗体中添加相应的控件。
3.写入代码是控件实现相应的功能
⑴登陆界面
登陆界面的存储过程为:
createprocedureUsp_UserLogon
@UserIDnvarchar(20),--登录号码
@UserPwdchar(32),--登录密码
@UserRolenvarchar(20)out,--权限,仅图书馆工作人员具有
@StrErrornvarchar(50)out--错误
As
--查询用户表,并获取权限
select@UserRole=UserRolefromUserswhereUserID=@UserIDandUserPwd=@UserPwd
--存在该用户则立即返回
if@@ROWCOUNT<>0begin
set@StrError=''
return
end
--用户不存在于用户表中则继续判断读者表
select*fromReaderwhererdID=@UserIDandrdPwd=@UserPwd
--存在则设置返回,不存在提示错误
if@@ROWCOUNT<>0begin
set@StrError=''
end
elsebegin
set@StrError='用户名和密码不匹配,登录失败!
'
end
go
登陆界面的作用就是验证用户名和密码。
图9登陆界面
⑵罚款金额及超期天数的更新
在程序运行时更新数据库中借阅信息表的超期天数,并根据更新天数进行罚款金额的更新,这样能保证了数据的实时更新。
代码如下:
publicLibraryMain()
{
InitializeComponent();
//数据库关于超期天数跟罚款金额的自动更新
SqlConnectionconn=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnStr"]);
stringOverdays_cmdText="updateborrowsetborrow.overdays=datediff(day,dateadd(month,Canlendmonth,Borrow.dateLend),getdate())fromborrow,ReaderType,readerwhereborrow.rdid=reader.rdidandreadertype.typename=reader.rdType";
stringfineMoney_cmdText="updateBorrowsetFineMoney=overdays*0.05fromBorrowwhereoverdays>0";
SqlCommandOverdays_cmd=newSqlCommand(Overdays_cmdText,conn);
SqlCommandfinemoney_cmd=newSqlCommand(fineMoney_cmdText,conn);
try
{
conn.Open();
Overdays_cmd.ExecuteNonQuery();
finemoney_cmd.ExecuteNonQuery();
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}}
⑶借书处理
1)当查询到有该书没有还的借书记录和该书没有超期,就可以判断该书为续借,续借只需要修改该借书记录的续借次数加1,借书日期为当前日期。
2)这里借书分两种情况,第一种已有该书还书的借书记录,再次被同一个人借出,由于存在主键唯一约束,就不可以向borrow表插入该借书记录,只需要修改该借书记录和相应借书操作。
第二种就是没有该书和同一个人借书记录,就要向borrow表插入该条借书记录和相应借书操作。
由于借书处理涉及到对多个表的同时操作和相当多的判断操作,所以用存储过程实现,并在每一句判断之前添加输出,以检查过程是否正确,存储过程代码如下:
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERprocedure[dbo].[pro_lendBook]
@rdIDchar(8),
@bkCodechar(8),
@StrErrorNvarchar(50)output
as
begin
--判断借书证是否有效,是否存在该书,该读者已借图书是否超期,已借几本书,是否续借,该书是否在馆
--判断是否存在该读者
print'判断是否存在该读者'
select*fromreaderwhererdID=@rdID
if@@rowcount=0
begin
set@StrError='该读者不存在'
return
end
else
begin
declare@rdDateRegsmalldatetime
declare@DateValidsmalldatetime
select@rdDateReg=rdDateRegfromreaderwhererdID=@rdID
select@DateValid=DateValidfromreaderTypewhereTypeName=(selectrdTypefromReaderwhererdID=@rdID)
--判断借书证是否有效
print'判断借书证是否有效'
if@DateValid>year(getdate()-@rdDateReg)
begin
set@StrError='您的借书证已过期!
'
--更新读者信息表
updatereadersetIsValid=0whererdID=@rdID
return
end
else
begin
print'判断是否存在该书'
--判断是否存在该书
select*fromBookswherebkCode=@bkCode
if@@rowcount=0
begin
set@strError='您所借阅的书籍不存在!
'
return
end
else
begin
--判断已借图书是否超期
print'判断已借图书是否超期'
declare@overdaysint
select@overdays=sum(overdays)fromborrowwhererdID=@rdID
if@overdays<>0
begin
set@strError='您有超期图书,请归还后再进行借阅!
'
return
end
else
begin
--判断该读者已借几本书
print'判断该读者已借几本书'
declare@lendNumint
declare@canlendQtyint
select@canlendQty=canlendQtyfromReaderTypewhereTypeName=(selectrdTypefromReaderwhererdID=@rdID)
select@lendNum=COUNT(*)fromBorrowwhererdID=@rdIDandIsReturn='0'
if@lendNum>=@canlendQty
begin
set@strError='您所借的书籍已满!
'
end
else
begin
--判断是否为续借
print'判断是否为续借'
select*fromBorrowwhererdID=@rdIDandbkcode=@bkcode
if@@rowcount<>0
begin
--续借,判断续借次数
declare@continuetimesint
declare@cancontinuetimesint
select@continuetimes=continuetimesfromborrowwherebkcode=@bkcode
select@cancontinuetimes=cancontinuetimesfromreaderTypewheretypename=(selectrdTypefromreaderwhererdID=@rdID)
if@cancontinuetimes<=@continuetimes
begin
set@strError='续借次数已满,不能再进行续借'
return
end
else
begin
updateBorrowsetcontinuetimes=continuetimes+1wherebkCode=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MS报告 廖俊波 11127 MS 报告