《C#Windows程序设计》任务及指导手册.docx
- 文档编号:12678217
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:55
- 大小:1.26MB
《C#Windows程序设计》任务及指导手册.docx
《《C#Windows程序设计》任务及指导手册.docx》由会员分享,可在线阅读,更多相关《《C#Windows程序设计》任务及指导手册.docx(55页珍藏版)》请在冰点文库上搜索。
《C#Windows程序设计》任务及指导手册
《C#Windows程序设计》任务书
1.任务与要求
(1)先修课程:
《C#程序设计语言》、《SQLServer2005数据库程序设计》《基于C#的Windows应用程序设计》、《数据结构》等。
(2)课程设计题目:
《图书管理系统》
若自选题目,则需在课程设计第一天上报题目名称,以及开发工具和数据库。
(3)时间:
2周,17-18周。
(4)开发工具和环境
开发语言:
C#。
数据库:
SQLServer、MySQL、Oracle等任选。
应用程序:
Windows应用程序(C/S)。
(5)设计报告正文字数不少于5千字(只包含部分核心代码,每个代码段不超过10行),报告附录应包括主要源代码。
要求层次清楚、整洁规范,不得相互抄袭,凡正文内容有整段相同者一律以作弊论处。
明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,积极认真地做好准备工作。
课程设计中,学会应用理论知识,收集、归纳相关资料,以及解决实际问题的方法。
严格要求自己,自信但不固执,独立完成课程设计任务,善于接受教师的指导和听取同学的意见,有意识地树立严谨的科学作风,要独立思考,刻苦钻研,勇于创新,按时完成课程设计任务。
2.考勤、考核与成绩
(1)严格考勤制度,每次上机都要记录,学生有事必须请假。
考勤记录影响最终成绩。
(2)在课程设计的最后一次上机之前,必须向老师申请考核,考核时要求演示程序并回答老师提出的问题。
(3)最终成绩以考核成绩为主,考核成绩占50%,考勤占30%,平时成绩占20%。
(4)课设最后一周内提交实训报告。
3.设计报告
(1)要求采用统一格式的报告封面。
(2)目录,要求目录层次结构清晰、合理。
(3)正文,要求包括概况、系统分析与设计、系统实现、总结等方面内容。
系统分析与设计可包括:
系统功能分析、概念模型、数据表结构、三层架构、类的设计等。
系统实现可包括:
数据库实现(SQL脚本)、程序界面、界面操作、关键技术及实现代码、调试中遇到的问题等。
总结可包括:
结论(已完成功能、涉及的主要技术)、下一步工作安排、收获与体会等。
(4)附录,要求包括数据库对象(含存储过程等)的SQL脚本代码,以及主要源程序代码。
《图书管理系统》设计指导书
1.设计题目
图书管理系统
2.设计目的
通过对图书管理系统的系统分析、系统设计、编码和调试等工作的实践,熟悉管理信息系统的开发过程、设计方法及相关编程技术,熟练掌握数据库设计的基本理论及方法。
3.设计任务
要求完成一个具有一定实用价值的图书管理系统,主要任务包括:
在MicrosoftSQLServer2005/2008环境下建立图书管理系统所使用的数据库,利用企业管理器或查询分析器建立各种数据库对象,包括:
数据表、视图、约束、存储过程和触发器等;
掌握ADO.NET编程技术,对MSSQLServer数据库进行连接和操纵;
掌握使用C#语言开发一个数据库应用系统的基本方法和步骤,熟悉一些基础功能的实现方法,如:
数据维护(插删改等操作),数据查询、浏览和Excel导出,统计与报表,用户登录和权限管理等。
了解C/S或B/S应用程序的多层体系结构及三层架构方案设计思想。
指导书说明:
(1)开发环境与目标:
微软C#、SQLServer,基于C/S结构的Windows应用程序。
(2)仅给出了部分功能的设计与实现,以说明面向对象分析与设计的一般方法以及关键编程技术,其它功能部分需要自己完成。
4.设计准备
4.1系统准备
操作系统:
Windowsxp/7/8
数据库系统:
SQLServer2005/2008/2012
客户端开发工具:
VisualStudio2005/2008/2010/2012
4.2知识准备
熟悉SQLServer2005/2008/2012的使用;
熟悉C#语言及其数据库编程技术。
了解图书馆相关业务知识
5.系统分析
需求概要
(1)图书管理系统的基本功能需求包括:
读者管理、图书管理、借阅管理、用户登录与用户管理等;其它功能需求包括:
预约借书*、统计与报表*、数据备份*、书架管理*、期刊管理*、期刊借阅*、论文管理*、论文借阅*等。
(*表示留待以后完成,下同)
(2)相关领域概念:
借书证(读者)、图书、借还书记录。
(3)系统主要用户:
将图书馆工作人员划分为读者以及管理员,读者能够进行系统登录、图书查询、图书借阅记录查询、图书借阅等;管理员能够进行系统登录、读者管理、图书管理、借阅管理、用户管理;。
5.1读者管理
读者管理即借书证管理,包括的操作有:
办理借书证、借书证变更、借书证挂失、解除挂失、补办借书证、注销借书证。
读者=借书证号、姓名、性别、所在单位、读者类别、办证日期、照片等。
(另可加:
电话、邮箱等)
读者类别=读者类别号、类别名称、可借书本数、可借书天数、可续借次数。
5.2图书管理
包括业务(用例):
新书入库、图书信息维护、图书变卖与销毁处理等。
图书信息=书号、书名、作者、出版社、出版日期、ISBN、分类号、语言、页数、单价、内容简介、图书封面、图书状态等;(图书状态包括:
在馆、借出、遗失、变卖、销毁)
5.3借阅管理
包括业务用例:
借书、续借、还书等。
还书过程涉及超期罚款、遗失图书罚款等业务规则。
罚款规则:
(1)超期罚款规则应罚款金额=超期天数*罚款率,罚款率=0.05元/天,罚款率可能随时间或读者类别而变化;实际罚款金额<=应罚款金额,根据实际情况可以进行减免。
(2)遗失罚款规则遗失图书应罚款金额=3*图书单价;实际罚款金额在(1*图书单价,3*图书单价)之间。
(3)遗失罚款规则优先于超期罚款规则。
借阅信息=借书顺序号、借书证号、书号、借书操作员、借书日期、应还日期,续借次数、还书操作员、还书日期,超期天数、应罚款金额,实际罚款金额
5.4用户登录与用户管理
包括用例:
用户登录、密码修改、用户管理,为本系统的基础和主要功能。
用户包括2类:
读者、管理员。
管理员是读者,但读者不一定是管理员;读者与管理员间存在(1对0..1)联系。
读者信息=读者信息+密码。
管理员信息=用户号、用户名、密码、管理角色
5.5读者查询与预约借书
读者(非管理员用户)的功能需求,包括操作:
未归还图书查询与续借等。
5.6统计与报表*
包括:
馆藏图书统计、借阅情况统计、借阅时段统计等等。
馆藏图书统计可按图书类别、入馆时间统计图书数量、金额等,可得图书分布情况;
借阅情况统计可按单位(含专业、年级)、图书类别、借阅时间(年、学期、月份)等统计借阅次数和天数,统计结果可作为订购新书的参考依据;
借阅时段统计按工作日(星期一、二、、、)和时段(8:
00-8:
30、8:
30-9:
00、、、)统计借还书次数,可得各时段的借阅工作量,并可依此安排借阅管理人员。
5.7数据备份*
用户备份是对SQLServer数据库进行备份,由系统管理员操作。
5.8系统功能与用户角色
表1系统功能与用户角色关系表
序号
系统功能
系统管理
读者
1
读者管理
√
2
图书管理
√
3
借阅管理
√
4
用户登录
√
√
5
密码修改
√
√
6
用户管理
√
7
读者预约
√
8
统计与报表
√
9
数据备份
√
5.9数据库概念模型
图1图书管理系统概念模型(V1)
6.系统设计与实现
6.1数据库设计与实现
1.读者类别表(TB_ReaderType)
序号
字段名
数据类型
说明
1
rdType
SmallInt
读者类别【主键】
2
rdTypeName
Nvarchar(20)
读者类别名称【唯一、非空】
3
CanLendQty
Int
可借书数量
4
CanLendDay
Int
可借书天数
5
CanContinueTimes
Int
可续借的次数
6
PunishRate
Float
罚款率(元/天)
7
DateValid
SmallInt
证书有效期(年)【非空,0表示永久有效】
2.读者信息表(TB_Reader)
序号
字段名
数据类型
说明
1
rdID
Int
读者编号/借书证号【主键】
2
rdName
nvarchar(20)
读者姓名
3
rdSex
nchar
(1)
性别,男/女
4
rdType
SmallInt
读者类别【外键TB_ReaderType】【非空】
5
rdDept
nvarchar(20)
单位代码/单位名称
6
rdPhone
nvarchar(25)
电话号码
7
rdEmail
nvarchar(25)
电子邮箱
8
rdDateReg
datetime
读者登记日期/办证日期
9
rdPhoto
image
读者照片
10
rdStatus
nchar
(2)
证件状态,3个:
有效、挂失、注销
11
rdBorrowQty
Int
已借书数量(缺省值0)
12
rdPwd
nvarchar(20)
读者密码(初值123),可加密存储
13
rdAdminRoles
SmallInt
管理角色,0-读者、1-借书证管理、2-图书管理、4-借阅管理、8-系统管理,可组合
分析提示:
(1)可将管理员另外建表,与读者信息分开单独进行设计。
(2)单位rdType可以采用名称,若采用代码则需另建一张表:
单位代码与名称对照表,这样便于按单位统计。
(3)管理角色(rdAdminRoles)也可设计为4个bit类型字段。
3.图书信息表(TB_Book)
序号
字段名
数据类型
说明
1
bkID
Int
图书序号【标识列,主键】
2
bkCode
Nvarchar(20)
图书编号或条码号(前文中的书号)
3
bkName
Nvarchar(50)
书名
4
bkAuthor
Nvarchar(30)
作者
5
bkPress
Nvarchar(50)
出版社
6
bkDatePress
datetime
出版日期
7
bkISBN
Nvarchar(15)
ISBN书号
8
bkCatalog
Nvarchar(30)
分类号(如:
TP316-21/123)
9
bkLanguage
SmallInt
语言,0-中文,1-英文,2-日文,3-俄文,
4-德文,5-法文
10
bkPages
Int
页数
11
bkPrice
Money
价格
12
bkDateIn
DateTime
入馆日期
13
bkBrief
Text
内容简介
14
bkCover
image
图书封面照片
15
bkStatus
NChar
(2)
图书状态,在馆、借出、遗失、变卖、销毁
说明:
bkCode为前文中的书号,这里没有设计为关键字,而增加bkID字段作为表关键字,其原因为:
防止新书入库时起始书号输入错误时,因关键字而不易修改。
4.借阅信息表(TB_Borrow)
序号
字段名
数据类型
说明
1
BorrowID
Numeric(12,0)
借书顺序号【主键】
2
rdID
Int
读者序号【外键TB_Reader】
3
bkID
Int
图书序号【外键TB_Book】
4
ldContinueTimes
Int
续借次数(第一次借时,记为0)
5
ldDateOut
DateTime
借书日期
6
ldDateRetPlan
DateTime
应还日期
7
ldDateRetAct
DateTime
实际还书日期
8
ldOverDay
Int
超期天数
9
ldOverMoney
Money
超期金额(应罚款金额)
10
ldPunishMoney
Money
罚款金额
11
lsHasReturn
Bit
是否已经还书,缺省为0-未还
12
OperatorLend
Nvarchar(20)
借书操作员
13
OperatorRet
Nvarchar(20)
还书操作员
分析提示:
借阅信息即用于图书的借还管理,同时又是统计分析的主要信息来源,故要求保持其历史信息。
设计时不能以(读者序号+图书序号)为关键字,否则读者不能第二次借阅同一本书了。
5.数据库实现
内容:
(1)创建数据库:
Library;
(2)创建登录名:
LibAdmin,密码:
123;并设置为数据库Library的dbo;
(3)创建上述4张数据表及约束;
实现方法:
(1)采用SQLServer企业管理器手工操作方法完成创建工作;(自己完成)
(2)编写SQL脚本文件,并在查询窗口工具中运行并创建;如创建TB_ReaderType表:
6.2三层架构简介
采用三层体系结构,即表示层、业务逻辑层和数据访问层,如图2所示,图中箭头表示调用和依赖关系。
图2三层架构示意图
表示层(USL):
也称UI,提供交互式界面,形式:
WinForm或HTMLWeb界面。
业务逻辑层(BLL):
实现业务功能,为表示层提供服务,形式:
类库。
数据访问层(DAL):
实现数据访问功能(如数据库、文件等数据的读取、保存和更新),为业务逻辑层提供服务,形式:
类库。
微软公布的SQLHelper类提供了对SQLServer数据库的一般访问方法(JAVA有类似的类或组件)。
实体类(Model):
描述一个业务实体的类,也即应用系统所涉及的业务对象。
对数据库来讲,每个数据表对应于一个实体类,数据表的每个字段对应于类的一个属性。
表示层、业务逻辑层、数据访问层都依赖于业务实体。
各层之间数据的传递主要是实体对象,业务信息封装在实体对象中。
6.3搭建三层架构解决方案
创建C#应用程序解决方案,包括4个项目:
BookManage(Windows窗口应用程序)、BookManage.Model(类库)、BookManage.DAL(类库)、BookManage.BLL(类库)。
1.新建项目BookManage(启动项目)
MSVS菜单:
“文件”->“新建”->“项目”,在新建项目窗口中,选择“C#”->“Windows”->“Windows窗口应用程序”,选择项目文件的存储位置,并输入项目名称:
BookManage,如图3。
项目BookManage即为UI层,该项目在VS.NET编译后产生BookManage.exe文件。
图3新建项目BookManage
2.添加新项目BookManage.Model
MSVS菜单:
“文件”->“添加”->“新建项目”,选择“类库”,输入项目名称,如图4。
VS.NET编译后产生BookManage.Model.dll文件(.DLL后缀文件称为动态链接库)。
图4添加新建项目BookManage.Model
3.添加新项目BookManage.DAL
操作与BookManage.Model类似,项目名称设置为:
BookManage.DAL。
VS.NET编译后产生BookManage.DAL.dll文件。
4.添加新项目BookManage.BLL
操作与BookManage.Model类似,项目名称设置为:
BookManage.BLL。
VS.NET编译后产生BookManage.BLL.dll文件。
至此,解决方案参见图5。
图5图书管理项目解决方案
5.设置启动项目和项目引用关系
在解决方案中设置BookManage为启动项目(“BookManage”右键菜单“设为启动项目”)。
项目引用关系如表2所示。
如BookManage.BLL项目引用DAL和Model,其设置方法:
解决方案中项目“BookManage.BLL”的右键菜单“添加引用”,并按图6进行设置。
表2项目引用关系。
BookManage
BookManage.BLL
BookManage.DAL
BookManage.Model
BookManage
-
√
×
√
BookManage.BLL
-
√
√
BookManage.DAL
-
√
BookManage.Model
-
图6给BookManage.BLL项目添加引用
6.4类总体设计(迭代1)
实体类、数据访问层类、业务逻辑层类、表示层窗口类的初步设计如表3。
表3实体类、数据访问层、业务逻辑层的类设计
层
类名
说明
实体类模块
(Model)
ReaderType
读者类型实体类
Reader
读者实体类
Book
图书实体类
Borrow
借阅记录实体类
数据访问层
(DAL)
ReaderTypeDAL
读者类型数据表访问类(插、删、改、查、存储过程等)
ReaderDAL
读者数据表访问类(插、删、改、查、存储过程等)
BookDAL
图书数据表访问类(插、删、改、查、存储过程等)
BorrowDAL
借阅数据表访问类(插、删、改、查、存储过程等)
SQLHelper
对SQLServer数据库进行访问的通用类
业务逻辑层
(BLL)
ReaderTypeAdmin
读者类型管理类,实现插、删、改、查等信息维护操作。
ReaderAdmin
读者管理类,实现借书证办理、变更、补办、挂失、解除挂失、注销等用例中的各种系统操作。
BookAdmin
图书管理类,实现图书管理各用例中的系统操作
BorrowAdmin
借阅管理类,实现借书、还书、续借等用例中的系统操作。
UserAdmin
用户管理类,
表示层
(UI)
frmLogin
登录窗口类
frmMain
程序主窗口类,含菜单、工具栏、状态栏等
frmReader
读者管理窗口类
…
6.5Model层实体类设计
在BookManage.Model项目中添加4个实体类:
ReaderType、Reader、Book、Borrow,分别对应4个数据库表。
实体类的属性与数据库表结构保持一致(名称、类型);实体类应尽量简单,除了实体对象的复制与比较等方法外,不宜添加过多方法。
其实实体类就是实现ORM。
ORMObjectRelationalMapping对象关系映射,是为了解决面向对象的类,与关系数据库的表之间,存在的不匹配的现象,通过使用描述对象和关系之间映射的元数据,在程序中的类对象,与关系数据库的表之间建立持久的关系,用于在程序中描述数据库表。
本质上就是将数据从一种形式转换到另外一种形式。
ORM是一个广义的概念,适应于关系数据库与应用程序之间的各类数据转换,目前有许多自动转换工具可用,如codesmith等,也可手工书写实体类代码来实现ORM。
1.ReaderType类
在Model项目中添加新建项:
C#代码类ReaderType.cs,如图7所示。
图7添加C#代码类文件ReaderType.cs
表字段映射为实体类属性的基本方法(VS2005及以上版本)如下:
privatestring_rdTypeName;
publicstringrdTypeName
{
get{return_rdTypeName;}
set{_rdTypeName=value;}
}
而在VS2008及以上版本中可简化为:
publicstringrdTypeName{get;set;}
表4SQL字段类型与实体类属性类型的映射关系
SQLServer字段类型
DataTable中类型
C#实体类设计属性
nchar,nvarchar,text
System.String
string
int,smallint
System.Int32,System.Int16
int
numeric(12,0)
System.Decimal
long
datetime
System.DateTime
DateTime
Float,money
System.Single,System.Decimal
float
bit
System.Boolean
bool
image
System.Byte[]
Byte[]
在VS2008及以上版本中ReaderType类的实现代码如下:
在VS2005(含2008及以上版本)中ReaderType类的实现代码如下:
另外,可添加复制构造函数,如下:
publicReaderType(ReaderTypert)
{
this.rdType=rt.rdType;
this.rdTypeName=rt.rdTypeName;
this.CanLendQty=rt.CanLendQty;
this.CanLendDay=rt.CanLendDay;
this.CanContinueTimes=rt.CanContinueTimes;
this.PunishRate=rt.PunishRate;
this.DateValid=rt.DateValid;
}
2.Reader类(略)
3.Book类(略)
4.Borrow类(略)
6.6DAL层类设计
除SqlHelper外,每个数据库表对应一个DAL层类,主要实现该表的插删改查操作。
1.SqlHelper类
在BookManage.DAL项目中添加SqlHelper.cs文件,该类是微软SqlHelper类(参见文件“参考资料03微软的SQLHelper类(含完整中文注释).cs”)的简化版(有源码提供)。
SqlHelper类主要包括的成员函数有:
打开数据库连接、关闭数据库连接、执行SQL语句、执行存储过程等。
表5SqlHelper类(简化版)成员
1#
privatestaticstring_strConnection=@"DataSource=LSH-SL400\SQLSERVER;InitialCatalog=Library;UserID=BookManage;Password=123;";
<成员属性>-连接SQLServer的字符串(常量)。
--LSH-SL400\SQLSERVER为服务器名称,可在SQLServerManagementStudio的“已注册服务器”中查看(菜单:
“视图”->“已注册服务器”)。
--需修改为自己的连接。
可手动修改,或可采用MSVS的服务器资源管理器得到(菜单:
“视图”->“服务器资源管理器”,“数据连接”->“添加连接”)。
2#
privatestaticSqlConnectionconn=newSqlConnection(_strConnection);
<成员属性>-S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C#Windows程序设计 Windows 程序设计 任务 指导 手册