C#高级开发与Ado.net实训教程


全国信息化计算机应用技术资格认证推荐教材 软件工程师实训系列教程 C#高级开发与 Ado.net 实训教程 师创教育 编著 书名:C#高级开发与 Ado.net 实训教程 版本号:V3.0 声 明: 1. 本书为内部资料,仅供师创教育授权单位与合作院校使用; 2. 本书所有权归师创教育所有,未经许可,任何单位与个人不得使用本书内容; 3. 发现本书印刷质量问题,请及时与师创教育联系,公司负责免费调换。 C#高级开发与 Ado.net 实训教程 前言 本教程是师创教育“软件工程师实训”系列教程之一,要求学生通过对本实训教程的学 习,能够熟练掌握 C#语言基础应用以及 WinForm 窗体应用程序开发、ADO.Net 数据库访问 与操作和三层架构等高级技术运用;通过本课程学习认识 C#面向对象编程语言的基本原理, 掌握 C/S 模式下窗体应用程序开发,同时对面向对象开发思想有了更加深入的理解。 本书主要内容分为三个阶段 C# 面 向 对 象 部 分 、 WinForm 应 用 开 发 部 分 和 WinFrom+ADO.Net 应用开发综合项目部分,其中 C#面向对象部分主要是关于 C#语言的基 础语法和面向对象编程的阶段项目开发训练,主要训练了条件结构和运算符、循环结构、数 组和排序、封装、继承、多态、集合、接口和 C#中的 IO 流文件读写等的应用。 WinForm 应用开发部分主要是基于 C#面向对象开发 WinForm 窗体应用程序的综合项目 开发训练,主要训练了异常处理与单元测试、序列化和反射、MDI 窗体 (添加通用对话框)、 C#中的 IO 流文件读写、进程和线程以及 C#面向对象编程技术的综合运用。 WinFrom+ADO.Net 应用开发综合项目主要是在三层架构下运用 C#语言的基础语法、面 向对象编程、WinForm 窗体应用程序开发和 ADO.Net 数据库访问和操作等知识的综合应用, 主要训练了快速搭建三层架构、ADO.Net 连接数据库和查询、ADO.Net 操作数据库(增删改)、 数据显示控件 DataGridView 和数据库交互等高级开发技术的综合运用。 本书章节主要内容如下: C#面向对象部分: 1. 个人所得税计算系统 2. 简易数学计算器系统 3. 银行 ATM 储蓄系统 WinForm 应用开发部分: 1. 银行储蓄综合业务平台 2. 家庭财务管理系统 3. 苹果机游戏系统 WinFrom+ADO.Net 应用开发综合项目部分: 1. 学籍管理系统 2. 人力资源管理系统 C#高级开发与 Ado.net 实训教程 C#语言课程体系结构图 C#高级开发与 Ado.net 实训教程 目录 第一阶段:C#面向对象 .................................................................................................................. 1 个人所得税计算系统 ................................................................................................................... 2 1.项目背景 ................................................................................................................................ 3 2.需求分析 ................................................................................................................................ 4 3.详细设计 ................................................................................................................................ 4 简易数学计算器系统 ................................................................................................................... 9 1.项目背景 .............................................................................................................................. 10 2.需求分析 .............................................................................................................................. 10 3.详细设计 .............................................................................................................................. 10 银行 ATM 储蓄系统 .................................................................................................................. 15 1.项目背景 .............................................................................................................................. 16 2.需求分析 .............................................................................................................................. 16 3.详细设计 .............................................................................................................................. 17 第二阶段:WinForm 应用开发 .................................................................................................... 22 银行储蓄综合业务平台 ............................................................................................................. 23 1.项目背景 .............................................................................................................................. 24 2.需求分析 .............................................................................................................................. 24 3.详细设计 .............................................................................................................................. 25 家庭财务管理系统 ..................................................................................................................... 41 1.项目背景 .............................................................................................................................. 42 2.需求分析 .............................................................................................................................. 43 3.详细设计 .............................................................................................................................. 44 苹果机游戏系统 ......................................................................................................................... 57 1.项目背景 .............................................................................................................................. 58 2.需求分析 .............................................................................................................................. 59 3.详细设计 .............................................................................................................................. 62 第三阶段:WinFrom+ADO.Net 应用开发 ................................................................................... 68 学籍管理系统 ............................................................................................................................. 69 1.项目背景 .............................................................................................................................. 70 2.需求分析 .............................................................................................................................. 70 3.详细设计 .............................................................................................................................. 71 人力资源管理系统 ..................................................................................................................... 83 1.项目背景 .............................................................................................................................. 84 2.需求分析 .............................................................................................................................. 85 3.详细设计 .............................................................................................................................. 86 C#高级开发与 Ado.net 实训教程 1 C#高级开发与 Ado.net 实训教程 第一阶段:C#面向对象 本阶段项目 1. 个人所得税计算系统 2. 简易数学计算器系统 3. 银行 ATM 储蓄系统 2 C#高级开发与 Ado.net 实训教程 个人所得税计算系统 项目编号:CS-C# -001 项目概述 个人所得税计算系统简介 项目名称 个人所得税计算系统 工作量 2 课时理论,4 课时上机 代码量 500 行 项目难度 ★★☆☆☆ 课时安排 共 6 课时 讲授 2,实验 4 项目简介 系统功能点如下: 1.系统菜单 2.税款计算 3.输入金额验证 4.菜单选择 5.系统退出 项目目的 本案例要求实现个人所得税的计算功能。通过本案例学习面向对象 的主要特征和基本概念,包括类、对象、继承、接口、封装、抽象、重 写、多态、访问修饰符与其它关键字等。 涉及主要技术 编程基础 类、对象 继承、接口、多态 值、引用类型 对象数组 数据库 无 编程环境 Visual Studio 2008 项目特点 C#编程基础与面向对象编程思想训练 技术重点 类、对象、继承与多态、对象数组 技术难点 打印接口运用 3 C#高级开发与 Ado.net 实训教程 1.项目背景 个人所得税计算器,英文 Individual Income Tax Calculator,简写 IITC。 依法纳税是每个公民应尽的义务,我国于 1980 年 9 月颁布施行个人所 得税法,开始征收个人所得税,同时确定了个税 800 元的起征点。30 多年 来,我国职工工资收入和居民消费价格指数都有较大提高,加之近年教育、 住房、医疗等改革的深入,消费支出明显增长,早已超过了个人所得税法 规定的每月 800 元的减除费用标准。2007 年 12 月 29 日第十届全国人民代 表大会常务委员会第三十一次会议将个人所得税起征点进行了调整,自 20 08 年 3 月 1 日起由 800 元提高到 2000 元。 每个企事业单位的财务部门每个月都要为员工发放工资和缴纳个人所得税,员工工资从 几百到几千、几万甚至更多,计算个人所得税是个枯燥、麻烦又累人的工作。 本项目就是利用 C#语言,要开发一个简单、快速的个人所得税计算器,既能快速的计 算应缴税金,又能适应个税税率及起征点的调整。 下面,我们来了解一下个人所得税的具体需求。 个人所得税也有适用范围,本项目开发的个人所得税计算器只适用于工资和薪金所得, 不适用其他所得。个人所得税的计算使用的是超额累进税率计算方法,简单的理解就是,多 出的部分,使用下一档税率。 个人所得税(工资、薪金所得),每月收入额减除 2000 元后的余额,按下表税率进行 缴税。 级数 全月应纳税所得额 税率(%) 速算扣除数(元) 1 不超过 500 元的 5 0 2 超过 500 元至 2000 元的部分 10 25 3 超过 2000 元至 5000 元的部分 15 125 4 超过 5000 元至 20000 元的部分 20 375 5 超过 20000 元至 40000 元的部分 25 1375 6 超过 40000 元至 60000 元的部分 30 3375 7 超过 60000 元至 80000 元的部分 35 6375 8 超过 80000 元至 100000 元的部分 40 10375 9 超过 100000 元的部分 45 15375 计算公式如下: 缴税金额 = 全月应纳税所得额 * 税率 - 速算扣除数 4 C#高级开发与 Ado.net 实训教程 2.需求分析 主要功能:输入收入金额,计算出应缴纳的税款和税后收入。 系统提供选择菜单,包括计算个人所得税和退出。  税款计算: 当用户选择所得税计算时,系统提示“请输入实际工资收入:”,金额输入后,系统根据 需求描述的公式进行计算,并将计算结果返回。 数据的合法性检查:输入金额时,检查数据的合法性,必须小于 1000000,也就是说必 须是正常工资金额,并且必须是至多包含一个小数点的金额格式。验证输入数据不正确时, 应根据情况给出提示信息。  退出: 当用户选择退出时,系统提示“是否退出?(Y/N)”,如果用户选择是“y”或“Y”, 则提示“谢谢使用!”并退出系统;如果用户选择的不是“y”或“Y”,则继续回到菜单项, 待用户选择。 3.详细设计 3.1 类型设计 3.1.1 创建打印接口 系统中税款计算结果输出、验证错误信息输出和菜单输出都要用到打印的功能,故将其 抽象成接口,编写此接口,如下图所示: 打印接口类图 5 C#高级开发与 Ado.net 实训教程 3.1.2 描述税款计算 税率主要包括全月应纳税所得额、税率和速算扣除数。此类如下图所示: 税款类图 税率计算首先将国家规定的税率表以对象数组形式进行初始化,然后根据需求中的计算 公式得出税额。最后将计算结果输出,实现了 IPrint 接口。如下图所示: 计算器类图 6 C#高级开发与 Ado.net 实训教程 3.1.3 描述验证 根据需求知,对数据的验证包括三部分:录入金额的格式验证、录入金额的值范围验证 和菜单选择项录入的合法性验证。故抽象出验证父类,父类中包括 Check 验证方法,这三 部分验证继承此父类,并分别根据情况实现了父类的验证方法。由于验证出错时要进行错误 提示,故需要实现 IPrint 接口。如下图所示: 验证类图 3.1.4 描述菜单 菜单包括两项功能:个人所得税计算功能和退出功能。 菜单需要进行输出供用户选择,因此实现了 IPrint 接口。如下图所示: 菜单类图 7 C#高级开发与 Ado.net 实训教程 3.2 界面设计 3.2.1 菜单界面 系统运行后菜单显示 3.2.2 税率计算界面 输入正确收入金额后,显示结果 3.2.3 输入金额验证界面 输入金额不正确时显示 输入金额大于最大工资金额时显示 8 C#高级开发与 Ado.net 实训教程 3.2.4 菜单选择界面 菜单选择项输入错误时显示 退出系统时显示 9 C#高级开发与 Ado.net 实训教程 简易数学计算器系统 项目编号:CS-C# -002 项目概述 简易数学计算器系统简介 项目名称 简易数学计算器系统 工作量 2 课时理论,4 课时上机 代码量 500 行 项目难度 ★★☆☆☆ 课时安排 共 6 课时 讲授 2,实验 4 项目简介 系统功能点如下: 1.系统菜单 2.选择计算 3.输入验证 4.系统退出 项目目的 本案例要求用面向对象的思想实现简易数学计算器的加减乘除功 能。通过本案例学习面向对象的主要特征和基本概念,包括类、对象、 继承、接口、封装、抽象、重写、多态、访问修饰符与其它关键字等。 涉及主要技术 编程基础 类、对象 继承、接口、多态 值、引用类型 流程控制语句 数据库 无 编程环境 Visual Studio 2008 项目特点 C#编程基础与面向对象编程思想训练 技术重点 类、对象、继承与多态、对象数组 技术难点 打印接口运用 10 C#高级开发与 Ado.net 实训教程 1.项目背景 用面向对象语言实现一个简易数学计算器的控制台程序,要求输入两个数和运算符号, 得到结果。 2.需求分析 主要功能:选择要计算的计算方式,输入参与运算的两个值,得出计算结果。 系统提供选择菜单,包括运算方式选择(包括:加法、减法、乘法、除法)和退出。  计算: 当用户选择某运算方式时,系统提示“请输入第一个数:”,用户输入后,系统验证输入 的是否是合法数值类型,当输入不正确时,提示“您输入的数值格式不正确,请重新输入!”。 输入完成后,系统提示“请输入第二个数:”,同样验证输入的数值类型的合法性。另外,当 用户选择的运算方式是“除法”时,要判断输入的第二个数是否是零,如果输入是零,则提 示“您输入的除数为零,请重新输入!”。验证通过后,系统根据用户选择的运算方式进行计 算,并将计算结果显示出来。  退出: 当用户选择退出时,系统提示“是否退出?(Y/N)”,如果用户选择是“y”或“Y”, 则提示“谢谢使用!”并退出系统;如果用户选择的不是“y”或“Y”,则继续回到菜单项, 待用户选择。 3.详细设计 3.1 类型设计 3.1.1 创建打印接口 系统中计算结果输出、验证错误信息输出和菜单输出都要用到打印的功能,故将其抽象 成接口,编写此接口,如下图所示: 打印接口类图 11 C#高级开发与 Ado.net 实训教程 3.1.2 描述运算 运算方式包括:加法运算、减法运算、乘法运算和除法运算。 具体计算是根据数学中的计算公式得出。最后将计算结果输出,实现了 IPrint 接口。如 下图所示: 计算类图 其中用到了运算方式枚举: 运算方式类图 12 C#高级开发与 Ado.net 实训教程 3.1.3 描述验证 根据需求知,对数据的验证包括三部分:录入数值的格式验证、录入数值是否为零验证 和菜单选择项录入的合法性验证。故抽象出验证父类,父类中包括 Check 验证方法,这三 部分验证继承此父类,并分别根据情况实现了父类的验证方法。由于验证出错时要进行错误 提示,故需要实现 IPrint 接口。如下图所示: 验证类图 3.1.4 描述菜单 菜单包括几项功能:加法运算功能、减法运算功能、乘法运算功能、除法运算功能和退 出功能。 菜单需要进行输出供用户选择,因此实现了 IPrint 接口。如下图所示: 菜单类图 13 C#高级开发与 Ado.net 实训教程 3.2 界面设计 3.2.1 菜单界面 系统运行后菜单显示 3.2.2 加法运算界面 选择加法运算后,显示计算结果 3.2.3 减法运算界面 选择减法运算后,显示计算结果 3.2.4 乘法运算界面 选择乘法运算后,显示计算结果 14 C#高级开发与 Ado.net 实训教程 3.2.5 除法运算界面 选择除法运算后,显示计算结果 3.2.6 输入验证界面 输入数值正确性验证 输入除数为 0 验证 3.2.7 菜单选择界面 菜单选择项输入错误时显示 3.2.8 系统退出界面 退出系统时显示 15 C#高级开发与 Ado.net 实训教程 银行 ATM 储蓄系统 项目编号:CS-C# -003 项目概述 银行 ATM 储蓄系统简介 项目名称 银行 ATM 储蓄系统 工作量 2 课时理论,6 课时上机 代码量 800 行 项目难度 ★★★★☆ 课时安排 共 8 课时 讲授 2,实验 6 项目简介 系统功能点如下: 1.系统菜单 2.储蓄卡注册功能 3.储蓄卡登录功能 4.取款功能 5.存款功能 6.转账功能 7.查询余额功能 8.查询交易记录功能 9.注销储蓄卡功能 项目目的 本案例要求用面向对象的思想实现银行 ATM 储蓄系统的基本业务 功能。通过本案例学习面向对象的主要特征和基本概念,包括数组、集 合、类、对象、封装、访问修饰符与其它关键字等。 涉及主要技术 编程基础 类、对象 值、引用类型 流程控制语句 集合与数组 数据库 无 编程环境 Visual Studio 2008 项目特点 C#编程基础与面向对象编程思想训练 技术重点 类、对象、数组、对象集合 技术难点 集合排序 16 C#高级开发与 Ado.net 实训教程 1.项目背景 用面向对象语言模拟一个银行 ATM 储蓄系统的控制台程序,要求实现注册、登录、取 款、存款、转账、查询和注销等基本业务。 2.需求分析 主要功能:注册、登录、取款、存款、转账、查询和注销。  取款功能: 用户按照系统输入要求输入取款金额即可取出相应金额的现金。  查询余额功能: 用户可以查看账户所剩现金余额。  查询交易记录功能: 用户可以查看账户所有存款、取款以及转账交易记录。  修改密码功能: 如果用户想要修改当前密码,通过系统可以设置新密码。  转账功能: 用户可以通过该功能将自己账户上的金额转到其他账户。 首先,ATM 要求用户输入密码,接下来 ATM 把从银行卡上读到的信息以及用户输入的密 码传给 ATM 自动取款机系统,系统通过与数据库中的信息进行核对,如果密码正确 ATM 就要求用户选择事务类型(取款、查询等),直至用户选择退出应用服务,询问用户是否退 出银行卡结束服务,如果用户选择结束,则退出银行卡,系统重回登陆界面。  存款功能: 用户按照系统输入要求输入存款金额即可累加出相应金额的现金。 17 C#高级开发与 Ado.net 实训教程 3.详细设计 3.1 类型设计 3.1.1 系统类图如下: 3.2 界面设计 3.2.1 菜单界面 系统运行后菜单显示 18 C#高级开发与 Ado.net 实训教程 3.2.2 储蓄卡注册功能界面 注册储蓄卡成功后,显示功能菜单 3.2.3 储蓄卡登录功能界面 先注册后登录,显示运行结果 19 C#高级开发与 Ado.net 实训教程 3.2.4 存款功能界面 存款操作成功后,显示结果 3.2.5 取款功能界面 取款操作失败后,显示结果 取款操作成功后,显示结果 20 C#高级开发与 Ado.net 实训教程 3.2.6 查询余额功能界面 查询余额操作显示结果 3.2.7 查询交易记录功能界面 查询交易记录操作显示结果 21 C#高级开发与 Ado.net 实训教程 3.2.8 转账功能界面 转账操作成功后显示结果 3.2.9 注销储蓄卡功能界面 注销储蓄卡后,将无法登录进行其余操作显示结果 22 C#高级开发与 Ado.net 实训教程 第二阶段:WinForm 应用开发 本阶段项目 1. 银行储蓄综合业务平台 2. 家庭财务管理系统 3. 苹果机游戏系统 23 C#高级开发与 Ado.net 实训教程 银行储蓄综合业务平台 项目编号:CS-C# -004 项目概述 银行储蓄综合业务平台简介 项目名称 银行储蓄综合业务平台 工作量 2 课时理论,6 课时上机 代码量 800 行 项目难度 ★★★★☆ 课时安排 共 8 课时 讲授 2,实验 6 项目简介 系统功能点如下: 1.创建文件操作类 FileIO 类 2.创建登录窗体 3.创建添加员工窗体 4.创建修改密码窗体 5.创建管理员工窗体 6.创建查看日志窗体 7.创建系统主窗体 8.创建开户窗体 9.创建存款窗体 10.创建取款窗体 11.创建查询账户余额窗体 12.创建查看全部账户窗体 13.创建冻结解冻账户窗体 14.创建修改账户密码窗体 15.创建销户窗体 项目目的 本案例要求实现储蓄综合业务平台的员工管理和程序主界面的设 计,即实现登录窗体、添加员工窗体、管理员工窗体、修改密码窗体、 查看日志窗体和主系统窗体的界面和功能,搭建部分主程序窗体的界 面;储蓄综合业务平台的储蓄业务流程,即实现开户、销户、存款、取 款、冻结账户、解冻账户、查询账户余额、修改账户密码和查看全部账 户功能。通过本案例,掌握复杂流程的组织过程及控制过程,通过本案 例,掌握文件的读写,WinForm 基本控件的运用,以及 MDI 界面的应 用。 涉及主要技术 面向对象编程 IO 文件流操作 事件处理 流程控制 WinForm 基本控件 MDI 界面 数据库 无 24 C#高级开发与 Ado.net 实训教程 编程环境 Visual Studio 2008 项目特点 熟练掌握 WinForm 开发技巧与常用控件的使用 技术重点 IO 文件流操作、WinForm 基本控件、MDI 界面 技术难点 IO 文件流操作 1.项目背景 储蓄业务越来越走进人们的生活。代发工资、代缴水电费、代缴电话费等业务极大的方 便了人们的日常生活。越来越多的人们也开始使用银行业务、储蓄业务,同时银行储蓄储户 越来越多。银行还在使用手工记账,由于手工记账工作效率非常低,通常有储户等待,排成 长龙的现象,同时这给工作人员增加了非常大的负担和额外的工作负荷,也给银行的发展带 来了严重的制约和压力,银行储蓄信息化已经到了不解决不行的地步。 储蓄综合业务平台就是在此背景下开发出来,本系统用现代化的电子信息技术,实现和 发展了储蓄业务。它不仅代替了存款、取款等手工记账的操作,还实现了数据自动计算、智 能检查、高效数据检索和安全数据存储等功能。 本案例做一个储蓄综合业务平台系统。储蓄综合业务平台是以银行柜台员工的日常工作 为出发点,为银行储蓄柜台开发的一套综合业务平台,它包括储蓄柜台最常使用的开户、销 户、存款、取款、冻结解冻、查询、日志管理以及员工管理等功能。 2.需求分析 系统主要功能描述: 1. 登录与退出:为了系统的安全,在进入系统前会要求用户输入登录用户名和密码, 系统验证通过后方可进行下一步操作。其中特殊的是,在系统中未存在登录用户时,系统会 提示用户手动先添加一个用户,并且规定这个用户为系统的管理员。在用户使用完成后,需 要退出系统。 2. 添加员工:员工要想在系统中进行功能操作,首先需要将各自的登录用户名和密码 添加到系统中。员工信息主要包括:员工登录名和员工密码。系统在添加员工时,只需要添 加员工登录名,密码默认是“888888”。 3. 修改密码:由于添加员工的时候初始化密码都是一样的,考虑到系统的安全性,员 工在成功登录后,可以修改自己的密码。 4. 管理员工:管理员可以通过管理员工界面对员工进行查看、添加员工、重置员工登 录密码、删除员工。删除员工时需注意,由于默认系统添加的第一个员工为管理员,则此员 工不能被删除。 5. 日志管理:员工在系统中的所有操作,包括登录、退出、添加员工、修改密码、删 除员工等都将记录成日志形式保存下来。在系统出现问题的时候,管理员可以查看到所有的 日志信息。 6. 主界面:本系统使用 MDI 窗体来完成相应功能的衔接,而由于管理员和普通员工登 录系统后管理的功能不一样,因此在登录后对应不同的用户显示不同的菜单,实现简单的权 25 C#高级开发与 Ado.net 实训教程 限管理。 7. 开户:储户来储蓄所办理业务前,要先申请账户,提供户主姓名、密码和预存款金 额,此时系统自动为储户生成账号,以后储户再次办理业务时,根据此账号和密码就可以完 成。 8. 存款:储户来储蓄所存钱时,只需要提供账号和存款金额。系统验证通过后,将储 户账户余额加上存款金额,最后显示储户存款的当前余额信息。 9. 取款:储户来储蓄所取钱时,要提供账号、密码和取款金额。系统验证账户的合法 性,然后将账户余额减去取款金额,最后显示储户取款后的账户余额信息。 10. 查询账户余额:查询账户余额时,只需要提供账号,系统验证账号是否存在,然后 显示此账号信息,包括户主姓名、账户余额和账户状态信息。 11. 查看全部账户信息:系统以列表形式显示当前系统中所有账户信息,包括账号、户 主姓名、账户余额、账户状态信息。 12. 冻结账户:此功能是将某账户置于冻结状态。冻结后的账户不能进行如存款、取款、 查询余额、销户等操作。 13. 解冻账户:此功能与冻结账户功能相反,将某账户原冻结状态改变为正常状态。解 冻后的账户将具有被冻结前的所有功能。 14. 销户:储户不需要在储蓄所办理业务的时候,要进行销户。提供账号和密码,系统 进行账户有效性验证,验证通过后,若账户内仍有余额,则提醒储户将此账户余额取出,否 则系统将余额清零,并将此账户状态置为销户状态。 15. 修改账户密码:储户可以随时修改自己的密码。在修改前,系统验证账户的合法性, 然后提示储户设置两次密码,并验证两次密码输入是否正确。 3.详细设计 3.1 类型设计 3.1.1 创建文件操作类 FileIO 类 功能:检测指定目录文件是否存在、读取文件内容和写入数据到文件。 类图如下所示: FileIO 类图 26 C#高级开发与 Ado.net 实训教程 3.2 界面设计 3.2.1 登录窗体即 frmLogin 窗体 功能:验证登录用户名和密码是否合法,验证通过用户方能进入系统主界面。验证不通 过,则提示用户重新输入。 窗体界面如下: 登录界面 登录失败界面 27 C#高级开发与 Ado.net 实训教程 3.2.2 系统主窗体即 frmMain 窗体 功能:在此窗体状态栏中显示当前登录用户名,并实现不同权限用户登录后显示不同的 菜单项。 28 C#高级开发与 Ado.net 实训教程 3.2.3 添加员工窗体即 frmAddUser 窗体 功能:要求输入员工登录名,默认密码为“888888”,点击“添加”按钮后,将此员工 添加到 user.txt(员工文件)中。实现当没有输入员工登录名时点击“添加”按钮,将使用 ErrorProvider 控件进行提示“员工登录名不能为空!”。如果输入的员工登录名在系统中已 存在,则提示“输入的员工登录名已存在,请重新输入!”。 界面如下所示: 添加员工界面 3.2.4 修改密码窗体即 frmChangePwd 窗体 功能:修改当前登录用户的密码。 此功能涉及的验证: 1) 修改密码前验证旧密码输入是否正确 2) 旧密码、新密码是否为空 3) 新密码和重复密码是否一致 界面如下所示: 修改密码界面 29 C#高级开发与 Ado.net 实训教程 3.2.5 管理员工窗体即 frmManageUser 窗体 功能:查看当前系统中所有员工、重置某一选中员工的密码、删除某一选中的员工。 删除员工时要注意,是管理员的员工是不能被删除的。 界面如下所示: 员工管理界面 3.2.6 查看日志窗体即 frmLogView 窗体 功能:查看系统日志。日志包括:操作员、操作时间、操作内容信息。 为登录、添加员工、修改密码、删除员工、退出系统添加日志记录功能,日志保存在 “log.txt”文件中。 界面如下所示: 查看日志窗体 30 C#高级开发与 Ado.net 实训教程 3.2.8 开户窗体即 frmCreateAccount 窗体: 开户流程描述:首先系统为新储户生成账号,提示输入户主姓名、密码和开户金额,在 输入这些信息后进行验证,如果不合法则提示用户重新输入,如果验证通过,则将账户信息 保存到账户文件 bank.txt 中,并提示开户成功信息,最后将添加日志信息到日志文件中。 要求:  账号生成规则:如果是第一个账户,则使用系统初始化账号(10000),如果不是 第一个账户,则根据最大账号加一获得新账号。  账号密码为 6 位数字。  输入的开户金额必须是数字并且不小于 1。  开户的账户状态默认为“正常”。  账户信息保存到账户文件时的格式:账号|户主姓名|密码|开户金额|账户状态。 窗体界面如下: 开户界面 开户成功界面 31 C#高级开发与 Ado.net 实训教程 3.2.9 存款窗体即 frmDeposit 窗体 存款流程是:营业员输入储户账号,系统将验证该账户是否存在。如果存在,则显示账 户信息。如果账户状态是 “销户”或“冻结”,则存款金额和存款按钮不可用。如果是“正 常”状态,则将存款金额和存款按钮置为可用状态,提示输入存款金额,将存款金额追加到 该账户余额中。最后显示储户账户存款后的余额信息,并添加存款日志。 要求:  输入的账号必须是数字,并且不能超过 5 位。  显示的账户余额保留小数点后 2 位  存款金额必须是数字并且大于 0。 界面如下所示: 存款界面 存款成功界面 32 C#高级开发与 Ado.net 实训教程 3.2.10 取款窗体即 frmTakeOutMoney 窗体 取款流程是:营业员输入储户账号,系统将验证该账户是否存在。如果存在,则显示账 户信息。如果账户状态是 “销户”或“冻结”,则取款金额和取款按钮不可用。如果账户 状态是“正常”状态,则将取款金额和取款按钮置为可用状态,提示输入取款金额。如果输 入的取款金额大于账户余额时,提示“取款金额不能大于账户余额”。当按下取款按钮时, 提示储户输入密码,并验证密码是否正确。验证通过后将该账户余额减去取款金额,并保存 到账户文件中。最后显示储户取款后的账户余额等信息,并添加取款日志。 要求:  输入的账号必须是数字,并且不能超过 5 位。  显示的账户余额保留小数点后 2 位  输入的密码以“*”显示,并且不能超过 6 位。  取款金额必须是数字并且大于 0。  取款金额必须小于账户余额。 界面如下所示: 取款界面 33 C#高级开发与 Ado.net 实训教程 取款操作界面 取款成功界面 3.2.11 查询账户余额窗体即 frmQueryAccount 窗体 查询账户余额流程:营业员输入储户账号,系统将验证该账户是否存在。如果存在,则 显示账户基本信息,包括:户主姓名、账户余额和账户状态。 要求:  输入的账号必须是数字,并且不能超过 5 位。  显示的账户余额保留小数点后 2 位 34 C#高级开发与 Ado.net 实训教程 界面如下所示: 余额查询界面 3.2.12 查看全部账户窗体即 frmQueryAllAccount 窗体 为了安全考虑,查看全部账户时需要将查询者的信息记录到日志中。以列表形式显示的 账户信息包括:账号、户主姓名、账户余额和账户状态。由于密码属于储户私人所有,因此 在列表中不能显示。 界面如下所示: 账户信息查询界面 35 C#高级开发与 Ado.net 实训教程 3.2.13 冻结解冻账户窗体即 frmFreezeAccount 窗体 冻结账户流程是:营业员输入储户账号,系统验证账号是否存在。如果存在,则显示账 户基本信息。如果账户状态是 “正常”,则冻结账户按钮启用。点击冻结账户按钮后,系 统将原账户“正常”状态改为“冻结”状态,并保存到账户文件中。最后添加操作日志保存 到日志文件中。 解冻账户流程是:营业员输入储户账号,系统验证账号是否存在。如果存在,则显示账 户基本信息。如果账户状态是 “冻结”,则解冻账户按钮启用。点击解冻账户按钮后,系 统将原账户“冻结”状态改为“正常”状态,并保存到账户文件中。最后添加操作日志保存 到日志文件中。 考虑到冻结账户和解冻账户是互逆过程,可以在判断状态的时候,如果为“冻结”状态, 则执行解冻账户功能;如果为“正常”状态,则执行冻结账户功能。如果当前账户状态为“销 户”状态,则冻结账户按钮不可用。 要求:  输入的账号必须是数字,并且不能超过 5 位。  显示的账户余额保留小数点后 2 位 界面如下所示: 冻结账户界面 36 C#高级开发与 Ado.net 实训教程 账户冻结成功界面 解冻账户界面 账户解冻成功界面 37 C#高级开发与 Ado.net 实训教程 3.2.14 修改账户密码窗体即 frmChangeAccountPassword 窗体 修改账户密码流程:营业员输入储户账号,系统验证账号是否存在。如果存在,则显示 账户基本信息,包括储户姓名和账户状态。如果账户状态是“正常”状态,则提示输入储户 原始密码、新密码和重复新密码,经验证通过后,将修改后的新密码保存到账户信息文件中。 最后将操作日志写入日志文件中。 要求:  输入的账号必须是数字,并且不能超过 5 位。  显示的账户余额保留小数点后 2 位  输入的密码以暗码显示。  密码为 6 为数字  输入新密码进行二次验证。 界面如下所示: 账户密码修改界面 38 C#高级开发与 Ado.net 实训教程 密码修改成功界面 3.2.15 销户窗体即 frmCloseAccount 窗体 销户流程是:营业员输入待销户储户账号,系统验证账号是否存在。如果存在,则显示 账户基本信息,包括储户姓名、账户余额和账户状态。如果账户状态为“销户”状态或“冻 结”状态,则销户按钮为不可用状态。如果是“正常”状态,则销户按钮可用。点击销户按 钮后,需要验证账户密码是否正确,验证通过后,提示储户将余额取出,待进行取款操作后 再做销户,系统将账户余额归零,并将此账户状态修改为“销户”状态,保存到账户信息文 件中。最后将操作日志写入日志文件中。 要求:  输入的账号必须是数字,并且不能超过 5 位。  显示的账户余额保留小数点后 2 位  输入的密码以暗码显示。  密码为 6 为数字  输入新密码进行二次验证。 39 C#高级开发与 Ado.net 实训教程 界面如下所示: 账户销户界面 账户销户操作界面 账户销户后,余额取出操作界面 40 C#高级开发与 Ado.net 实训教程 账户销户成功界面 41 C#高级开发与 Ado.net 实训教程 家庭财务管理系统 项目编号:CS-C# -005 项目概述 家庭财务管理系统简介 项目名称 家庭财务管理系统 工作量 2 课时理论,6 课时上机 代码量 800 行 项目难度 ★★★★☆ 课时安排 共 8 课时 讲授 2,实验 6 项目简介 系统功能点如下: 1.创建文件操作类 FileIO 类 2.创建登录窗体 3.创建添加用户窗体 4.创建修改密码窗体 5.创建用户管理窗体 6.创建系统主窗体 7.初始化收支大类和收支小类 8.创建新增收支大类窗体 9.创建管理收支大类窗体 10.创建更新收支大类窗体 11.创建新增收支小类窗体 12.创建管理收支小类窗体 13.创建更新收支小类窗体 14.创建新增收支记录窗体 15.创建管理收支记录窗体 16 创建更新收支记录窗体 17.创建收支统计窗体 项目目的 本案例要求实现家庭财务管理系统的用户管理和程序主窗体的设 计,即实现登录窗体、添加用户窗体、管理用户窗体、修改密码窗体和 主系统窗体的界面和功能,搭建部分主程序窗体的界面,收支大类管理、 收支小类管理、收支记录管理和收支统计功能;通过本案例,掌握复杂 流程的组织过程及控制过程,掌握文件的读写,WinForm 基本控件的运 用,以及 MDI 界面的应用。 涉及主要技术 面向对象编程 IO 文件流操作 事件处理 流程控制 WinForm 基本控件 MDI 界面 数据库 无 42 C#高级开发与 Ado.net 实训教程 编程环境 Visual Studio 2008 项目特点 熟练掌握 WinForm 开发技巧与常用控件的使用 技术重点 IO 文件流操作、WinForm 基本控件、MDI 界面 技术难点 IO 文件流操作 1.项目背景 二十世纪七八十年代出生的年轻朋友,虽然“生在新中国,长在红旗下”,也赶上了新 中国发展最快的时期,但实际上还是“过渡”的一代人,很多人都还有着上一辈人的观念, 认为理财不是一件特别光彩的事,不正大光明;或者就算在理财也不爱跟周围的亲戚朋友说 起,总是在偷偷摸摸地做;或者认为老算计钱挺没劲的,等等。不可否认,很多朋友有诸如 此类的想法,其实大可不必。首先要明确,理财就是一件正大光明的事情,正视理财这件事, 它与生活质量息息相关;要善于跟周围朋友共同探讨理财这件事,共同学习,共同提高理财 技巧,合理合法的为自己、为家庭积累财富。自己劳动所得,合理理财有何不当?只有不正 当的收入才害怕与人提起。在我们国家强调“公平、公正”的社会环境中,正确的理财观念 代表着一种正面的社会风气。 现在年轻人中流行着一种享乐的消费观念,他们每月的收入全部用来消费和享受,每到 月底银行账户里基本处于“零状态”,所以就出现了所谓的“月光族”(每月工资都花光) 这个群体。“月光族”具有的基本特征是:每月挣多少,就花多少;往往穿的是名牌,用的 是名牌,吃饭下馆子,可是银行账户总处于亏空状态;他们偏好开源,讨厌节流,喜爱用花 掉的钱证明自己的价值,他们认为花出去的才是钱;他们还常常认为会花钱的人才会挣钱, 所以每个月辛苦挣来的“银子”,到了月末总是会花得精光。这就是“月光族”的真实写照。 “月光族”表面上看起来十分风光的生活,实际埋藏着巨大的隐患,他们的资金链是处于“断 开”状态下的。没有积蓄,所有的收入都消费了,看似潇洒的生活方式是以牺牲个人风险抵 御能力为代价的。导致的后果是:这些人很有可能因为一次意外(疾病、失业等),而使个 人资金流出现严重问题,以至于无法抵御这些不良影响的作用;更不要指望他们能独立解决 个人面临的成家立业、赡养老人以及抚养子女的问题了。再从心理角度来分析,其实“月光 族”表现出来的是一种不成熟的心态。经过调查,可以发现“月光族”往往跟单身是划等号 的。而已经成家的人,或者已经有男(女)朋友,并且计划要成家的人往往都不是“月光族” 的成员。为什么会这样?实际上道理很简单,你见过结婚后的人花钱大手大脚,每月把账户 里的钱都花光光的家庭么?很少见吧。因为他们需要养家、养孩子,怎么能轻易让自己的家 庭暴露在风险之下呢?压力迫使他们必须有风险意识。而单身的时候,往往“一个人吃饱了 全家不饿”,父母暂时不用赡养,也没有孩子要负担,挣了多少钱,都用于个人消费了。所 以就很难控制自己的消费,慢慢成了“月光族”。学会理财,远离月光族。 家庭财务管理系统定位家庭,针对家庭日常生活的收入和支出进行登记,系统提供多种 查询方式,让家庭成员很容易掌握家庭资金的动向,使得年轻人学会理财,远离月光族。 43 C#高级开发与 Ado.net 实训教程 2.需求分析 系统主要功能描述: 1. 登录与退出:为了系统的安全,在进入系统前会要求用户输入登录用户名和密码, 系统验证通过后方可进行下一步操作。其中特殊的是,在系统中未存在登录用户时,系统会 提示用户先添加一个用户,再以这个用户登录,完成系统中需要的功能。在用户使用完成后, 需要退出系统。 2. 添加用户:用户要想在系统中进行功能操作,首先需要将各自的用户名和密码添加 到系统中。用户信息主要包括:用户名和用户密码。系统在添加用户时,只需要添加用户名, 密码默认是“888888”。 3. 修改密码:由于添加用户的时候初始化密码都是一样的,考虑到系统的安全性,用 户在成功登录后,可以修改自己的密码。 4. 用户管理:成功登录后可以通过用户管理界面对用户进行查看、添加用户、重置用 户登录密码、删除用户。删除用户时需注意,当前登录的用户不能被删除。 5. 主界面:本系统使用 MDI 窗体来完成相应功能的衔接。菜单中主要有用户管理、修 改密码和退出功能,在窗体左下角显示当前登录用户名称。 6. 收支大类管理:当系统首次运行时,应初始化常见收支大类信息,常见的收支大类 包括,收入类型:职业工薪、业余工薪、偶然收入、杂项收入;支出类型:衣服饰品、食品 酒水、居家物业、行车交通、交流通讯、玩乐休闲、学习培训、医疗保健。由于用户可以自 定义收支大类信息,故对收支大类的操作有增、删、改、查的操作。 收支大类信息包括:编号、名称、类型(收入或支出) 7. 收支小类管理:当系统首次运行时,应初始化常见收支小类信息。  收入小类: 职业工薪类:工资、奖金、补助津贴、加班工资; 业余工薪类:兼职工资、业余项目、稿费版税、其他兼职; 偶然收入类:中奖奖金、其他收入; 杂项收入类:利息收入、租赁所得、收回债款。  支出小类: 衣服饰品:服装、鞋帽、饰品、其他饰品; 食品酒水类:食品、副食、烟酒茶、其他餐食; 居家物业类:日常用品、水电煤气、房租费、取暖费、物业管理、居家其他; 行车交通类:公共交通、打车租车、私家车费、长途车费; 交流通讯类:电话费、上网费; 玩乐休闲类:外出就餐、运动健身、歌舞娱乐、花鸟鱼虫、旅游度假; 学习培训类:培训费、会员费、书报音杂; 44 C#高级开发与 Ado.net 实训教程 医疗保健类:住院费、药品费、保健费。 由于用户可以自定义收支小类信息,故对收支小类的操作有增、删、改、查的操作。 收支小类信息包括:编号、名称、所属大类。 8. 收支记录管理 收支记录,用来记录用户每一笔的收入或消费信息。用户对其操作有增、删、改、查。 收支记录信息由:顺序编号、收支类型(收入或支出)、收支大类、收支小类、收支日 期、收支金额、家庭成员、记录人员、记录日期、摘要。 9. 收支记录统计 应用户要求,按时间段统计,要求用户选择起始时间和终止时间,显示统计结果。 3.详细设计 3.1 类型设计 3.1.1 创建文件操作类 FileIO 类 功能:检测指定目录文件是否存在、读取文件内容和写入数据到文件。 类图如下所示: FileIO 类图 3.2 界面设计 3.2.2 登录窗体即 frmLogin 窗体 功能:验证登录用户名和密码是否合法,验证通过用户方能进入系统主界面。验证不通 过,则提示用户重新输入。 45 C#高级开发与 Ado.net 实训教程 界面如下所示: 登录界面 登录失败界面 3.2.3 添加用户窗体即 frmAddUser 窗体 功能:要求输入用户名,默认密码为“888888”,点击“添加”按钮后,将此用户添加 到 user.txt(用户文件)中。实现当没有输入用户名时点击“添加”按钮,将使用 ErrorProv ider 控件进行提示“用户名不能为空!”。如果输入的用户名在系统中已存在,则提示“输 入的用户名已存在,请重新输入!”。 界面如下所示: 添加用户界面 46 C#高级开发与 Ado.net 实训教程 判断用户存在界面 3.2.4 修改密码窗体即 frmChangePwd 窗体 功能:修改当前登录用户的密码。 此功能涉及的验证: 4) 修改密码前验证旧密码输入是否正确 5) 旧密码、新密码是否为空 6) 新密码和重复密码是否一致 界面如下所示: 密码修改界面 47 C#高级开发与 Ado.net 实训教程 3.2.5 用户管理窗体即 frmManageUser 窗体 功能:查看当前系统中所有用户、重置某一选中用户的密码、删除某一选中的用户。 删除用户时要注意,当前登录的用户是不能被删除的。 界面如下所示: 用户管理界面 3.2.6 系统主窗体即 frmMain 窗体 功能:在此窗体状态栏中显示当前登录用户名。 界面如下所示: 系统主界面 48 C#高级开发与 Ado.net 实训教程 3.2.7 初始化收支大类和收支小类 在初始化第一个用户时对收支大类和收支小类信息进行初始化,分别写入“class.txt” 和“item.txt”文件中。 3.2.8 新增收支大类窗体即 frmAddClass 窗体 收支大类信息:编号、名称、类型(收入和支出)。 新增大类信息时,要求用户选择收支类型并输入大类名称。收支大类名称不能为空并且 不能重复。选择收支类型时,选用 RadioButton 控件来实现,默认选中“收入”。 要求:  收支大类编号生成规则:如果是第一个收支大类,则使用默认值(10),如果不是 第一个,则根据最大编号加一获得新编号。  名称不能为空。  名称不能重复。  收支大类信息保存到收支大类文件时的格式:编号 名称 收支类别。 窗体界面如下: 添加收支大类界面 添加收支大类成功界面 49 C#高级开发与 Ado.net 实训教程 3.2.9 管理收支大类窗体即 frmClassManage 窗体 以收支大类列表形式显示在 DataGridView 中,并提供一个工具栏供用户选择相应的功 能,包括:添加、修改、删除和关闭。 当用户选择添加时,将弹出添加收支大类窗体,供用户添加。 当用户在 DataGridView 中选择一行记录,并点击修改时,将弹出修改收支大类窗体, 供用户修改,修改完成后,将刷新 DataGridView 中的数据。 当用户在 DataGridView 中选择一行记录,并点击删除时,将提示“是否真的要删除收 支大类【…】?”,当用户选择“确定”时,将判断这个收支大类是否包含收支小类,如果 包含收支小类,则提示用户“此收支大类包含收支小类,不能被删除!”。如果不包含收支 小类,则直接将其删除,并刷新 DataGridView 中的数据。 要求:  修改收支大类时,名称不能重复  删除收支大类时,进行相应的验证 界面如下所示: 收支大类管理界面 50 C#高级开发与 Ado.net 实训教程 修改收支大类界面 删除收支大类管理 3.2.10 新增收支小类窗体即 frmAddItem 窗体 收支小类信息:编号、名称、所属大类编号。 新增小类信息时,要求用户选择收支类型,然后根据选择的收支类型筛选出收支大类, 输入小类名称后,验证收支小类名称是否重复,验证无误后,将收支小类保存到“item.txt” 文件中。 要求:  收支小类编号生成规则:如果是第一个收支小类,则使用默认值(100),如果不 是第一个,则根据最大编号加一获得新编号。  名称不能为空。  名称不能重复。 51 C#高级开发与 Ado.net 实训教程  收支类型与收支大类进行联动  收支小类信息保存到收支小类文件时的格式:编号 名称 收支大类编号。 界面如下所示: 添加收支小类界面 添加收支小类成功界面 3.2.11 管理收支小类窗体即 frmItemManage 窗体 以收支小类列表形式显示在 DataGridView 中,并提供一个工具栏供用户选择相应的功 能,包括:添加、修改、删除和关闭。 当用户选择添加时,将弹出添加收支小类窗体,供用户添加。 当用户在 DataGridView 中选择一行记录,并点击修改时,将弹出修改收支小类窗体, 供用户修改,修改完成后,将刷新 DataGridView 中的数据。 当用户在 DataGridView 中选择一行记录,并点击删除时,将提示“是否真的要删除收 支小类【…】?”,当用户选择“确定”时,将判断这个收支小类是否包含收支记录,如果 包含收支记录,则提示用户“此收支小类包含收支明细,不能被删除!”。如果不包含收支 明细,则直接将其删除,并刷新 DataGridView 中的数据。 要求:  修改收支小类时,名称不能重复  删除收支小类时,进行相应的验证 52 C#高级开发与 Ado.net 实训教程 界面如下所示: 收支小类管理界面 修改收支小类界面 53 C#高级开发与 Ado.net 实训教程 删除收支小类界面 3.2.12 新增收支记录窗体即 frmAddNote 窗体 收支记录添加功能描述:首先,系统自动生成一个收支记录编号,如果为第一条收支记 录,则编号为预设值“1”;如果不是第一条记录,则获取最后一条收支记录,取出编号并 加一,即为新收支记录编号。然后选择收支类型,收支类型与收支大类进行联动。然后再选 择收支大类,收支大类与收支小类进行联动。再选择收支日期、收支金额、家庭成员和摘要 信息。系统自动生成记录时间和记录人员,最后将此笔收支记录保存到收支记录文件中。 收支记录信息包括:编号、收支类型、收支大类、收支小类、收支日期、收支金额、产 生收支的人员、记录收支的人员、记录时间和摘要信息。 要求:  收支记录编号生成规则:如果是第一个收支记录,则使用默认值(1),如果不是 第一个,则根据最大编号加一获得新编号。  收支金额不能为空。  收支金额为 decimal 类型验证。  收支类型与收支大类进行联动  收支大类与收支小类进行联动  收支记录信息保存到收支记录文件时的格式:编号 收支类型 收支大类编号 收支 小类编号 收支日期 收支金额 产生收支的人员 记录收支的人员 记录时间 摘要 信息 54 C#高级开发与 Ado.net 实训教程 界面如下所示: 添加收支记录 3.2.13 管理收支记录窗体即 frmNoteManage 窗体 以收支记录列表形式显示在 DataGridView 中,并提供一个工具栏供用户选择相应的功 能,包括:添加、修改、删除和关闭。由于收支记录条目较多,因此提供查询功能便于快速 找到需要的收支记录。 查询条件包括:收支类型、收支大类、收支小类、家庭成员、收支金额、收支日期。 当用户选择添加时,将弹出添加收支记录窗体,供用户添加。 当用户在 DataGridView 中选择一行记录,并点击修改时,将弹出修改收支记录窗体, 供用户修改,修改完成后,将刷新 DataGridView 中的数据。 当用户在 DataGridView 中选择一行记录,并点击删除时,将提示“是否真的要删除收 支记录?”,当用户选择“确定”时,将其删除,并刷新 DataGridView 中的数据。 要求:  各个查询条件之间是并且的关系  收支类型与收支大类关联  收支大类与收支小类关联  收支金额验证为 decimal 类型 55 C#高级开发与 Ado.net 实训教程 界面如下所示: 收支记录管理界面 修改收支记录界面 收支记录查询界面 56 C#高级开发与 Ado.net 实训教程 3.2.14 收支统计窗体即 frmNoteStat 窗体 收支记录统计功能是根据起止时间进行查询,按收支类别分别对收支记录中的收支小类 数据进行组合,同一类型数据累加,计算每一收支小类收入或支出所占比重,最后将计算收 入总额、支出总额、收支结余以及支出占收入的比重。 要求:  收支起始日期小于等于收支截止日期  金额保留小数点后 2 位 界面如下所示: 收支记录统计界面 57 C#高级开发与 Ado.net 实训教程 苹果机游戏系统 项目编号:CS-C# -006 项目概述 苹果机游戏系统简介 项目名称 苹果机游戏系统 工作量 3 课时理论,6 课时上机 代码量 900 行 项目难度 ★★★★☆ 课时安排 共 9 课时 讲授 3,实验 6 项目简介 系统功能点如下: 1.创建文件操作类 FileOperator 类 2.创建游戏进度选择窗体 3.创建新建游戏窗体 4.创建载入游戏进度窗体 5.创建保存游戏进度窗体 6.创建游戏主窗体 7.创建主窗体 8.实现灯转圈效果 9.实现系统随机选择抵押项 10.实现玩家选择抵押项 11.实现计算总分 项目目的 本案例要求实现游戏进度控制和部分程序主界面的设计,即实现游 戏进度选择窗体、新建游戏进度窗体、载入游戏进度窗体和保存游戏进 度窗体的界面和功能,搭建部分主程序窗体的界面,苹果机游戏运行功 能,主要包括三大项功能:一个是玩家进行选择抵押项时,抵押项的加 分和总分的减少功能实现;一个是苹果机游戏系统的红灯滚动效果实 现;一个是判断玩家选择的抵押项与系统选择的抵押项是否一致的功能 实现。通过本案例,掌握线程、文件的读写、集合的应用,WinForm 基 本控件的运用。 涉及主要技术 面向对象编程 IO 文件流操作 线程 集合 事件处理 WinForm 基本控件 数据库 无 编程环境 Visual Studio 2008 项目特点 熟练掌握 WinForm 开发技巧与常用控件的使用 技术重点 IO 文件流操作、WinForm 基本控件、集合、线程 技术难点 多线程 58 C#高级开发与 Ado.net 实训教程 1.项目背景 时至今日,电子游戏已经深入人们的日常生活,更逐渐成为不可或缺的一样元素。 游戏以及相关硬件只是诞生了短短的数十年,而其实从 80 年代开始它才真正普及流行。 电子游戏在过去 20 年经历了飞一般的发展,游戏从早期线条加色彩的简单画面进化到现在 几乎可以乱真的绚丽影像,游戏硬件也从原来的庞然大物演变成轻巧便携的随身玩伴。游戏 的本质是程序软体,依赖于相关硬件方可运行,对这类硬件我们统称为游戏硬件。游戏起源 于计算机技术,但是发展过程中衍生出几个“派别”,包括一直是最强游戏母体的个人电脑、 传统营业性大型游戏机(俗称街机)、已经和电视、音响等家用电器融为一体的家用型游戏 机(简称家用机)、以及近年流行的便携式掌上游戏机(简称掌机)。 第一款视频化游戏 街机,是一种放在公共娱乐场所的经营性的专用游戏机,起源于美国的酒吧。在街机上 运行的游戏叫街机游戏。 街机 59 C#高级开发与 Ado.net 实训教程 一般常见的街机,基本的形式即由两个部分组成:框体与机版。 从 1997 年以来迅速发展起来的各类街机模拟器就成了拯救和保存这些珍贵流行文化的 希望,其中最重要的莫过于大型机模拟器 M.A.M.E.。今天,我们已经可以在个人电脑上重 温这些老旧的游戏了,而现实的问题是街机游戏已经是江河日下,随着街机大厂 CAPCOM 在 2003 年宣布退出街机市场,街机发展的契机更显黯淡。 苹果机实际上算是一种赌博机器,内有电子计算机装置,参赌的人将硬币投入机器,如 获胜,机器会将储藏在内的硬币自动吐出,否则硬币便被机器吞掉。在现如今街机已经基本 上退出了历史舞台,所以像苹果机这种古老的大型街机只有在一些城市的角落里才可以见 到。 本案例做一个模拟街机中的苹果机游戏。苹果机游戏系统以进行游戏为主并可以新建游 戏进度、保存游戏进度和载入游戏进度,其中包括系统自身随机选中抵押项,用户选中游戏 选项以及在用户所选择的游戏选项和系统自身随机选中的游戏选项相同后对用户进行相应 的奖励。 2.需求分析 系统主要功能: 1. 游戏进度管理:用户可以自行选择游戏进度进行游戏,其中包括新建游戏进度和载 入游戏进度:  新建游戏进度:实现用户创建包含自身信息的游戏进度,其中包含用户在游戏中所 使用的名称和在游戏中所拥有的分数。  保存游戏进度:实现用户保存现有游戏进度,包括用户名、游戏所得分数和保存时 间。  载入游戏进度:实现用户读取以往的游戏进度从而继续进行游戏,其中包含用户在 游戏中所使用的名称和在游戏中所拥有的分数。 2. 对玩法进行分析 玩家选择抵押项流程图: 选择抵押项流程图 60 C#高级开发与 Ado.net 实训教程 当玩家在程序主窗体中点击不同的抵押项图标时,该抵押项下方的计数标签会自动 增加 1,同时此用户下的游戏总分数就会减少 1。当此用户下的游戏总分数为 0 时,如果继 续点击抵押项图标,就会弹出相应的错误提示。 玩家进行游戏流程图: 进行游戏流程图 玩家选择完抵押项后开始进行游戏,游戏开始后系统将会随机选择抵押项,当系统 选择抵押项与玩家选择抵押项相同时,玩家赢得相应分数并计算分数归入总分;当系统选择 抵押项与玩家选择抵押项不同时,系统扣除玩家所抵押的分数。 3. 进行游戏:实现用户自由选择抵押项,系统随机选择抵押项,对用户所选抵押项和 系统所选抵押项进行匹配。如果相同则奖励相应分数。 主要包括: 1)开始游戏后系统对抵押项进行随机选择 在开始游戏后,游戏系统自动对抵押项进行随机选择,其中需要实现红灯的滚动效果来 实现游戏界面转动效果,当红灯停止转动后,所停的位置所在的抵押项即为系统选中的抵押 项。 2)玩家进行选择抵押项时,抵押项的加分和总分的减少功能实现 当玩家选择抵押项时,分别从玩家拥有的总分中扣除相应抵押分数,将扣除的抵押分数 加到玩家所选择的抵押项中,当总分为 0 时,不能继续向抵押项中加分。 3)根据玩家所选择的抵押项和系统所选择的抵押项进行匹配,并进行计算得分 在开始游戏前玩家需要选择抵押项,当红灯滚动停止后,根据红灯停止位置的抵押项和 玩家所选择的抵押项进行匹配,如果相同则计算得分,将得分加入玩家总分中;不同则收回 抵押分数。 4. 退出系统:退出苹果机游戏系统。 5. 每种物品对应的得分如下表所示: 61 C#高级开发与 Ado.net 实训教程 物品 名称 分值 小双星 2 分 双星 20 分 小铃铛 2 分 铃铛 10 分 单西瓜 2 分 双西瓜 20 分 小橘子 2 分 橘子 10 分 小甜瓜 2 分 甜瓜 10 分 小双七 2 分 双七 40 分 苹果 5 分 25%BAR 25 分 62 C#高级开发与 Ado.net 实训教程 50%BAR 50 分 BAR 100 分 3.详细设计 3.1 类型设计 3.1.1 创建文件操作类 FileOperator 类 功能:检测指定目录文件是否存在、读取文件内容和写入数据到文件。 类图如下所示: FileOperator 类图 3.2 界面设计 3.2.2 游戏进度选择窗体即 AppleWelcome 窗体 功能:通过选择不同进度控制按钮从而实现新建游戏进度和载入游戏进度功能。 选择“新建游戏”按钮,将打开创建玩家名称窗体,并将本窗体隐藏。 选择“载入游戏”按钮,将打开载入游戏进度窗体,并将本窗体隐藏。 63 C#高级开发与 Ado.net 实训教程 窗体界面如下: 游戏进度选择窗体 3.2.3 新建游戏进度窗体即 CreateUserName 窗体 功能:要求输入玩家名称,点击“创建”按钮后,保存此名称,从而使主程序窗体可以 显示用户名。实现当没有输入玩家名称时点击“创建”按钮,将使用 ErrorProvider 控件进 行提示“请输入玩家名称!”。 界面如下所示: 新建游戏进度界面 3.2.4 载入游戏进度窗体即 LoadData 窗体 功能:此窗体加载时以单选列表形式显示保存的游戏进度(最多 5 个),可以选择某一 个游戏进度继续游戏。 游戏进度中包括玩家名称、现有分数和保存时间。 64 C#高级开发与 Ado.net 实训教程 界面如下所示: 载入游戏进度界面 3.2.5 保存游戏进度窗体即 SaveData 窗体 功能:在此窗体加载时以单选列表形式显示保存的游戏进度列表,用户选择某一保存位 置可以保存现有的游戏进度(当前选中的进度会被覆盖)。 游戏进度中包括玩家名称、现有分数和保存时间。 界面如下所示: 保存游戏进度界面 3.2.6 游戏主窗体即 AppleMain 窗体 功能:在此窗体中显示当前游戏的玩家名称和得分。窗体中包括菜单项,集成新建玩家、 载入进度、保存进度和退出功能。 65 C#高级开发与 Ado.net 实训教程 界面如下所示: 游戏主界面 3.2.7 如何实现红灯闪烁效果即红灯亮和灭的效果: 在苹果机游戏系统中,控制红灯闪烁效果的控件是 PictureBox 控件,我们利用红灯亮图片和 红灯灭图片的交替显示,从而完成红灯闪烁的效果。如图所示: 红灯亮 红灯灭 3.2.8 如何实现红灯滚动的效果即连续实现红灯亮和灭的效果: 通过图片的交替显示来实现红灯闪烁效果还不够,因为还需要表现出红灯滚动的效果, 这样就需要使多个 PictureBox 控件所控制的图片进行交替显示,并且需要以一定的顺序交替 显示,这样红灯滚动的效果便呈现出来。那么如何控制呢? 首先,我们需要很方便的控制和查找 PictureBox 控件,并将 PictureBox 控件有序化,如 果可以将 PictureBox 控件按一定顺序排列组合起来,那样就可以方便的控制 PictureBox 控件 的图片显示了。如何将多个 PictureBox 控件有序化呢?在这里我们将 PictureBox 控件的名字 分别命名为 lightpb0--lightpb23,但仅仅是这样还是不容易控制,所以我们将它们添加到一 个集合中,这样通过控制集合就可以方便的控制 PictureBox 控件了。通过控制集合中的每个 66 C#高级开发与 Ado.net 实训教程 对象的图片,从而实现红灯的闪烁和滚动效果。 3.2.9 如何实现红灯滚动成圆的效果: 如何将红灯滚动成圆呢?我们可以判断,如果红灯滚动到了第 24 个 PictureBox 控件, 那么我们将控制集合的索引变为 0 即又切回到第一个 PictureBox 控件,这样红灯滚动的首尾 便连了起来。 3.2.10 如何控制转速 在现实的苹果机游戏中,红灯的滚动效果是一个速度渐变的效果,即在开始时红灯滚动 的速度是由慢到快的,然后达到最高速,在保持最高速转动一段时间后,滚动速度会由快到 慢,直到停止滚动。 那么如何实现这种效果呢?在我们的程序中,控制红灯滚动速度的是线程,通过控制线 程的休眠时间进而控制红灯滚动的速度。那么如果我们使线程的休眠时间在一个阶段中由长 变短或者由短变长,这样红灯的滚动速度就会由慢变快或者由快变慢了。 3.2.11 如何实现系统随机选择抵押项: 首先,我们需要让系统来控制红灯的滚动效果。在这里我们使用到了线程,通过线程调 用 Run()方法,并且使红灯滚动的格数为随机数,这个随机数在 180-230 之间。以随机数作 为循环变量的最大限制,循环实现两个相邻 PictureBox 控件的图片变化效果。循环完成后, 红灯停在的位置即为系统选择抵押项的位置,最后结束线程。 3.2.12 玩家选择抵押项: 玩家进行选择抵押项时,每点击一次将从总分中减去 1 分,加入到选择的抵押项倍数中, 需要注意总分为 0 时就不可以继续给抵押项加分了。 3.2.13 玩家选择抵押项与系统随机选择抵押项匹配 我们通过上面的步骤逐步完成了系统随机选择抵押项和玩家选择抵押项的功能实现,那 么就需要进行两者之间的匹配了,看玩家是否“中”了,并进行计算得分。玩家选择哪个抵 押项较为容易得知,那么如何得知系统所选择的是哪个抵押项呢?查看界面我们可以得知, 控制红灯滚动的控件的位置是固定的,所以每一个红灯就代表一个抵押项,并且在 24 个控 制红灯控件中,只有一个是亮灯,其余 23 个都是灭的状态,所以我们可以通过 PictureBox 控件的图片路径名称进行判断,如果为亮的状态则路径为亮图片的路径,这样我们就可以得 到此控件的索引通过索引就可以判断出系统选中的是哪个抵押项。 67 C#高级开发与 Ado.net 实训教程 运行“Start”前玩家压分情况界面 运行后结果 68 C#高级开发与 Ado.net 实训教程 第三阶段:WinFrom+ADO.Net 应用开发 本阶段项目 1. 学籍管理系统 2. 人力资源管理系统 69 C#高级开发与 Ado.net 实训教程 学籍管理系统 项目编号:CS-C# -007 项目概述 学籍管理系统简介 项目名称 学籍管理系统 工作量 3 课时理论,7 课时上机 代码量 1000 行 项目难度 ★★★★☆ 课时安排 共 10 课时 讲授 3,实验 7 项目简介 系统功能点如下: 1.主窗体 2.专业管理窗体 3.班级管理窗体 4.新增班级窗体 5.课程管理窗体 6.学生管理窗体 7.新增学生窗体 8.录入考试成绩窗体 9.成绩查询窗体 10.删除学生信息 项目目的 通 过 本 案 例 , 学 习 了 解 ADO.NET 的 功 能 和 组 成 , 会 使 用 Connection 对象连接到数据库,使用 Command 对象执行 DML 和查询语 句,会使用 DataReader 读取数据并使用泛型集合承载对象。培养学生 关于数据库系统的综合编码能力。 涉及主要技术 分析系统的需求,提取类和对象 三层架构 ADO.NET 数据访问 复杂控件 GridView 应用 数据库事务处理 数据库 StuManage 数据库 编程环境 Visual Studio 2008 和 SQL Server2005 项目特点 基于三层架构熟练掌握 ADO.NET 数据访问以及复杂控件应用 技术重点 ADO 数据访问操作 技术难点 理解三层架构开发思想 70 C#高级开发与 Ado.net 实训教程 1.项目背景 学生档案管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和 管理者来说都至关重要,所以学生档案管理系统应该能够为用户提供充足的信息和快捷 的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着 许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于 查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识, 它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分, 使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点,例如:检索迅 速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极 大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条 件。 2.需求分析 系统主要功能: 本项目主要包涵 6 个部分,具体描述如下: 专业信息管理:包含专业信息的新增、删除、修改和查询功能; 班级信息管理:包含班级信息的新增、删除、修改和查询功能; 课程信息管理:包含课程信息的新增、删除、修改和查询功能; 学生信息管理:包含学生信息的新增、删除、修改和查询功能;当删除学生信息时,其 所有成绩信息将同时被删除; 成绩录入:以班为单位,录入该班内学生某一科目的成绩,可以多次录入或修改;在用 户要求录入成绩时,根据用户选择的班级和科目生成可供用户录入的表格,如果曾经录入, 则曾录入的记录须被加载; 成绩查询:可以以班级、课程或分数段为条件查询学生成绩;用户可以以班级、课程和 分数段组合成任意条件,查询符合条件的成绩信息; 要求使用直连数据库读取、提交数据。 71 C#高级开发与 Ado.net 实训教程 3.详细设计 3.1 数据库设计 3.1.1 数据关系图 数据关系图 3.1.2 专业信息表 表名 Major(专业信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ID varchar(50) 非空 PK 专业编号 Name varchar(50) 非空 专业名称 补充说明 3.1.3 班级信息表 表名 Classes(班级信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ID varchar(50) 非空 PK 班级编号 72 C#高级开发与 Ado.net 实训教程 Name varchar(50) 非空 班级名称 HeadTeacher varchar(50) 非空 班主任姓名 MajorID varchar(50) 非空 所属专业编号 补充说明 3.1.4 课程信息表 表名 Subject(课程信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ID varchar(50) 非空 PK 课程编号 Name varchar(50) 非空 课程名称 补充说明 3.1.5 学生信息表 表名 Student(学生信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ID varchar(50) 非空 PK 学生编号 Name varchar(50) 非空 学生名称 Sex varchar(2) 非空 性别 Birthday datetime 非空 出生日期 Policy varchar(10) 非空 政治面貌 Nation varchar(10) 非空 民族 IDCard varchar(20) 非空 身份证号 ClassID varchar(50) 非空 所属班级编号 Memo varchar(500) 备注 补充说明 3.1.6 成绩信息表 表名 Scope(成绩信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 StuID varchar(50) 非空 PK 学生编号 SubjectID varchar(50) 非空 PK 课程编号 Scope decimal(18,2) 非空 成绩 补充说明 73 C#高级开发与 Ado.net 实训教程 3.2 界面设计 3.2.1 主窗体系统退出和基本信息界面 系统退出菜单界面 基本信息菜单界面 74 C#高级开发与 Ado.net 实训教程 界面功能点 功能点要求 退出菜单 退出系统 专业管理菜单 显示专业信息管理窗体 班级管理菜单 显示班级信息管理窗体 3.2.2 专业管理窗体 专业管理界面 界面功能点 功能点要求 表格 DataGridView,默认加载所有专业信息 保存按钮 工具栏按钮,点击保存所有更改(新增和修改) 删除按钮 工具栏按钮,删除所选专业并保存 新增 在空白行输入信息可以新增专业,点击保存后生效 修改 双击单元格可以修改专业信息,点击保存后生效 75 C#高级开发与 Ado.net 实训教程 3.2.3 班级管理窗体 班级管理界面 界面功能点 功能点要求 表格 DataGridView,默认加载所有班级信息 新增按钮 工具栏按钮,点击显示新增班级窗体 删除按钮 工具栏按钮,删除所选班级并保存 修改功能 双击班级信息进入班级信息修改页面 3.2.4 班级新增/修改窗体 添加班级界面 76 C#高级开发与 Ado.net 实训教程 界面功能点 功能点要求 班级编号 TextBox,接收用户输入班级编号 班级名称 TextBox,接收用户输入班级名称 班主任 TextBox,接收用户输入班主任姓名 所属专业 ComboBox,接收用户选择所属专业,数据来源于专业信息 表 保存 Button,保存所有信息并返回列表页 取消 Button,取消新增并返回列表页 3.2.5 删除班级确认窗体 确认删除界面 界面功能点 功能点要求 确定 Button,删除选中班级,同时更新 GridView 取消 Button,取消删除 3.2.6 主窗体课程管理和学生信息管理菜单界面 课程管理菜单界面 77 C#高级开发与 Ado.net 实训教程 学生信息菜单界面 界面功能点 功能点要求 课程管理菜单 显示课程信息管理窗体 学生信息管理菜单 显示学生信息管理窗体 3.2.7 课程管理窗体 课程管理界面 78 C#高级开发与 Ado.net 实训教程 界面功能点 功能点要求 表格 DataGridView,默认加载所有课程信息 保存按钮 工具栏按钮,点击保存所有更改(新增和修改) 删除按钮 工具栏按钮,删除所选课程并保存 新增 在空白行输入信息可以新增课程,点击保存后生效 修改 双击单元格可以修改课程信息,点击保存后生效 3.2.8 学生信息管理窗体 学生信息管理界面 界面功能点 功能点要求 表格 DataGridView,默认加载所有学生信息 新增按钮 工具栏按钮,点击显示新增学生窗体 删除按钮 工具栏按钮,删除所选学生并保存 修改功能 双击学生信息进入学生信息修改页面 79 C#高级开发与 Ado.net 实训教程 3.2.9 学生信息新增/修改窗体 学生信息添加界面 界面功能点 功能点要求 学生编号 TextBox,接收用户输入学生编号 学生名称 TextBox,接收用户输入学生姓名 性别 ComboBox,接收用户选择性别 民族 ComboBox,接收用户选择民族 所属班级 ComboBox,接收用户选择班级,数据来源于班级信息表 身份证号 TextBox,接收用户输入身份证号 出生日期 DataTimePicker,接收用户选择出生日期 政治面貌 ComboBox,接收用户选择政治面貌 备注 TextBox,接收用户输入其他需要说明的信息 保存 Button,保存所有信息并返回列表页 取消 Button,取消新增/修改并返回列表页 3.2.10 删除学生确认窗体 确认删除学生界面 80 C#高级开发与 Ado.net 实训教程 界面功能点 功能点要求 确定 Button,删除选中学生,同时更新 GridView 取消 Button,取消删除 3.2.11 主窗体成绩录入和查询菜单界面 成绩录入和查询菜单界面 界面功能点 功能点要求 成绩录入菜单 显示录入考试成绩窗体 成绩查询菜单 显示成绩查询窗体 81 C#高级开发与 Ado.net 实训教程 3.2.12 录入考试成绩窗体 录入考试成绩界面 界面功能点 功能点要求 班级 选择要录入成绩的班级 科目 选择要录入成绩的科目 开始录入 显示所选班级的所有学生,并允许用户在表格中录入成绩 保存 存储所有录入的成绩 82 C#高级开发与 Ado.net 实训教程 3.2.13 成绩查询窗体 成绩查询界面 界面功能点 功能点要求 班级 选择要查询成绩的班级 科目 选择要查询成绩的科目 分数 1 录入要查询的分数段的下限 分数 2 录入要查询的分数段的上限 查询 执行查询操作,将符合条件的记录显示在表格内 3.2.14 删除学生确认窗体 确认删除学生界面 界面功能点 功能点要求 确定 Button,删除选中学生及其所有成绩信息,同时更新 GridView 取消 Button,取消删除 83 C#高级开发与 Ado.net 实训教程 人力资源管理系统 项目编号:CS-C# -008 项目概述 人力资源管理系统简介 项目名称 人力资源管理系统 工作量 4 课时理论,8 课时上机 代码量 1500 行 项目难度 ★★★★★ 课时安排 共 12 课时 讲授 4,实验 8 项目简介 系统功能点如下: 1.主窗体 2.登录窗体 3.修改密码窗体 4.角色管理窗体 5.用户管理窗体 6.新增用户窗体 7.部门信息管理 8.员工信息管理 9.查询员工信息 10.新增/修改员工信息 11.员工性别比例统计 12.员工学历分布统计 项目目的 通 过 本 案 例 , 学 习 了 解 ADO.NET 的 功 能和 组 成 , 会 使 用 Connection 对象连接到数据库,使用 Command 对象执行 DML 和查询 语句,会使用 DataReader 读取数据并使用泛型集合承载对象。培养学 生关于数据库系统的综合编码能力。 涉及主要技术 分析系统的需求,提取类和对象 三层架构 ADO.NET 数据访问 复杂控件 TreeView 和 GridView 图表控件 MSChart 数据库 HRM 数据库 编程环境 Visual Studio 2008 和 SQL Server2005 项目特点 基于三层架构熟练掌握 ADO.NET 数据访问以及复杂控件应用 技术重点 ADO 数据访问操作 技术难点 图表控件 MSChart 84 C#高级开发与 Ado.net 实训教程 1.项目背景 随着市场竞争的日趋激烈,人才已成为实现企业自身战略目标的一个非常关键的因素。 企业中人心的向背和员工对工作的投入程度在很大程度上决定了该企业的兴衰与成败。如何 能保持本企业员工的工作责任感,激励他们的工作热情,减少人才的流失,已成为困扰企业 主管和人力资源经理的一个日益尖锐的问题,可以说企业管理从根本上来讲就是对人的管 理。现在“公平、公正、合理”的企业管理原则已为不少企业所采纳。但是要实现“公平、 公正、合理”绝非易事,它不是仅靠规章制度和政策就可以解决的。通过建立透明、相容、 一致、易查和全面的人力资源信息系统,将与人相关的信息统一地管理起来,才有可能为“公 平、公正、合理”原则的实现以及企业在运作和劳资纠纷等方面的风险规避等建立一套科学 的保障体系。 人力资源管理工作由若干相互联系的任务所 组成。在安排与执行这些任务时,负有人力资源管 理责任的所有人员,都必须考虑法律的、政治的、 经济的、社会的、文化的和技术的等各种因素的影 响。 人力资源管理系统是基于先进的软件和高速、 大容量的硬件基础上的新的人力资源管理模式,通 过集中式的信息库、自动处理信息、员工自助服务、 外协以及服务共享,达到降低成本、提高效率、改 进员工服务模式的目的。它通过与企业现有的网络 技术相联系,保证人力资源与日新月异的技术环境 同步发展。一般来说,可以分 4 个部分来理解人力 资源管理系统。  管理人员角色和目标的改变,传统的人力资源管理中,管理人员的大部分精力将耗 费在繁琐的日常行政事务处理上,而作为企业管理层的参谋角色应该做的咨询和策 略制定的工作相对缺乏。通过人力资源管理系统,管理人员可以将绝大部分精力放 在为管理层提供咨询、建议上,而在行政事务上的工作可以由电子化系统完成,只 需占用 HR(人力资源管理)人员极少的精力和时间,缩短新产品的开发周期。如 汽车制造业中,在日本和美国,由于运用 CAD 设计新型车型,将原来的开发周期 由 5 年缩短至 1 年,效率之高可见一斑。  提供更好的服务,人力资源管理系统可以迅速、有效地收集各种信息,加强内部的 信息沟通。各种用户可以直接从系统中获得自己所需的各种信息,并根据相关的信息 做出决策和相应的行动方案。  降低成本,人力资源管理系统通过减少人力资源管理工作的操作成本、降低员工流 动率以及减少通信费用等达到降低企业运作成本的目的。  革新管理理念,人力资源管理系统的最终目的是达到革新企业的管理理念,而不仅 是改进管理方式,优化人力资源管理。先进技术应用于人力资源管理不仅是为了将 现有的人力资源工作做得更好,更重要的是,做些对于企业来讲更有效率的事情, 成为管理层的决策支持者,为决策提供信息和解决方案。 人力资源管理系统的发展历史可以追溯到 20 世纪 60 年代末。由于当时计算机技术已经 85 C#高级开发与 Ado.net 实训教程 进入实用阶段,同时大型企业用手工来计算和发放薪资既费时费力又非常容易出差错,为了 解决这个矛盾,第一代的人力资源管理系统应运而生。当时由于技术条件和需求的限制,用 户非常少,而且那种系统充其量也只不过是一种自动计算薪资的工具,既不包含非财务的信 息,也不包含薪资的历史信息,几乎没有报表生成功能和薪资数据分析功能。但是,它的出 现为人力资源的管理展示了美好的前景,即用计算机的高速度和自动化来替代手工的巨大工 作量,用计算机的高准确性来避免手工的错误和误差,使大规模集中处理大型企业的薪资成 为可能。 第二代的人力资源管理系统出现于 20 世纪 70 年代末。由于计算机技术的飞速发展,无 论是计算机的普及性,还是计算机系统工具和数据库技术的发展,都为人力资源管理系统的 阶段性发展提供了可能。第二代人力资源管理系统基本上解决了第一代系统的主要缺陷,对 非财务的人力资源信息和薪资的历史信息都给予了考虑,其报表生成和薪资数据分析功能也 都有了较大的改善。但这一代的系统主要是由计算机专业人员开发研制的,未能系统地考虑 人力资源的需求和理念,而且其非财务的人力资源信息也不够系统和全面。 人力资源管理系统的革命性变革出现在 20 世纪 90 年代末。由于市场竞争的需要,如何 吸引和留住人才,激发员工的创造性、工作责任感和工作热情已成为关系企业兴衰的重要因 素,人才已经成为企业最重要的资产之一。“公正、公平、合理”的企业管理理念和企业管 理水平的提高,使社会对人力资源管理系统有了更高的需求;同时由于个人电脑的普及,数 据库技术、客户/服务器技术,特别是 Internet 技术的发展,使第三代人力资源管理系统的出 现成为必然。第三代人力资源管理系统的特点是从人力资源管理的角度出发,用集中的数据 库将几乎所有与人力资源相关的数据(如薪资福利、招聘、个人职业生涯的设计、培训、职 位管理、绩效管理、岗位描述、个人信息和历史资料)统一管理起来,形成了集成的信息源。 友好的用户界面,强有力的报表生成工具、分析工具和信息的共享使得人力资源管理人员得 以摆脱繁重的日常工作,集中精力从战略的角度来考虑企业人力资源的规划和政策。 2.需求分析 本项目主要包含 5 个部分,具体描述如下: 1、用户与角色管理:角色主要分为三类,系统管理员、人力资源经理和人力资源专员, 更多角色可以由用户自行定义和分配权限,用户必须属于某个角色以获取对应的操作权限; 2、权限控制:以控制菜单是否可见的方式来控制权限,权限的赋予对象是角色而不是 具体用户; 3、部门管理:以公司为根部门,创建和管理企业组织架构; 4、员工管理:用以管理员工基本信息,包括在职和离职; 5、员工信息统计:以图表的形式展示员工的男女所占比例和学历分布,员工男女所占 比例统计图(饼图),员工学历分布图(柱图)(仅在职员工) 86 C#高级开发与 Ado.net 实训教程 3.详细设计 3.1 数据库设计 3.1.1 数据关系图 用户角色权限管理数据关系图 员工信息管理数据关系图 87 C#高级开发与 Ado.net 实训教程 3.1.2 角色信息表 表名 Role(角色信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ID Int 非空 PK 角色编号 Name varchar(255) 非空 角色名称 补充说明 3.1.3 菜单信息表 表名 Menus(菜单信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ID Int 非空 PK 菜单编号 Name varchar(255) 非空 菜单名称 Text varchar(255) 非空 菜单显示文本 IsActive bit 非空 默认值 1 菜单是否可分配 ParentID Int 父菜单编号 DisplayIndex float 菜单显示顺序 补充说明 Name 指菜单在系统中 Name 属性的值,用来在系统中查找菜单 IsActive 用于指示菜单是否可用,某些情况下,可通过此标识取消某 些菜单 ParentID 此项为 Null 时,表示该菜单为顶级菜单 3.1.4 角色权限分配表 表名 RoleMenu(角色权限分配表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 RoleID Int 非空 PK 角色编号 MenuID Int 非空 PK 菜单编号 补充说明 3.1.5 用户信息表 表名 Users(用户信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ID Int 非空 PK 用户编号 Account varchar(255) 非空 登录名称 Password varchar(255) 非空 登录密码 RealName varchar(255) 非空 真实姓名 RoleID Int 非空 所属角色编号 IsActive bit 非空 默认值 1 是否可用 88 C#高级开发与 Ado.net 实训教程 补充说明 3.1.6 部门信息表 表名 Department(部门信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ID Int 非空 PK 部门编号 Name varchar(255) 非空 部门名称 ParentID Int 父部门编号 补充说明 1. 公司做为一个顶级部门,在创建部门信息时作为初始化信息录 入,其 ParentID 值为 Null 3.1.7 员工信息表 表名 Employee(员工信息表) 列名 数据类型(精度范围) 空/非空 约束条件 说明 ID Int 非空 PK 员工编号 DepartmentID Int 非空 部门编号 Name varchar(50) 非空 员工姓名 Sex varchar(4) 非空 性别 Position varchar(50) 非空 职位 Phone varchar(20) 非空 电话 Email varchar(255) 非空 电子邮箱 Nation varchar(50) 非空 民族 Polity varchar(50) 非空 政治面貌 Degree varchar(50) 非空 学历 Salary money 非空 月薪 Resume varchar(2000) 个人履历 Memo varchar(2000) 备注 Status bit 非空 默认值 1 是否在职 补充说明 89 C#高级开发与 Ado.net 实训教程 3.2 界面设计 3.2.1 登录窗体 系统登录界面 界面功能点 功能点要求 用户名 TextBox,用户登录名,不能为空 密码 TextBox,用户密码,不能为空,以*显示 登录 Button,登录成功,显示主页面 取消 Button,取消登录 3.2.2 主窗体系统与权限管理界面 系统管理界面 90 C#高级开发与 Ado.net 实训教程 权限管理界面 界面功能点 功能点要求 修改密码菜单 进入密码修改界面 退出登录菜单 退出后重新登录 退出系统菜单 退出系统 角色管理菜单 进入角色管理界面 用户管理菜单 进入用户管理界面 3.2.3 修改密码窗体 密码修改界面 91 C#高级开发与 Ado.net 实训教程 界面功能点 功能点要求 原始密码 TextBox,当前密码,用于验证是否本人在修改密码 新密码 TextBox,新密码 确定密码 TextBox,确认新密码,两次密码输入就一致 确定 Button,修改密码 取消 Button,取消修改密码 3.2.4 角色管理窗体 角色管理界面 界面功能点 功能点要求 工具栏添加按钮 清空角色名称和菜单列表选项,准备添加 工具栏删除按钮 经过用户确认后删除选中角色 角色 TreeView 显示所有角色,选中角色,其信息将在右边显示,其中菜 单列表显示该角色所具有的权限信息 菜单 TreeView 显示所有菜单,角色所具有的权限将被选中 角色节点 Button,删除选中角色,同时更新 TreeView 保存 Button,取消删除选中菜单 92 C#高级开发与 Ado.net 实训教程 3.2.5 删除角色确认窗体 删除角色确定界面 界面功能点 功能点要求 确定“是” Button,删除选中角色,同时更新 TreeView 取消“否” Button,取消删除 3.2.6 用户管理窗体 用户管理界面 93 C#高级开发与 Ado.net 实训教程 界面功能点 功能点要求 工具栏添加按钮 显示添加用户窗体 工具栏删除按钮 经过用户确认后删除选中用户 3.2.7 添加用户窗体 添加用户界面 界面功能点 功能点要求 用户名 用户登录使用的名字,不可重复 初始密码 管理员设定的密码,可由用户登录后修改 真实姓名 真实姓名 所属角色 用户所属的角色,用以确定用户所具有的权限 添加 Button,添加用户,关闭窗体 取消 Button,取消添加 94 C#高级开发与 Ado.net 实训教程 3.2.8 用户删除确认窗体 用户删除确认界面 界面功能点 功能点要求 确定“是” Button,删除选中用户,同时更新 GridView 取消“否” Button,取消删除 95 C#高级开发与 Ado.net 实训教程 3.2.9 部门管理窗体 部门管理界面 界面功能点 功能点要求 工具栏新增按钮 为当前选中部门添加子部门 工具栏删除按钮 经用户确认后删除选中部门 部门树视图 TreeView,显示所有部门 选中部门节点 在右边显示部门信息,直接修改后点击保存 保存按钮 保存新增/修改部门信息 3.2.10 删除部门提示窗体 删除部门提示界面 96 C#高级开发与 Ado.net 实训教程 界面功能点 功能点要求 确定“是” Button,删除选中部门,同时更新 TreeView 取消“否” Button,取消删除 3.2.11 员工管理窗体 员工管理界面 界面功能点 功能点要求 工具栏新增按钮 点击按钮显示新增员工窗口 工具栏删除按钮 经用户确认后删除选中员工 员工姓名文本框 可以输入员工全名或部分作为查询条件 查询按钮 按照姓名进行模糊查询 修改员工信息 双击显示修改员工信息窗口 97 C#高级开发与 Ado.net 实训教程 3.2.12 新增/修改员工信息 员工信息维护界面 界面功能点 功能点要求 姓名 文本框,填写员工姓名,不能为空 性别 单选框,二选一 是否在职 复选框,新增员工时不可修改,默认为在职(选中) 部门 下拉框,选择员工所属部门 职位 下拉框,选择员工所在职位 Email 文本框,格式必须正确 电话 文本框 政治面貌 下拉框 民族 下拉框 学历 下拉框 月薪 文本框,必填,其值必须为数值类型 个人履历 多行文本框,选填,个人工作经历 备注 多行文本框,选填,其他需要说明的信息 98 C#高级开发与 Ado.net 实训教程 保存按钮 保存新增/修改员工信息 取消按钮 取消新增/修改 3.2.13 主窗体统计报表界面 统计报表界面 界面功能点 功能点要求 性别统计 显示员工男女所占比例统计图 学历统计 显示员工学历分布图 99 C#高级开发与 Ado.net 实训教程 3.2.14 员工男女比例统计图 在职员工性别统计界面 界面功能点 功能点要求 显示内容 要求显示员工人数及所占比例 100 C#高级开发与 Ado.net 实训教程 3.2.15 在职员工学历统计图 在职员工学历统计界面 界面功能点 功能点要求 显示内容 显示员工人数
还剩105页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

s2333420

贡献于2015-09-06

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf