1、【教学导航【教学导航】知识技能目标知识技能目标(1)了解)了解“用户管理用户管理”模块的业务需求建模方法模块的业务需求建模方法(2)掌握)掌握“用户类型用户类型”、“用户权限选项用户权限选项”、“用户用户权限权限”等数据表的设计与创建方法等数据表的设计与创建方法(3)掌握)掌握“用户管理用户管理”模块多层架构的分析设计方法模块多层架构的分析设计方法(4)掌握)掌握“用户管理用户管理”模块业务处理类的分析设计方模块业务处理类的分析设计方法法(5)掌握)掌握“用户管理用户管理”和和“用户权限管理用户权限管理”窗体的界窗体的界面设计方法和功能实现方法面设计方法和功能实现方法(6)掌握)掌握“用户管理
2、用户管理”模块的测试方法模块的测试方法本章重点本章重点(1)“用户管理用户管理”模块多层架构的分析设计模块多层架构的分析设计(2)“用户管理用户管理”模块业务处理类的分析设计模块业务处理类的分析设计(3)“用户权限管理用户权限管理”窗体的界面设计和功能实现窗体的界面设计和功能实现教学方法教学方法项目教学法、分组讨论法、理论实践一体化、讲练结合项目教学法、分组讨论法、理论实践一体化、讲练结合课时建议课时建议6课时(含课堂同步实践)课时(含课堂同步实践)【任务描述【任务描述】 1任务卡任务卡 任务卡如表任务卡如表3-1所示。所示。表表3-1任务卡任务卡模模 块块 编编 号号003-1模模 块块 名
3、名 称称用用 户户 管管 理理计划工时计划工时4所属系统名称所属系统名称图书管理系统图书管理系统窗体名称窗体名称usersManage业务处理层的类名称业务处理层的类名称userClass数据表名称数据表名称用户信息用户信息数据操作层的类名称数据操作层的类名称bookDbClass模块主要功能简述模块主要功能简述(1)显示)显示“用户信息用户信息”数据表中的记录数据数据表中的记录数据(2)添加新的)添加新的“用户用户”(3)修改已有的用户数据)修改已有的用户数据(4)删除已有的)删除已有的“用户用户”主要接口与属性简述主要接口与属性简述(1)窗体级局部变量:)窗体级局部变量:userObj为为
4、bookAPP类库中类库中userClass类的对象,类的对象,strFlag用于区分用于区分“新增用户新增用户”和和“修改用户数据修改用户数据”(2)自定义过程)自定义过程initialize:对窗体中各个输入或者选择数据的控件进行初始化:对窗体中各个输入或者选择数据的控件进行初始化处理。处理。(3)自定义过程)自定义过程listViewUserSet:从:从“用户信息用户信息”数据表中读取全部数据并且数据表中读取全部数据并且显示在显示在ListView中。中。(4)自定义过程)自定义过程listViewItemSelect:将:将ListView控件中选定行的数据显示在其控件中选定行的数据
5、显示在其他控件中。他控件中。(5)自定义过程)自定义过程checkEmpty:检测文本框是否为空。:检测文本框是否为空。(6)自定义过程)自定义过程checkRepeat:检测:检测“用户名用户名”是否重复。是否重复。(7)自定义过程)自定义过程insertRecord:新增用户时执行一系列操作。:新增用户时执行一系列操作。(8)自定义过程)自定义过程editRecord():修改用户数据时执行一系列操作。:修改用户数据时执行一系列操作。主要接口与属性简述主要接口与属性简述(9)自定义过程)自定义过程btnEnabledSet:设置按钮的:设置按钮的Enabled属性。属性。(10)自定义过程
6、)自定义过程controlEnabledSet:设置控件的:设置控件的ReadOnly属性或者属性或者Enabled属性。属性。(11)方法)方法getUserInfoAll:获取:获取“用户信息用户信息”数据表中的全部记录数据。数据表中的全部记录数据。(12)方法)方法getUserInfoByUserName:获取:获取“用户信息用户信息”数据表中指定数据表中指定“用户用户名名”的记录数据。的记录数据。(13)方法)方法getUserType:获取:获取“用户类型用户类型”数据表中所有的数据表中所有的“用户类型名称用户类型名称”。(14)方法)方法userAdd:向:向“用户信息用户信息”
7、数据表中添加新的用户数据。数据表中添加新的用户数据。(15)方法)方法userInfoEdit:修改指定:修改指定“用户名用户名”的数据。的数据。(16)方法)方法userDelete:删除:删除“用户信息用户信息”数据表指定数据表指定“用户名用户名”的记录数据的记录数据【任务完成示范【任务完成示范】 【用户管理】业务需求建模【用户管理】业务需求建模3.13.1 建立数据表建立数据表3.23.2 设计【用户管理】模块多层架构设计【用户管理】模块多层架构3.33.3 创建类创建类3.43.4 设计【用户管理】应用程序界面设计【用户管理】应用程序界面3.53.5 编写【用户管理】窗体程序代码编写【
8、用户管理】窗体程序代码3.63.6 测试【用户管理】程序测试【用户管理】程序3.73.71绘制绘制“用户管理用户管理”模块的用例模块的用例图图2绘制绘制“数据库操作类数据库操作类”的类图的类图3绘制绘制“用户类用户类”的类图的类图4绘制绘制“用户管理界面类用户管理界面类”的类的类图图5绘制绘制“浏览用户信息浏览用户信息”操作的操作的顺序图顺序图6绘制绘制“添加新用户添加新用户”操作的顺操作的顺序图序图7绘制绘制“修改用户信息修改用户信息”操作的操作的顺序图顺序图8绘制绘制“删除用户删除用户”操作的顺序操作的顺序图图打开打开SQL Server 2000或者或者SQL Server 2005企业
9、管理器,在数据库企业管理器,在数据库“bookData”中创建一个中创建一个“用户类型用户类型”数据表,该数据数据表,该数据表的结构信息如表表的结构信息如表3-3所示,该数据表的记所示,该数据表的记录示例如表录示例如表3-4所示。所示。表表3-3 “用户类型用户类型”数据表的结构信息数据表的结构信息列列 名名数据类型数据类型长长 度度允许空允许空是否为主键是否为主键字段值是否自动字段值是否自动递增递增用户类型编号用户类型编号int4不允许不允许是是是是用户类型名称用户类型名称varchar20不允许不允许否否表表3-4 “用户类型用户类型”数据表的记录示例数据表的记录示例用户类型编号用户类型编
10、号用户类型名称用户类型名称0系统管理员系统管理员1图书管理员图书管理员2图书借阅员图书借阅员3普通用户普通用户“用户管理用户管理”模块采用多层架构设计,模块采用多层架构设计,其逻辑结构如图其逻辑结构如图3-9所示。所示。图图3-9“用户管理用户管理”模块的多层架构模块的多层架构1创建应用程序解决方案创建应用程序解决方案(1)启动)启动Microsoft Visual Studio.NET 2003,显示系统开发环,显示系统开发环境。境。(2)参照第)参照第2章介绍的方法,新建一章介绍的方法,新建一个空白解决方案。个空白解决方案。2创建数据库访问类库创建数据库访问类库参照第参照第2章介绍的方法,
11、创建一个数章介绍的方法,创建一个数据库访问类库据库访问类库“bookDB”。3创建业务处理类库创建业务处理类库参照第参照第2章介绍的方法,创建一个业章介绍的方法,创建一个业务处理类库务处理类库“bookAPP”。4创建应用程序项目创建应用程序项目参照第参照第2章介绍的方法,创建一个应章介绍的方法,创建一个应用程序项目用程序项目“bookUI”。3.4.1完善已有的数据库操作完善已有的数据库操作类类1添加已有的数据库操作类添加已有的数据库操作类(bookDbClass)将第将第2章所创建的数据库操作类章所创建的数据库操作类“bookDbClass”添加到类库添加到类库“bookDB”中。中。2在
12、数据库操作类在数据库操作类(bookDbClass)中添加新的方法)中添加新的方法(1)数据库操作类)数据库操作类bookDbClass中中新添加方法的功能说明。新添加方法的功能说明。(2)类)类bookDbClass中新添加方法中新添加方法的代码编写。的代码编写。3.4.2创建业务处理类创建业务处理类(userClass)1业务处理类(业务处理类(userClass)各)各个成员的功能说明个成员的功能说明根据业务处理类的模型创建业务处理根据业务处理类的模型创建业务处理类(类(userClass),业务处理类(),业务处理类(userClass)各个成员的功能如表各个成员的功能如表3-11所示
13、。所示。表表3-11 userClass各个成员的功能各个成员的功能成成 员员 名名 称称成成 员员 类类 型型功功 能能 说说 明明bookDbObj变量变量bookDB类库中类库中bookDbClass类的对象类的对象getUserInfoAll方法方法获取获取“用户信息用户信息”数据表中的全部记数据表中的全部记录数据录数据getUserInfoByUserName方法方法获取获取“用户信息用户信息”数据表中指定数据表中指定“用用户名户名”的记录数据,该方法包含一个的记录数据,该方法包含一个参数,用于传递参数,用于传递“用户名用户名”getUserType方法方法获取获取“用户类型用户类型
14、”数据表中所有的数据表中所有的“用户类型名称用户类型名称”getPermissionItem方法方法获取获取“用户权限选项用户权限选项”数据表中的全数据表中的全部部“权限选项名称权限选项名称”getUserPermission方法方法从从“用户权限用户权限”数据表中获取指定数据表中获取指定“用户类型名称用户类型名称”所拥有的所拥有的“用户权用户权限选项限选项”,该方法包含一个参数,用,该方法包含一个参数,用于传递于传递“用户类型名称用户类型名称”成成 员员 名名 称称成成 员员 类类 型型功功 能能 说说 明明userAdd方法方法向向“用户信息用户信息”数据表中添加新的用户数数据表中添加新的
15、用户数据,该方法包含多个参数,用于传递新增据,该方法包含多个参数,用于传递新增用户的字段值用户的字段值userInfoEdit方法方法修改指定修改指定“用户名用户名”的数据,该方法包含的数据,该方法包含多个参数,用于传递被修改用户的字段值多个参数,用于传递被修改用户的字段值userDelete方法方法删除删除“用户信息用户信息”数据表指定数据表指定“用户名用户名”的记录数据,该方法包含一个参数,用于的记录数据,该方法包含一个参数,用于传递被删除用户的传递被删除用户的“用户编号用户编号”userPasswordEdit方法方法修改修改“用户信息用户信息”数据表中指定用户的密数据表中指定用户的密码
16、,该方法包含两个参数,分别用于传递码,该方法包含两个参数,分别用于传递待修改密码的待修改密码的“用户编号用户编号”和新和新“密码密码”userPermissionAdd方法方法向向“用户权限用户权限”数据表中添加对应数据表中添加对应“用户用户类型类型”的的“用户权限选项用户权限选项”,该方法包含,该方法包含两个参数,分别用于传递两个参数,分别用于传递“用户类型名称用户类型名称”和和“用户权限选项用户权限选项”userPermissionDelete方法方法删除删除“用户权限用户权限”数据表中对应数据表中对应“用户类用户类型型”的的“用户权限选项用户权限选项”,该方法包含一,该方法包含一个参数,
17、用于传递个参数,用于传递“用户类型名称用户类型名称”2添加引用添加引用参照参照2.4.2节的方法将类库节的方法将类库bookDB添添加到类库加到类库bookAPP的引用中。的引用中。3添加类添加类参照参照2.4.1小节中的方法,在小节中的方法,在bookAPP类库中添加一个类类库中添加一个类“userClass.vb”。4业务处理类(业务处理类(userClass)各)各个成员的代码编写个成员的代码编写双击类文件双击类文件“userClass.vb”,打开代,打开代码编辑器窗口,在该窗口中编写程序代码。码编辑器窗口,在该窗口中编写程序代码。(1)声明)声明bookDB类库中类库中bookDbC
18、lass类的对象。对象类的对象。对象bookDbObj在在userClass类的多个方法类的多个方法中需要使用,所以将其定义为窗体级中需要使用,所以将其定义为窗体级局部变量。局部变量。(2)编写方法)编写方法getUserInfoAll的程序的程序代码。代码。(3)编写方法)编写方法getUserInfoByUserName的程序代码。的程序代码。(4)编写方法)编写方法getUserType的程序代的程序代码。码。(5)编写方法)编写方法getPermissionItem的的程序代码。程序代码。(6)编写方法)编写方法getUserPermission的的程序代码。程序代码。(7)编写方法)
19、编写方法userAdd的程序代码。的程序代码。(8)编写方法)编写方法userInfoEdit的程序代的程序代码。码。(9)编写方法)编写方法userDelete的程序代码。的程序代码。(10)编写方法)编写方法userPasswordEdit的的程序代码。程序代码。(11)编写方法)编写方法userPermissionAdd的程序代码。的程序代码。(12)编写方法)编写方法userPermissionDelete的程序代码。的程序代码。1添加添加Windows窗体窗体参照参照2.5节的方法在节的方法在bookUI类库中添类库中添加一个新的加一个新的Windows窗体。窗体。2设计窗体外观设计
20、窗体外观在窗体中添加在窗体中添加2个个GroupBox控件、控件、1个个Panel控件、控件、1个个ListView控件、控件、4个个Label控件、控件、2个个TextBox控件、控件、1个个ComboBox控控件、件、1个个DataTimePicker控件、控件、2个个RadioButton控件和控件和6个个Button控件,调整控件,调整各个控件的大小与位置,窗体的外观如图各个控件的大小与位置,窗体的外观如图3-10所示。所示。图图3-10【用户管理】窗体的外观设计【用户管理】窗体的外观设计3设置窗体与控件的属性设置窗体与控件的属性1添加引用添加引用参照参照2.4.2小节的方法将类库小节
21、的方法将类库bookAPP添加到类库添加到类库bookUI的引用中。的引用中。2声明窗体级变量声明窗体级变量各个窗体级变量的声明如表各个窗体级变量的声明如表3-24所示,所示,其中对象变量其中对象变量userObj是是bookAPP类库中类库中userClass类的对象,类的对象,strFlag用于识别用于识别“新新增用户增用户”和和“修改用户数据修改用户数据”,currentRow用于记录用于记录ListView控件当前选控件当前选中行的行号。中行的行号。3编写【用户管理】窗体编写【用户管理】窗体Load事件过程的程序代码事件过程的程序代码4编写自定义过程编写自定义过程initialize的
22、程的程序代码序代码5编写自定义过程编写自定义过程controlEnabledSet的程序代码的程序代码6编写自定义过程编写自定义过程btnEnabledSet的程序代码的程序代码7编写自定义过程编写自定义过程listViewUserSet的程序代码的程序代码8编写自定义过程编写自定义过程listViewItemSelect的程序代码的程序代码9编写编写listViewUser控件控件Click事事件过程的程序代码件过程的程序代码10编写【添加】按钮编写【添加】按钮Click事件事件过程的程序代码过程的程序代码11编写【修改】按钮编写【修改】按钮Click事件事件过程的程序代码过程的程序代码12
23、编写【删除】按钮编写【删除】按钮Click事件事件过程的程序代码过程的程序代码13编写【保存】按钮编写【保存】按钮Click事件事件过程的程序代码过程的程序代码14编写自定义过程编写自定义过程insertRecord的程序代码的程序代码15编写自定义过程编写自定义过程editRecord的程序代码的程序代码16编写【取消】按钮编写【取消】按钮Click事件事件过程的程序代码过程的程序代码17编写自定义过程编写自定义过程checkEmpty的程序代码的程序代码18编写自定义过程编写自定义过程checkRepeat的程序代码的程序代码19编写【退出】按钮编写【退出】按钮Click事件事件过程的程序
24、代码过程的程序代码20编写控件编写控件KeyDown事件过程事件过程的程序代码的程序代码3.7.1设置启动项目和启动对设置启动项目和启动对象象1设置解决方案的启动项目设置解决方案的启动项目参照参照2.7.1小节的方法将小节的方法将“bookUI”设设置为启动项目。置为启动项目。2设置启动对象设置启动对象参照参照2.7.1小节的方法将小节的方法将“usersManage”设置为启动对象。设置为启动对象。3.7.2用户界面测试用户界面测试(1)测试内容:用户界面的视觉效)测试内容:用户界面的视觉效果和易用性;控件状态、位置及内容果和易用性;控件状态、位置及内容确认;光标移动顺序。确认;光标移动顺序
25、。(2)确认方法:屏幕拷贝、目测,)确认方法:屏幕拷贝、目测,如图如图3-11所示。所示。(3)测试结论:合格。)测试结论:合格。3.7.3功能测试功能测试功能测试的目的是测试任务卡中的功功能测试的目的是测试任务卡中的功能要求是否能够实现,同时测试【用户管能要求是否能够实现,同时测试【用户管理】模块的容错能力。理】模块的容错能力。1准备测试用例准备测试用例准备的测试用例如表准备的测试用例如表3-41所示。所示。表表3-41 【用户管理】模块的测试用例【用户管理】模块的测试用例序序号号测测 试试 数数 据据预预 期期 结结 果果用户名用户名密密 码码用户类用户类型型启用日启用日期期是否是否停用停
26、用1夏天夏天123456图书借图书借阅员阅员2008-08-26True新增用户成功,出现提新增用户成功,出现提示信息示信息2江奥江奥123456图书管图书管理员理员2008-08-26True连续新增用户成功,出连续新增用户成功,出现提示信息现提示信息3测试用测试用户户888系统管系统管理员理员2008-08-08True修改用户成功,出现提修改用户成功,出现提示信息示信息4赵晶赵晶666普通用普通用户户2008-08-26True连续新增用户成功,出连续新增用户成功,出现提示信息现提示信息5赵晶赵晶666普通用普通用户户2008-08-26True删除用户成功,出现提删除用户成功,出现提示
27、信息示信息2测试在测试在“用户列表用户列表”中选择一中选择一个用户个用户(1)测试内容:在)测试内容:在“用户列表用户列表”中中单击选择一个用户,右侧的控件中对单击选择一个用户,右侧的控件中对应显示相应行的用户数据。应显示相应行的用户数据。(2)确认方法:屏幕拷贝、目测。)确认方法:屏幕拷贝、目测。(3)测试过程。在)测试过程。在ListView控件中控件中单击选择第单击选择第4行,右侧的控件中对应行,右侧的控件中对应显示第显示第4行的用户数据,如图行的用户数据,如图3-12所所示。示。(4)测试结论:合格。)测试结论:合格。 图图3-12测试在测试在“用户列表用户列表”中选择一个用户中选择一
28、个用户3测试新增用户测试新增用户(1)测试内容:连续新增两个新用)测试内容:连续新增两个新用户。户。(2)确认方法:屏幕拷贝、目测。)确认方法:屏幕拷贝、目测。(3)测试过程。在【用户管理】窗)测试过程。在【用户管理】窗体中单击【添加】按钮,然后在右体中单击【添加】按钮,然后在右侧的控件中输入一个新用户的数据,侧的控件中输入一个新用户的数据,如图如图3-13所示。所示。 图图3-13测试输入新的用户数据测试输入新的用户数据 新用户的数据输入完毕,单击【保新用户的数据输入完毕,单击【保存】按钮,出现如图存】按钮,出现如图3-14所示的提所示的提示信息对话框,在该对话框中单击示信息对话框,在该对话
29、框中单击【确定】按钮,一个新用户便新增【确定】按钮,一个新用户便新增成功,新增结果如图成功,新增结果如图3-15所示。所示。图图3-14成功新增一个用户的提示信息成功新增一个用户的提示信息 图图3-15【保存】新增的用户数据【保存】新增的用户数据(4)测试结论:合格。)测试结论:合格。4测试修改用户数据测试修改用户数据(1)测试内容:修改已有的用户数)测试内容:修改已有的用户数据。据。(2)确认方法:屏幕拷贝、目测。)确认方法:屏幕拷贝、目测。(3)测试过程。在【用户管理】窗)测试过程。在【用户管理】窗体中,单击选择体中,单击选择ListView控件的第控件的第5行,然后单击【修改】按钮,在右
30、侧行,然后单击【修改】按钮,在右侧对应的控件中修改用户数据。修改完对应的控件中修改用户数据。修改完毕,单击【保存】按钮,显示成功修毕,单击【保存】按钮,显示成功修改的提示信息。改的提示信息。(4)测试结论:合格。)测试结论:合格。5测试删除用户测试删除用户(1)测试内容:删除已有的用户。)测试内容:删除已有的用户。(2)确认方法:屏幕拷贝、目测。)确认方法:屏幕拷贝、目测。(3)测试过程。首先在【用户管理】)测试过程。首先在【用户管理】窗体中添加一个新用户,然后在窗体中添加一个新用户,然后在ListView控件中单击选择刚添加的新控件中单击选择刚添加的新用户,单击【删除】按钮,显示成功用户,单
31、击【删除】按钮,显示成功删除的提示信息。删除的提示信息。(4)测试结论:合格。)测试结论:合格。【课堂同步实践【课堂同步实践】本章提供两个课堂同步实践任务,各本章提供两个课堂同步实践任务,各项目小组从两个任务中选择一个任务完成。项目小组从两个任务中选择一个任务完成。【任务【任务1】1设计任务卡设计任务卡课堂同步实践的任务卡如表课堂同步实践的任务卡如表3-43所示。所示。表表3-43 课堂同步实践的任务卡课堂同步实践的任务卡模模 块块 编编 号号003-2模模 块块 名名 称称用户密码修改用户密码修改计划工时计划工时2所属系统名称所属系统名称图书管理系统图书管理系统窗体名称窗体名称userPas
32、swordEdit业务处理层的类名称业务处理层的类名称userClass数据表名称数据表名称用户信息用户信息数据操作层的类名称数据操作层的类名称bookDbClass模块主要功能简述模块主要功能简述(1)对于系统管理员,可以修改所有用户的密码;对于其他类型的用户,只)对于系统管理员,可以修改所有用户的密码;对于其他类型的用户,只能修改自己的密码能修改自己的密码(2)修改密码时,用户必须两次输入密码,并且两次输入的密码必须相同,)修改密码时,用户必须两次输入密码,并且两次输入的密码必须相同,否则不能成功修改否则不能成功修改主要接口与属性简述主要接口与属性简述(1)getUserInfoAll方法
33、:返回方法:返回“用户信息用户信息”数据表中所有的数据数据表中所有的数据(2)getUserInfoByUserName方法:根据指定的方法:根据指定的“用户名用户名”返回相应用户数返回相应用户数据据(3)userPasswordEdit方法:修改指定用户的密码方法:修改指定用户的密码【任务【任务2】1设计任务卡设计任务卡课堂同步实践的任务卡如表课堂同步实践的任务卡如表3-50所示。所示。表表3-50 课堂同步实践的任务卡课堂同步实践的任务卡模模 块块 编编 号号003-3模模 块块 名名 称称用户权限管理用户权限管理计划工时计划工时2所属系统名称所属系统名称图书管理系统图书管理系统窗体名称窗
34、体名称userPermission业务处理层的类名称业务处理层的类名称userClass数据表名称数据表名称用户类型、用户用户类型、用户权限、用户权限权限、用户权限选项选项数据操作层的类名称数据操作层的类名称bookDbClass模块主要功能简述模块主要功能简述(1)在窗体的左侧显示所有的用户类型)在窗体的左侧显示所有的用户类型(2)在窗体的右侧显示所有的用户权限选项)在窗体的右侧显示所有的用户权限选项(3)根据不同的用户类型,显示其拥有的权限)根据不同的用户类型,显示其拥有的权限(4)对不同用户类型,设置其拥有的权限,并且自动保存到)对不同用户类型,设置其拥有的权限,并且自动保存到“用户权限
35、用户权限”数据表中数据表中续表续表主要接口与属性简述主要接口与属性简述(1)自定义过程)自定义过程getUserType:获取所有的:获取所有的“用户类型用户类型”数据数据(2)自定义过程)自定义过程getPermissionItem:获取所有的:获取所有的“用户权限选项用户权限选项”数据数据(3)自定义过程)自定义过程setUserPermission:显示对应:显示对应“用户类型用户类型”所拥有所拥有的的“用户权限用户权限”(4)方法)方法userPermissionDelete:删除某一个:删除某一个“用户类型用户类型”所拥有所拥有的的“用户权限用户权限”数据数据(5)方法)方法userPermissionAdd:添加某一个:添加某一个“用户类型用户类型”的的“用户权用户权限限”数据数据在线教务辅导网:在线教务辅导网:http:/ 更多课程配套课件资源请访问在线教务辅导网更多课程配套课件资源请访问在线教务辅导网馋死PPT研究院P O W E R P O I N T A C A D E M Y