安全管理工作制度-net
为加强公司的安全生产工作,使之规范化、制度化,根据有关规定,特订本制度。
一、安全生产负责制度
1、总经理对公司安全生产工作负总责任。
2、总经助理对公司安全生产工作负具体责任。
3、各分厂长为本厂安全责任第一责任人,对本厂所管辖班段安全生产工作负管理责任。
4、各班段长对本班段的安全生产工作负责。
二、安全生产会议制度
1、办公室每季度召开一次安全生产会议,特殊情况随时召开,会议由办公室主持。
2、会议内容:听取各分厂长对每季度安全生产情况汇报,研究分析公司安全生产问题,总结和布置公司安全生产工作,通报安全生产情况。
3、参加会议人员:公司各部成员及各分厂长。
三、安全生产通报制度
1、办公室每月就公司的安全生产工作通过员工会议进行通报。
2、各分厂长每月末 3 日内书面向办公室报送本分厂的安全生产工作情况。内容包括: 当月安全生产情况,安全隐患及整改措施以及下月的安全工作安排。
3、发生紧急、特殊情况及出现事件时,应随时通报。
四、安全生产督促检查制度、上级有关部门关于安全生产的文件及有关会议精神的贯彻落实情况。2、有关安全生产法律、法规、政策的执行情况。、事故隐患的治理情况。、事故调查处理结案工作和对事故责任人员处分的落实情况。
5、办公室督查工作结束后,对督查的结果应写出督查报告,发各分厂并做好备案。
五、安全事故报告制度
1、各分厂对责任范围内发生安全事故,必须及时上报公司领导。
2、办公室在接到事故报告后立即组织事故调查,并在 24 小时内上报公司总经理。
3、对隐瞒不报谎报故意拖延不报造成严重后果的视情节轻重,追究责任人应负的责任。
六、事故现场抢救和调查制度
发生安全事故后,相关责任部门(分厂)在上报的同时,要立即组织现场抢救,办公室在 接到报告后,要立即进行事故调查。
七、事故责任追究制度
发生安全生产事故,按国家有关规定和“四不放过”原则(即事故原因不清不放过,事故 责任者没有追究处理不放过,事故责任者和应受教育没有受到教育不放过,没有采取防范 措施不放过)严肃查处事故责任,达到刑事责任的交由司法部门处理。同时对相关的责任 人也必须做出相应的处罚。2013年7月31日订
安全生产委员会主任职责
在总经理的领导下对公司安全生产负责:
1、在计划、布置、检查、总结、评比生产工作的同时,计划、布置、检查、总结、评比安全工作;监督检查安全生产各项规章制度执行情况,及时纠正失职和违章行为。
2、组织制订、修订安全生产规章制度,安全技术规程和编制安全技术措施计划,并认真组织实施。
3、组织公司范围内的安全生产大检查,督促落实重大事故隐患的整改。
4、组织安全生产竞赛活动,总结推广安全生产工作的先进经验,奖励先进单位和个人。
5、负责分管部门的安全生产教育与考核工作。
6、负责组织事故分析调查处理,并及时向上级报告。
7、定期召开安全生产工作会议,分析安全生产动态,及时解决安全生产中存在的问题。
公司
2013年8月27
经理安全生产职责
项目经理对本部门安全生产全面负责:
1、保证国家安全生产法法律和企业规章制度在本部门贯彻执行,把安全生产工作列入 议事日程,做到“五同时”。
2、组织制订并实施本部门安全生产管理规定,安全技术操作规程和安全技术措施计划。
3、组织对新工人进行工地安全教育和班组安全教育,对职工进行经常性的安全思想、安全知识和安全技术教育。
4、组织项目部开展岗位技术练兵,并定期组织安全技术考核,组织并参加每周一次的班组安全活动,及时处理工人提出的意见。
5、组织项目部安全检查,落实隐患整改,保证生产设备、安全装备、消防设施、防护器材和急救器具等处于完好状态,并教育职工加强维护、正确使用
班组长安全职责
① 贯彻执行公司和分厂对安全生产的规定和要求,全面负责本班(工段)安全生产; ② 组织员工学习并贯彻执行公司、分厂各项安生产规章制度和安全操作规程,教育职工遵纪守法,制止违章行为;
③ 组织并参加安全活动,坚持班前讲安全、班中检查安全、班后总结安全。④ 负责对新工人(包括实习、代培人员)进行岗位安全教育;
⑤ 负责班组安全检查,发现不安全因素及时组织力量消除,并报告上级; ⑥ 发生事故立即报告,并组织抢救,保护好现场,做好详细记录;
⑦ 搞好生产设备、安全装置、消防设施、防护器材急救器具的检查维护工作,使其经常保持完好和正常运行,督促教育职工合理使用。
公司
2013年8月27日
开展公司安全隐患自查自纠工作方案
为做好安全生产事故隐患自查自纠工作,有效遏制生产安全事故发生,根据县安监局和有关工作部署以及安全生产事故隐患自查自纠工作的通知要求,制定如下实施方案。
一、健全落实公司安全隐患自查自纠工作制度
为扎实开展企业安全隐患自查自纠工作,增强工作的针对性和实效性,班组应当每天一排查,车间应当每周一排查,公司应当每月一排查。公司要建立事故隐患排查治理档案,由企管部庞聪聪负责书面记录备查,由每次组织排查的负责人签字,并上报隐患排查治理情况。
二、领导机构及职责
公司安全隐患自查自纠工作领导小组
组长:副组长:
成员:、领导小组下设办公室,办公室设在企管部
三、安全隐患自查自纠报告的内容
各分厂认真填写《安全隐患自查自纠报告表》,如实报告安全隐患自查自纠情况。
安全隐患自查自纠情况分析报告内容主要包括:安全隐患自查自纠的项目、数量,开展安全隐患自查自纠采取的措施,分厂安全生产现状分析等。填写上报的《安全隐患自查自纠报告表》情况分析报告必须由分厂主要负责人签字。
四、安全隐患自查自纠报告的时间安排
公司每季度对本单位安全隐患自查自纠情况进行统计汇总,填写《安全隐患自查自纠报告表》连同安全隐患自查自纠情况分析报告,每个季度的填报时间为每一个季度的第一个月10日前填报上一个季度企业自查自纠信息。
五、工作要求
各厂部领导要高度重视安全隐患自查自纠工作,认真组织开展隐患自查自纠活动,严格按照县安监局的规定要求,精心组织安全隐患排查治理,对排查出的安全隐患登记建档,并切实做到整改措施、责任、材料、时限和预案“五到位”,确保安全生产。
公司
2013年8月26日
大检查活动承诺书
安监局:
我作为保定圣雪绒羊绒制品公司安全管理委员会主任,对本公司安全生产负主要责任。
为贯彻落实县安捡局有关安全生产文件精神,做好我公司安全生产工作,防范各类事故的发生,现郑重承诺如下:
1、每月全公司安全隐患大检查一次,做到不留死角全覆盖,及时协调解决安全生产
中发现的各类问题。
2、建立健全事故隐患整改责任制,做到落实整改内容,落实整改措施,落实时间进
度,落实责任人。
3、建立安全生产台账,专门记录隐患排查、整改、复核、销号。
承诺人:
2013年8月26日
安全生产自查自纠活动承诺书
公司:
我作为公司分厂厂长,对本分厂安全生产负全部责任。
为贯彻落实县安捡局有关安全生产文件精神,做好我公司安全生产工作,防范各类事故在我分厂的发生,现向公司郑重承诺如下:
1、每月全厂安全隐患大检查一次,做到不留死角全覆盖,自觉接受公司的检查指导及时协调解决安全生产中发现的各类问题。
2、建立健全事故隐患整改责任制,做到对公司查出的问题隐患落实整改内容,落实整改措施,落实时间进度,落实责任人。
3、建立安全生产台账,责成专人负责,专门记录隐患排查、整改、复核、销号。
承诺人:
一系统需求分析
本系统应该是适应教务管理的综合性系统, 能适应当前以及以后在教学工作中对教师考核、职称评定、薪酬统计以及新专业申报和其他部门需要教师相关数据时提供具体数据的支持。学校的管理是一个不断摸索和发展的过程, 必须要适应学校当下的新环境。教学工作量统计的方法和一系列的系数随时都在变化, 所以系统中的系数能很直观、很方便地进行修改, 即使学校的管理和规章制度发生了变化, 也无须修改系统的源代码, 只要让老师能够很容易地修改公式和系数就可以。
二系统总体设计
1.软件系统的架构
整个系统是基于Internet的网络应用系统, 系统采用B/S模式为主、C/S为辅的结构。用户 (普通教师、系部管理员和系统管理员) 使用浏览器完成人机交互。
ASPX页面支持ASP.NET处理的WWW服务器, 共同完成与用户的接口以及各类信息的处理。根据系统的需要可以简单地分成三个层次:表示层、逻辑层、数据服务层。
表示层就是宏观看到的软件界面, 主要负责用户键盘和鼠标的基本输入, 不负责深层处理, 本系统用ASP.NET语言实现。
逻辑层是用户界面和数据服务器之间的一个桥梁, 可以按照用户在界面输入的信息生成SQL语句, 并把生成的SQL语句通过检索或更新数据库的返回结果返回给用户, 这一层通常以动态链接库的形式存在并注册到服务器的注册簿中, 它和客户端通信的接口符合某一特定的组件标准, 在本系统可以用任何支持这种标准的工具开发。
数据服务层主要是完成数据的存储和检索功能, 对WEB服务器对数据库服务器发出的请求给予响应, 实现用户对所需数据在数据库中查询的功能, 把查询的结果通过WEB服务器再反馈给用户。
2.功能模块的设计
系统的总体结构如图1 所示。
从图1 可以看出用户分为三类:普通教师、院系管理员、系统管理员。前两类用户的权限可以由系统管理员分配, 用户通过不同的身份登录实现相应的功能。下面介绍一下每类用户的基本权限和基本任务。 (1) 普通教师模块。普通教师模块主要的权限是可以通过自己的工号和密码查询自己本学期的课表, 包括理论课、实验、课程设计等课表。 (2) 院系管理员模块。各院系管理员主要的权限是可以通过系统管理员分配的账号和密码查询本院系所有教师的工作量情况, 还可以对院系所有教师的工作量做阶段性或是长期的汇总, 也可以根据学校有关的规定对教学工作量进行相应的修改和折算。 (3) 系统管理员模块。系统管理员是具有最高权限的用户, 不仅可以分配其他用户的基本权限, 还可以按照学校有关文件和规定对所有教职工的工作量进行相应的统计和修改, 主要用于对教职工的考评、职称评定和教检等。另外, 还要对数据进行备份和维护, 这项工作至关重要。
三系统数据库设计
1.系统数据库需求分析
数据库需求分析是系统开发的前期准备工作。这是收集学校教师基本情况及相关处理流程的阶段, 是非常重要的阶段, 为系统的下一步设计打下基础。
对学校中相关的部门和规章制度进行分析, 在对学校现状和系统功能的了解过程中确定用户的基本要求, 需求分析也包括数据及数据进行处理的需求, 其包括信息和处理需求两个方面:信息需求就是将来系统数据库中都要有哪些数据, 这些数据之间的关联和一些内容、结构的具体说明;处理需求是定义将来数据库中数据处理的操作功能, 包括运行环境、效率以及和数据之间的关系等。
根据现实情况对系统的需要, 数据库中的文件以学期为单位进行存储, 并且每个学年要存放在一个单独的文件夹中, 这是为了在进行考核和工作量统计时方便, 这也符合学校阶段性较强的特点。用户一般是查找或是审核一个学期的数据, 很少大范围地查询, 局部性特点较强。一些共享数据比较容易发生变化, 这种以学期为单位的存储形式对本系统很合适, 这样还可以减少数据冗余, 减少重复数据对服务器的影响。系统数据有以下几个部分:
第一, 核心数据。根据学校的基本情况和软件的基本需要, 理论教学工作量数据库字段有理论教师编号、年级编号等。实践教学工作量数据库字段主要有教师编号、教学周数、实践课程名称、教学地点、性质系数等。这两个数据库里包括学校所有的基础数据, 数据库中的一个序号与教师编号相对应, 并且这个序号是唯一的、不可重复的, 它还是进行搜索的关键字。如果一个老师带很多个逻辑班的课程, 那么在数据库中也有多个逻辑班记录, 合班教室上课的多个班级视为一个逻辑班。
第二, 共享数据。在系统里有很多数据是贯穿整个系统始末的, 教师数据库里有教师的唯一编码、教师姓名字段等。理论课程编号库里包括课程编号、名称和系数等字段, 学生人数数据库里包括班级、人数等字段。系编号库里包括系编号和名称等字段, 这些数据库里有系统的相关数据, 帮助完成教师工作量数据的录入和统计汇总工作。这里有一些数据不是绝对的, 是有可能随时发生变化的, 为防止数据错乱每个学期的数据都是单独保存。
第三, 统计汇总库。该数据库就是对之前收集整理的原始数据做一个分类汇总。汇总数据库包括教师个人的年度统计表、以系为单位的年度汇总表、以教研室为单位的学期年度统计表、兼职教师工作量统计表、选修课统计汇总表、以职称为单位的汇总表, 统计数据库主要是为了方便教务人员浏览查询和打印。
2.数据库逻辑结构设计
数据库逻辑结构主要是用户各种信息的一种体现形式, 这里包括许多数据库基本表和定义各种数据的一些属性。下面是数据库中一些用户信息属性的E-R图。
四系统功能模块设计
1.多功能查询模块
查询是用户使用频率最多的功能, 其模块设计好坏直接影响到整个系统的性能和系统用户的满意程度, 本系统采用的是多功能模块, 也是教师工作量统计系统中的主要组成部分。
多功能查询模块的基本思路是, 在关系数据库中对数据库的操作是通过查询语言进行的, 查询是由SELECT语句完成的, 首先在数据库表单中放置查询控件, 然后再设置一个命名为query的字符串变量, 当系统中一个用户要查询某一信息的时候, 系统会将用户所提供的查询条件自动转换为符合程序语法的比较关系描述语句, 并将其写入到query字符串变量的尾部, 组合字符并且或者生产AND和OR组合关系。用户查询条件不断的累积, query字符串变量的尾部不断地写入一直到用户点击“确定”按钮, 数据库会把命名为“query”的字符串变量作为SELECT的WHERE (查询条件) 子语句部分, 从而达到多功能查询的目的并且计算教学工作量的总和, 多功能查询效果如图9 所示。
2.动态计算教师工作量模块
学校在教学管理过程中, 要对老师 (包括实训教师) 在教学、实训、课程设计、成人教育、学术理论和实验室操作等数据进行归纳和统计。这些数据在进行统计的过程中大致分为两种, 一种是根据学校文件要求进行的数据统计, 这部分数据主要用于学校的内部数据;另一个就是根据学校自身对某一学科或是班级的具体要求并结合教务处的相关文件计算教师工作量, 我们学校大专和中专的相关费用有一定的区别, 这部分数据主要用于计算教师的课时费和各种奖金的年终发放。学校在教学过程中会有很多不可预料的因素, 相关的规定和标准往往要做出一定的调整, 在计算工作量的时候方法也会比较复杂。
考虑到学校的基本情况, 首先按照教务处相关文件进行理论教学工作量的统计, 系统录入界面如图10, 系统内的默认公式和系数是根据学校文件完成的, 所以只要根据数据库存储的数据就可以直接计算, 以课程的理论教学工作量计算为基础, 系统可根据每个教师的基本情况计算出一个学期或学年的工作量汇总, 系统界面见图11。
工作量计算界面图10 所示的课程公式栏, 本栏的公式在按照学校相关文件计算工作量的时候是锁定的, 呈现灰色, 处于保护状态, 只要把光标移到此处双击就可以进行修改公式及参数。如果系统使用常规的输入公式的方法, 对于没有编程基础的人员来说是很困难的, 所以系统采用VFP独有的宏替换方法以完成动态公式的计算。
例如:现在我们给系统中的变量赋值A1=10, R1=1.5 , R2 =0 , R3 =0.5 , L1 =0.45 , 公式为W1 =A1* (R1+R2+R3) * L1, 计算过程是:系统默认使用一个命名为C_GS的变量即C_GS=W1=A1* (R1+R2+R3) *L1, 然后系统执行VF宏替换命令&C_GS, 宏替换以C_GS命名的字符串作为命令执行即执行W1=A1* (R1+R2+R3) *L1 公式组, 其执行结果为C_GS= W1=16.96。
五小结
在计算机网络飞速发展的今天, 教师工作量管理工作也要不断地适应现代化发展的步伐。利用现代化技术进行管理已经成为整个大中专院校乃至整个教育体系中急需解决的课题之一。
该系统经过一段时间的应用虽然不是尽善尽美, 但是就教师工作量统计工作效率已经比以往的方式有了明显的提高。也能对一些特殊的数据进行准确快速的统计, 系统中多功能模块也能很好地运行, 同时也可以按照学校的相关规定很方便灵活地改变相关的参数、公式。因为系统有独立的数据库和存储方式, 所以查询和统计也很方便并且对相关资料存储也能做到准确无误。
摘要:教务管理工作在高校工作中至关重要, 是学校管理工作的核心和基础, 而教师工作量的管理工作是教务管理工作中非常重要的一个部分。目前教学工作量管理工作以人工操作为主, 中间人为环节多, 很容易出现各种差错。在计算机网络飞速发展的今天, 教学工作量管理工作也需要不断适应现代化发展的步伐, 利用现代化技术进行管理势必成为高校教育急需解决的问题。通过查阅大量相关资料以及对一些高校进行充分调研后, 以.NET技术为平台, 研发适合高校教师工作量管理工作的系统, 规范各项考核制度, 减少中间环节, 提高精度和效度, 为管理和决策提供更科学的依据。
关键词:.NET技术,教师工作量,管理系统
参考文献
[1]郭翠英.C/S、B/S结构相结合的教师工作量统计系统设计[J].山西青年管理干部学院学报, 2006 (2) :95~97
[2]张春、徐雷等.远程教育教师工作量统计模块设计[J].实验室科学, 2007 (4)
[3]张浩军、黄力.教师工作量统计系统的设计与实现[J].郑州工业高等专科学校学报, 2000 (4) :10~13
关键词:.NET;ASP;安全;注入式攻击
中图分类号: TP393文献标识码: A文章编号:1009-3044(2007)15-30676-03
The Research on Security of E-commerce Information Management System Based on .NET
HUANG Su-tao1, SHI Lei2, SUN Xin2
(1.The No.2 People’s Hospital of Bengbu, Bengbu 233000,China; 2.Anhui University of Finance and Economics, Bengbu 233030,China)
Abstract:At present, ASP.NET have been widely used in developing E-commerce project,as a part of Microsoft .NET framework is a popular development tools. In this article, it analyzed the security problem in E-commerce Information Management System, and indicated the deficiency of Asp technique used for the development of this system. Sql injection attack was mainly studied in this thesis, the realizing details and key technique of security in ASP.NET application program security and implementing tactics also was studied.
Key words:.NET;Asp;security;SQL injection attack
1 电子商务网站开发工具的比较
1.1 传统的开发工具Asp的缺陷
ASP(Active Serve Pages)技术曾经在Web应用系统中得到了很好的应用,但一般只在小型的Web应用系统中采用这种方案。随着Internet/Intranet的飞速发展,ASP技术的缺陷也就开始逐渐暴露,主要表现在:开发过程繁琐;不支持编程语言的全部功能;执行效率、安全性和扩展性比较差;入侵者可以通过ASP方便地入侵WebServer、窃取服务器上的文件、捕获Web数据库等系统的用户口令,甚至恶意删除服务器上的文件,造成系统损坏。
1.2 一种新的开发工具——ASP.NET
为了弥补以上ASP的一些缺点, 微软公司推出的一种Internet编程技术,即ASP.NET,它是Microsoft下一代.NET平台的动态网页技术。
1.2.1 ASP.NET的工作原理
ASP.NET是由支持它的服务器上的.NET Frame Work负责解释执行,当服务器接收到一个对某ASP+页面时,如果这是对该页面创建或修改后的第一次请求,. NET Frame Work就会把该页面中的程序语言内容先编译成MSIL( Microsoft Interme-diate Language),然后MSIL再被编译成机器码加以执行,最后将执行结果输出给浏览器。ASP+页面被编译成MSIL后,其执行代码以独立线程的方式一直存在于服务器内存中。以后对ASP+页面提出请求时,不需要重新编译,直到该页面被修改或Web应用程序重启动。
1.2.2 ASP.NET的优势
尽管客观上讲ASP.NET是ASP的升级版本,但是ASP.NET却不是ASP版本的简单升级,它所具有asp所不具有的优势,主要表现在:ASP. NET可以支持VB .C # JavaScript以及可以编译成MSIL的程序语言,真正提供了中层语音执行结构,允许各种语言的使用;执行速度较快,整体比较如下:ASP.NET网页第二次被浏览速度>ASP网页速度>ASP.NET网页第一次被浏览速度;ASP. NET通过ADO.NET技术可以访问数据库系统,ADO.NET提供的Data Grid等数据库元件可以直接和数据库联系,把数据库中的内容显示出来;ASP.NET中还引入了一种真正的组件模式,通过这种服务器端的控制以及事件触发,可以感觉到好像是在操作VB中“FORM”,这种ASP+中的新组件控制是宣告性质的,因此实际上只需写很少的代码,并且在很多情况下,可以完全不写任何代码。
此外,在服务器端控制和开发调试工具也有ASP所无法比拟的优点。
2 基于.net的电子商务网站的安全性分析
在众多的电子商务系统中,本文以网上书店系统为例,分析其中存在的安全性问题,这些安全性问题主要可以归纳:信息窃取,篡改参数,SQL注入式攻击。
2.1 信息窃取
客户在购买书籍之前肯定要根据网站要求填写一些相关信息(比如:详细地址,联系方式等),完成注册过程,在购买过程中也存在一些与数据和信息有联系的活动的发生。在ASP..NET应用中,几乎所有HTML页面的__VIEWSTATE隐藏域中都可以找到有关应用的信息,默认情况下,__VIEWSTATE数据将包含:(2)来自页面控件的动态数据。(2)开发者在VIEWSTATE中显式保存的数据。(3)上述数据的密码签字。由于__VIEWSTATE是BASE编码的, 所以常常被忽略, 但黑客可以方便地解码BASE64数据, 用不着花什么力气就可以得到__VIEWSTATE提供的详细资料。一旦这些数据被窃取,攻击者很有可能利用这些数据来从事一些非法活动。
2.2 篡改参数
用户输入的主要来源是HTML表单中提交的参数, 如果不能严格地验证这些参数的合法性,就有可能危及服务器的安全。下面的C#代码查询后端SQL SERVER数据库,假设ueser和password变量的值直接取自用户输入:
sql data Adapter my_query=new sql data adapter("select*from accounts where acc_user= ‘"+user+"’and acc_password='"+password+” ’,the_connection);从表面上看,这几行代码毫无问题,实际上却可能引来SQL注入式攻击。攻击者只要在user输入域中输入“OR 1=1”, 就可以顺利登录系统, 或者只要在查询之后加上适当的调用,就可以执行任意Shell命令:EXEC maser.xp_cmd shell(’shell command here’);
2.3 SQL注入式攻击
所谓SQL注入式攻击就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容被直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
常见的SQL注入式攻击过程类包括:某个ASP. NET Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码;登录页面中输入的内容将直接用来构造动态的SQL命令,或者直接用作存储过程的参数;服务器执行查询或存储过程,将用户输入的身份信息和服务器中保存的身份信息进行对比;由于SQL命令实际上已被注入式攻击修改,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。如果攻击者知道应用会将表单中输入的内容直接用于验证身份的查询,他就会尝试输入某些特殊的SQL字符串,篡改查询来改变其原来的功能,欺骗系统授予访问权限。系统环境不同,攻击者可能造成的损害也不同,这主要由应用访问数据库的安全权限决定。如果用户的账户具有管理员或其他比较高级的权限,攻击者就可能对数据库的表执行各种他想要做的操作,包括添加、删除或更新数据,甚至可能直接删除表。
3 Asp.net的安全技术在电子商务系统中的实现策略
3.1 Asp.net安全性的实现基础
一般包括:身份验证、授权和模拟等。身份验证是从客户端获取标识凭据,如用户名和密码,并验证那些凭据的过程。在身份得到验证后,授权进程将确定该身份是否可以访问给定资源。授权是确定是否应该授予某个标识对给定资源请求的访问权限类型。有两种基本方式来授予对给定资源的访问权限:文件授权和URI授权。
不论何种情况,如果启用了模拟,则 ASP.NET应用程序会模拟所收到的任何标记。当前模拟客户的ASP.NET应用程序依赖于NTFS目录和文件中的设置来允许客户获得访问权限或拒绝其访问,所以需要将应用程序文件所在磁盘的文件格式转化为NTFS,以便可以设置访问权限。
3.2 实现ASP. NE T的安全性的策略
ASP.NET 事实上是与 IIS 集成在一起实现安全管理的,如果在局域网内部,我们更适合选择使用IIS的集成验证方法.而如果在Internet上,IIS提供的安全性认证方式可能不能完全满足我们的要求,这时候我们通常选择自己的认证方式,如使用表单认证等.ASP.NET为我们提供了这些认证的基础设施(如Form Authentication, Passport Authentication 等等),使我们开发起来更加高效. 同时ASP.NET 的工作进程 ASPNET_WP.EXE 的运行模式使 Web服务器更加安全。
3.2.1 考虑使用Window身份验证
若用户账户是存储在外部数据库中,而不是存储在Windows NT域数据库或Active Directory中;需要支持通过Intranet进行身份验证。客户端使用Netscape Navigator或其他非Microsoft浏览器;需要获得客户明文密码;及其他考虑.一般不应考虑使用集成Windows身份验证.另外,选择集成Windows身份验证时,还应考虑以下问题:NTLM和Kerberos安全级别;代理问题:Internet使用;性能可伸缩性。
3.2.2 考虑使用Passport身份验证
Passport不仅提供身份验证服务,还提供包括配置文件管理和采购服务在内的其他服务.站点要与其他启用Passport的站点结合使用,同时您希望访问这些站点的用户能够进行单一登录,不想维护用户名和密码数据库都应考虑使用Passport 身份验证. 而如果希望使用已经存储在自己的数据库或 Active Directory 中的用户名和密码;(尽管有可能使用额外的代码将 Passport ID映射为用户账户);客户端是通过编程来访问站点的其他计算机;其他考虑等不应使用Passport身份验证。
3.2.3 考虑使用窗体的 (Cookie) 身份验证
使用这个提供程序会导致使用客户端重定向功能将未经身份验证的请求重定向到一个指定的 HTML 窗体。然后用户可以提供登录凭据,再将窗体回发给服务器。如果应用程序对该请求进行了身份验证(使用应用程序特定的逻辑),则 ASP.NET 将发出一个 cookie,其中包含凭据或用于再次获得客户端身份的关键字。以后发出的请求在请求头中将带有该 cookie,这意味着以后不需要再进行手动身份验证了。可以对照不同的来源(如,SQL 数据库或 Microsoft Exchange 目录)对这些凭据做自定义检查。此身份验证模块通常在您想将一个登录页面显示给用户的时候使用。
3.2.4 考虑使用证书身份验证情况
如果所保护的数据非常敏感,需要非常安全的解决方案,需要互相身份验证。希望第三方能够管理服务器和证书拥有者之间的关系,希望实现无缝的客户端交互,例如自动B2B交易。需要考虑使用证书身份验证.以下情况下,不应考虑使用证书身份验证:发布和管理客户端证书的成本超过了增加安全性所获得的价值;及其他考虑。
3.3 基于.NET的电子商务网站安全问题的解决方案
针对电子商务系统安全问题中所面临的信息窃取,篡改参数,注入式攻击等问题可采用以下的措施:
3.3.1 保护隐藏域的安全
针对黑客可以方便地解码BASE 64数据,得到-VIEWSTATE提供的详细资料,从而达到窃取用户资料的目的,我们有以下解决方案:
设置EnableViewStat MAC="true",启用--VIEWSTATE数据加密功能。然后,将 machine Key验证类型设置为DES,要求ASP.NET用 Triple DES对 称 加 密 算 法 加 密VIEWSTAT数据。
3.3.2 使用ASP.NET域验证器
用户输入的主要来源是HTML表单中提交的参数,如果不能严格验证这些参数的合法性,就有可能危及服务器的安全。域验证器是一种让ASP.NET开发者对域的值实施限制的机制,例如,限制用户输入的域值必须匹配特定的表达式。首先要禁止引号之类的特殊字符输入,更严格些,即限定输入域的内容必须属于某个合法字符的集合。
但是为每个输入域引入验证器还不能防范所有通过修改参数实施的攻击。在执行数值范围检查之时,还要指定正确的数据类型,也就是说,在使用ASP.NET的范围检查控件时,应当根据输入域要求的数据类型指定适当的Type属性,因为Type的默认值是String,要确保输入值确实是整数,正确的办法是将Type属性指定为Integer。
3.3.3 防止注入式攻击
针对注入式攻击,可以有如下的解决方案:
第一、对于动态构造SQL查询的场合,可以使用:替换单引号,防止攻击者修改SQL命令的含义;删除用户输入内容中的所有连字符,防止攻击者构造出类如“select* from Users where login="mas"and password=""之类的查询;对于用来执行查询的数据库账户,限制其权限。
第二、调用存储过程来执行所有的查询,使用Parameters集合。
SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击。此外,它还使得数据库权限可以限制到只允许特定的存储过程执行,所有的用户输入必须遵循被调用的存储过程的安全上下文,这样就很难再发生注入式攻击。如果使用了Parameters集合,则不管恶意用户输入了什么字符,所输入的内容都将作为文本进行处理;还可以实施类型检查和长度检查,超出范围的字符值将触发异常。
第三、限制表单或查询字符串输入的长度。
如果用户的登录名字最多只有10个字符,那么不要认可表单中输入的10个以上的字符,这将大大增加攻击者在SQL命令中插入有害代码的难度。
第四、检查用户输入的合法性,确信输入的内容只包含合法的数据。
数据检查应当在客户端和服务器端都执行一一之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。 在客户端,攻击者完全有可能获得网页的源代码,修改验证合法性的脚本(或者直接删除脚本),然后将非法内容通过修改后的表单提交给服务器。因此,要保证验证操作确实已经执行,唯一的办法就是在服务器端也执行验证。你可以使用许多内建的验证对象,例如Regular Expression Validator,它们能够自动生成验证用的客户端脚本,当然你也可以插入服务器端的方法调用。如果找不到现成的验证对象,可以通过Custom Validate:自己创建一个。
第五、将用户登录名称、密码等数据加密保存。
加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。 System .Web. Security. Forms Authentication类有一个 Hash Password F or S to ring InConfig File,非常适合于对输入数据进行消毒处理。
第六、检查提取数据的查询所返回的记录数量。
如果程序只要求返回一个记录,但实际返回的记录却超过一行,那就当作出错处理。
参考文献:
[1]AndersonR,FrancisB.ASP.NET1.0高级编程[M].北京:清华大学出版社,2002.
[2]WorleyS.ASP.NET技术内幕[M].[s.l.]: New Riders Publishing, 2001.
[3]林煌章. ASP.NET程式设计基础篇[M].美国:微软出版社,2001.
[4]陈英学. ASP.NET完全入门[M].重庆:重庆出版社,2001.
1. 业务需求系统分析,提出技术研究及可行性报告;
2. 结合需求设计高扩展性、高性能、安全、稳定、可靠的技术系统 ;
3. 可以通过配置实现业务需求的变化,跟踪并研究***并应用于产品 ;
4. 指导研发工程师的产品开发和技术研究工作,解决各类技术疑难问题,形成良好的研发氛围,提升团队整体技术水平。
岗位要求:
大专以上学历,40周岁以下
5年以上.NET开发经验,2年以上应用架构设计经验;
熟悉Asp.NetMVC 框架,熟练使用一种ORM框架, 如EntityFramework,NHibernate等;
熟悉领域编程,了解DDD开发模式,熟悉ABP框架;
有丰富的性能优化的经验;
教务管理系统为满足高校日益繁杂的教务工作,提升信息的流通速度,增 加师生间的沟通和交流,提高各个部门的工作效率而开发的管理信息系统。教务 信息管理系统是融合管理科学、信息科学、系统科学和网络技术为一体的综合性 先进管理手段。该系统是基于B/S(浏览器/服务器)模式的信息管理系统,选用
ASP.NET+SQL Server 2000数据库进行开发。全文设计开发的教务管理系统结
合了面向对象的编程思想,其开发主要包括后台数据库的建立和维护以及前端应 用程序的开发两个方面。通过系统实现,用户可以在网络环境下直接访问操作权 限范围内的各项信息。
在开发系统过程中,严格按照软件工程的开发理念,采用了基于先进的统 一建模语言.IdML的面向对象技术进行系统的分析与设计。UML是一种对面向 对象系统进行可视化、详细描述、构造和文档化的规范建模语言。特别是在统一 建模过程RUP出现后,UML的应用更加广泛。UML可以应用在软件工程的每 个阶段,本文使用Rational Rose 2003对UML中涉及到的视图进行建模。本文详细阐述了基于UML的面向对象的系统分析与设计、数据库设计以及 UML模型向关系数据库的映射方法。在数据库的需求分析中,使用Microsoft Visio进行E.R图的建模。在需求分析中,详细分析了系统所面向的用户对系统 的功能需求,基于此需求,确定参与者及参与者所感受的系统服务或功能单元,经过多次迭代和细化后建立需求模型,制品为用例图。在用例视图基础上,进入 系统分析阶段,识别系统全部的类,建立类图,并对每一个类判定其构造型,建 立系统分析阶段的静态模型。为了描述系统各对象在执行期间不同时间点是如何 动态交互的以及结果如何,建立系统分析阶段的动态模型,包括序列图和协作图。在系统设计阶段,对系统进行分层和刻画子系统,本文所论述的教务管理 系统共分为学生登录模块、教师登录模块、教务管理员登录模块和教材管理员登 录模块。其中教务管理员登录模块中,又分为学生信息管理、师资管理、网上选 课、工作量计算、教学计划管理等几个模块,是整个系统的开发重点。数据库设 计阶段,依据数据库三种模式之间的两种映射关系,将对象模型向数据库模式映 射,建立数据库模型。
本文建立了较为完整的UML模型,对各个开发过程中的分析与建模作了较 充分的阐述,为应用软件提供了清晰的解决方案,因而,本论文对使用UML进 行软件开发的读者具有一定得参考价值和实用价值。
关键词:教务管理系统;统一建模语言;面向对象;ASP.NET
The Des i gn and I mp I ementat i on of Educat i ona I Adm i n i st rat i on System Based on ASP.NET Abstract The educational implementation system is planed for the satisfaction of the increasingly complex educational administration work in tmiversity, for the promotion of the information circulative speed,for the increasing contact and communication between teachers and students,as well as for the improvement of working efficiency amony different branches.The educational administration system is such comprehensively advanced management methods as administrative science,information science,systematic science and network technique,all routed into one.
The system is established by the information administration。which is based on the B/S model,and selects the data base ofASP.NET+SQL.Server2000 to apply.Focus of the thesis is to design the educational administration system,and employs the typical administrative system by the theory of objects·oriented.The development includes two aspects:the establishment and reservation of the backstage data base;the development of front applied programs.By achieving this system,users can directly visit all kinds of information、析m in the authority of operation under the netwok environment.
During the process of development,the thesis bases strictly on the concept of software project,and makes systematic analysis and design,aimed the technology of directed objects on UML.Uniform Modeling Language(UML)is the one to visible,fully describe,build and docnmentalizc for objects-oriented,especially applied in Rational Unified Process.UML Can be used in stage of software engineering project,therefore,the thesis models the views related to UMLby using Rational Rose 2003.
In the practice of systematic design,the thesis fully elaborates the objects-oriented,the plan for the data base and the mapping methods from UML to relational data base. And it also models the E—R diagram with the help of MicrosoR Visio,in the demand analysis of data base.Furthermore,it analyses the functional demands of the users in the system,defines the system services or function units enjoyed by interparticipants,establishes the needed models and detailed division.division.On the basis of the Use Case Diagram,the thesis enters the stage of systematic analysis,distinguishes all the classes诵tll in the system,establishes the Class Diagram,judges the structure of each class,and finally builds the static models in the stage.In order to describe how the objects interact dynamically in different period of time,the thesis continues to establish the static models in systematic analysis stage,including Sequence Diagram and Collaboration Diagram.
It is because of the stratification and carving sub—system that the educational administration system in this sense Can bc divided into students login model,teachers login model,educational administrators login model and teaching material
administrators login model is the focus of administrators login model.The educational development for the whole system,among which can be divided into such models as students information management,teach management,optional courses on line,work load calculation,teaching plan management,and SO on.In the state of designing data base,it shines upon the data base model from object models and establishes them in view of 2 mapping relations among the 3 models in data base.
To skim up,the thesis has established completed UML models,elaborated the analysis and models in the process of exploitation in details,and provided clear solutions to the applied software.Therefore,it is of great help and value to the reads who are intended to develop software by using UML.
Key Words:Educational Administration System;Uniform Modeling Language;0bject-Oriented;ASP.NET
O引言
近年来随着教育普及,高校教育体制改革,各高校扩大招生规模,使得在校 学生人数有了突飞猛进的发展,办学规模逐渐增大,专业设鼍日趋多样化,招生 人数逐年增加,教学计划不断更新,这使得高校教务管理的工作量大幅度增加。并且,随着教育改革的深化,教学管理模式也在发生变化,如学分制的逐步实行、学生可以自主选课等。这就对原有的教学管理模式提出了更高的要求。另一方面,随着计算机网络技术的发展,校园网引进各个高校,为无纸化办公提供了有利条 件。在这样的形势下,开发一个集成化的教务管理系统不仅势在必行,而且成为 一个紧迫的任务。
由于国内各高校的教务管理模式不尽相同,不同学校的实际教务管理情况各 有自己的特点,因而各高校需要针对自己的教务管理模式和特点建立自己的教务 管理系统。教务管理包括对教学资源——如教室、办公用品等的管理,新生注册 和学籍的管理、各学期学生成绩的管理、教学培养方案的执行、教学计划的安排、学生考试的管理、教师评教以及工作量的计算等大量信息。如何高效率的进行管 理,并且有序的存放和处理这些巨大的信息,并使之成为教学管理分析和决策的 手段,为教学活动产生更好的促进作用,是教务管理信息系统主要功能。教务管理系统是以管理信息系统为理论依据的。管理信息系统的发展伴随着 软件工程的发展而日趋成熟。不断增长的复杂性、多样性和相互关联性是当今管 理信息系统的共同特征。而开发一个管理信息系统往往要结合软件工程的理念,使用系统化的方法进行管理信息系统的开发,从而更能有效地控制程序复杂性,减少系统的不合理,减轻维护成本。
从技术层次上,软件工程是从一系列建模任务开始的,由这些任务产生出软 件完整的需求规格说明和软件设计的表示。80年代末期,当面向对象程序设计 语言产生后,人们将面向对象的软件建模方法引入到软件工程的各个阶段。并迅 速发展成为当代软件界研究的热点课题之一。这种开发方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法【11。面 向对象的程序设计立意于创建软件重用代码,它通过在程序中加入扩展语句把函 数“封装“进编程所需要的“对象’’中。从本质上来讲软件开发就是对软件所要 处理的问题集进行正确的认识,并把这种认识正确地描述出来。面向对象的软件 开发就是直接面对问题集当中客观存在的事物来进行软件开发。
面向对象的开发方法的精髓是从不稳定的需求中分析出稳定的对象,以对象 为基础来组织需求、构架系统【2】。这种开发方法包括面向对象分析和面向对象设
计。
面向对象分析的目的是认知客观世界的系统并对系统进行建模,那么就需要 在面向对象分析过程中根据客观世界的具体实例在问题中准确、具体、严密的分 析模型。如图O.1所示为面向对象的分析过程。
图O一1面向对象的分析过程
面向对象的设计是把分析阶段得到的需求转变成符合成本和质量要求的,抽 象的系统实现方案的过程。设计的准则包括模块化、抽象、信息隐藏、低耦合和 高内聚等特征【11。
公认的面向对象建模语言出现于20世纪70年代中期,从1989~1994年,其 数量从不到十种增加到了五十多种。建模语言中用的最广的是Booch的Booch 93、Jacobson的面向对象软件工程(OOSE)和Rumbaugh的对象建模技术(OMT-2)。面向对象建模方法出现以来,各种面向对象的分析与设计方法的主 导思想以及所采用的主要概念与原则大体上是一致的,但是也存在不少的差异。统一建模语言UMLCOnified Modeling Language)lE是为结束这种差异的局面应运
而生的。
1994年10月,Grady Booch和Jim Rumbaugh开始致力于这一工作。他们首
先将Booch 93方法和OMT-2方法统一起来,并于1995年10月发布第一个公开
版本UML0.8。1995年秋,OOSE创始人Ivar Jacobson也加入了。三人共同致力 于设计统一建模语言,他们同面向对象方法学的创始人共同合作,为这项工作注 入了强大的动力,打破了面向对象软件开发领域内原有的平衡。目前UML得到 了诸多大公司的支持,如IBM、HP、Oracle、Microsoft等,已成为面向对象技 术领域内占主导地位的规范化建模语言,并且已被OMG组织采纳的建模语言规 范。Booch、Rumbaugh和Jacobson在一些文献中经常被称作“三个好朋友”(three amigos)【3】。UML的发展过程如图0.2所示。本文所论述的系统在需求分析、系 统分析与设计阶段,都采用UML进行建模。
图0-2 UML的主要发展历程
被OMG采纳的UML只是一种建模语言,并不包含对软件开发过程的指导。在讨论UML时,人们往往谈论到统一过程(Rational Unified Process,RUP)。RUP是一个最佳软件开发实践,根据字面理解,可以知道RUP包括3方面的意
思,即Rational、Unified和Process。Rational表示RUP是由Rational公司开发
并维护的;Unified表示RUP采用了现代软件工程开发的6项最佳实践:Process 表示RUP是一种软件开发过程14】。Rational统一过程的动态结构是通过对迭代式软件开发过程的周期、阶段、迭代过程以及里程碑等的描述来进行表示的。
本文基于UML建模方法对我校教务管理系统做了较深入的分析,并基于物 理模型进行了系统的设计与实现。对于建模的工具的选择,本文选择Rational Rose,它提供了UML的所有建模元素的可视化编辑环境,并提供了基于组件的 开发以及对软件开发全过程的支持。除了支持UML的类图、交互图、组件图和
配置图外,Rational Rose是一个独立的工具,通过应用程序接口(API)层与市
场主导的各种IDE结合来支持各种编程语言和其他实现技术【51,从而全面支持面
向对象分析、设计和编码。Rational Rose支持软件系统的面向对象的开发,它通
过用例图、逻辑类图、序列图等支持面向对象的分析和设计,在不同的视图中建 立相应UML图形来反映系统的不同特征。
在开发工具的选择上,本文采用了新的ASP.NET技术,结合.NET框架所支 持的VB语言来实现教务系统的各项功能。ASENET不仅仅是下一版本的Active Server Page(ASP),它还是统一的Web开发平台,方便开发人员开发企业级W曲
应用程序。它是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语 言创建应用程序。另外,任何ASENET应用程序都可以使用整个.NET框架,并 且可以无缝地与HTML编辑器及其他编程工具一起工作。这使Web开发变得更
加方便。
数据库的开发工具上,选用SQL Server 2000开发环境。SQL Server2000是能 够支持企业级关系型数据库的管理系统,它能与Windows操作系统紧密集成,具有方便易用的图形管理界面,其用户界面风格与Windows一样非常友好。SQL Server2000在存储大容量数据方面,在数据的安全性和完整性方面,在分布式处 理等都是适合于企业级应用的。而其相对Oracle,DB/2等大型数据库来说,学习更为容易,应用成本也相对较低。采用SQL Server2000+ASP.Net开发本系统 是一个较为理想的组合。
综上所述,开发这样一个系统不但可以降低工作量、提高办公效率,而且使 目前分散的教务信息得到集中管理。这对减轻教务工作负担、提高教务管理水平、实现教务管理的现代化具有重要意义。论文分为引言、正文和结束语三部分。
引言部分简要地论述了当前高校管理信息化的必要性、高校教务管理系统开 发的重要意义以及高校教务管理系统开发所使用的技术。正文部分共分4章,其内容安排如下:
第一章:需求分析与建模。本章对教务管理系统进行需求分析,逐步对系统 分析细化,找出参与者和用例等,作出Use Case图。在用例图的基础上,从现 实或原型方面来透视的系统,进一步作出系统的静态模型。还有表示对象类之间 的通信及对话的动态模型。
第二章:系统概要设计。阐述了系统体系结构,和为什么选择采用B/S模式。介绍了系统实现基于的三层架构,即数据访问层、业务外观层和页面层。最后对 系统的层次和模块进行细化。
第三章:系统详细设计。对数据进行全面分析,得到E.R图,建立数据库表,完成存储过程的设计。举例介绍了系统中类的设计,以及几个代表性的功能模块 的设计思想。
第四章:系统实现。本文所论述的系统是用ASP.NET+SQL Server开发的。在这一章中主要是对笔者负责的部分,进行阐述。并以UML建模为基础,实现
系统功能。
结束语对本文工作进行简明扼要的总结,并指出本文存在的不足和改进方向,以及对未来的展望。
本文的创新性在于结合我校教务工作的实际问题,有针对性的对教务工作的 各个环节进行UML建模,从对象模型到动态模型再到系统功能的建模,让系统 分析更全面,系统实现更完善。系统实现采用三层架构,即数据访问层、业务外 观层和页面层。在业务外观层扩展出业务规则层,数据层扩展为数据存取层和存 储过程层,使业务逻辑与用户界面分开,增加程序的可扩展性和可维护性。
1需求分析与建模
需求分析是软件开发过程的重要环节,是软件开发的基础,通过与用户的反 复沟通,勾勒出系统的框架,需求分析的好坏决定了软件设计的成败,好的需 求分析也能减少资金的浪费。
1.1功能需求
教务管理系统系统主要是为完成日常教学任务而开发的,其主要目标是对学 生个人信息、师资信息、教学资源信息、课程信息、学生成绩信息等进行管理 及维护,减轻教学工作的压力,提高教学管理工作的效率。
通过对学校教学管理的业务调查,得知教务管理人员可通过此系统实现对学 生和教学资源的管理与维护,学生可以通过此系统进行个人信息、考试成绩查 询以及完成选课等相关功能,教师可以通过此系统完成个人信息管理、学生成 绩输入、教学任务查询等等功能。系统的总体任务是实现整个教学信息管理的 系统化、规范化和自动化。
在日常教学工作中,教务处有整体规划和辅助教学的任务,各个院系上报的 教学任务和教学计划都要上报给教务处,由教务处根据上报的材料分配教学资 源,如教室等,并且安排教师上课时间和上课的周次,然后再将教师上报的教 材征订单传达给教材科,由教材科根据开课学生人数订教材。教务处还要将一 切安排妥当的事宜公布在网络上,以供教师和学生查询。
因此,该系统主要的使用对象是教务管理人员、学生、教师和系统维护人员。这些使用者对教务管理系统的功能要求是不同的。(1)教务管理人员对功能的需求 ·学籍管理
功能包括:学生注册、学生基本信息管理(包括添加、删除和更新学生信息,可按姓名或学号查询学生信息)、学籍变动管理、毕业管理等。·师资管理
6功能包括:各专业课教师个人基本信息管理、教学任务发布、教学工作量管
理、考评考核管理、科研管理等。
●选课管理
功能包括:教务管理人员依据教学计划和培养计划,设置选课课程并统计生 成己选课学生名单等。
●教学计划管理
功能主要包括:根据培养计划和各个专业上报的教学计划,添加各专业教学 计划,包括教学计划的修改删除等操作。
●成绩管理
功能包括:每门课程结束后,由教师进行成绩登记,然后教务管理人员对登 记的信息进行管理,如教师登录成绩后发现成绩有错误,只能由教务管理人员 核实后进行修改。还有根据成绩就算出学生的学分,以便学籍管理的需要。
●课程管理
功能主要有:安排各个专业所开设课程的上课时间和上课教室。(2)教材管理人员功能需求
功能包括:教材的基本信息的管理(按书名或作者等查询各专业教材、添加 修改删除教材信息等)、统计教材数量、教材费用、教材的入库和出库管理等。
(3)学生对功能的需求
学生有两类,分别是本科生和研究生。每一类学生对于功能的要求还是有区 别的,如研究生有科研和论文的内容。在本文中,只分析了本科生的功能需求。·个人信息管理
功能包括:浏览个人基本信息,具体内容包括姓名、性别、学号、民族、出 生日期、籍贯、所在专业班级等,这些信息是以学籍管理表中的信息为准,所 以不允许学生自行更改,只能进行查询。还包括个人课表查询,成绩查询等。·更改系统登录信息
功能包括:学生登录系统后,修改登录信息,为了保证系统的安全性,只要 求学生修改个人密码。
● 网上选课
功能包括:网上查看可选课程,添加、删除所选课程等功能。
7(4)教师对功能的需求
●个人基本信息的维护
功能包括:教师基本信息的添加和修改等,如出生日期、毕业学校、学历和 学位等信息,但是职工编号和姓名是不允许教师在系统中进行修改的。·教学信息查询
功能包括:教学任务查询、教学自然班名单下载打印、教学质量评价查询和 工作量计算结果的查看等。●学生成绩录入
功能主要包括:本学期学生考试成绩的录入,一旦用录入密码录入成绩成功 后,就不能任意修改学生成绩,必须由教务处管理人员修改。(5)系统管理员的需求
系统管理员主要是对教务管理系统进行维护和更新,并保证系统的安全性,以及数据库的安全性。
从以上可以看出,各种人员对于系统的需求是不同的,对于学生来说,教务 人员的操作是不能使用的,也是不可见的,所以要在用户登录系统时,就做出 判断该用户可以使用哪些功能,这就需要设置不同的登录权限。系统管理人员 具有最高的权限,可以添加、删除用户,并可设置和修改不同的用户权限。因 此在数据库设计中,要有权限的定义。
权限的定义其实是系统安全性的一种需求,采用身份认证机制对一般用户进 行管理,以教工号和学生学号来判断登录者的权限,并且以这两种身份来判断 登录者是否该校的校内人士,如果是校外人士,则具有浏览这样的最低权限。系统的安全性需求还有另外一方面内容——数据安全性,对于数据库服务器,要避免系统崩溃等意外事件发生而导致数据全部丢失,常用的方法是采用 RAIDS磁盘阵列,其次是对数据库系统提供完全、增量等多种备份方式,如把 数据定期刻成光盘保存。对于数据安全性,本文不做详细的阐述。
根据以上对系统的功能的分析,我们可以大体总结出系统的一个大概框架和 系统应该分为哪些子系统。根据所完成的功能和用户角色的不同,我们将系统 分为教师子系统(完成教师登录后的功能)、学生子系统(完成学生登录后的功 能)、教务管理子系统(完成繁杂的教务工作的功能)和教材管理子系统(完成 教材有关的功能)四个子系统。在这四个子系统中又可以划分出多个小模块,例如,教务管理子系统是一个非常大的子系统,我们将它再次细化,可以分成 学生学籍管理模块、网上选课模块、教学计划管理模块、课程管理模块等。用 一个系统结构框图来表示,如图1.1所示。
图1.1教务管理系统总体框图
1.2用例图
图1.1教务管理系统总体框图
需求获取阶段的主要工作是建立待开发系统的模型。本文中采用统一建模语 言对系统的需求进行建模,UML的用例和用例模型是建立这种需求模型的合适 方法。
系统需求建模是为描述系统需求而建立的相应模型,其重要性在于:通过系 统模型可评估系统构件及其相互关系,确定需求如何适应其布局,以及评估系 统的“美学’’等方面【31。
在计算机图形学中,有一句名言,叫做“一幅图顶得上一千个字’’。同样的 道理,在软件开发过程中,模型的重要性也十分明显,它可以达到以下目的: >使用模型可以加强人员之间的沟通
>使用模型可以更早的发现错误或疏漏的地方
>模型为最后的代码生成提供依据 >使用模型可以更好的理解问题 >使用模型可以获取设计结果
面向对象的软件建模方法主要从面向对象程序设计领域演变发展而来,它是 对象问题域进行完整的映射的过程。“对象“的主要特征包括如下内容:
(1)它包括了事物的数据特征和行为特征,对象是系统中用来描述客观事物 的一个实体,具有它自己的静态特征和动态行为,是构成系统的一个基本单位。(2)它通过封装、继承、消息通信等原则使问题域的复杂性得到控制。(3)它用聚合和链接如实反映问题域中事物间的关系,“任何两个对象之间 的关系都包含其中一个对另一个的假设”。
正是拥有上述特征,从而使面向对象建模方法能够完整和直接的映射出问题 域,所以其在模拟现实世界方面具有天然的优势。
UML是用图来进行“说话”的,图是UML的关键。用UML开发的图在软 件开发生命周期(SDLC)的每个阶段中起着关键的文档作用。此外,你可用 UML来开发基于任何SDLC模型的软件系统【6】。1.2.1用例图概述
用例视图指出系统提供给每个利益相关者的功能。由于UML中的各个构件 和概念之间没有明显的划分界限,为方便起见,选用视图来划分这些概念和构 件。视图只是表达系统某一方面特征的UML建模构件的子集。用例视图是视 图中的一种。用例视图约束其他视图,在建模过程中居于非常重要的位置。项 目开始时,项目小组就可以在用例视图中生成业务模型。开发者既可以把用例 视图用于构建一个新系统的功能视图,还可以把已有的用例视图修改或扩充后,产生新的版本,也就是在现有的视图上加入新功能(即在视图中加入新的执行
者和用例)。
用例图是把满足用户需求的基本功能聚集起来的强有力的工具。对于正在构 造的新系统,用例描述系统应该做什么;对于已经构建完毕的系统,用例则反 映了系统能够完成什么样的功能【71。用例图包括用来描述最终用户、分析人员 和测试人员的角度所看到的系统行为的用例。
用例图的基本组成部件是用例、执行者和系统。用例用于描述系统的功能,也就是从外部用户的角度观察系统应支持哪些功能,帮助分析人员理解系统的
行为,即站在系统外部看系统功甜引。在用例模型中系统仿佛是实现各种用例 的黑盒子。我们只关心该系统实现了哪些功能,并不关心内部的具体实现细节。用例模型主要用于工程开发的初期,在进行系统需求分析时使用。用例模型由用例图构成。用例图中显示执行者、用例和用例之间的关系。1.2.2建立用例图
建立Use Case图可以按下列步骤进行:(1)确定系统范围和边界
所谓系统的边界是指系统与系统之间的界限。系统同时又是相对的,在这里,我们只说明第一次迭代的系统边界。教务管理系统以教学计划的实施为线索,对教务管理实行一体化操作,涉及学籍管理、教学计划管理、课程管理、选课 管理、成绩管理、教师管理、教材管理等。这些内容都属于教务管理系统的职 责范围。而学校的其他管理工作,如人事、财务、资产等管理不属于该系统的 职责范围。虽然有系统边界的存在,但是使用Rational Rose画图并不画出系统
边界。
(2)确定主要参与者
参与者(Actor)是指存在于系统外部并直接与系统进行交互的人、系统、子系 统或类的外部实体的抽象。参与者有自己的目标,通过与系统的交互达到目标。参与者包括人参与者(Human Actor)和外部系统参与者(System Actor)。在与系统 打交道的人员中,凡是直接使用系统的人员可以确认为人参与者;凡是与系统 相联,并与系统交互的外部系统,可以确认为系统参与者。
一个参与者可以参与一个或多个Use Case,而一个Use Case可以有一个或 多个参与者运行。在本系统中确定教务管理员、教材管理员、学生、教师和系 统管理员为活动者。(3)确定用例
用例(Use Case)是参与者可以感受到的系统服务或功能单元。它定义了系
统是如何被参与者使用的,描述了参与者为了使用系统所提供的某一完整功能 而与系统之间发生的一段对话。每一个用例都是一个参与者与系统交互中执行 的有关事务的序列【9】。虽然用例描述了活动者与系统交互中的对话,但是,它 只描述了该做些什么,并不描述该如何做。全部的用例构成了对于系统外部是
可见的行为的描述。应当根据系统需求找出全部的用例,并从参与者的角度给 出事件流和用例执行时系统可以提供给参与者的服务。
在教务管理系统中,我们可以确定以下一些主要用例:学生管理(学生基本 信息的维护)、师资管理、课程管理、教学计划管理、选课管理、成绩管理、教 材管理(教材信息查询,教材的入库和出库等),系统维护等。本文只列出几个主要的用例图加以介绍。①系统管理用例 >创建新账号 >设置账号基本信息 >查看账号
>删除账号 >系统维护和更新
建立用例图,如图1.2所示,图1.2系统管理员用例图
②教务管理用例
由于教务管理的事务繁琐复杂,因此功能的划分就很细致,用例数目就比较 多。我们先列出顶层用例,然后再将粒度大的用例进行分析。>登录系统 >学生学籍管理 >教学计划管理 >选课管理 >课程管理 >师资管理 >成绩管理
建立教务管理顶层用例图,如图1.3所示。然后将粒度大的用例进行进一步 分析,例如,师资管理工作,可以包括教师信息管理、评教情况、工作量计算、科研情况等。每一项工作都可以作为功能的细化,而看作是一个用例。因此,以师资管理为例,将教务管理顶层用例进一步细化,如图1.4所示。将顶层的用例模型进一步细化,划分为粒度小的用例,以便深入分析系统的 要求和目标,这一过程也是迭代过程【101。对顶层用例图逐步分解,精细化,直 到能清晰的表达问题,满足系统分析与建立模型的需要。又如,图1.5所示为 细化后的网上选课用例。
图1-3教务管理顶层用例图
图l-4师资管理三次迭代后的用例图
图1.5选课管理用例图
③学生用例 >登录系统 >个人信息管理 >成绩查询 >网上选课
建立学生用例图,如图1-6所示。
漆
图1.6学生用例图 ④教师用例 >登录系统 >个人信息管理 >登录成绩 >教学任务查询 >教学班名单打印 >教材查询
建立教师用例图,如图1.7所示。
图1.7教师用例图
⑤教材管理用例
>登录系统
>教材信息管理 >入库
> 出库
建立教材管理用例图,如图1.8所示。
图1.8教材管理用例图
161.3静态结构模型
系统的静态结构模型主要由类图和对象图表达。类图从抽象的角度描述系统 的静态结构,而对象是类的实例化表示,对象图是系统静态结构的一个快照⋯l。对象图和类图类似,也是表达系统的静态开发视图,但它是从现实或原型方面 来透视的,说明在类图中所发现的事物实例的数据结构和静态快照。当要在动 态建模的交互图中表示动态场景的一个静态画面时,可以使用对象图来重现系 统中存在的实例以及它们之间的相互关系。类图展示了一组类、接口和协作及 它们间的关系,建模中所建立的最常见的图就是类图。类图中包含了三方面的信息:
(1)对象类:对象类简称类,是面向对象模型最基本的模型元素,类有属性、操作、约束以及其他成分等。“属性”描述类性质的实例所能具有的值;“操作” 实现类的服务功能,它可以被本类的对象请求执行,从而发生某种行为。(2)用户接口:用户和系统交互的界面,它也可以用类表示。
(3)联系:表示类之间的关系,这种关系可以有多种,关联、依赖、泛化、聚合都是非常重要的联系。
在建立静态模型时,首先要对类进行识别,类的识别通常是由系统分析员在 分析问题域的基础上来完成的,它是面向对象开发中一项困难较大的活动【12】。对类的识别,通常的方法是从用例中来识别。用例图实际上就是一种对系统描 述的形式,因此,可以根据用例图来识别类。
所有被识别的类只包括三种构造型中的一种:边界类(Boundary Class)、实 体类(Entity Class)和控制类(Control Class)。使用类的构造型可以方便的对 类进行分类。按照类的识别顺序,首先识别出系统的实体类,然后进一步识别 出边界类和控制类。
实体类(Entity Class):实体类的信息和行为通常存在较长的时间,实体类 是现实问题的抽象,这种类型的类通常对应现实世界中的实体,或者需要执行 系统的内部事务f13】。例如学生、教师、教材等。而且每个实体类在数据库中都 有相应的表,实体类的属性对应数据库表中的字段。表1.1列出了教务管理系 统中一些重要的实体类。
边界类(Boundary Class):负责系统与系统外部环境的通信。位于系统与外 界的交界处,工作在系统和角色之间【81。因此,通常又被称为“接口类”。包括 所有窗体、报表、打印机和扫描仪等硬件接口以及与其他系统的接口。在教务 系统中的边界类有,用户登录界面、学生基本信息管理界面、教师基本信息管 理界面、教学工作量信息管理界面、科研情况管理界面、学生成绩管理界面、教学计划管理界面、选课界面等等。
控制类(Control Class):负责协调其他类的工作,通常其本身并不完成任何 功能,其他类也不向其发送很多消息,而是由控制类以委托责任的形式向其他 类发出消息。将教务管理系统中的业务逻辑抽象为以下的一些控制类,如表112 所示。
表1-2教务管理系统中的控制类
对类进行分析完毕接下来,就可以建立初步分析模型。例如,教材管理中,类的初步模型如图1-9所示。
图卜9教材管理用例类的初步建模
课程管理中,类的初步模型如图1.10所示。
教材
图
图1.10教材管理用例类的初步建模
选课记录
根据初步建模图,确定各个类的属性和方法后,再次建模,如图1.11所示
图1_11确定了属性和方法的类建模
根据己定义的类及其联系,以及对象类的多重性、角色、导航等性质,可以 画出对象类图。如图1.12是教务管理系统的主要类及其关系。图1.12教务管理系统主要的类及其关系图
所有系统均可表示为两个方面:静态结构和动态行为。类图最适合于描述系 统的静态结构:类、对象以及它们之间的关系,而状态、时序、协作和活动图 则适合于描述系统的动态行为,即描述系统中的对象在执行期间中不同时间点 是如何动态交互的。
系统中的对象需要相互通信,通常情况下,~个消息就是一个对象激活另一 个对象中的操作调用【141。对象是如何进行通信以及通信的结果如何,则是系统 的动态行为,也就是说,对象通过通信进行协作及对象在系统的生命期中改变 状态的方式是系统的动态行为。一组对象为了实现一些功能而进行通信称之为 交互。交互图(Interaction Diagram)是用来描述对象之间以及对象与参与者之 间的动态协作关系以及协作过程中行为次序的图形文档,它包括序列图
(Sequence Diagram)和协作图(Collaboration Diagram)两种形式。序列图着
2l重描述对象按照时间顺序的消息交换,协作图着重描述系统成分如何协同工作。
序列图和协作图从不同的角度表达了系统中的交互和系统的行为,它们之间可 以相互转化。(1)序列图的建立
序列图(Sequence Diagram)是由对象、生命线、激活和消息等构成。序列 图的目的就是按照交互发生的一系列顺序显示对象之间的交互【31。下面列出学生选课的序列图,如图1.13所示。教学计划管理的序列图,如 图1.14所示。
图
图1.13学生选课基本事件序列图
基于ASENET的教务管理系统的设计与实现 图1.14教学计划管理基本事件序列图
图1.15学籍管理模块添加成绩序列图
序列图作为一种描述在给定语境中消息是如何在对象间传递的图形化方式,在使用其进行建模时,可以将其用途分为以下3个方面。
·确认和丰富一个使用语境的逻辑表达:一个系统的使用环境就是系统潜
在的使用方式的描述,也就是它的名称所要描述的。一个使用环境的逻 辑可能是一个用例的一部分或是一条控制流。
● 细化用例的表达:序列图的主要用途之一就是把用例表达的需求转化为
进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的
序列图。
●有效的描述如何分配各个类的职责以及各类具有相应职责的原因:可以
根据对象之间的交互关系来定义类的职责,各个类之间的交互关系构成 一个特定的用例。例如,“用户对象向地址对象请求其街道名称“指出 用户对象应该具有“知道其街道名’’这个职责。
(2)协作图的建立
协作图(Collaboration Diagram)是由对象、消息和链等构成【15J。协作图通 过各个对象之间的组织交互关系以及对象彼此之间的链接,表达对象之间的交 互。
与序列图不同的是,在协作图中明确表示了角色之间的关系,通过协作角色
来限定协作中的对象或链。另一方面,协作图不将时间作为单独的维来表示,所以必须使用顺序号来判断消息的顺序以及并行线程【2】。序列图和协作图表达 的是类似的信息,虽然它们使用不同的方法表示,但可以通过适当的方式将它
们进行转换。
将图1.13和1.14中的序列图转换为协作图,分别见图1.15和图1.16。
1.15学生选课协作图
协作图作为一种在给定语境中描述协作中各个对象之间的组织交互关系的 空间组织结构的图形化方式,在使用其进行建模时,可以将其作用分为以下三 个方面:
·通过描绘对象之间消息的传递情况来反映具体的使用语境的逻辑表达: 一个使用情景的逻辑可能是一个用例的一部分或是一条控制流。这和序 列图的作用类似。
●显示对象及其交互关系的空间组织结构:协作图显示了在交互过程中各 个对象之间的组织交互关系以及对象彼此之间的链接。与序列图不同,协作图现实的是对象之间的关系,并不侧重于交互的顺序,它没有将时 间作为一个单独的维度,而是使用序列号来确定消息及并发线程的顺 序。
·表现一个类操作的实现:协作图可以说明类操作中使用到的参数、局部 变量以及返回值等。当使用协作图表现一个系统行为时,消息编号对应 了程序中嵌套调用的结构和信号传递过程。
2系统概要设计
经过需求分析后,对于系统是“做什么”已经清楚了,这一章的内容主要讨 论系统“怎样做“116]。总体设计的基本目的就是回答“概括地说,系统应该如 何实现?”这个问题。设计工作集中在细化阶段结束、构造阶段之时开始。它 将产生合理、健壮而稳定的构架,创建实现模型的蓝图‘171。
2.1系统体系结构
教务管理系统是由Web后台进行统一管理,所有业务逻辑都集中在Web应 用程序中管理和制定,具有数据的添加、搜索和查询统计等功能,客户端的分 布广泛,数据集中处理,因此在设计时充分考虑各种体系结构的优缺点,B/S 结构对异种机、异种应用的连机、连网及统--N务具有很好的作用,因此选择 B/S结构进行开发实现。
B/S模式是三层结构体系,对比过去C/S结构,B/S在客户机和服务器之间 增加了一个Web服务器。当客户端发出请求时,由Web服务器向数据库服务器 取出数据并计算,然后将计算结果返回给客户端,用户通过安装在客户端的浏 览器浏览计算结果。在B/S模式下,客户端只需装上浏览器以及相应的操作系 统、网络协议软件即可,而所有应用软件的开发、维护、升级等工作由服务器 承担【18】。B/S模式是三层结构体系如图2.1所示。
图2-1 B/S的三层结构体系
教务系统的软件开发在B/S体系结构基础上,程序设计过程采用三层架构,即数据层,业务外观层和页面表示层(应用层)。将UML建模使用到体系结构 的设计中来,也是本论文的一大创新点。
页面表示层表示软件界面,包括大量控件,并以事件为触发机制,在事件响 应程序中调用业务外观层中的接口完成相关操作。图2.2表示了页面表示层与
其它层的交互。
图2—2页面表示层交互图
业务外观层将用户界面和业务功能的具体实现分割开,对业务规划层和数据 访问层的所有调用必须通过此层进行。一般将业务外观层扩展出业务规则层,业务外观层就位于Web层与业务规划层之间,主要完成与Web层交互以及在对 “业务规则“层的调用之间维护临时状态【191。图2.3表示了业务外观层与其它 层的交互。
图2-3业务外观层交互图
数据层为业务外观层和业务规则层提供数据服务,并解决数据存取的问题。
对数据库的操作全部封装到对数据库服务器端的存储过程层调用中【191。图2.4 表示了数据层与其它层的交互。
图2—4数据层交互图
2.2系统模块划分 图2—4数据层交互图
在第一章的需求分析中,初步将本系统划分为4个子系统,每一个子系统面 向不同的用户。接下来在概要设计中,要将这四个子系统进一步细化,细化成
低耦合、高内聚的模块。
系统的总体框图在需求分析中已经列出,具体查看第一章的图1.1。根据总 体框图继续将框图中的每一个模块进一步细化。细化的结果按照模块独立性原
理来进行验证。
模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果【16】。模 块的独立程度可以由两个方面度量,分别为内聚和耦合。耦合强弱决定模块间 接口的复杂程度,接口越简洁,临界值的测试也越容易,不但是程序不容易出 错,后期维护成本也会降低。内聚是衡量一个模块内部各个成员彼此结合的紧 密程度,理想内聚的模块只完成一件任务。
按照软件工程中的这一理论,将教务管理系统进行细化。(1)学生子系统
学生子系统是学生身份登录后所使用的功能,按照功能的不同,将学生子系 统进一步细化,如图2.5所示。
图2.5学生子系统细化后结构图
(2)教师子系统
教师子系统面向的是普通教师,根据需求分析得到的结果,将教师子系统进 行多次细化后得到如图2-6的模块结构。(3)教材管理子系统
教材管理实质是教务管理的一部分,但是由于其管理对象与教务管理的工作 对象有很大差异,属于一种教学资源的管理,因此将教材管理从教务管理中划 分出来作为一个单独的子系统。其用户为教材科管理员,登录后不进入教务管 理界面,而进入教材管理界面。按功能细化后的模块结构如图2.7所示。
图2-6教师子系统细化后结构图
图2-7教材管理子系统细化后结构图
(4)教务管理子系统
教务管理子系统是所有子系统中功能最复杂的一个子系统,涉及了整个日常 教务和教学工作。将该系统第一步细化,按功能分成学生学籍管理、师资管理、选课管理、教学计划管理、成绩管理和课程管理六个大的模块,如图2.8所示。
图2-8对教务管理子系统二次细化
二次细化后的模块并不是最优模块,每一个模块都完成若干项工作,因此还 要再次细化。下面依次列出多次精细化后的模块结构图。① 生学籍管理
图2-9学生学籍管理结构图
②师资管理
图2.10师资管理结构图
③教学计划管理 图2-ll教学计划管理结构图
④学生选课管理
图2-12教学计划管理结构图
⑤学生成绩管理 生成绩管理结构图
⑥课程管理
2-13学
图
图2.14课程管理结构图
综合以上结构图,可以发现,在每个子系统中都包含了数据的一些基本操作,如添加记录、删除记录、修改记录和数据统计等,还有报表的制作、打印等常 见的功能。根据面向对象思想,可以将这些程序代码进行封装,增加代码的重
用。
3系统详细设计
详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统【16】。这一 阶段应该得出对系统的精确描述。
3.1数据库设计
数据位于信息集成系统的中心,是信息系统的灵魂,因此,数据库设计直接 影响着数据库系统的性能以及整个教务管理系统的功能。所以数据结构应该是 稳定的,变化的只是处理过程。本系统在侧重信息需求的同时兼顾处理需要,这个设计按照关系模型和第三范式理论,直接面向数据设计。数据库设计有如下三个基本阶段:
>需求信息的收集一一与客户、最终用户以及公司中定义数据库需求的管 理者进行调研的过程。收集的信息主要有,业务如何处理、业务规则、当前所使用的数据库信息等。
>数据建模一一通过可视化的方式分析业务数据,并最终将业务模型转换 为数据模型的过程。所产生的数据模型用来创建表、视图和数据库所需 的其他对象。
>数据库设计和规范化一一业务模型转换为物理模型的过程。并减少冗余 数据。
ANSI/SPARC模式规定,数据库可分为三层:内模式、中间模式和外模式【201,简单的说,数据库模式是指数据库中一组相关对象。在模式结构中,对象之间 并不是互相独立的,它们之间存在相互关联的关系。它统一地考虑了所有用户 的需求,并把这些需求所涉及的记录、记录间的联系有机地结合为一个整体,描述概念模式的常用方法是E.R图(Entity.Relationship approach,实体-联系方 法)【19lo 外模式也叫应用软件接口,是数据库的外层,是与用户进行互动的一层。子 模式是模式的子集。外模式允许在用户应用软件和数据模型之间创建关系。
35内模式也叫物理模型,具体描述了数据如何组织并存入外部存储器上,处理
数据库的物理存储和数据访问。内模式一般由系统程序员根据计算机系统的软 硬件配置决定数据存储方式,并编制程序实现存取。
中间模式也叫逻辑模型,是数据库的基本模型,它主要处理用来定义数据库 结构的一些数据结构,例如,表和约束条件。
数据库三个模式之间存在两种映射,一是模式与子模式之间的映射,这种映 射把概念数据库与用户数据库联系起来,另一种映射是模式与内模式之间的映 射,这种映射把概念数据库与物理数据库联系起来【211。有了这两种映射,才把 用户对数据库的逻辑操作转换为对数据库的物理操作。3.1.1数据库需求分析
用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据 库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据 处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。仔细分析本系统的有关信息,设计如下面所示的主要数据项和数据结构:
●学生基本信息
包括的数据项有:学号、姓名、性别、出生年月、籍贯、政治面貌、学院编 号、专业编号、班级编号、家庭住址、联系方法、照片、备注等。·学院信息
包括的数据项有:学院编号、学院名称、专业编号、专业名称、各专业班级 编号、班级名称、班级人数等。·教师信息
包括的数据项有:员工编号、姓名、性别、出生年月、籍贯、政治面貌、职 称、学院编号、职务等。·课程信息
包括的数据项有:课程编号、课程名称、课程类型编号、理论学时、实验学
时等。
·教学计划
包括的数据项有:学院编号、专业编号、班级编号、课程编号、开设时间等。●教材信息
包括的数据项有:教材ISBN编号、教材名、作者、出版社、版次、库存量
等。
·评教信息
包括的数据项有:员工编号、评教时间、评教成绩等。·工作量信息
包括的数据项有:员工编号、计算学年、课程编号、理论学时、实验学时、总工作量等。·科研信息
包括的数据项有:项目编号、项目名称、项目负责人、项目完成时间、项目 内容、获奖情况等。·选课信息
包括的数据项有:课程编号、教师姓名、最大人数、已选学生数等。●成绩信息
包括的数据项有:学生学号、课程编号、成绩、是否重修等。·系统用户信息
包括的数据项有:用户ID、用户权限、用户密码。根据以上的数据结构和数据项,进行下面的数据库设计。
3.1.2 E.R图设计
E.R方法是一种用来在数据库设计过程中表示数据库系统结构的方法,又被 称为实体.联系模型。它的主导思想是使用实体(Entity)、实体属性(Attribution)以及实体之间的联系(Relationship)来表示数据库系统的结构。
实体有描述其特征的属性,一个或多个属性表征一个实体。在E.R图中,实 体用长方形表示,属性用椭圆表示。
联系是指实体之间的关联,E.R模型清楚地定义了联系,每个联系都有名字。联系的元是参加联系的实体的数目,大多数联系是二元的,有三种类型:一对 一联系、一对多联系和多对多联系。联系用菱形表示。
对关系数据库而言,就是要将E.R模型转换为关系模型,并对其进行优化。将E.R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系 转化为关系模型,这种转换一般遵循如下原则:
(1)一个实体型转换为一个关系模型。实体的属性就是关系的属性,实体的 码就是关系的码;
(2)一个一对一联系可以转换为一个独立的关系模型,也可以与任意一端对 应的关系模型合并;
(3)一个一对多联系可以转换为一个独立的关系模型,也可以与多端对应的 关系模型合并;
(4)一个多对多联系转换为一个关系模型;
(5)--个或三个以上实体间的一个多元联系转换为一个关系模型;
(6)同一实体集的实体间的联系,可以按照一对一、一对多、多对多三种情 况分别处理;
(7)具有相同码的关系模型可合并。3.1.3系统的E.R模型
教务管理系统中对于学生信息管理、选课管理以及成绩管理的相关功能在第 一章的需求分析和建模中也做了详细说明。这几个子系统中所涉及到的角色主 要是教务管理人员、教师和学生。实体主要有学生、教师、课表、成绩、教学 计划5个,具体的E.R模型如下列各图所示。图3.1教务系统E.R图图3-2学生选课成绩管理E-R图
图3.3学生选课E.R图
3.1.4数据库表建立
图3.3学生选课E.R图
教务管理系统数据库表数量很多,在这里仅列出具有代表性的几个重要模块 中的数据库表。
表3.1用户登录信息表
表3-2学生基本信息表
表3.3课程信息表
表3.4成绩信息表表3.5教材信息表表3-6教师信息表表3.7科研信息表表3.8评教信息表表3-9工作量统计表
表3—10教学计划信息表3.1.5数据完整性设计
数据的完整性是指存储在数据库中的数据的正确性和可靠性,它是衡量数据 库中数据质量好坏的一种标准。满足数据完整性要求的数据应具有以下特点:
>数据类型准确无误
≯数据的值满足范围设置 >同一表格数据之间不存在冲突 >多个表格数据之间不存在冲突 数据完整性可以分为以下四类:
(1)实体完整性(Entity Integrity):实体完整性的目的是确保数据库中所有实 体的唯一性,也就是不应使用完全相同的数据记录。可以通过设定主键、唯一 键、唯一索引等多种方法来实现实体完整性,其中最常用的是使用主键。如,本文中的学生信息表,学生的学号是唯一的值,是学生信息表的主键。(2)区域完整性(Domain Integrity):区域完整性是要求数据表中的数据位于 某一个特定的允许范围内。可以使用默认值(Default)、核查(Check)、外键、数据类型和规则(Rule)等多种方法来实现区域完整性。如,限制“sex”性别 字段的数据值可以是“F”或“M",那么,输入的其他数值将被SQL Server拒
绝。
(3)参考完整性(Referemial Integrity):参考完整性是用来维护相关数据表之 间数据一致性的手段,通过实现参考完整性,可以避免因一个数据表的记录改 变而造成另一个数据表内的数据编程无效的值‘221。可利用外键、触发器和存储 过程来实现。如,在教师数据表和工作量数据表中,如果要删除教师数据表中 的一条记录,而同时在工作量数据表中存在需要参考该记录的记录集,那么该 删除操作将会失败。
(4)用户定义完整性:这种数据完整性由用户根据实际应用中的需要自行定 义。可以用来实现用户定义完整性的方法有:规则、触发器、存储过程和数据 表创建时可以使用的所有约束。
通过使用这些强制的完整性定义,数据库管理系统将提供更可靠的数据,同 时避免在多个用户同时操作数据库时可能发生的数据不一致。3.1.6数据库表的实现
经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。接下来
要在SQL Server 2000数据库系统中实现该逻辑结构。利用SQL Server 2000的
SQL查询分析器实现。下面是创建表格的SQL语句,由于篇幅原因,只列出部 分语句。
(1)创建系统用户表格Admin CREATE TABLE[dbo].[Admin](【usedd】【int]NOT NULL,【pwd][varchar](20)COLLATE Chinese—PRC—CI—AS NULL,[group]【char](5)COLLATE Chinese—PRC—CI—AS NULL)ON[PRIMARY】
(2)创建学生基本信息表格Student~Info CREATE TABLE【dbo].【Student_lnfo】([stuid】[int]NOT NULL,【stuname]【varchar】(1 O)COLLATE Chinese—PRC—Cl—AS NULL,[Sex】[char](4)COLLATE Chinese~PRC—CI—AS NULL,【age】[tinyint】NULL,【studepartment】[int](4)COLLATE Chinese—PRC—CI—AS NULL,[stucid】[int](4)COLLATE Chinese_PRC CI_AS NULL,【smgid】[int](4)COLLATE Chinese—PRC—CI—AS NULL,[birthday】[datetime]NULL,【address][varchar](50)COLLATE Chinese—PRC—C1一AS NULL,[phone][varchar](12)COLLATE Chinese—PRC—CI—AS NULL,[Jiguan】[varchar](1 o)COLLATE Chinese._PRC_CI_AS NULL)ON[PRIMARY](3)课程信息表格Course—Info CREATE TABLE[dbo].【Course_Info]([cid]【int](4)NOT NULL,[cname][varchar](30)COLLATE Chinese—PRC—CI—AS NULL,【ctypeid】【int](4)COLLATE Chinese—PRC CI_AS NULL 【clong][int](4)COLLATE Chinese—PRC—CI—AS NULL)ON[PRIMARY](4)成绩信息表格Score—Info CREATE TABLE【dbo].【Score_Info】(【stuid】【int]NOT NULL,【cid】【int】(4)COLLATE Chinese_PRC CI AS NOT NULL,【score】【smallint】NULL [restudy】【char](2)COLLATE Chinese—PRC—CI—AS NOT NULL)ON[PRIMARY】
(5)教材信息表格Book—Info CREATE TABLE[dbo].【Book._Info】(【bid】【varchar](1 5)COLLATE Chinese—PRC—CI—AS NOT NULL,[bname】【varchar](30)COLLATE Chinese—PRC—CI—AS NULL,【bwriter】【varchar]O o)COLLATE Chinese—PRC—CI—AS NULL,【bpublishl[varchar】(30)COLLATE Chinese—PRC—CI—AS NULL,【bci】【int](4)COLLATE Chinese—PRC_CI_AS NULL,【bcoum】【int】(4)COLLATE Chinese—PRC—CLAS NULL,)ON[PRIMARY】
(其他表格创建略)3.1.7存储过程的设计
存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工
作容易得多。存储过程是SQL语句和可选控制流语句的预编译集合,以—介名
称存储并作为一个单元处理【23】。存储过程存储在数据库内,可由应用程序通过 一个调用执行,而且允许用户声明变量、有条件执行以及其他强大的编程功能。Admin表相关存储过程。对Admin表进行的操作有,增加管理员(或用户)、验证管理员(或用户)、删除管理员(或用户)、修改管理员(或用户)权限、修改管理员(或用户)密码、得到所有管理员(或用户)、通过用户名查找管理 员(或用户)信息等等若干操作。由于篇幅原因,我们只列举部分的设计思路
和方法。
(1)增加管理员。在系统中系统管理员有权限添加管理员,建立存储过程在 Admin表中添加管理员,用户名为参数@usefid,用户密码为参数@pwd,用户 权限为参数@group。SQL脚本:
CREATE PROCEDUREjw_addadmin@usefid int(4),@pwd varchar(20),@group varchar(5)as insert into Admin values(@usefid int,@pwd,@group,0,”,”)90(2)验证管理员。添加管理员时,需要验证管理员是否已存在,通过选择Admin 表中是否有同名管理员用户来验证,查询条件为从Admin表中得到userid字段 等于参数@userid的数据,如果所得数据集为零说明管理员名不冲突,大于零时 说明已存在此管理员。
SQL脚本:
CREATE PROCEDUREjw_addadminvalidate@userid int(4)AS select事from Admin where userid=@userid go(3)得到管理员相关信息。当登录管理后台时,系统需得到管理员信息,以 验证管理员权限和是否有权利登录,验证管理员主要是通过用户名和密码来匹 配管理员信息,如果数据为空说明不存在此用户或密码错误,数据不为空则此
用户存在,得到管理员信息。SQL脚本:
CREATE PROCEDURE jw_getinfo@usedd int(4),@pwd varchar(20)AS select事劬m AdmiIl where usedd=@userid and pwd:@pwd 90(4)通过用户名查找管理员信息。在系统中,需得到管理员信息,即在Admin 表中得到userid字段等于参数@userid的数据。SQL脚本:
CREATE PROCEDUREjw_seladminbyuserid@userid int(4)AS select幸from Admin where userid=@:userid 90 463.2类设计
本系统是以面向对象设计思想为基础的,需求分析是用UML进行建模,因 此在模型基础上就可以进行类设计。
根据概要设计中的各个模块图,可以发现,每个子系统在对于数据库的操作 时都存在一些共同的行为,如添加、更新、搜索等,根据面向对象的封装特性,可以将这些行为封装成组件。同样,对于一些非数据库的操作,例如在教务管 理子系统中有工作量的计算,这样的操作也可以封装成类,使用设计模式使得 程序更加灵活、易于修改,并且易于复用。准确的说,就是让业务逻辑与界面 逻辑分开。
数据访问层类设计:数据访问层负责链接到数据源,构建类型化数据集,然 后该数据集从对象的方法中返回【22】。
建立一个数据访问组件visitjwdata,可以创建这个类的实例来使用。它的每 一个实例都是到数据源的一个链接。可以为每一个数据表定义一个这样的实例。该组件包括了三个方法,getdata引用数据集;deldata从后台数据源中删除数据 集;updatedata将数据集的变化添加到后台数据源中。类图如图3.4所示。
图3.4数据访问组件visitjwdata 另外,将数据库中的表格看做是对象,字段就是该对象的属性。数据库记录 就是一个实例化对象。
在第一章的静态建模中,我们分析系统中的主要类,并作出类图,根据静态 结构建模中创建的类,VB.NET语言实现。
3.3模块设计
第一章动态行为模型中的序列图和协作图对系统设计有很重要的帮助。序列 图是模块通信流程的一种抽象表示,从序列图中很容易看出各个对象之间承上 启下的关系,因为序列图主要是以时间作为单独的维来表示的。协作图和序列 图有着密切的关联,它是序列图的另一种表现形式,是通过协作角色来限定协 作中的对象或链。虽然它们的表示方法不同,但可以在Rational Rose中通过适 当的方式相互转换。
由于静态结构模型属于系统分析,动态行为模型属于系统设计,因此在这一 章里,我们就以第一章详细的建模为基础,不在对详细设计作过多的论述。在 模块设计中我们采用流程图来表达模块的算法,这里只列出几个代表性的模块。(1)登录模块
与数据库中的Admin表格关联,检查用户id字段和12令字段,结合SQL语 句实现。流程如图3.5所示(2)选课模块
根据登录的学生身份读取学生信息数据库表的院系、专业和班级字段值,通 过这些信息显示选课界面中相关的课程,并在学生提交自己的选课后,判断所 选课程是否符合要求,一方面选课总数限制,另一方面选择的课程为选满。流
程如图3-6所示 .5登录流程图
(3)教材管理模块
与数据库表教材信息表关联。教师在选用教材时,首先查询数据库中是否有 合适的教材,若没有则填写教材征订表提交给教材管理人员,由教材管理人员 进行课本的采集。
书本的出库业务流程如图3.7所示。
3图3-6选课流程图
图3.7出库业务流程图
4系统的实现
本系统在开发工具上,选择了Visual Studio.NET 2005。Visual Studio.NET是 一套完整的开发工具,用于生成ASP.NET Web应用程序、XML Web services、桌面应用程序和移动应用程序1241。Visual Basic.NET、Visual C++.NET、Visual C群.NET和Visual J撑.NET全都使用相同的集成开发环境(IDE),该环境允许
它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了.NET Framework的功能,此框架提供对简化ASENET Web应用程序和XML Web services开发的关键技术的访问。
Visual Studio.NET是用于快速生成企业级ASENET Web应用程序和高性
能桌面应用程序的工具。Visual Studio支持Microsott.NET Framework,该框架 提供公共语言运行库和统一编程类。公共语言运行库是.NET框架的基础。运行 库可以看作一个在执行时管理代码的代理,提供核心服务,而且还强制实施严 格的类型安全以及可确保安全性和可靠性的其他形式的代码准确性【25】。以运行 库为目标的代码称为托管代码,而不以运行库为目标的代码成为非托管代码。类库是一个综合性的面向对象的可重用类型集合,用户可以用它开发包含从传 统的命令行或图形用户界面应用程序到基于最新的ASP.NET技术在内的应用 程序【25】。在数据库的开发上,本文论述的系统将采用Microsoft SQL Server2000作为 系统的DBMS支撑,SQL Server2000是能够支持企业级关系型数据库的管理系 统,它能与Windows操作系统紧密集成,具有方便易用的图形管理界面,其用 户界面风格与Windows一样非常友好1261。SQL Server2000在存储大容量数据方 面,在数据的安全性和完整性方面,在分布式处理等都是适合于企业级应用的。而其相对Oracle,DB/2等大型数据库来说,学习更为容易,应用成本也相对较 低。采用SQL Server2000 4-ASP.Net开发本系统是一个较为理想的组合。
4.1登录模块
在用户登录界面中,最关键的问题是用户的验证,在这里可以将用户的验证 独立成一个模块。在该系统中,将用户分为几种不同的权限,每一种权限的用 户所面对的用户操作界面是不同,系统所提供的功能也是不同的,因此在数据 库中等门添加用户权限的字段,为的就是在用户登录时,比对数据表中的权限 值来判断是何种用户,从而展现给用户不同的操作界面。
实现思想:根据用户名即usefid字段和用户密码即pwd字段是否符合数据 库中的数据来决定该用户是否为已注册用户,如果不一致则有两种可能:一是 该用户的用户名或密码输入错误,二是该用户可能是未注册用户,数据库中还 没有该用户的信息。遇到这两种情况中的一种,都要弹出提示,指示用户要么 重新输入用户名和密码,重新登录;要么就要进行信息注册。若用户的名和密 码与数据库中数据相符,则进行下一步判断,验证同一条记录的另一个字段即 group权限字段,根据权限字段的值决定显示何种操作界面。如图4一l所示。
图4—1教务管理系统登录页面
这一模块中有一个功能“注册”功能,选择“注册”后,会出现一个注册页 面,这一页面中有多个表单输入框,用户在进行输入后,表单提交到Web服务 器端时,要验证表单字段的合法性,在这里使用ASENET的验证控件.这样可 以防止用户向数据库表提交错误类型的数据。验证控件会在客户端(浏览器)和服务器端都默认执行验证。从用户角度看,这一功能非常好,因为无论何时 把一个无效的值输入表单字段都能立即得到反馈。
每个验证控件都包含一个lsValid属性,如果验证过程中未发现错误,这个 属性将会返回True值。如果页面中所有的验证控件的lsValid都返回True,那 么Page.IsValid属性就是True。因此模块代码中通过检查Page.IsValid属性判断 是否将表单值填入数据库表。图4.2所示为注册页面中添加了验证控件的效果。
图4-2验证控件
4.2教师功能模块
教师登录系统成功后能够执行的操作,共有4个主要菜单,成绩录入、信息 维护、信息查询和选课(自然班)名单打印。(1)基本信息管理
主要功能是输入教师的一些基本信息,供教务部门查阅和调用。其中有一些 档案中的基本信息,是直接从数据库中读取的,不能随意更改,另外一些不重 要的信息由教师选择是否添加和更新。这里也是使用了表单验证控件防止非法 的数据写入数据库当中。图4.3是教师基本信息管理的页面。(2)信息查询
主要完成教师对自己工作上的一些信息的浏览。如本学期课表、教学计划、选课情况、教学质量信息等。(3)成绩录入
主要功能是对本学期教学班成绩的输入,每个学期学校教务部门对每门课程 每教学班下发专门的成绩录入密码,教师获得密码后登录成绩,然后使用密码 提交,提交后不能再修改。(4)选课(自然班)名单打印
选择该菜单后进入如图4-4所示界面。在这一页面中,根据教师选择的学年 学期以及教师所教授的课程名,弹出符合选择条件的学生班级人员列表。也可 以在班级选择栏中,找到要查找的班级列出班级列表。
图4-3教师基本信息管理界面
图4-4教师所教班级学生名单
每个学期的学期未,教务处会开放选课功能,并规定学生在限定的时间内进 行网上选课。在指定的时间内,学生可以多次进行网上选课。选课的条件有:
(1)选修课程数的限定:根据每学年的培养计划,设簧不同年级的限选门数。(2)选修年级的限定:不同的年级学生在登录选课模块后,查看到的所选课 程名称是不同的,某些课程只面向固定的年级。
(3)选修人数的限定:每个选修课程可以设置最大选课人数,并可咀选择选 课人数满时的解决办法,如禁选,或者允许继续选择,当选课结束时由教务人 员筛选。
(4)选修名单已经确定,或者被管理员设置禁选的课程,在选课时间范围内 只接受己选中的学生退选要求。
设计思路:学生登录后,根据学生的身份,及判断学生过去的选修记录来显 示该学生的选课界面,首先从课程信息表中找到课程类型(ctypeid字段)为选 修课的这类课程,并且满足crime字段的值为本学期.这样的课程以表格形式 显示;其次,对显示的每--1]课程添加复选框,允许学生选中或者退选。复选 框checked属性若为True,说明被选中,否则未被选中。在接到学生提交的选 课信息时,检查学生的选择是否有效,即判断学生的选课总数是否超出该年级 的限选门数,并判断选课人数是否超出限选人数,也就是判断该课是否设为满 即禁选。如果满足以上条件,将本次选课记录写入数据库中。在本功能模块中,还存在一种校验功能.检查学生所选课程是否时间矛盾,如果矛盾则及时通知 学生,以便重新选课.图4-5学生选课界面
4.4教学计划管理模块
教学计划是根据每个专业制定的学生培养计划和教学课程大纲而延伸出来 的与课程安排、教师排课、成绩等信息有着密切关系的文件,是教务管理的核
心内容。
教学计划中每学期的所教授的课程明细是由教务管理人员根据学生培养计 划和教学课程大纲列出,然后送达各个院系。由学院的教研室主任根据各个教 师的实际情况分配教学任务。然后将教学任务返回教务处。教师在接到教学任 务后,根据教学课程大纲中的教学要求,详细写出自己课程的教学授课计划,并从教务管理系统输入,这样教务处和学生都能看到了。
教学计划分成了两大部分,教务处制定的总的计划和教师制定的课程详细计 划,这些都可以通过网络向全校人员公布。
在教学计划管理页面上,有些信息是教务管理人员在后台输入的,是教师不 能修改的,这部分信息就是教务处制定的总的计划。教师指定的课程详细计划 是可以由教师修改添加的。如图4-6和4.7所示,为教务计划页面的部分截图。
EntityData为实体数据类
我们这里将实体数据进行缓存,缓存方法是
//从Web.Config取得对缓存过期的设置
ICacheItemExpiration[] ice=ExpireTerm.GetExpirationPolicy();
//获得缓冲对象
CacheManager cm=CacheManager.GetCacheManager();
存储
cm.Add(EntityKeyCreator.CreateKey(entity),entity,ice,CacheItemPriority.Normal,null);
此类可以做实体代理类
using Microsoft.ApplicationBlocks.Cache;
///
/// 缓冲实体
///
///
实体数据
public static void CacheEntity(EntityData entity)
{
if(entity.IsEmpty)
return;
ICacheItemExpiration[] ice=ExpireTerm.GetExpirationPolicy();
//获得缓冲对象
CacheManager cm=CacheManager.GetCacheManager();
//存储
cm.Add(ExpireTerm.CreateKey(entity),entity,ice,CacheItemPriority.Normal,null);
}
ExpireTerm.class
using Microsoft.ApplicationBlocks.Cache;
internal static ICacheItemExpiration[] GetExpirationPolicy()
{
if(Object.Equals(configSetting,null))
{
configSetting = (ICacheItemExpiration[])ConfigurationSettings.GetConfig(“TopCoolExpireTerm”);
}
return configSetting;
}
internal static string CreateKey(EntityData entity)
{
DataSet ds = new DataSet();
DataColumn[] keyColumns;
if(entity.Tables.Contains(entity.MainTableName))
keyColumns = entity.Tables[entity.MainTableName].PrimaryKey;
else
keyColumns = entity.CurrentTable.PrimaryKey;//
StringBuilder sb = new StringBuilder(entity.EntityTypeName);
//用:分隔实体类列名
for(int i=0;i
{
sb.Append(“:”);
sb.Append(entity[keyColumns[i].ColumnName].ToString());
}
return sb.ToString();
}
注意:EntityData从DataSet 继承过来.
1 网站级用户权限管理
网站级权限管理主要是确定用户是否具有访问网站的权限。网站访问的验证分为两步。首先是IIS执行用户验证,IIS验证通过后ASP.NET才开始执行自身的验证。网站级用户权限管理就是对IIS验证进行配置,在第一步就决定用户能不能访问网站,能访问网站时有多大的权限。
在IIS5.5信息服务管理器中右键单击网站后选择属性,在属性面板中单击目录安全性选项卡,得到如图1所示的界面从图1中可以看出,IIS5.5有3种访问限制方式,分别是匿名访问和身份验证机制、IP地址和域名映射及安全通信。这3种方式中用得比较多的是第一种,单击编辑按钮,会打开如图2所示的界面。在此界面中,有3种身份验证方式,分别是匿名访问、基本身份验证和集成Windows身份验证。IIS6.0后的版本有更多的方式,这里不再列出。
1.1 匿名访问
如果选中匿名访问,则IIS验证将会通过,并把可能的用户证书传递给ASP.NET。进行网站级权限管理的要点是设置好匿名访问使用的用户帐户,此帐户是IIS服务所驻留的Web服务器上的合法帐户,帐户的权限决定了此Web应用系统在服务器上所能进行的操作。如果选择Administrator权限的帐户,则此Web应用程序能够访问服务器上的所有资源,通常情况下不选择它。可以单击浏览按钮,找到并选择IUSER这个帐户或其他帐户,所选帐户的权限一方面要使Web应用程序能尽量利用服务器上的资源,最低要保证不影响Web应用程序的功能,另一方面要能控制其不加限制的访问。
1.2 基本身份验证
这种验证方式完全是把用户名和密码用明文(经过base64编码,但是base64编码不是加密的,经过转换就能转换成原始的明文)传送到服务端验证。服务器直接验证服务器本地是否有用户跟客户端提供的用户名和密码相匹配的,如果有则通过验证。
1.3 集成Windows身份验证
使用该方法将自动创建一个WindowsPrincipal对象(封装一个WindowsIdentity对象)来表示经过身份验证的用户。无需编写任何身份验证特定的代码,但服务器上必须要有相应的用户帐号。
基本身份验证和集成Windows身份验证往往用于一些特别场合,是IE与服务器之间的直接通信验证,IE客户端向服务器发送自己的IP地址或域用户名密码等信息进行验证,服务器端则通过安装相应的验证服务或安全证书或对IP进行授权访问等方式实现IIS验证。如果仅限于企业内部数量有限少数人员使用,可以考虑集成Windows身份验证。大多数情况下,都应该采用匿名身份验证方式通过IIS验证,把具体的验证过程交给ASP.NET来进行。ASP.NET身份验证有四种方式,分别是Forms、None、Passport和Windows。其中用得最多的是Forms方式,这种方式是预先提供一个LoinUrl供用户输入用户名和密码,然后比较它们与存储在介质上的用户名和密码是否一致,从而决定验证是否通过。这里所说的存储介质通常用数据库来实现,当然也可以是其它方式,比如XML文件或文本文件等。
2 目录级权限管理
目录级的权限管理主要处理当前登录用户是否有相应权限访问相应的目录或页面。下面首先分析RABC策略机制和ASP.NET中的用户机制,然后基于这种最为灵活的权限管理机制论述实现的步骤。
2.1 RABC策略机制
基于角色的访问控制模型(RBAC)凭借其灵活的授权机制、强大的管理功能和完善的安全策略越来越引起人们的研究兴趣[1]。RABC模型的基本原理是根据公司或组织的业务行为将用户分为若干个角色,每个角色可以包含一个或多个用户,每个用户至少属于一个角色,可以属于多个角色,角色之间还可以存在继承关系。系统只是针对角色进行授权与访问控制。
2.2 ASP.NET中的用户机制
2.2.1 自带的用户管理功能
在Visual Studio的解决方案资源管理器中单击ASP.NET配置按钮,启用用户后,如果系统正常安装了SQL Server2005,系统将自动增加一个名为ASPNETDB数据库及相应的表来保存用户信息,如果想把用户信息保存到一个指定的现有数据库,只需运行一次aspnet_regsql.exe按向导进行配置即可,之后Login等用户相关控件便可以正常使用了。这种方式的特点是简单高效,几乎不用编写任何代码。
2.2.2 自定义角色提供者类和成员关系提供者类
在使用ASP.NET自带的用户管理时,如果想更改存储介质,比如把数据库更改为Oracal或MySQL,则需要自已编写成员提供者类和角色提供者类,这两个类必须分别继承自MembershipProvider类和RoleProvider类,在这两个自定义类的相应方法中编写连接数据库及进行SQL查询的代码。然后在web.config文件的system.web节点中添加roleManager和membership两个节点并配置好上述两个类的路径,这样做完之后Login等用户相关控件同样可以正常使用了。详细例子请参考:http://www.codeproject.com/KB/webforms/MySQLsuite.aspx。
2.2.3 自由设置
对于一个ASP.NET底层架构设计者来说,也许上面二者都不是理想的选择。这时就得采用更灵活的方式来实现,不管采用什么方式,用户登录后,都必须要确定好访问者的用户名和角色,下面阐述ASP.NET验证过程中角色信息是如何附加到用户上的。
ASP.NET是通过设置用户验证Cookie来实现用户认证的。ASP.NET中有2个现有的方法可以设置用户认证Cookie,其使用方式及方法名分别是FormsAuthentication.SetAuthCookie("test",false);FormsAuthentication.RedirectFromLoginPage("test",false);其中test为用户名,可以从登录界面的用户名输入框中读取并到数据库中验证后获取。这两个方法任何一个被调用后,都会在客户端Cookie中写入一个用户票证。每次访问时ASP.NET都将读取这个代表了用户票证的Cookie,从而获取用户信息。为了给登录用户添加系统可以识别的角色,必须手动来创建这个票证Cookie。创建时必须遵循其固有的特殊格式要求,其格式由FormsAuthenticationTicket类封装,故只需创建FormsAuthenticationTicket的对象即可。以下几行代码展示了整个票证Cookie的设置过程,其中username和role是从数据库中读取的合法用户名和角色名,多个角色的话以逗号隔开。最后一行语句是让浏览器执行一次重定向,在重定向的过程中,Cookie被写到了客户端,并在重新访问时将被装载到http的头部送往服务器[2]。
在创建对象t时,role只是作为一个用户数据附加在其中,ASP.NET收到这个Cookie并解码后并不会把它识别为用户角色,有如下两种方法可以让ASP.NET调用相应模块把从Cookie中的用户数据提取到的角色信息附加到用户上。
(1)手动编写角色提供者程序。这种方式需要创建一个继承自RoleProvider的类(代码示例中命名为MyRoleProvider),实现其父类的一个名为GetRolesForUser的方法,其余必须实现的方法只需进行抛出异常的空实现即可。代码如下:
然后在web.config文件中配置好这个角色提供者类,代码如下,
ASP.NET在AuthorizeRequest事件中,如图3所示发生时将调用角色提供者程序的GetRolesForUser方法来获取角色,角色提供程序既然被配置为MyRoleProvider类,故上面的代码被调用,角色信息能够正确设置。
(2)捕获AuthenticateRequest并在其事件处理程序中添加角色信息。可以在Gloabal.asax文件中添加AuthenticateRequest的事件处理程序,当然也可以不使用Gloabal.asax文件,特别是已经存在一个httpmoduler类的时候,可以在这个httpmoduler类的init方法中设置AuthenticateRequest的事件处理程序为Application_AuthenticateRequest方法。代码如下:
经过以上处理,所有登录用户便都具有相应的角色了。
2.3 目录级权限设置方式
下面给出两种采用RABC对网站进行目录和页面级的权限管理的实现方式。
(1)利用web.config文件配置目录的角色访问授权
确定好整个系统中存在的角色后,就可以在web.config文件中配置每个目录或页面的角色授权了。如果设置好了用户角色的话,ASP.NET将会执行web.config中设置的授权规则。web.config文件的配置方式如下所示:
配置单个页面的访问授权为admin角色方式如下:
配置单个目录的访问授权guest、admin两种角色方式如下:
这种方式的不足之处是目录或页面的访问授权写在web.config文件中,那么网站发布时,因为需要经常修改,web.config文件就不能被编译进dll文件中,这样很容易造成目录的角色访问授权被非法查看和修改。
(2)在数据库中存储目录的角色访问授权
采用这种方式除了在数据库中至少要4张表(第三范式级别)、记录用户名、角色名、用户角色关系,及目录的角色授权关系。前3张表在用户登录过程也需要使用,4张表分别如表1~表4所示。用户角色关系表中的数据表明用户张三的角色是管理员。目录授权表中的数据表明角色admin被授权为可以访问users/admin目录下的资源,张三具有admin角色,所以他对users/admin目录下的资源的访问是授权访问。
为了实现这种授权控制,可以在进入页面之后,根据当前登录用户的信息去查询数据库中的目录授权表,若没有被授权,则执行重定向或给出权限不足的出错信息禁止这次访问。也可以编写一个继承自IHttpModule接口的类(假设命名为MyModule),在MyModule类中捕获一个应用程序级的事件对访问请求进行过滤,这个被捕获的事件不能早于AuthenticateRequest,因为在它之前,用户信息还处于不可用状态。如果在AuthorizeRequest这个事件之后,就可以直接利用安全模块中的角色信息了。如果没有设置,也可以从票证Cookie中获取(如果所述角色值已经保存在票证Cookie中了)。采用这种方式的优点是目录的访问授权保存在数据库中,既实现了对数据的保护,又可以灵活方便地进行管理。图4是代码截图以捕获AcquireRequestState事件为例说明如何创建MyModule类来禁止非admin角色对users/admin目录的访问。具体应用中,角色admin应该从数据库的目录授权表中读取出来,而不应该写死在代码中。
3 功能级权限管理
功能级权限管理的主要是对系统中不同的角色设置不同的操作权限,比如在一个毕业论文管理系统中,只有指导老师才可以对学生的阶段性作品进行评价和修改,其他角色如系主任则只可以查看,查看、评价和修改这3种功能是与角色相关的。在一个系统中对这些功能进行管理是一项很细致的工作,通常在需求分析阶段结束后进行系统设计时,就要尽可能地将系统中与权限相关的功能罗列出来,以表的形式(见功能表)存储在数据库中。功能号并不是连续的,是以1,2,4,8……这样的方式递增,实际上就是以一个二进制数的一位代表一种功能。然后在角色表中增加一列记录角色的权限值。权限同样也用一个二进制数来表示,二进制数的每个位代表一种功能,如果能进行这种功能,则此位为1,否则为0,数据库中存储这个二进制数的长整数值。如果所有的功能在二进制数中的排列顺序是从右往左,角色1具有权限6意味它可以执行功能2和3,因为6的二进制表示为110。
实现功能级权限管理,具体实现时可采用如下两种方式:
方式一:用户每进行一种操作之前,都把他的权限与功能号进行位与运算,结果不为0才可以进行,否则给出提示或跳转到错误页面。
方式二:采用自定义控件方式,将Button等控件封装成带权限的控件,如果功能不可用,则控件也呈现不可用状态。这种方式很方便用户,进入界面一看就知道能进行的操作和不能进行的操作。
此种方式将会面临的一个当带权功能非常多时二进位不够的问题,长整型数在目前的较普遍的32位系统中通常是占64位,那么系统最多处理63种带权功能。在一般的应用中,带权功能很少超过这个数字的,使用这种方法管理方便。如果超过了63种带权功能,重新设计多个功能号唯一映射到一个权限值的算法也不是一件很困难的事情。
4 结语
所提出的ASP.NET三级权限管理机制对网站的访问安全性作出了一个明确的划分,以此思想来指导考虑一个ASP.NET网站中的用户权限问题能极大地减少问题的复杂性。
摘要:现今大多数Web应用系统都是与用户相关的,这就带来了如何对用户权限进行管理的问题,特别是一些对安全问题有较高要求的应用,如电子商务系统等。深入分析了ASP.NET中的角色管理机制,提出了一个权限分级的思想,给出了一个基于角色进行权限管理的一般过程。
关键词:RABC,角色控制,ASP.NET,权限管理
参考文献
[1]王卓,冯珊.基于角色访问控制模型约束的OCL描述.计算机工程与应用,2009,39:1.
[2]奚江华.圣殿祭司的ASP.NET2.0开发详解.北京:电子工业出版社,2006.
关键词:教务管理 数据库 系统设计与实现
一、总体描述
系统概要设计的基本目标是确定软件系统的总体框架,即对软件系统进行总体设计和规划,其设计过程主要是针对需求分析中得到的模型进行转换,包括模块的划分、层次的建立、模块间的接口和人机交互的界面及对数据、数据库的相关描述。设计时要尽量做到模块内的高内聚和模块间的低耦合。
该系统所采用的结构是由数据访问层、业务逻辑层和页面表示层构成的三层架构,也即该系统体系结构,即三层。数据访问层负责对数据库进行访问操作,包括对数据进行读取、存储和其他一些事务处理,位于三层设计的最下层;业务逻辑层介于数据访问层和页面表示层中间,在数据访问层和页面表示层的数据交换中起到桥梁和承前启后的作用,在三层设计中扮演着很重要的角色;页面表示层位于三层架构的最上层,是和用户进行交互的一个层面,负责接收用户发出的请求并返回相应的数据信息。
二、体系结构
综合教务管理系统由Web作为后台服务管理平台,实现对系统统一管理,业务逻辑层采取Web集中管理运行,从而实现Web对数据的增、删、改、查和统计等功能。由于客户端分布的广泛性,数据在后台进行集中处理,因此把B/S架构作为本系统的首要选择。
采用三层架构的B/S模式。与传统的C/S架构相比,B/S模式的架构在客户机与服务器之间增加了一个Web服务器。客户端发出的请求并不是直接与后台数据库服务器进行交互,而是通过Web服务器与后台数据库服务器进行交互,提升了安全性。
把系统的数据访问层、业务逻辑层、页面表示层作为系统三层架构模型。
页面表示层即展示给访问者的页面,负责人机对话,接收用户数据的输入请求,服务器端处理数据并把处理结果传给用户。
业务逻辑层负责接收IE送传的请求,把信息传递给数据访问层,并把处理的结果传递给浏览器。
数据访问层通过ADO.NET技术实现对数据操纵,为业务逻辑层提供数据服务,通过此层与数据库进行交互,负责处理、存储数据。
三、总体框架结构
综合教务管理系统结构复杂、规模庞大。主要分为教务管理子系统、系统管理子系统、教师子系统和学生子系统。各子系统下又可分为若干子模块。
利用模块化独立性高和耦合性弱的原则,继续对各个子模块进一步细化,按照模块的独立性尽量高、耦合性尽量保持弱的原则,对各个模块进行细化。
模块独立性用两个度值来衡量即内聚性和耦合性,它是把数据进行模块化,进行高度抽象,实现对信息的隐蔽及实现数据的局部化。模块的耦合强度决定各个模块之间接口的复杂度,接口间数据耦合程度越低,进行临界值的选取越容易,软件测试也就越容易,程序出错率就能降低,后期的维护成本也越低。模块的内聚性是尽量保持一个模块内完成一件独立的任务,它是衡量模块内独立性强弱的依据。
依据上述理论原则,对综合教务管理系统各个子模块进行细化。
1.学生子系统
学生子模块是通过对学生的登录身份进行验证后,按照权限实现对功能的操作,按照模块独立性和耦合性原则,按照实现功能的差异,进一步对学生子模块进行细化。
2.教师子系统
教师子模块系统的使用对象是全体普通教师,按照需求分析和模块划分原则得到的结果,按功能进一步对教师子模块进行详细的划分。
3.教务管理子系统
教务管理子系统是该系统中复杂程度最高、最难实现的模块,日常教务管理和教学管理的全过程都在系统上实现。同样,按照软件工程思想中的模块独立性和耦合性的划分原则,对教务管理子系统进行模块划分,分为教师模块管理、学生模块管理、教学工作模块管理、成绩模块管理、选课模块管理、公共信息模块管理六大模块。经过二次划分,各个模块并不是最优模块,还需要对各个子模块进一步细分。
4.系统管理子系统
系统管理子系统细化后的结构如下图所示。
四、数据库设计
1.数据库设计的目标
数据库的一大特点是实现数据的共享。要实现数据共享,如何很好地布局数据库表、数据库索引和数据库对象等至关重要,因此在设计数据库时需考虑以下几个目标。
(1)数据库中的数据最大程度实现共享。
(2)数据库中的数据冗余度尽量低。
(3)数据库设计要便于数据查询。
(4)数据库设计要保证数据的安全性和降低数据输入有误率,保证数据的正确性。
2.数据库设计的原则
经过需求分析,对数据库进行设计,使得数据库设计更加合理。通常采用数据库设计规范化理论,也即五个范式和BCD范式,对于小型信息管理应用系统设计往往采用数据库规范化的前三个范式就能够解决问题,对于复杂的问题需要使用规范理论的后三个范式进行数据库设计。具体采取的原则如下。
(1)一种对象建立一个表。
(2)每个表的属性保证是不可再分割的最小项,也就是属性具有原子性。
(3)一个表中,属性间不能存在完全依赖。
(4)在一个表中,属性间不能存在传递依赖。
(5)表与表之间不能存在多对多的联系,如果存在必须对关系进行分解。
遵照上述三范式进行数据库设计,基本能够满足本系统的功能需求。
3.E-R图设计
数据是信息管理系统的灵魂,数据如何在信息系统中表示,如何在数据库中存储,以及如何有利于数据的操作,对系统的总体性能和管理功能起着非常重要的作用。所以信息模型的建立决定着系统设计成败,是系统设计的关键。
本系统后台采用SQL Server 2008数据库管理系统进行数据库的开发,根据需求对数据进行全面分析后,得到E-R图,完成数据库的概要设计。
E-R图即为实体一关系图,它是表示数据对象及其关系的图形语言机制。数据对象用长方形表示,关系用菱形表示,对象具有的属性特征用椭圆形表示。
综合教务管理系统需求主要有学生选课管理、学生管理、成绩管理等模块。实体主要包括课程、学生和成绩。
五、小结
【安全管理工作制度-net】推荐阅读:
消防安全管理管理制度07-14
1.建立设置安全管理机构、配备安全管理人员管理制度05-27
物业管理安全管理制度07-18
校园安全管理工作制度06-02
银行安全管理制度05-24
出行安全管理制度06-09
仪表安全管理制度06-22
液氨安全管理制度06-25
通讯安全管理制度07-01