班级信息管理系统
引言
随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使用人们的生活与工作方式发生了很大的改观。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行。
数据库始于20世纪60年代,经过40多年的发展,现在已经形成了理论体系,成为计算机软件的一个重要分支。数据库技术体现了当代先进的数据管理方法,使计算机的应用真正渗透到国民经济各个部门,在数据处理领域发挥着越来越大的作用。
而互联网技术的出现,更是进一步丰富的人类生活,数字化生存已经一步步走进我们的生活与工作。互联网技术与数据库技术的结合为计算的在人类生活中的应用带来了巨大的影响。产业信息化,管理现代化,科学化已经成为行业发展的重要课题,这不仅是企业提高自身竞争力,甚至是国家提高综合国力,走向国民富强的重要手段。
在我国,教育是一个影响着国富民强的重要行业,随着改革开放和市场经济的发展根据中国特有的国情发展,教育得到了国家的大力扶持与社会各界的高度重视,从而使教育业向规范性与现代化的方向高速发展,但是同发达国家相比,我国的教育行业的信息技术的应用程度还很低,只有在大城市中发展较早、规模较大的院校中才使用计算机进行大规模操作,从各方面提高工作效率,取得良好的社会和经济效益,而一些新兴的、规模较小的教育机构还没有全部具备这种功能。因此可见,随着我国教育的迅速发展,信息技术在其上的应用会更加地广泛和深入。
1 可行性分析
1.1 现有系统存在问题的分析
在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有信息任何管理系统,所有的工作几乎还是手工操作来完成。计算机技术在日新月异的发展,但是有的很多学校,特别是在西部贫困地区,学校的种类管理都依然由手工操作来完成,这十分落后,效率极低,成本很大,而且极异出错。随着社会的发展,信息化是社会进程的必然趋势,学校管理只有只有快,准,精才能发挥其价值。
所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。
有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。
还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统对管理来说是没有任何保障的。
1.2 系统开发目标与意义
1.2.1 系统开发目标
本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:
1. 系统应具有实用性、可靠性和适用性,同时注意到先进性。
2. 对各个数据库进行动态管理,防止混乱。
3. 能够按照用户选择的不同的条件进行简单查询和复合查询。
4. 能够对查询结果进行分类汇总,实现报表打印。
5. 注意数据的安全性,具有数据备份和恢复的功能。
6. 方便用户的操作,尽量减少用户的操作。
1.2.2 意义
在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性。提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。
1.3 可行性分析
可行性研究的目的是用最小的代价在尽可能的时间内确定问题是否能够解决。
1.3.1 经济上可行性
现在,计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为学校的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:
第一,本系统的运行可以代替人工进行许多繁杂的劳动;
第二,本系统的运行可以节省许多资源;
第三,本系统的运行可以大大的提高学校的工作效率;
第四,本系统可以使敏感文档更加安全,等等。
所以,本系统在经济上是可行的。
1.3.2 技术上可行性
本系统的开发利用Microsoft SQL Server2000作为本系统的数据库,它是一个支
持多用户的新型数据库,适用于大中规模的数据量需求。学校校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持。
使用Visual Studion.net 作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。
综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
1.3.3 运行上可行性
本系统为一个小型的学生信息管理系统,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。
2 需求分析
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便。
2.1 教育系统学生管理现状分析
2.1.1 学校工作流程分析
学校工作总体规划由教务人员在学生信息管理系统中完成对运行教务处所需的基本数据的维护,包括这些信息的增加、修改及对各项信息的变动都将在这进行操作。
新的学年,教务人员首先加入年级信息,然后编排班级,再对来校学生进行基本的信息录入,新生入学后由教务人员在学籍系统中完成新学生信息的维护。
在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任及对此年级安排一个年级组长。并对各科老师进行安排。
每举行一次考试后由任课老师对成绩进行录入。班主任对本班的成绩汇总。并进行排名,然后年级组长再进行汇总,并对本年级各科成绩及总成绩进行排名。
教务处、年级组长、班主任及任课老师跟据实际情况对录入的成绩进行维护,各位同学对以上录入的信息可以跟据自己的需要进行适当的查询。
2.1.2 学校具体需求分析
学生:对各科成绩的查询及查看本班成绩排名等情况。
任课老师:输入并维护所教科目的学生成绩,计算本科的成绩排名、本科成绩在班上的排名。
输出本班科目的成绩及排名情况。
班主任:输入并维护本班的基本信息,对本班的各科成绩汇总,计算各科成绩的总分,排名,本班平均分等需求。
输出学生的基本信息,各科的成绩及各科成绩的部分,各科成绩的排名,总分的排名情况。
教务处: 学校全体成员的信息管理,对考试科目,时间及对所考科目的编号等进行具体的管理,并对任课老师,班主任等输入的信息进行存库,对学生的信息进行必要的维护,可打印学生的所有信息。
2.1.3 系统设计思想
采用现有的资源,先进的管理系统开发方案,充分利用学校现有的资源,减少开发中的时间和财力、物力、提高系统开发的水平和应用效果。系统就满足学校的需求,例如学生信息的录入、查询、更新等。学生录入与排名。系统就具备数据库维护功能,及时根据用户需求进行数据添加、删除、修改等操作。
2.1.4 系统设计分析
本系统性能力求易于使用,具体有较高的扩展性和可维护性,其功能主要分为六大类:
用户管理:用于对用户的添加,赋于不同权限及对用户的修改及查询。
课程管理:用于对各学期课程的开设和修改。
成绩管理:用于对成绩的输入、修改、汇总及排名。
学生信息管理:添加,删除,修改学生信息等。
任课信息管理: 对授课教师,课程号,学时数,班级等信息的添加,维护等。 学生信息查询: 对学生成绩等信息的查询,查询方式为模糊,且具有多条件组
合查询功能。
2.1.5 系统功能分析
权限功能:系统具有动态的权限分配功能,可按用户权限对用户进行分组。可分为普通用户,一般用户,超级用户。普通用户只是查询不能修改,一般用户只能对授权范围内进行相应修改及删除,超级用户能修改、删除所有信息。
录入功能:为一般用户提供相应的录入功能,为超级用户提供对所有信息的录入功
能。
查询功能:为所有用户提供查询的功能,可查询允许范围内的所有信息。
维护功能:为一般用户提供查询及相应的修改,删除功能,为超级用户提供对所有信息的修改删除功能。
退出功能:结束并关闭系统。
2.1.6 学生学籍系统的目标
☆节约资源,提高学籍信息的精确度
本系统能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理。大节省了学校能源。并且计算机的存储与快速查询功能大大提高了学籍管理的效率,并且还提高了学籍信息管理的精确度。
☆方便快速操作,精减人员,节约开支
☆方便快速的操作,可减少学籍信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上还是工作人员的工资上都为学校节约了开支。为学校增加了财富。
☆数据库分析
用户需求具体有学籍管理系统提供保存、更新、查询、维护和打印,这就需求数据库结构能充分满足各种信息的输入与输出,实现有组织地、动态地存储大量关联数据,方便用户访问系统中的数据,它与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性。
2.2 C/S和B/S
2.2.1 什么是C/S和B/S结构
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client 端和Server 端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web 应用发展,Web 和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
传统的C /S 体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client 端还是Server 端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版
本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW 浏览器来实现,极少部分事务逻辑在前端(Browser )实现,但是主要事务逻辑在服务器端(Server )实现,形成所谓三层3-tier 结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO )。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在JAVA 这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
2.2.2 C/S 与 B/S 区别
Client/Server是建立在局域网的基础上的,Browser/Server是建立在广域网的基础上的。
(1)硬件环境不同
C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务。
B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例如电话上网, 租用设备, 信息自己管理, 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行。
(2)对安全要求不同
C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强。 一般高度机密的信息系统采用C/S 结构适宜,可以通过B/S发布部分可公开信息。
B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群。
(3)对程序架构不同
C/S 程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。
B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上。 比C/S有更高的要求,B/S结构的程序架构是发展的趋势,从MS 的.Net 系列的BizTalk 2000 Exchange 2000等,全面支持网络的构件搭建的系统。SUN 和IBM 推的JavaBean 构件技
术等,使B/S更加成熟。
(4)、软件重用不同
C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好。
B/S 对的多重结构,要求构件相对独立的功能。 能够相对较好的重用。就如买来的餐桌可以再利用,而不是做在墙上的石头桌子。
(5)、系统维护不同
系统维护是软件生存周期中,开销大,相当重要
C/S 程序由于整体性,必须整体考察,处理出现的问题以及系统升级难, 可能是再做一个全新的系统。
B/S 构件组成方面构件个别的更换,实现系统的无缝升级。 系统维护开销减到最小,用户从网上自己下载安装就可以实现升级。
(6)、处理问题不同
C/S 程序可以处理用户面固定,并且在相同区域, 安全要求高的需求,与操作系统相关, 应该都是相同的系统。
B/S 建立在广域网上, 面向不同的用户群,分散地域, 这是C/S无法作到的,与操作系统平台关系最小。
(7)、用户接口不同
C/S 多是建立在Window 平台上,表现方法有限,对程序员普遍要求较高。
B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流, 并且大部分难度减低,降低开发成本。
(8)、信息流不同
C/S 程序一般是典型的中央集权的机械式处理,交互性相对低。
B/S 信息流向可变化, B-B 、 B-C 、 B-G 等信息流向的变化, 更象交易中心
2.2.3 C/S架构软件的优势与劣势
◇ 应用服务器运行数据负荷较轻
最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服
务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。 数据的储存管理功能较为透明
在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。
◇ C/S架构的劣势是高昂的维护成本且投资大
首先,采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。
其次,传统的C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。在JAVA 这样的跨平台语言出现之后,B/S架构更是猛烈冲击C/S,并对其形成威胁和挑战。
2.2.4 面向对象的开发过程[1]
面向对象的软件开发和相应的面向对象的问题求解是当今计算机技术发展的重要成果和趋势之一,C#是一种面向对象的语言。面向对象编程具备了几个优点,比如:代码维护方便、可扩展性好、支持代码重用技术等等。这些优点是过程编程语言所不具备的。下面我们就来谈谈面向对象技术的这些优点:
(1) 可管理性, 维护简单
对于面向过程的开发来说,版本管理主要是管理函数以及全程变量, 而函数可以有很大的变动, 同样, 全程变量也可以有较大的变动, 但是, 对于面向对象程序设计来讲, 一个系统是有对象来组成的, 而对象是由类生成的, 因此只需管理类就行, 一个系统中, 类是相对稳定的, 因此便于管理.
(2) 模块化
是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员。
(3) 可扩充性
是对现代应用软件提出的又一个重要要求, 即要求应用软件能够很方便, 容易的进行扩充和修改, 这种扩充和修改的范围不但涉及到软件的内容, 也涉及到软件的形式和工作机制.
面向对象编程从本质上支持扩充性。如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类。
面向对象的程序设计可以用很好的可扩充性. 这是由于类可以根据人对事物的理解而进行丰富, 没有必要进行作大的改动, 可以利用继承, 对新的类添加属性和方法. 用它可以生成系统的简单雏形, 在征求用户的意见, 在加入新的类, 以及类的方法与属性等.
(4) 代码重用
可重用性是面向对象软件开发的一个核心思路. 面向对象程序设计的抽象, 封装, 继承, 多态的四大特点都无一例外, 或多或少的围绕着可重用性这个核心并为之服务.
由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。事实上,任何一个.NET Framework编程语言的程序员都可以使用.NET Framework 类库,.NET Framework 类库提供了很多的功能。更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能。
可重用性体现在两个方面:
(1) 开发的类可以被别人以及别的项目使用
(2) 由于可以继承, 因此可以实现代码级的重用
2.2.5 开发工具的选择[2]
(1)在开发工具上,我选择Visual Studio .NET 2008。Visual Studio .NET 是一套完整的开发工具,用于生成 ASP Web 应用程序、XML Web services、桌面应用程序和移动应用程序。Visual Basic .NET、Visual C++ .NET和 Visual J# .NET 全都使用相同的集成开发环境 (IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,此框架提供对简化 ASP Web 应用程序和 XML Web services 开发的关键技术的访问。
Visual Studio .NET 是用于快速生成企业级 ASP.NET Web 应用程序和高性能桌面应用程序的工具。Visual Studio 包含基于组件的开发工具(如 Visual C#、Visual J#、Visual Basic 和 Visual C++),以及许多用于简化基于小组的解决方案的设计、开发
和部署的其他技术。
Visual Studio 2008 包括各种增强功能,例如可视化设计器(使用 .NET Framework
3.5 加速开发)。.NET Framework 提供了用于解决常见编程任务的构建基块(预制的软件),从而能够快速构造具有出色的最终用户体验的紧密联系的应用程序。在 .NET Framework 模型业务流程上有效构建的紧密联系的应用程序有利于在异类环境中实现系统集成。
Visual Studio 和 .NET Framework 的结合使用减少了对公用管道代码的需要,从而缩短了开发时间并使开发人员能够集中精力解决业务问题。
.NET Framework 3.5 是在 .NET Framework 3.0 的基础上构建的更高版本。得到增强的功能领域包括基类库、Windows workflow foundation、Windows Communication Foundation 、Windows Presentation Foundation 和 Windows CardSpace。
开发人员使用 Visual Studio 2008 专业版能够:集成的单元测试能够更有效的验证应用程序。应用程序的单元测试能够帮助我们在开发过程的早期轻松发现大量的问题。现在,Visual Studio 2008 专业版中集成了单元测试功能,以前这个功能只在 Visual Studio Team System 产品中提供。
(2).NET 开发模式强大的的优势。[3]
·整体功能: 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。提供一个将软件部署和版本控制冲突最小化的代码执行环境。提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。
按照工业标准生成所有通信,以确保基于 Microsoft Visual Studio .net 的代码可与任何其他代码集成。
·中间代码: 微软在用户选择何时MSIL 应该编译成机器码的时候是留了很大的余地. 微软公司很小心的声称MSIL 不是解释性的, 而是被编译成了机器码. 它也明白许多--如果不是大多数的话--程序员认为Java 程序要不可避免的比C 编写的任何东西都要慢. 而这种实现方式决定了基于MSIL 的程序(指的是用C#,Visual Basic,"Managed C++"--C++的一个符合CLS 的版本--等语言编写的程序) 将在性能上超过" 解释性的"Java 代码. 当然, 这一点还需要得到事实证明, 因为C#和其他生成MSIL 的编译器还没有发布. 但是Java JIT 编译器的普遍存在使得Java 和C#在性能上相对相同. 象"C#是编译语言而
Java 是解释性的," 之类的声明只是商业技巧.Java 的中间代码和MSIL 都是中间的汇编形式的语言, 它们在运行时或其它的时候被编译成机器代码.
·命名空间中的申明: 当你创建一个程序的时候, 你在一个命名空间里创建了一个或多个类. 同在这个命名空间里(在类的外面) 你还有可能声明界面, 枚举类型和结构体. 必须使用using 关键字来引用其他命名空间的内容.
·基本的数据类型:C#拥有比C,C++或者Java 更广泛的数据类型. 这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal. 象Java 一样, 所有这些类型都有一个固定的大小. 又象C 和C++一样, 每个数据类型都有有符号和无符号两种类型. 与Java 相同的是, 一个字符变量包含的是一个16位的Unicode 字符.C#新的数据类型是decimal 数据类型, 对于货币数据, 它能存放28位10进制数字.
·两个基本类: 一个名叫object 的类是所有其他类的基类. 而一个名叫string 的类也象object 一样是这个语言的一部分. 作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串, 编译器会创建一个string 对象来保存它.
·参数传递: 方法可以被声明接受可变数目的参数. 缺省的参数传递方法是对基本数据类型进行值传递.ref 关键字可以用来强迫一个变量通过引用传递, 这使得一个变量可以接受一个返回值.out 关键字也能声明引用传递过程, 与ref 不同的地方是, 它指明这个参数并不需要初始值.
·与COM 的集成: C#对Windows 程序最大的卖点可能就是它与COM 的无缝集成了,COM 就是微软的Win32组件技术. 实际上, 最终有可能在任何.NET 语言里编写COM 客户和服务器端.C#编写的类可以子类化一个以存在的COM 组件; 生成的类也能被作为一个COM 组件使用, 然后又能使用, 比方说,JScript 语言子类化它从而得到第三个COM 组件. 这种现象的结果是导致了一个运行环境的产生, 在这个环境里的组件是网络服务, 可用用任何.NET 语言子类化.
·索引下标: 一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样) 以外是相似的.
·代理和反馈: 一个代理对象包括了访问一个特定对象的特定方法所需的信息. 只要把它当成一个聪明的方法指针就行了. 代理对象可以被移动到另一个地方, 然后可以通过访问它来对已存在的方法进行类型安全的调用. 一个反馈方法是代理的特例.event 关键字用在将在事件发生的时候被当成代理调用的方法声明中.
2.2.6 数据库系统选择[4][5]
本系统将采用Microsoft SQL Server2000作为系统的DBMS 支撑,SQL Server2000是能够支持企业级关系型数据库的管理系统,它能与Windows 操作系统紧密集成,具有方便易用的图形管理界面,其用户界面风格与Windows 一样非常友好。SQL Server2000在存储大容量数据方面,在数据的安全性和完整性方面,在分布式处理等都是适合于企业级应用的。而其相对Oracle ,DB/2等大型数据库来说,学习更为容易,应用成本也相对较低。采用SQL Server2000 + C# 2008开发本系统是一个较为理想的组合。
SQL Server2000的新特点:
动态的自我管理:SQL Server2000运行时动态配置运行环境,优化并简化了许多服务器配置选项,可随用户增多或者减少动态地请求追加或者释放资源,并可随数据的增减自动改变数据库大小。
丰富的管理工具:SQL Server2000提供了许多数据库系统管理工具。系统管理员可以在运行SQL Server Enterprise Manager的中央控制台上,管理和监视服务器运行性能和企业数据库。
可编程的管理:SQL 分布式对象可用于编写应用程序,这就可以使应用程序数据包透明地将SQL Server 2000嵌入应用程序中。也可以使用SQL-DMO 为不同站点的通用的管理任务建立应用程序。
可能收缩性和高可能性:SQL Server 2000数据库引擎可以几乎所有Windows 平台上运行,是可管理上千万个用户的大型数据库。同时其还具有动态自我调解的特性,能有效地在笔记本或者PC上运行。
支持数据仓库: SQL Server 2000支持数据仓库。
系统访问Internet 集成:SQL Server 2000与其他产品一起为Internet 或Intranet 系统形成一个稳定的安全的数据存储;可为运行在IIS 下的Web 应用程序提供一个高性能的数据存储服务;此外,SQL Server2000数据库引擎还包括了对XML 的本地支持,Transact-SQL 结果可以作为XML 文档返回给使用OLEBD 和ADO API 的应用程序,XML 文档还可以添加到SQL Server 2000中。
综上所述,在开发空警管理信息系统时,采用SQL Server 2000作为数据库管理系统。
2.2.7 开发方法的选择
在开发方法的选择上,选择了演绎式原型法与生命周期法相结合的方法。具体来说,就是在系统开发之前对系统有一个总体框架设想,各功能单元的结构和功能也比较清
楚,但是还没有具体实现。系统完成什么功能,分成哪几个部分,各个部分又有哪几个模块,都已理解掌握,且以后不需要做更大的变动,只是具体到每个模块,还没有全部实现。具体地设计可能是完全实现一个模块,也可能是用一个效率高地模块代替一个旧模块。信息系统的开发是一项比较复杂的工作,我们必须选用科学的有效的开发方法。近年来,国内外已逐步总结出一些开发信息系统的方法和技术,但是,从目前的情况来看,系统的开发技术仍是一个比较薄弱的环节。那么根据本系统开发的要求,本系统选择了生命周期法和原型法相结合的方法。现具体介绍如下:
生命周期这个概念源于系统工程方法。广义地说,任何系统均有其发生、发展、成熟、消亡或更新换代的过程,这个过程称为系统的生命周期。主要包括系统调查阶段、系统分析、系统设计、系统实施及系统维护与评价五个部分。根据系统设计而对整个系统实施,包括物理实施,程序设计,调试等。实施是最后的一步,关系着最后的成功。
在建筑学和机械设计学中,“原型”指的是其结构、大小和功能都与某个物体相类似的模拟该物体的原始模型。在管理信息系统开发中,用“原型”来形象地表示系统的一个早期可运行版本,它能反映新系统的部分重要功能和特征。“原型方法”则是利用原型辅助开发系统的一种新方法。原型方法要求在获得一组基本的用户需求后,快速地实现新系统的一个“原型”,用户、开发者及其他有关人员在试用原型的过程中,加强通信和反馈,通过反复评价和反复修改原型系统,逐步确定各种需求的细节,适应需求的变化,从而最终提高新系统的质量。因此可以认为原型方法确定用户需求的策略,它对用户需求的定义采用启发的方式,引导用户在对系统逐渐加深理解的过程中作出响应。
原型法主要包括确定系统基本需求阶段、构造初始原型阶段、原型的使用评价阶段、修改原型阶段和确定模型后的处理阶段。
原型法的基本思想是:凭借着系统分析人员对用户要求的理解,在强有力的软件环境支持下,快速地给出一个实实在在的模型(或称原型、雏形),然后与用户反复协商修改, 最终形成实际系统。
在本系统中选择了演化型(EvolutionaryPrototying)原型法,其目的不在于改进规格说明和用户需求, 而是将系统改造得易于变化,在改进原型的过程中将原型演化成最终系统。它将原型方法的思想贯穿到系统开发全过程,对满足需求的改动较为适合。
2.2.8 开发本系统的意义
班级信息管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,班级信息管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到
学校办学整体效率的高低,介与它的重要性,班级信息管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。
运用班级信息管理系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。而班级信息管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。从大的方向说,就是为了加速我国四化建设的发展,实现全部的自动化,使我国发展成为通讯网络化,决策科学化,办公自动化的国家。
在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。班级信息管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。
2.2.9 本文档编写目的
本文档为定义项目的需求,以软件工程学的思想来组织管理并展开本次毕业设计课题的研究, 以指导后期的系统分析与设计,并为系统用户与开发者提供参考标准。本文档力求准确,清晰地表达项目需求与开发过程,以保证开发过程满足项目需求的正确方向进行。
具体项目的确立是建立在各种条件、环境及需求之上的,通常情况下项目的开发与应用,运营的参与者拥有不同的知识结构体系,因此,所有人员对项目的理解程度很大程度上决定的项目的建设成败。因此,需要对系统之间的关系进行详细的设计分析说明。
2.2.10 定义
软件需求:IEEE 软件工程标准词汇表(1997年) 中定义软件需求为: (1) 用户解决问题或达到目标所需的条件或权能(Capability)。
(2) 系统或部件要满足标准、规范或其它正式规定文档所需具有的条件或权能。 (3) 一种反映上面(1)或(2)所描述的条件或权能的文档说明同工作,以及相互之间进行有效的交流和沟通。
参考资料(标准)
中华人民共和国国家标准UDC681.3:
(1) 信息技术软件生存期过程》(GB/T8566-1995) (2)《计算机软件产品开发文件编制指南》(GB 8567-88) (3)《软件工程术语》(GB/T11457-1995) (4) IEEE软件工程标准词汇表(1997年)
3 班级信息管理系统概要设计
3.1 系统设计图例说明[6]
本系统流程图基本图形元素如下所示:
图3.1-1 流程图基本图形元素
程序逻辑结构描述图例
图3.1-2 程序逻辑结构描述图例元素
顺序结构:一个命令接一个地执行;
选择结构:(或IF-THEN-ELSE) 当一个决定有多种不同执行结果时; 循环结构:只要条件成立就一直执行. 3.2 开发设计思想
尽量采用学校现有软硬件环境以及先进的管理系统开发方案,从而达到充分利用学校现有资源,提高系统开发水平和应用效果的目的。
系统应符合学校学习信息管理的规定,满足对学校学生信息管理需要,并达到操作
过程中的直观、方便、实用、安全等要求。
转变设计视点, 提高系统可扩展性, 实现工具式的可扩充功能。不同业务针对不同数据。系统设计中建立对数据的全面管理功能, 首先实现数据项的可伸缩性, 以保证在出现新的或更新旧的数据处理过程时, 能够保证数据的扩展。
提供了实施框架以期实现系统可移植性。
系统采用模块化程序设计方法,即便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。 3.3 系统结构设计 3.3.1 系统整体模块
本系统从功能上划分可分为以下几大模块:功能模块管理,组权限管理, 学生信息管理, 课程信息管理, 学生成绩管理, 授课信息管理, 学生信息查询, 学生成绩统计等几大模块。以下将对各子模块进行说明。
功能模块管理:将系统功能模块保存到数据库中以便于动态地进行不同用户组权限的分配等操作。本模块包括功能模块的添加,删除,修改等。
组权限管理:对用户进行分组,并将权限设置到不同的用户组。
学生信息管理模块:输入学生基本信息,并可以对学生信息进行添加、查询、修改、删除。还可以关键字查询并从数据库里调出的学生基本信息. 输出学生基本信息,学号、班号、姓名查询的信息结果。
课程信息管理:设置课程号,课程名,先修课等课程信息。
成绩信息管理模块:输入成绩信息,并可以对成绩信息进行添加、查询、修改、删除。还可以用关键字查询并调出数据库里的学生基本成绩信息的修改、删除等。输出查询的学生成绩信息。
任课信息管理:对教师授课信息的调度,安排等信息的管理。
学生信息查询:本模块是可对学生成绩进行查询,可按学号,姓名,年龄,所在院系,入学年份等不同条件独立查询或进行模糊查询。
学生成绩统计:对学生成绩总分,平均分等进行统计。
通过对上述的各项系统功能进行集中、分块,按照程序设计的要求,得到下图3-3-1所示的系统功能模块图。
图3.3.1-1 功能模块图
3.3.2 程序逻辑 (1) 查询模块流程图
图3.3.2-1 查询模块流程图
(2)维护模块流程图
图 3.3.2-2 维护模块流程图
(3)系统维护模块流程图
图 3.3.2-2 系统维护模块流程图
(4)程序流程图
图 3.3.2-3 程序流程图
3.4 数据库设计 3.4.1 数据库设计总则
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库以及应用系统。使之能够有效的存储数据,满足各种用户的应用需求。在数据库领域内,常常把使用数据库的各种系统通称为数据库应用系统。
1、数据库设计的特点:
数据库建设是硬件和软件的结合。三分技术,七分管理数据库设计应该与应用系统
设计相结合。如图3-4-2所示:
图3-4-2 数据库设计原理示意图
2、数据库设计的过程: (1)需求分析阶段 准确了解与分析用户需求 (2)概念结构设计阶段
通过对用户需求进行综合,归纳与抽象,形成一个独立于具体数据库的概念模型。 (3)逻辑结构设计阶段
将概念结构转换为某个DBMS 所支持的数据模型,并对其进行优化。 (4)数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。 (5)数据库实施阶段
运用DBMS 提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
(6)数据库运行和维护阶段数据库应用系统经过试运行后即可投入正式运行。 3、数据库设计遵行的规范。 (1)标准化和规范化
数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form (3NF )通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in On Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。
(2)数据驱动
采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。
(3)考虑各种变化
在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。 (4)使用角色实体定义属于某类别的列
在需要对属于特定类别或者具有特定角色的事物做定义时,可以用角色实体来创建特定的时间关联关系,从而可以实现自我文档化。
(5)选择数字类型和文本类型尽量充足 3.4.2 数据库需求分析
体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。在仔细分析调查有关学生信息需要的基础上,将得到针对一般学生信息管理系统的需求,通过对学生学习过程的内容和数据流程分析,设计如下所示的数据项和数据结构:
学生基本信息包括的数据项有:编号、学生学号、班级编号、学生姓名、性别、出生日期、政治面貌、联系电话、入校日期、家庭住址、备注等。设计结果如下表3.4.1-1所示。
表 3.4.1-1 学生信息表(students )
班级信息包括的数据项有:班级编号、班级名称、系别编号、专业编号、辅导员姓名、辅导员联系电话、班长姓名、班长联系电话等,设计结果如下表 3.4.1-2所示。
表 3.4.1-2 班级信息表(class )
课程信息包含的数据项有:课程编号、课程名称、开课班级编号、任课教师编号、课程说明等,设计结果如下表3.4.1-3所示。
表3.4.1-3 课程信息表(course )
系别信息包含的数据项有:系别编号、系别名称,设计结果如下表3.4.1-4所示。
表3.4.1-4 系别信息表(departlist )
专业信息包含的数据项有:专业编号、系别编号、专业名称,设计结果如下表3.4.1-5所示。
表3.4.1-5 专业信息表(specialty )
成绩信息包括的数据项有:成绩编号、学号、课程编号、分数、考试类型,设计结果如下表3.4.1-6所示。
表3.4.1-6 成绩信息表(course_score)
教师信息包含的数据项有:教师编号、教师姓名、性别、年龄、职称、任课班级编号、所属系别、手机号码、电子邮件等,设计结果如下表3.4.1-6所示。
表3.4.1-7 教师信息表(teachers )
用户信息包括的数据项有:用户ID 、用户密码、用户权限,设计结果如下表3.4.1-8所示。
表3.4.1-8 用户信息表(users )
有了如上的数据结构、数据项和数据流程,我们就能进行数据库设计。 3.4.3 数据库概念结构设计
根据前面的设计规划出的实体有:学生实体、班级实体、年级实体、课程实体、用户实体。
班级实体E-R 图如图3.4.3-1所示。
图3.4.3-1 班级实体E-R 图
注:其它实体图与班级实体E-R 类似此处不再赘述。 3.4.4 数据库结构的设计实现
采用C/S模式,应用于Intranet ,加强数据的安全管理,同时可以设计与学校其他系统的接口程序,就能实现数据的共享传递。设计数据库结构图如图3.4.4-1所示。
图3.4.4-1 数据库结构图
经过需求分析和概念结构设计之后,得到数据库的逻辑结构。现在在SQL Server 2000数据库系统中实现该逻辑结构,利用SQL Server 2000数据库系统中的SQL 查询分析器来实现。创建系统学生表格students 的SQL 语句如下:
if exists (
select * from dbo.sysobjects where id = object_id(N'[dbo].[students]') and OBJECTPROPERTY(id, N'IsUserTable') = 1
)
drop table [dbo].[students] GO
CREATE TABLE [dbo].[students] (
[id] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [study_id] [char] (11) COLLATE Chinese_PRC_CI_AS NOT NULL , [class_id] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [name] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL , [sex] [char] (2) COLLATE Chinese_PRC_CI_AS NULL , [age] [varchar] (5) COLLATE Chinese_PRC_CI_AS NULL , [birthday] [smalldatetime] NULL ,
[xuezhi] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
)
[juese] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL , [qinshiid] [char] (5) COLLATE Chinese_PRC_CI_AS NULL , [mphoneno] [char] (11) COLLATE Chinese_PRC_CI_AS NULL , [address] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [indate] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL , [idcard] [char] (18) COLLATE Chinese_PRC_CI_AS NULL , [postno] [char] (6) COLLATE Chinese_PRC_CI_AS NULL , [fname] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL , [mname] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL , [home_phone] [varchar] (11) COLLATE Chinese_PRC_CI_AS NULL , [photo] [image] NULL ,
[zzmm] [text] COLLATE Chinese_PRC_CI_AS NULL
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
3.5 本章小结
通过问题提出、实践调查,然后进行可行性研究和需求分析,最后确定了系统的逻辑结构和数据库结构,规划出系统的雏形,总体设计了新系统结构、功能模块和数据库,为具体实现系统打下基础。
4 详细设计[7][8][9][10]
4.1 应用系统文件结构
图4.1-1 应用系统文件结构图
4.2 主要设置说明 4.2.1 管理用户登录模块 ·登录模块图示如下:
图4.2.1-1 登录界面
用户登陆窗口中放置了两个文本框, 用来输入用户名和密码;两个按钮用来确定和退出登陆;两个个标签(Label )用来标示窗体的信息,并为之设置属性。
部分代码如下:
private void btn_login_Click(object sender, EventArgs e) {
if (check()){
SqlConnection conn = new DBCon ().getConn();
SqlCommand comm = new SqlCommand ("user_login", conn); comm.CommandType = CommandType .StoredProcedure;
comm.Parameters.Add("@user_id", SqlDbType .VarChar, 50).Value = txt_user_id.Text.Trim();
comm.Parameters.Add("@user_pwd", SqlDbType .VarChar, 20).Value = txt_user_pwd.Text.Trim();
comm.Parameters.Add("@value", SqlDbType .Int).Direction = ParameterDirection .Output; try {
comm.ExecuteNonQuery();
int m = (int )comm.Parameters["@value"].Value; if (m == 1) {
user_id = txt_user_id.Text.Trim();
user_state = new DBManage ().getDataSet("select user_state from users where user_id='" + txt_user_id.Text.Trim() + "'" ).Tables[0].Rows[0]["user_state"].ToString(); this .Hide();
Main_Frm main = new Main_Frm(); main.Show(); }
else {
MessageBox .Show(" 用户名或密码错误,登录失败!" , " 提示" , MessageBoxButtons .OK, MessageBoxIcon .Information); return ; } }
catch (Exception ex) { MessageBox .Show(ex.Message); } finally { comm.Dispose(); conn.Close(); } } }
登录成功后的主窗体图如下图所示。
图4.2.1-2 班级管理系统主界面
4.2.2 班级管理模块
(1)班级信息添加
选择双击班级管理-添加班级信息或在开始菜单中选择班级管理管理-添加班级信息,班级信息添加窗口将会弹出,如图4.2.2-1所示。
图4.2.2-1 班级信息添加
(2)班级信息查询
在此模块中集成了对班级信息的详情查看和删除操作,可单条记录删除,也可点选部分或点击全选进行批量删除,同时也含有模糊搜索功能。如图4.2.2-2所示:
图4.2.2-2 班级信息查询
(3)班级信息修改
在此模块中单击班级编号就可以查看该班的详细注册信息,单击修改则可以对成绩信息进行修改。如图4.2.2-3所示:
图4.2.2-3 班级信息修改
(4)系别设置
在班级管理模块下左边快速通道中单击系别设置就可以打开对应的窗口,在此模块中将进行对系别信息的浏览、添加、修改、和删除操作。如图4.2.2-4所示:
图4.2.2-4 系别设置
(4)专业设置
在班级管理模块下左边快速通道中单击专业设置就可以打开对应的窗口,在此模块中将进行对专业信息的浏览、添加、修改、和删除操作。如图4.2.2-5所示:
图4.2.2-5 专业设置
4.2.3 学籍管理模块 (1)学生学籍信息注册
选择双击学籍管理-注册学籍信息或在开始菜单中选择学籍管理-注册学籍信息,学生学籍信息注册页面将会弹出,如图4.2.2-5所示。
图4.2.2-5 学籍信息注册
(2)学生学籍信息查询,在此模块中集成了对成绩信息的详情查看和删除操作,可单条记录删除,也可点选部分或点击全选进行批量删除,同时也含有模糊搜索功能。如图4.2.3-1所示:
图4.2.3-1 学籍信息查询
(2)学生学籍信息修改,在此模块中单击学号就可以查看该生的详细成绩信息,单击修改则可以对成绩信息进行修改。如图4.2.3-2所示:
图4.2.3-2 学籍信息修改
4.2.4 教师管理模块 (1)注册教师信息
选择双击教师管理-注册教师信息或在开始菜单中选择教师管理-注册教师信息,教师信息注册页面将会弹出,如图下图所示。
图4.2.4-1 注册教师信息
(2)教师信息查询,在此模块中集成了对教师信息的详情查看和删除操作,可单条记录删除,也可点选部分或点击全选进行批量删除,也同样具有模糊搜索功能。如下图所示:
图4.2.4-2 教师信息查询
在此页面中可以查看此老师任课班级和科目有哪些,如下图:
图4.2.4-3 教师任课信息查看
(3)教师信息修改,在此模块中单击编号就可以查看老师的详细信息,单击修改则可以对老师信息进行修改。如下图所示:
图4.2.4-4 教师信息修改
注:在此页面中同样也可以查看此老师任课班级和科目 (4)课程设置
此功能直接打开的是课程管理下的课程设置模块,方便添加老师信息后可以及时的设置任课信息,如下图:
图4.2.4-5 课程设置
注:其他模块功能类似,此处也再不赘述。 4.3 本章小结
在概要设计的基础上,对系统的模块结构进行分析设计,对系统模块的界面和实现源代码进行了设计与实现
5 班级管理系统系统测试
5.1 概述
随着web 应用的增多,新的模式解决方案中以web 为核心的应用也越来越多,很多公司各种应用的架构都以B/S及web 应用为主,但是有关WEB 测试方面的内容并没有相应的总结,因此,在开发空警管理系统时,对web 应用程序的测试方法和采用的测试技术进行总结。测试方法尽量涵盖web 程序的各个方面,测试技术方面在继承传统测试技术的技术上结合web 应用的特点。 5.2 测试方法 [11] 5.2.1 界面测试
很多人认为这是测试中最不重要的部分,但是恰恰相反界面测试是相当重要的确。 主要包括以下几个方面的内容:
各个空间位置是否合理,是否可以实现对应功能、内容布局布局是否合理,是否正确、背景/色调是否正确、美观,是否符合用户需求;
窗口中的控件显示是否正确、美观(在调整窗口大小时,是否有明显的闪烁影响)表格样式大小,格式,是否对提交数据进行有效验证,功能是否易于理解等。
测试技术
结合兼容性测试对不用分辨率下页面显示效果,如果有影响则提出解决方案。可以结合数据定义文档查看表单项的内容,长度等信息。界面测试要素:
符合标准和规范, 灵活性, 正确性, 直观性, 舒适性, 实用性, 一致性
5.2.2 功能测试
对功能测试是测试中的重点,主要包括以下内容:
表格数据提交应当模拟用户提交,具有验证格式等信息是否正确的功能,要测试这些程序,需要验证服务器能正确保存这些数据,而且后台运行的程序能正确解释和使用这些信息。还有数据正确性验证,异常处理等,最好结合易用性要求等。C/S结构实现的功能可能主要的就在这里,提交数据,处理数据等如果有固定的操作流程可以考虑自动化测试工具的录制功能,编写可重复使用的脚本代码,可以在测试、回归测试时运行以便减轻测试人员工作量。
白盒测试技术(White Box Testing) 深入到代码一级的测试,使用这种技术发现问题最早,效果也是最好的。该技术主要的特征是测试对象进入了代码内部, 根据开发人员对代码和对程序的熟悉程度, 对有需要的部分进行在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。
黑盒测试技术(Black Box Testing)黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行,根据软件需求,设计文档,模拟客户场景随系统进行实际的测试,这种测试技术是使用最多的测试技术涵盖了测试的方方面面,可以考虑以下方面:
正确性 (Correctness)、可用性 (Usability)、边界条件 (Boundary Condition) 、 性能 (Performance)
压力测试 (Stress) 多用户情况可以考虑使用压力测试工具, 建议将压力和性能测试结合起来进行. 如果有负载平衡的话还要在服务器端打开监测工具, 查看服务器CPU 使用率, 内存占用情况, 如果有必要可以模拟大量数据输入, 对硬盘的影响等等信息. 如果有必要的话必须进行性能优化(软硬件都可以). 这里的压力测试针对的是某几项功能.
错误恢复 (Error Recovery) 错误处理,页面数据验证, 包括突然间断电, 输入脏数据等.
安全性测试(Security)这个领域正在研究中, 不过防火墙, 补丁包. 杀毒软件等的就
不必说了, 不过可以考虑破坏性测试时任意.
兼容性 (Compatibility) 不同浏览器,不同应用程序版本在实现功能时的表现, 不同的上网方式, 如果你测试的是一个公共网站的话.
5.2.3 功能测试边界测试\越界测试技术详述
边界条件
边界条件是指软件计划的操作界限所在的边缘条件.
如果软件测试问题包含确定的边界, 那么数据类型可能是:
数值速度字符地址位置尺寸数量
同时, 考虑这些类型的下述特征:
第一个/最后一个最小值/最大值
开始/完成超过/在内
空/满最短/最长
最慢/最快最早/最迟
最大/最小最高/最低
相邻/最远
越界测试
通常是简单加1或者很小的数(对于最大值) 和减少1或者很小的数(对于最小值), 例如:
第一个减1/最后一个加1
开始减1/完成加1
空了再减/满了再加
慢上加慢/快上加快
最大数加1/最小数减1
最小值减1/最大值加1
刚好超过/刚好在内
短了再短/长了再长
早了更早/晚了更晚
最高加1/最低减1
另一些该注意的输入:默认, 空白, 空值, 零值和无; 非法, 错误, 不正确和垃圾数据.
5.2.4 状态测试技术
软件可能进入的每一种独立状态;
从一种状态转入另一种状态所需的输入和条件;
进入或退出某种状态时的设置条件及输入结果.
具体测试方法可以参考如下:
每种状态至少访问一次;
测试看起来最常见最普遍的状态转换;
测试状态之间最不常用的分支
测试所有错误状态及其返回值
测试随机状态转换
5.2.5 竞争条件测试技术
竞争条件典型情形参考如下:
两个不同的程序同时保存或打开同一个文档
共享同一台打印机, 通信端口或者其他外围设备
当软件处于读取或者修改状态时按键或者单击鼠标
同时关闭或者启动软件的多个实例
同时使用不同的程序访问一个共同数据库
5.2.6 负载\压力测试(StressTest)
在这里的负载\压力和功能测试中的不同, 他是系统测试的内容, 是基本功能已经通过后进行的. 可以在集成测试阶段, 亦可以在系统测试阶段进行.
使用负载测试工具进行, 虚拟一定数量的用户看一看系统的表现, 是否满足定义中的指标.
负载测试一般使用工具完成,loadrunner ,webload ,was ,ewl ,e-test 等,主要的内容都是编写出测试脚本,脚本中一般包括用户一般常用的功能,然后运行,得出报告。所以负载测试包括的主要内容就不介绍了。
无论什么工具基本的技术都是利用线程技术模仿和虚拟用户,在这里主要的难点在与测试脚本的编写,每种工具使用的脚本都不一样,但是大多数工具都提供录制功能就算是不会编码的测试人员同样可以测试。
对负载工具的延伸使用可以进行系统稳定性测试,系统极限测试,如使用100的Load Size连续使用24小时,微软定义的通过准则是通过72小时测试的程序一般不会出现稳定性的问题。
5.3 不同的测试技术区分
5.3.1 覆盖测试技术
说明:测试覆盖率可以看出测试的完成度, 在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。
覆盖测试可以是程序代码的执行路径覆盖,亦可以是功能实现的步骤覆盖(可以理解成流程图的路径覆盖)。
该技术可以用在任何测试阶段,包括单元测坏死、集成测试、系统测试。
使用该技术时可以使用以上的任何测试方法和测试技术。
5.3.2 白盒测试和黑盒测试技术
白盒测试技术 (White Box Testing)该技术主要的特征是测试对象进入了代码内部, 根据开发人员对代码和对程序的熟悉程度, 对有需要的部分进行在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。这一阶段测试以软件开发人员为主,使用Xunit 系列工具进行测试,可以包括很多方面如功能性能等。
黑盒测试 (Black Box Testing)测试的主体部分黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行, 包括的不同测试类型请参考以上内容。
5.3.3 手工测试和自动化测试
手工测试(Manual Testing):即依靠人力来查找Bug 。方法可以参考上边的测试,也可以根据对实现技术及经验等进行不同的测试。
自动测试(Automation Testing )使用有针对工具实行。可以作出自动化测试的计划, 对可以进行自动化测试的部分编写或者录制相应的脚本, 可以加入功能, 容错, 表单提交等, 可以参考MI,Rational 或者其他类测试工具说明.
根据权威的软件测试经验,手工测试还是主要的测试方法,自动测试不够灵活,在这里不再详述。微软的测试过程80%还是手工完成。
自动测试永远也代替不了手工测试,但是手工测试的工作量很大是不争的事实。 由于测试环境操作系统,网络环境,带宽等情况可能产生的测试结果可能不同这是就需要经验以及对测试环境的保护等方面下一些功夫。
5.4 软件缺陷的原则
软件缺陷区别于软件bug, 它是在测试过程中出现的对系统有影响的, 但是在设计中没有的或者对修改后的bug 测试和开发人员有不同意见等软件未达到产品说明书标明的功能。
软件出现了产品说明书指明不会出现的错误。
软件功能超出产品说明书指明范围。
软件未达到产品说明书虽未指出但应达到的目标。
软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
6 开发技巧和难点
本系统开发的技术难点主要有两个方面:一是否业务逻辑的理解;二是数据库逻辑结构的设计。业务逻辑是依据空警管理系统的行业特点及其特殊的应用领域需要来进行设计的。只有在准确不理解一个系统的业务逻辑之后才可能开发出适应其应用的应用系统来, 并且在系统之间模块的科学划分与结构组织都是在正确不理解实际应用的业务逻辑需求的前提下完成的。
数据库设计是应用系统开发的另一个难点, 只有科学的数据库设计才能使系统具有良好的结构及良好的可编程性, 可扩展性. 数据库设计是直接影响系统运行情况及程序设计的一个重要因素. 因此, 在开发相关数据库方面的管理系统时, 都需要充分考虑到科学性、结构性、规范性、安全性、可扩展等相关问题。
系统编译标准(建议) 要求
Microsoft Windows XP Professional(SP3)
.net Framework 2.0
Microsoft SQL Server 2000企业版(SP3)
Microsoft Visual Studio.net 2008企业架构版
------ 已启动生成: 项目: CMS, 配置: Debug Any CPU ------
CMS -> C:\Documents and Settings\Administrator\桌面\CMS\CMS\bin\Debug\CMS.exe
------ 已启动生成: 项目: ButtonEx, 配置: Debug Any CPU ------
ButtonEx -> C:\Documents and Settings\Administrator\桌面\CMS\ButtonEx\bin\Debug\ButtonEx.dll
========== 生成: 成功或最新2 个,失败0 个,跳过0 个==========
7 结束语
经过二个多月的设计和开发,系统基本开发完毕。其功能基本符合用户需求,能够完成学生学籍的存储和成绩的查询、删除等功能。
但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,功能不太完善,系统健壮性不强等多方面问题。这些都有待进一步改善。
8 致谢:
在论文完成之际,首先我要向我的导师康万新老师致以衷心的感谢。本论文在编写的过程中得到了康万新老师的帮助和指导, 并提供了大量有价值的资料;在撰写论文的过程中,康万新老师多次审阅我们的论文,指出了缺点和不足,提出了许多宝贵意见,使得我能够顺利完成论文的撰写任务。康万新老师老师用渊博的专业知识、严谨的治学精神、高尚的职业道德指引我在学习中不断探索,相信会让我在今后的人生道路上受益匪浅。在此我向康万新老师表示深深的感谢!
同时我还感谢母校的老师, 谢谢他们为本系统提供的帮助. 让我能够顺利地完成本系统的开发. 也感谢那些对我提供帮助的同学, 没有他们就不会现在的系统.
最后,诚挚地感谢为评阅本论文而付出辛勤劳动的各位专家和学者!
参考文献
[1] 张海藩:《软件工程导论》(第五版),清华大学出版社,2008.2,P259-P288
[2] 杨树林、胡洁萍:《C#程序设计与案例教程》,清华大学出版社,2007.8,P1-P6
[3] (美) 麦斯科 颜炯 译:《C#设计模式》,中国电力出版社,2006.7,P130-P144
[4] 张蒲生、何升:《SQL Server 数据库应用技术》,清华大学出版社,2008.3,P20-P35
[5] 徐孝凯、贺桂英:《数据库基础与SQL Server 应用开发》,清华大学出版社,2008.4 P1-P6
[6] 张海藩:《软件工程导论》(第五版),清华大学出版社,2008.2,P216-P228
[7] 王小科、吕双、梁冰:《C#完全自学手册》,人民邮电出版社,2009.10,P132-P221
[8] (美)罗宾逊、(美)内格尔 著 李敏波 译:《C#高级编程(第3版)》 | Simon Robinson Christian Nagel,清华大学出版社,2007.3,P301-P345
[9] 启明工作室:《MIS 系统开发与应用(C#+SQL Server 版) 》,人民邮电出版社,2009.10,P211-P310
[10] Stanley B. Lippman著 侯捷、陈硕 译:《C# Primer中英文版》(C# Primer A Practical Approach),华中科技大学出版社,2009.4,P154-P203
[11] (美)托马斯 等著,陈伟桩 陶文 译《单元测试之道C#版——使用Nunit 》| Pragmatic Unit Testing in C# with NUnit Andrew Hunt,David Thomas,电子工业出版社 ,2008.4,P38-P49
班级信息管理系统
引言
随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使用人们的生活与工作方式发生了很大的改观。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行。
数据库始于20世纪60年代,经过40多年的发展,现在已经形成了理论体系,成为计算机软件的一个重要分支。数据库技术体现了当代先进的数据管理方法,使计算机的应用真正渗透到国民经济各个部门,在数据处理领域发挥着越来越大的作用。
而互联网技术的出现,更是进一步丰富的人类生活,数字化生存已经一步步走进我们的生活与工作。互联网技术与数据库技术的结合为计算的在人类生活中的应用带来了巨大的影响。产业信息化,管理现代化,科学化已经成为行业发展的重要课题,这不仅是企业提高自身竞争力,甚至是国家提高综合国力,走向国民富强的重要手段。
在我国,教育是一个影响着国富民强的重要行业,随着改革开放和市场经济的发展根据中国特有的国情发展,教育得到了国家的大力扶持与社会各界的高度重视,从而使教育业向规范性与现代化的方向高速发展,但是同发达国家相比,我国的教育行业的信息技术的应用程度还很低,只有在大城市中发展较早、规模较大的院校中才使用计算机进行大规模操作,从各方面提高工作效率,取得良好的社会和经济效益,而一些新兴的、规模较小的教育机构还没有全部具备这种功能。因此可见,随着我国教育的迅速发展,信息技术在其上的应用会更加地广泛和深入。
1 可行性分析
1.1 现有系统存在问题的分析
在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有信息任何管理系统,所有的工作几乎还是手工操作来完成。计算机技术在日新月异的发展,但是有的很多学校,特别是在西部贫困地区,学校的种类管理都依然由手工操作来完成,这十分落后,效率极低,成本很大,而且极异出错。随着社会的发展,信息化是社会进程的必然趋势,学校管理只有只有快,准,精才能发挥其价值。
所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。
有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。
还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统对管理来说是没有任何保障的。
1.2 系统开发目标与意义
1.2.1 系统开发目标
本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:
1. 系统应具有实用性、可靠性和适用性,同时注意到先进性。
2. 对各个数据库进行动态管理,防止混乱。
3. 能够按照用户选择的不同的条件进行简单查询和复合查询。
4. 能够对查询结果进行分类汇总,实现报表打印。
5. 注意数据的安全性,具有数据备份和恢复的功能。
6. 方便用户的操作,尽量减少用户的操作。
1.2.2 意义
在各大中小学校,用计算机管理学校的信息已经越来越普遍了。用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的安全性。提高了学校的管理能力,为此,用计算机来管理学校的信息,是非常必要的。
1.3 可行性分析
可行性研究的目的是用最小的代价在尽可能的时间内确定问题是否能够解决。
1.3.1 经济上可行性
现在,计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为学校的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:
第一,本系统的运行可以代替人工进行许多繁杂的劳动;
第二,本系统的运行可以节省许多资源;
第三,本系统的运行可以大大的提高学校的工作效率;
第四,本系统可以使敏感文档更加安全,等等。
所以,本系统在经济上是可行的。
1.3.2 技术上可行性
本系统的开发利用Microsoft SQL Server2000作为本系统的数据库,它是一个支
持多用户的新型数据库,适用于大中规模的数据量需求。学校校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持。
使用Visual Studion.net 作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。
综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
1.3.3 运行上可行性
本系统为一个小型的学生信息管理系统,所耗费的资源非常的小,学校的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。
2 需求分析
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便。
2.1 教育系统学生管理现状分析
2.1.1 学校工作流程分析
学校工作总体规划由教务人员在学生信息管理系统中完成对运行教务处所需的基本数据的维护,包括这些信息的增加、修改及对各项信息的变动都将在这进行操作。
新的学年,教务人员首先加入年级信息,然后编排班级,再对来校学生进行基本的信息录入,新生入学后由教务人员在学籍系统中完成新学生信息的维护。
在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任及对此年级安排一个年级组长。并对各科老师进行安排。
每举行一次考试后由任课老师对成绩进行录入。班主任对本班的成绩汇总。并进行排名,然后年级组长再进行汇总,并对本年级各科成绩及总成绩进行排名。
教务处、年级组长、班主任及任课老师跟据实际情况对录入的成绩进行维护,各位同学对以上录入的信息可以跟据自己的需要进行适当的查询。
2.1.2 学校具体需求分析
学生:对各科成绩的查询及查看本班成绩排名等情况。
任课老师:输入并维护所教科目的学生成绩,计算本科的成绩排名、本科成绩在班上的排名。
输出本班科目的成绩及排名情况。
班主任:输入并维护本班的基本信息,对本班的各科成绩汇总,计算各科成绩的总分,排名,本班平均分等需求。
输出学生的基本信息,各科的成绩及各科成绩的部分,各科成绩的排名,总分的排名情况。
教务处: 学校全体成员的信息管理,对考试科目,时间及对所考科目的编号等进行具体的管理,并对任课老师,班主任等输入的信息进行存库,对学生的信息进行必要的维护,可打印学生的所有信息。
2.1.3 系统设计思想
采用现有的资源,先进的管理系统开发方案,充分利用学校现有的资源,减少开发中的时间和财力、物力、提高系统开发的水平和应用效果。系统就满足学校的需求,例如学生信息的录入、查询、更新等。学生录入与排名。系统就具备数据库维护功能,及时根据用户需求进行数据添加、删除、修改等操作。
2.1.4 系统设计分析
本系统性能力求易于使用,具体有较高的扩展性和可维护性,其功能主要分为六大类:
用户管理:用于对用户的添加,赋于不同权限及对用户的修改及查询。
课程管理:用于对各学期课程的开设和修改。
成绩管理:用于对成绩的输入、修改、汇总及排名。
学生信息管理:添加,删除,修改学生信息等。
任课信息管理: 对授课教师,课程号,学时数,班级等信息的添加,维护等。 学生信息查询: 对学生成绩等信息的查询,查询方式为模糊,且具有多条件组
合查询功能。
2.1.5 系统功能分析
权限功能:系统具有动态的权限分配功能,可按用户权限对用户进行分组。可分为普通用户,一般用户,超级用户。普通用户只是查询不能修改,一般用户只能对授权范围内进行相应修改及删除,超级用户能修改、删除所有信息。
录入功能:为一般用户提供相应的录入功能,为超级用户提供对所有信息的录入功
能。
查询功能:为所有用户提供查询的功能,可查询允许范围内的所有信息。
维护功能:为一般用户提供查询及相应的修改,删除功能,为超级用户提供对所有信息的修改删除功能。
退出功能:结束并关闭系统。
2.1.6 学生学籍系统的目标
☆节约资源,提高学籍信息的精确度
本系统能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理。大节省了学校能源。并且计算机的存储与快速查询功能大大提高了学籍管理的效率,并且还提高了学籍信息管理的精确度。
☆方便快速操作,精减人员,节约开支
☆方便快速的操作,可减少学籍信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上还是工作人员的工资上都为学校节约了开支。为学校增加了财富。
☆数据库分析
用户需求具体有学籍管理系统提供保存、更新、查询、维护和打印,这就需求数据库结构能充分满足各种信息的输入与输出,实现有组织地、动态地存储大量关联数据,方便用户访问系统中的数据,它与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性。
2.2 C/S和B/S
2.2.1 什么是C/S和B/S结构
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client 端和Server 端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web 应用发展,Web 和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
传统的C /S 体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client 端还是Server 端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版
本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW 浏览器来实现,极少部分事务逻辑在前端(Browser )实现,但是主要事务逻辑在服务器端(Server )实现,形成所谓三层3-tier 结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO )。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。特别是在JAVA 这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
2.2.2 C/S 与 B/S 区别
Client/Server是建立在局域网的基础上的,Browser/Server是建立在广域网的基础上的。
(1)硬件环境不同
C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务。
B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例如电话上网, 租用设备, 信息自己管理, 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行。
(2)对安全要求不同
C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强。 一般高度机密的信息系统采用C/S 结构适宜,可以通过B/S发布部分可公开信息。
B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群。
(3)对程序架构不同
C/S 程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。
B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上。 比C/S有更高的要求,B/S结构的程序架构是发展的趋势,从MS 的.Net 系列的BizTalk 2000 Exchange 2000等,全面支持网络的构件搭建的系统。SUN 和IBM 推的JavaBean 构件技
术等,使B/S更加成熟。
(4)、软件重用不同
C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好。
B/S 对的多重结构,要求构件相对独立的功能。 能够相对较好的重用。就如买来的餐桌可以再利用,而不是做在墙上的石头桌子。
(5)、系统维护不同
系统维护是软件生存周期中,开销大,相当重要
C/S 程序由于整体性,必须整体考察,处理出现的问题以及系统升级难, 可能是再做一个全新的系统。
B/S 构件组成方面构件个别的更换,实现系统的无缝升级。 系统维护开销减到最小,用户从网上自己下载安装就可以实现升级。
(6)、处理问题不同
C/S 程序可以处理用户面固定,并且在相同区域, 安全要求高的需求,与操作系统相关, 应该都是相同的系统。
B/S 建立在广域网上, 面向不同的用户群,分散地域, 这是C/S无法作到的,与操作系统平台关系最小。
(7)、用户接口不同
C/S 多是建立在Window 平台上,表现方法有限,对程序员普遍要求较高。
B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流, 并且大部分难度减低,降低开发成本。
(8)、信息流不同
C/S 程序一般是典型的中央集权的机械式处理,交互性相对低。
B/S 信息流向可变化, B-B 、 B-C 、 B-G 等信息流向的变化, 更象交易中心
2.2.3 C/S架构软件的优势与劣势
◇ 应用服务器运行数据负荷较轻
最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服
务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。 数据的储存管理功能较为透明
在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。
◇ C/S架构的劣势是高昂的维护成本且投资大
首先,采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。
其次,传统的C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,由于产品的更新换代十分快,代价高和低效率已经不适应工作需要。在JAVA 这样的跨平台语言出现之后,B/S架构更是猛烈冲击C/S,并对其形成威胁和挑战。
2.2.4 面向对象的开发过程[1]
面向对象的软件开发和相应的面向对象的问题求解是当今计算机技术发展的重要成果和趋势之一,C#是一种面向对象的语言。面向对象编程具备了几个优点,比如:代码维护方便、可扩展性好、支持代码重用技术等等。这些优点是过程编程语言所不具备的。下面我们就来谈谈面向对象技术的这些优点:
(1) 可管理性, 维护简单
对于面向过程的开发来说,版本管理主要是管理函数以及全程变量, 而函数可以有很大的变动, 同样, 全程变量也可以有较大的变动, 但是, 对于面向对象程序设计来讲, 一个系统是有对象来组成的, 而对象是由类生成的, 因此只需管理类就行, 一个系统中, 类是相对稳定的, 因此便于管理.
(2) 模块化
是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员。
(3) 可扩充性
是对现代应用软件提出的又一个重要要求, 即要求应用软件能够很方便, 容易的进行扩充和修改, 这种扩充和修改的范围不但涉及到软件的内容, 也涉及到软件的形式和工作机制.
面向对象编程从本质上支持扩充性。如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类。
面向对象的程序设计可以用很好的可扩充性. 这是由于类可以根据人对事物的理解而进行丰富, 没有必要进行作大的改动, 可以利用继承, 对新的类添加属性和方法. 用它可以生成系统的简单雏形, 在征求用户的意见, 在加入新的类, 以及类的方法与属性等.
(4) 代码重用
可重用性是面向对象软件开发的一个核心思路. 面向对象程序设计的抽象, 封装, 继承, 多态的四大特点都无一例外, 或多或少的围绕着可重用性这个核心并为之服务.
由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。事实上,任何一个.NET Framework编程语言的程序员都可以使用.NET Framework 类库,.NET Framework 类库提供了很多的功能。更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能。
可重用性体现在两个方面:
(1) 开发的类可以被别人以及别的项目使用
(2) 由于可以继承, 因此可以实现代码级的重用
2.2.5 开发工具的选择[2]
(1)在开发工具上,我选择Visual Studio .NET 2008。Visual Studio .NET 是一套完整的开发工具,用于生成 ASP Web 应用程序、XML Web services、桌面应用程序和移动应用程序。Visual Basic .NET、Visual C++ .NET和 Visual J# .NET 全都使用相同的集成开发环境 (IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,此框架提供对简化 ASP Web 应用程序和 XML Web services 开发的关键技术的访问。
Visual Studio .NET 是用于快速生成企业级 ASP.NET Web 应用程序和高性能桌面应用程序的工具。Visual Studio 包含基于组件的开发工具(如 Visual C#、Visual J#、Visual Basic 和 Visual C++),以及许多用于简化基于小组的解决方案的设计、开发
和部署的其他技术。
Visual Studio 2008 包括各种增强功能,例如可视化设计器(使用 .NET Framework
3.5 加速开发)。.NET Framework 提供了用于解决常见编程任务的构建基块(预制的软件),从而能够快速构造具有出色的最终用户体验的紧密联系的应用程序。在 .NET Framework 模型业务流程上有效构建的紧密联系的应用程序有利于在异类环境中实现系统集成。
Visual Studio 和 .NET Framework 的结合使用减少了对公用管道代码的需要,从而缩短了开发时间并使开发人员能够集中精力解决业务问题。
.NET Framework 3.5 是在 .NET Framework 3.0 的基础上构建的更高版本。得到增强的功能领域包括基类库、Windows workflow foundation、Windows Communication Foundation 、Windows Presentation Foundation 和 Windows CardSpace。
开发人员使用 Visual Studio 2008 专业版能够:集成的单元测试能够更有效的验证应用程序。应用程序的单元测试能够帮助我们在开发过程的早期轻松发现大量的问题。现在,Visual Studio 2008 专业版中集成了单元测试功能,以前这个功能只在 Visual Studio Team System 产品中提供。
(2).NET 开发模式强大的的优势。[3]
·整体功能: 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。提供一个将软件部署和版本控制冲突最小化的代码执行环境。提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。
按照工业标准生成所有通信,以确保基于 Microsoft Visual Studio .net 的代码可与任何其他代码集成。
·中间代码: 微软在用户选择何时MSIL 应该编译成机器码的时候是留了很大的余地. 微软公司很小心的声称MSIL 不是解释性的, 而是被编译成了机器码. 它也明白许多--如果不是大多数的话--程序员认为Java 程序要不可避免的比C 编写的任何东西都要慢. 而这种实现方式决定了基于MSIL 的程序(指的是用C#,Visual Basic,"Managed C++"--C++的一个符合CLS 的版本--等语言编写的程序) 将在性能上超过" 解释性的"Java 代码. 当然, 这一点还需要得到事实证明, 因为C#和其他生成MSIL 的编译器还没有发布. 但是Java JIT 编译器的普遍存在使得Java 和C#在性能上相对相同. 象"C#是编译语言而
Java 是解释性的," 之类的声明只是商业技巧.Java 的中间代码和MSIL 都是中间的汇编形式的语言, 它们在运行时或其它的时候被编译成机器代码.
·命名空间中的申明: 当你创建一个程序的时候, 你在一个命名空间里创建了一个或多个类. 同在这个命名空间里(在类的外面) 你还有可能声明界面, 枚举类型和结构体. 必须使用using 关键字来引用其他命名空间的内容.
·基本的数据类型:C#拥有比C,C++或者Java 更广泛的数据类型. 这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal. 象Java 一样, 所有这些类型都有一个固定的大小. 又象C 和C++一样, 每个数据类型都有有符号和无符号两种类型. 与Java 相同的是, 一个字符变量包含的是一个16位的Unicode 字符.C#新的数据类型是decimal 数据类型, 对于货币数据, 它能存放28位10进制数字.
·两个基本类: 一个名叫object 的类是所有其他类的基类. 而一个名叫string 的类也象object 一样是这个语言的一部分. 作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串, 编译器会创建一个string 对象来保存它.
·参数传递: 方法可以被声明接受可变数目的参数. 缺省的参数传递方法是对基本数据类型进行值传递.ref 关键字可以用来强迫一个变量通过引用传递, 这使得一个变量可以接受一个返回值.out 关键字也能声明引用传递过程, 与ref 不同的地方是, 它指明这个参数并不需要初始值.
·与COM 的集成: C#对Windows 程序最大的卖点可能就是它与COM 的无缝集成了,COM 就是微软的Win32组件技术. 实际上, 最终有可能在任何.NET 语言里编写COM 客户和服务器端.C#编写的类可以子类化一个以存在的COM 组件; 生成的类也能被作为一个COM 组件使用, 然后又能使用, 比方说,JScript 语言子类化它从而得到第三个COM 组件. 这种现象的结果是导致了一个运行环境的产生, 在这个环境里的组件是网络服务, 可用用任何.NET 语言子类化.
·索引下标: 一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样) 以外是相似的.
·代理和反馈: 一个代理对象包括了访问一个特定对象的特定方法所需的信息. 只要把它当成一个聪明的方法指针就行了. 代理对象可以被移动到另一个地方, 然后可以通过访问它来对已存在的方法进行类型安全的调用. 一个反馈方法是代理的特例.event 关键字用在将在事件发生的时候被当成代理调用的方法声明中.
2.2.6 数据库系统选择[4][5]
本系统将采用Microsoft SQL Server2000作为系统的DBMS 支撑,SQL Server2000是能够支持企业级关系型数据库的管理系统,它能与Windows 操作系统紧密集成,具有方便易用的图形管理界面,其用户界面风格与Windows 一样非常友好。SQL Server2000在存储大容量数据方面,在数据的安全性和完整性方面,在分布式处理等都是适合于企业级应用的。而其相对Oracle ,DB/2等大型数据库来说,学习更为容易,应用成本也相对较低。采用SQL Server2000 + C# 2008开发本系统是一个较为理想的组合。
SQL Server2000的新特点:
动态的自我管理:SQL Server2000运行时动态配置运行环境,优化并简化了许多服务器配置选项,可随用户增多或者减少动态地请求追加或者释放资源,并可随数据的增减自动改变数据库大小。
丰富的管理工具:SQL Server2000提供了许多数据库系统管理工具。系统管理员可以在运行SQL Server Enterprise Manager的中央控制台上,管理和监视服务器运行性能和企业数据库。
可编程的管理:SQL 分布式对象可用于编写应用程序,这就可以使应用程序数据包透明地将SQL Server 2000嵌入应用程序中。也可以使用SQL-DMO 为不同站点的通用的管理任务建立应用程序。
可能收缩性和高可能性:SQL Server 2000数据库引擎可以几乎所有Windows 平台上运行,是可管理上千万个用户的大型数据库。同时其还具有动态自我调解的特性,能有效地在笔记本或者PC上运行。
支持数据仓库: SQL Server 2000支持数据仓库。
系统访问Internet 集成:SQL Server 2000与其他产品一起为Internet 或Intranet 系统形成一个稳定的安全的数据存储;可为运行在IIS 下的Web 应用程序提供一个高性能的数据存储服务;此外,SQL Server2000数据库引擎还包括了对XML 的本地支持,Transact-SQL 结果可以作为XML 文档返回给使用OLEBD 和ADO API 的应用程序,XML 文档还可以添加到SQL Server 2000中。
综上所述,在开发空警管理信息系统时,采用SQL Server 2000作为数据库管理系统。
2.2.7 开发方法的选择
在开发方法的选择上,选择了演绎式原型法与生命周期法相结合的方法。具体来说,就是在系统开发之前对系统有一个总体框架设想,各功能单元的结构和功能也比较清
楚,但是还没有具体实现。系统完成什么功能,分成哪几个部分,各个部分又有哪几个模块,都已理解掌握,且以后不需要做更大的变动,只是具体到每个模块,还没有全部实现。具体地设计可能是完全实现一个模块,也可能是用一个效率高地模块代替一个旧模块。信息系统的开发是一项比较复杂的工作,我们必须选用科学的有效的开发方法。近年来,国内外已逐步总结出一些开发信息系统的方法和技术,但是,从目前的情况来看,系统的开发技术仍是一个比较薄弱的环节。那么根据本系统开发的要求,本系统选择了生命周期法和原型法相结合的方法。现具体介绍如下:
生命周期这个概念源于系统工程方法。广义地说,任何系统均有其发生、发展、成熟、消亡或更新换代的过程,这个过程称为系统的生命周期。主要包括系统调查阶段、系统分析、系统设计、系统实施及系统维护与评价五个部分。根据系统设计而对整个系统实施,包括物理实施,程序设计,调试等。实施是最后的一步,关系着最后的成功。
在建筑学和机械设计学中,“原型”指的是其结构、大小和功能都与某个物体相类似的模拟该物体的原始模型。在管理信息系统开发中,用“原型”来形象地表示系统的一个早期可运行版本,它能反映新系统的部分重要功能和特征。“原型方法”则是利用原型辅助开发系统的一种新方法。原型方法要求在获得一组基本的用户需求后,快速地实现新系统的一个“原型”,用户、开发者及其他有关人员在试用原型的过程中,加强通信和反馈,通过反复评价和反复修改原型系统,逐步确定各种需求的细节,适应需求的变化,从而最终提高新系统的质量。因此可以认为原型方法确定用户需求的策略,它对用户需求的定义采用启发的方式,引导用户在对系统逐渐加深理解的过程中作出响应。
原型法主要包括确定系统基本需求阶段、构造初始原型阶段、原型的使用评价阶段、修改原型阶段和确定模型后的处理阶段。
原型法的基本思想是:凭借着系统分析人员对用户要求的理解,在强有力的软件环境支持下,快速地给出一个实实在在的模型(或称原型、雏形),然后与用户反复协商修改, 最终形成实际系统。
在本系统中选择了演化型(EvolutionaryPrototying)原型法,其目的不在于改进规格说明和用户需求, 而是将系统改造得易于变化,在改进原型的过程中将原型演化成最终系统。它将原型方法的思想贯穿到系统开发全过程,对满足需求的改动较为适合。
2.2.8 开发本系统的意义
班级信息管理是学校管理中异常重要的一个环节,作为学校,除了育人,就是育知,班级信息管理的计算机化是整个学校教务管理中的重要一部分,能否实现这一步关系到
学校办学整体效率的高低,介与它的重要性,班级信息管理系统的开发与应用就逐渐提入议程,并占着越来越重要的份量。
运用班级信息管理系统可以减轻学院教学人员的工作量,缩小开支,提高工作效率与准确率,能够合理安排时间,能够尽快的知道自己的考试成绩,投入新的课程的学习或复习这次没有考过的课程。而班级信息管理系统的应用也为今天的民办教育在未来市场的竞争力有所提高。从大的方向说,就是为了加速我国四化建设的发展,实现全部的自动化,使我国发展成为通讯网络化,决策科学化,办公自动化的国家。
在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,怎样提高工作效率是人们首先考虑的问题。班级信息管理是一个非常繁琐与复杂的一项工作,一个原因就是工作量大,不好管。对于一个学校而言,更应该运用一些本地资源,提高管理的力度,对学生负责,对国家负责。
2.2.9 本文档编写目的
本文档为定义项目的需求,以软件工程学的思想来组织管理并展开本次毕业设计课题的研究, 以指导后期的系统分析与设计,并为系统用户与开发者提供参考标准。本文档力求准确,清晰地表达项目需求与开发过程,以保证开发过程满足项目需求的正确方向进行。
具体项目的确立是建立在各种条件、环境及需求之上的,通常情况下项目的开发与应用,运营的参与者拥有不同的知识结构体系,因此,所有人员对项目的理解程度很大程度上决定的项目的建设成败。因此,需要对系统之间的关系进行详细的设计分析说明。
2.2.10 定义
软件需求:IEEE 软件工程标准词汇表(1997年) 中定义软件需求为: (1) 用户解决问题或达到目标所需的条件或权能(Capability)。
(2) 系统或部件要满足标准、规范或其它正式规定文档所需具有的条件或权能。 (3) 一种反映上面(1)或(2)所描述的条件或权能的文档说明同工作,以及相互之间进行有效的交流和沟通。
参考资料(标准)
中华人民共和国国家标准UDC681.3:
(1) 信息技术软件生存期过程》(GB/T8566-1995) (2)《计算机软件产品开发文件编制指南》(GB 8567-88) (3)《软件工程术语》(GB/T11457-1995) (4) IEEE软件工程标准词汇表(1997年)
3 班级信息管理系统概要设计
3.1 系统设计图例说明[6]
本系统流程图基本图形元素如下所示:
图3.1-1 流程图基本图形元素
程序逻辑结构描述图例
图3.1-2 程序逻辑结构描述图例元素
顺序结构:一个命令接一个地执行;
选择结构:(或IF-THEN-ELSE) 当一个决定有多种不同执行结果时; 循环结构:只要条件成立就一直执行. 3.2 开发设计思想
尽量采用学校现有软硬件环境以及先进的管理系统开发方案,从而达到充分利用学校现有资源,提高系统开发水平和应用效果的目的。
系统应符合学校学习信息管理的规定,满足对学校学生信息管理需要,并达到操作
过程中的直观、方便、实用、安全等要求。
转变设计视点, 提高系统可扩展性, 实现工具式的可扩充功能。不同业务针对不同数据。系统设计中建立对数据的全面管理功能, 首先实现数据项的可伸缩性, 以保证在出现新的或更新旧的数据处理过程时, 能够保证数据的扩展。
提供了实施框架以期实现系统可移植性。
系统采用模块化程序设计方法,即便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。 3.3 系统结构设计 3.3.1 系统整体模块
本系统从功能上划分可分为以下几大模块:功能模块管理,组权限管理, 学生信息管理, 课程信息管理, 学生成绩管理, 授课信息管理, 学生信息查询, 学生成绩统计等几大模块。以下将对各子模块进行说明。
功能模块管理:将系统功能模块保存到数据库中以便于动态地进行不同用户组权限的分配等操作。本模块包括功能模块的添加,删除,修改等。
组权限管理:对用户进行分组,并将权限设置到不同的用户组。
学生信息管理模块:输入学生基本信息,并可以对学生信息进行添加、查询、修改、删除。还可以关键字查询并从数据库里调出的学生基本信息. 输出学生基本信息,学号、班号、姓名查询的信息结果。
课程信息管理:设置课程号,课程名,先修课等课程信息。
成绩信息管理模块:输入成绩信息,并可以对成绩信息进行添加、查询、修改、删除。还可以用关键字查询并调出数据库里的学生基本成绩信息的修改、删除等。输出查询的学生成绩信息。
任课信息管理:对教师授课信息的调度,安排等信息的管理。
学生信息查询:本模块是可对学生成绩进行查询,可按学号,姓名,年龄,所在院系,入学年份等不同条件独立查询或进行模糊查询。
学生成绩统计:对学生成绩总分,平均分等进行统计。
通过对上述的各项系统功能进行集中、分块,按照程序设计的要求,得到下图3-3-1所示的系统功能模块图。
图3.3.1-1 功能模块图
3.3.2 程序逻辑 (1) 查询模块流程图
图3.3.2-1 查询模块流程图
(2)维护模块流程图
图 3.3.2-2 维护模块流程图
(3)系统维护模块流程图
图 3.3.2-2 系统维护模块流程图
(4)程序流程图
图 3.3.2-3 程序流程图
3.4 数据库设计 3.4.1 数据库设计总则
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库以及应用系统。使之能够有效的存储数据,满足各种用户的应用需求。在数据库领域内,常常把使用数据库的各种系统通称为数据库应用系统。
1、数据库设计的特点:
数据库建设是硬件和软件的结合。三分技术,七分管理数据库设计应该与应用系统
设计相结合。如图3-4-2所示:
图3-4-2 数据库设计原理示意图
2、数据库设计的过程: (1)需求分析阶段 准确了解与分析用户需求 (2)概念结构设计阶段
通过对用户需求进行综合,归纳与抽象,形成一个独立于具体数据库的概念模型。 (3)逻辑结构设计阶段
将概念结构转换为某个DBMS 所支持的数据模型,并对其进行优化。 (4)数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。 (5)数据库实施阶段
运用DBMS 提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
(6)数据库运行和维护阶段数据库应用系统经过试运行后即可投入正式运行。 3、数据库设计遵行的规范。 (1)标准化和规范化
数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但Third Normal Form (3NF )通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in On Place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。
(2)数据驱动
采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。
(3)考虑各种变化
在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。 (4)使用角色实体定义属于某类别的列
在需要对属于特定类别或者具有特定角色的事物做定义时,可以用角色实体来创建特定的时间关联关系,从而可以实现自我文档化。
(5)选择数字类型和文本类型尽量充足 3.4.2 数据库需求分析
体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。在仔细分析调查有关学生信息需要的基础上,将得到针对一般学生信息管理系统的需求,通过对学生学习过程的内容和数据流程分析,设计如下所示的数据项和数据结构:
学生基本信息包括的数据项有:编号、学生学号、班级编号、学生姓名、性别、出生日期、政治面貌、联系电话、入校日期、家庭住址、备注等。设计结果如下表3.4.1-1所示。
表 3.4.1-1 学生信息表(students )
班级信息包括的数据项有:班级编号、班级名称、系别编号、专业编号、辅导员姓名、辅导员联系电话、班长姓名、班长联系电话等,设计结果如下表 3.4.1-2所示。
表 3.4.1-2 班级信息表(class )
课程信息包含的数据项有:课程编号、课程名称、开课班级编号、任课教师编号、课程说明等,设计结果如下表3.4.1-3所示。
表3.4.1-3 课程信息表(course )
系别信息包含的数据项有:系别编号、系别名称,设计结果如下表3.4.1-4所示。
表3.4.1-4 系别信息表(departlist )
专业信息包含的数据项有:专业编号、系别编号、专业名称,设计结果如下表3.4.1-5所示。
表3.4.1-5 专业信息表(specialty )
成绩信息包括的数据项有:成绩编号、学号、课程编号、分数、考试类型,设计结果如下表3.4.1-6所示。
表3.4.1-6 成绩信息表(course_score)
教师信息包含的数据项有:教师编号、教师姓名、性别、年龄、职称、任课班级编号、所属系别、手机号码、电子邮件等,设计结果如下表3.4.1-6所示。
表3.4.1-7 教师信息表(teachers )
用户信息包括的数据项有:用户ID 、用户密码、用户权限,设计结果如下表3.4.1-8所示。
表3.4.1-8 用户信息表(users )
有了如上的数据结构、数据项和数据流程,我们就能进行数据库设计。 3.4.3 数据库概念结构设计
根据前面的设计规划出的实体有:学生实体、班级实体、年级实体、课程实体、用户实体。
班级实体E-R 图如图3.4.3-1所示。
图3.4.3-1 班级实体E-R 图
注:其它实体图与班级实体E-R 类似此处不再赘述。 3.4.4 数据库结构的设计实现
采用C/S模式,应用于Intranet ,加强数据的安全管理,同时可以设计与学校其他系统的接口程序,就能实现数据的共享传递。设计数据库结构图如图3.4.4-1所示。
图3.4.4-1 数据库结构图
经过需求分析和概念结构设计之后,得到数据库的逻辑结构。现在在SQL Server 2000数据库系统中实现该逻辑结构,利用SQL Server 2000数据库系统中的SQL 查询分析器来实现。创建系统学生表格students 的SQL 语句如下:
if exists (
select * from dbo.sysobjects where id = object_id(N'[dbo].[students]') and OBJECTPROPERTY(id, N'IsUserTable') = 1
)
drop table [dbo].[students] GO
CREATE TABLE [dbo].[students] (
[id] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [study_id] [char] (11) COLLATE Chinese_PRC_CI_AS NOT NULL , [class_id] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [name] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL , [sex] [char] (2) COLLATE Chinese_PRC_CI_AS NULL , [age] [varchar] (5) COLLATE Chinese_PRC_CI_AS NULL , [birthday] [smalldatetime] NULL ,
[xuezhi] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
)
[juese] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL , [qinshiid] [char] (5) COLLATE Chinese_PRC_CI_AS NULL , [mphoneno] [char] (11) COLLATE Chinese_PRC_CI_AS NULL , [address] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [indate] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL , [idcard] [char] (18) COLLATE Chinese_PRC_CI_AS NULL , [postno] [char] (6) COLLATE Chinese_PRC_CI_AS NULL , [fname] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL , [mname] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL , [home_phone] [varchar] (11) COLLATE Chinese_PRC_CI_AS NULL , [photo] [image] NULL ,
[zzmm] [text] COLLATE Chinese_PRC_CI_AS NULL
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
3.5 本章小结
通过问题提出、实践调查,然后进行可行性研究和需求分析,最后确定了系统的逻辑结构和数据库结构,规划出系统的雏形,总体设计了新系统结构、功能模块和数据库,为具体实现系统打下基础。
4 详细设计[7][8][9][10]
4.1 应用系统文件结构
图4.1-1 应用系统文件结构图
4.2 主要设置说明 4.2.1 管理用户登录模块 ·登录模块图示如下:
图4.2.1-1 登录界面
用户登陆窗口中放置了两个文本框, 用来输入用户名和密码;两个按钮用来确定和退出登陆;两个个标签(Label )用来标示窗体的信息,并为之设置属性。
部分代码如下:
private void btn_login_Click(object sender, EventArgs e) {
if (check()){
SqlConnection conn = new DBCon ().getConn();
SqlCommand comm = new SqlCommand ("user_login", conn); comm.CommandType = CommandType .StoredProcedure;
comm.Parameters.Add("@user_id", SqlDbType .VarChar, 50).Value = txt_user_id.Text.Trim();
comm.Parameters.Add("@user_pwd", SqlDbType .VarChar, 20).Value = txt_user_pwd.Text.Trim();
comm.Parameters.Add("@value", SqlDbType .Int).Direction = ParameterDirection .Output; try {
comm.ExecuteNonQuery();
int m = (int )comm.Parameters["@value"].Value; if (m == 1) {
user_id = txt_user_id.Text.Trim();
user_state = new DBManage ().getDataSet("select user_state from users where user_id='" + txt_user_id.Text.Trim() + "'" ).Tables[0].Rows[0]["user_state"].ToString(); this .Hide();
Main_Frm main = new Main_Frm(); main.Show(); }
else {
MessageBox .Show(" 用户名或密码错误,登录失败!" , " 提示" , MessageBoxButtons .OK, MessageBoxIcon .Information); return ; } }
catch (Exception ex) { MessageBox .Show(ex.Message); } finally { comm.Dispose(); conn.Close(); } } }
登录成功后的主窗体图如下图所示。
图4.2.1-2 班级管理系统主界面
4.2.2 班级管理模块
(1)班级信息添加
选择双击班级管理-添加班级信息或在开始菜单中选择班级管理管理-添加班级信息,班级信息添加窗口将会弹出,如图4.2.2-1所示。
图4.2.2-1 班级信息添加
(2)班级信息查询
在此模块中集成了对班级信息的详情查看和删除操作,可单条记录删除,也可点选部分或点击全选进行批量删除,同时也含有模糊搜索功能。如图4.2.2-2所示:
图4.2.2-2 班级信息查询
(3)班级信息修改
在此模块中单击班级编号就可以查看该班的详细注册信息,单击修改则可以对成绩信息进行修改。如图4.2.2-3所示:
图4.2.2-3 班级信息修改
(4)系别设置
在班级管理模块下左边快速通道中单击系别设置就可以打开对应的窗口,在此模块中将进行对系别信息的浏览、添加、修改、和删除操作。如图4.2.2-4所示:
图4.2.2-4 系别设置
(4)专业设置
在班级管理模块下左边快速通道中单击专业设置就可以打开对应的窗口,在此模块中将进行对专业信息的浏览、添加、修改、和删除操作。如图4.2.2-5所示:
图4.2.2-5 专业设置
4.2.3 学籍管理模块 (1)学生学籍信息注册
选择双击学籍管理-注册学籍信息或在开始菜单中选择学籍管理-注册学籍信息,学生学籍信息注册页面将会弹出,如图4.2.2-5所示。
图4.2.2-5 学籍信息注册
(2)学生学籍信息查询,在此模块中集成了对成绩信息的详情查看和删除操作,可单条记录删除,也可点选部分或点击全选进行批量删除,同时也含有模糊搜索功能。如图4.2.3-1所示:
图4.2.3-1 学籍信息查询
(2)学生学籍信息修改,在此模块中单击学号就可以查看该生的详细成绩信息,单击修改则可以对成绩信息进行修改。如图4.2.3-2所示:
图4.2.3-2 学籍信息修改
4.2.4 教师管理模块 (1)注册教师信息
选择双击教师管理-注册教师信息或在开始菜单中选择教师管理-注册教师信息,教师信息注册页面将会弹出,如图下图所示。
图4.2.4-1 注册教师信息
(2)教师信息查询,在此模块中集成了对教师信息的详情查看和删除操作,可单条记录删除,也可点选部分或点击全选进行批量删除,也同样具有模糊搜索功能。如下图所示:
图4.2.4-2 教师信息查询
在此页面中可以查看此老师任课班级和科目有哪些,如下图:
图4.2.4-3 教师任课信息查看
(3)教师信息修改,在此模块中单击编号就可以查看老师的详细信息,单击修改则可以对老师信息进行修改。如下图所示:
图4.2.4-4 教师信息修改
注:在此页面中同样也可以查看此老师任课班级和科目 (4)课程设置
此功能直接打开的是课程管理下的课程设置模块,方便添加老师信息后可以及时的设置任课信息,如下图:
图4.2.4-5 课程设置
注:其他模块功能类似,此处也再不赘述。 4.3 本章小结
在概要设计的基础上,对系统的模块结构进行分析设计,对系统模块的界面和实现源代码进行了设计与实现
5 班级管理系统系统测试
5.1 概述
随着web 应用的增多,新的模式解决方案中以web 为核心的应用也越来越多,很多公司各种应用的架构都以B/S及web 应用为主,但是有关WEB 测试方面的内容并没有相应的总结,因此,在开发空警管理系统时,对web 应用程序的测试方法和采用的测试技术进行总结。测试方法尽量涵盖web 程序的各个方面,测试技术方面在继承传统测试技术的技术上结合web 应用的特点。 5.2 测试方法 [11] 5.2.1 界面测试
很多人认为这是测试中最不重要的部分,但是恰恰相反界面测试是相当重要的确。 主要包括以下几个方面的内容:
各个空间位置是否合理,是否可以实现对应功能、内容布局布局是否合理,是否正确、背景/色调是否正确、美观,是否符合用户需求;
窗口中的控件显示是否正确、美观(在调整窗口大小时,是否有明显的闪烁影响)表格样式大小,格式,是否对提交数据进行有效验证,功能是否易于理解等。
测试技术
结合兼容性测试对不用分辨率下页面显示效果,如果有影响则提出解决方案。可以结合数据定义文档查看表单项的内容,长度等信息。界面测试要素:
符合标准和规范, 灵活性, 正确性, 直观性, 舒适性, 实用性, 一致性
5.2.2 功能测试
对功能测试是测试中的重点,主要包括以下内容:
表格数据提交应当模拟用户提交,具有验证格式等信息是否正确的功能,要测试这些程序,需要验证服务器能正确保存这些数据,而且后台运行的程序能正确解释和使用这些信息。还有数据正确性验证,异常处理等,最好结合易用性要求等。C/S结构实现的功能可能主要的就在这里,提交数据,处理数据等如果有固定的操作流程可以考虑自动化测试工具的录制功能,编写可重复使用的脚本代码,可以在测试、回归测试时运行以便减轻测试人员工作量。
白盒测试技术(White Box Testing) 深入到代码一级的测试,使用这种技术发现问题最早,效果也是最好的。该技术主要的特征是测试对象进入了代码内部, 根据开发人员对代码和对程序的熟悉程度, 对有需要的部分进行在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。
黑盒测试技术(Black Box Testing)黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行,根据软件需求,设计文档,模拟客户场景随系统进行实际的测试,这种测试技术是使用最多的测试技术涵盖了测试的方方面面,可以考虑以下方面:
正确性 (Correctness)、可用性 (Usability)、边界条件 (Boundary Condition) 、 性能 (Performance)
压力测试 (Stress) 多用户情况可以考虑使用压力测试工具, 建议将压力和性能测试结合起来进行. 如果有负载平衡的话还要在服务器端打开监测工具, 查看服务器CPU 使用率, 内存占用情况, 如果有必要可以模拟大量数据输入, 对硬盘的影响等等信息. 如果有必要的话必须进行性能优化(软硬件都可以). 这里的压力测试针对的是某几项功能.
错误恢复 (Error Recovery) 错误处理,页面数据验证, 包括突然间断电, 输入脏数据等.
安全性测试(Security)这个领域正在研究中, 不过防火墙, 补丁包. 杀毒软件等的就
不必说了, 不过可以考虑破坏性测试时任意.
兼容性 (Compatibility) 不同浏览器,不同应用程序版本在实现功能时的表现, 不同的上网方式, 如果你测试的是一个公共网站的话.
5.2.3 功能测试边界测试\越界测试技术详述
边界条件
边界条件是指软件计划的操作界限所在的边缘条件.
如果软件测试问题包含确定的边界, 那么数据类型可能是:
数值速度字符地址位置尺寸数量
同时, 考虑这些类型的下述特征:
第一个/最后一个最小值/最大值
开始/完成超过/在内
空/满最短/最长
最慢/最快最早/最迟
最大/最小最高/最低
相邻/最远
越界测试
通常是简单加1或者很小的数(对于最大值) 和减少1或者很小的数(对于最小值), 例如:
第一个减1/最后一个加1
开始减1/完成加1
空了再减/满了再加
慢上加慢/快上加快
最大数加1/最小数减1
最小值减1/最大值加1
刚好超过/刚好在内
短了再短/长了再长
早了更早/晚了更晚
最高加1/最低减1
另一些该注意的输入:默认, 空白, 空值, 零值和无; 非法, 错误, 不正确和垃圾数据.
5.2.4 状态测试技术
软件可能进入的每一种独立状态;
从一种状态转入另一种状态所需的输入和条件;
进入或退出某种状态时的设置条件及输入结果.
具体测试方法可以参考如下:
每种状态至少访问一次;
测试看起来最常见最普遍的状态转换;
测试状态之间最不常用的分支
测试所有错误状态及其返回值
测试随机状态转换
5.2.5 竞争条件测试技术
竞争条件典型情形参考如下:
两个不同的程序同时保存或打开同一个文档
共享同一台打印机, 通信端口或者其他外围设备
当软件处于读取或者修改状态时按键或者单击鼠标
同时关闭或者启动软件的多个实例
同时使用不同的程序访问一个共同数据库
5.2.6 负载\压力测试(StressTest)
在这里的负载\压力和功能测试中的不同, 他是系统测试的内容, 是基本功能已经通过后进行的. 可以在集成测试阶段, 亦可以在系统测试阶段进行.
使用负载测试工具进行, 虚拟一定数量的用户看一看系统的表现, 是否满足定义中的指标.
负载测试一般使用工具完成,loadrunner ,webload ,was ,ewl ,e-test 等,主要的内容都是编写出测试脚本,脚本中一般包括用户一般常用的功能,然后运行,得出报告。所以负载测试包括的主要内容就不介绍了。
无论什么工具基本的技术都是利用线程技术模仿和虚拟用户,在这里主要的难点在与测试脚本的编写,每种工具使用的脚本都不一样,但是大多数工具都提供录制功能就算是不会编码的测试人员同样可以测试。
对负载工具的延伸使用可以进行系统稳定性测试,系统极限测试,如使用100的Load Size连续使用24小时,微软定义的通过准则是通过72小时测试的程序一般不会出现稳定性的问题。
5.3 不同的测试技术区分
5.3.1 覆盖测试技术
说明:测试覆盖率可以看出测试的完成度, 在测试分析报告中可以作为量化指标的依据,测试覆盖率越高效果越好。
覆盖测试可以是程序代码的执行路径覆盖,亦可以是功能实现的步骤覆盖(可以理解成流程图的路径覆盖)。
该技术可以用在任何测试阶段,包括单元测坏死、集成测试、系统测试。
使用该技术时可以使用以上的任何测试方法和测试技术。
5.3.2 白盒测试和黑盒测试技术
白盒测试技术 (White Box Testing)该技术主要的特征是测试对象进入了代码内部, 根据开发人员对代码和对程序的熟悉程度, 对有需要的部分进行在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。这一阶段测试以软件开发人员为主,使用Xunit 系列工具进行测试,可以包括很多方面如功能性能等。
黑盒测试 (Black Box Testing)测试的主体部分黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行, 包括的不同测试类型请参考以上内容。
5.3.3 手工测试和自动化测试
手工测试(Manual Testing):即依靠人力来查找Bug 。方法可以参考上边的测试,也可以根据对实现技术及经验等进行不同的测试。
自动测试(Automation Testing )使用有针对工具实行。可以作出自动化测试的计划, 对可以进行自动化测试的部分编写或者录制相应的脚本, 可以加入功能, 容错, 表单提交等, 可以参考MI,Rational 或者其他类测试工具说明.
根据权威的软件测试经验,手工测试还是主要的测试方法,自动测试不够灵活,在这里不再详述。微软的测试过程80%还是手工完成。
自动测试永远也代替不了手工测试,但是手工测试的工作量很大是不争的事实。 由于测试环境操作系统,网络环境,带宽等情况可能产生的测试结果可能不同这是就需要经验以及对测试环境的保护等方面下一些功夫。
5.4 软件缺陷的原则
软件缺陷区别于软件bug, 它是在测试过程中出现的对系统有影响的, 但是在设计中没有的或者对修改后的bug 测试和开发人员有不同意见等软件未达到产品说明书标明的功能。
软件出现了产品说明书指明不会出现的错误。
软件功能超出产品说明书指明范围。
软件未达到产品说明书虽未指出但应达到的目标。
软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
6 开发技巧和难点
本系统开发的技术难点主要有两个方面:一是否业务逻辑的理解;二是数据库逻辑结构的设计。业务逻辑是依据空警管理系统的行业特点及其特殊的应用领域需要来进行设计的。只有在准确不理解一个系统的业务逻辑之后才可能开发出适应其应用的应用系统来, 并且在系统之间模块的科学划分与结构组织都是在正确不理解实际应用的业务逻辑需求的前提下完成的。
数据库设计是应用系统开发的另一个难点, 只有科学的数据库设计才能使系统具有良好的结构及良好的可编程性, 可扩展性. 数据库设计是直接影响系统运行情况及程序设计的一个重要因素. 因此, 在开发相关数据库方面的管理系统时, 都需要充分考虑到科学性、结构性、规范性、安全性、可扩展等相关问题。
系统编译标准(建议) 要求
Microsoft Windows XP Professional(SP3)
.net Framework 2.0
Microsoft SQL Server 2000企业版(SP3)
Microsoft Visual Studio.net 2008企业架构版
------ 已启动生成: 项目: CMS, 配置: Debug Any CPU ------
CMS -> C:\Documents and Settings\Administrator\桌面\CMS\CMS\bin\Debug\CMS.exe
------ 已启动生成: 项目: ButtonEx, 配置: Debug Any CPU ------
ButtonEx -> C:\Documents and Settings\Administrator\桌面\CMS\ButtonEx\bin\Debug\ButtonEx.dll
========== 生成: 成功或最新2 个,失败0 个,跳过0 个==========
7 结束语
经过二个多月的设计和开发,系统基本开发完毕。其功能基本符合用户需求,能够完成学生学籍的存储和成绩的查询、删除等功能。
但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如用户界面不够美观,功能不太完善,系统健壮性不强等多方面问题。这些都有待进一步改善。
8 致谢:
在论文完成之际,首先我要向我的导师康万新老师致以衷心的感谢。本论文在编写的过程中得到了康万新老师的帮助和指导, 并提供了大量有价值的资料;在撰写论文的过程中,康万新老师多次审阅我们的论文,指出了缺点和不足,提出了许多宝贵意见,使得我能够顺利完成论文的撰写任务。康万新老师老师用渊博的专业知识、严谨的治学精神、高尚的职业道德指引我在学习中不断探索,相信会让我在今后的人生道路上受益匪浅。在此我向康万新老师表示深深的感谢!
同时我还感谢母校的老师, 谢谢他们为本系统提供的帮助. 让我能够顺利地完成本系统的开发. 也感谢那些对我提供帮助的同学, 没有他们就不会现在的系统.
最后,诚挚地感谢为评阅本论文而付出辛勤劳动的各位专家和学者!
参考文献
[1] 张海藩:《软件工程导论》(第五版),清华大学出版社,2008.2,P259-P288
[2] 杨树林、胡洁萍:《C#程序设计与案例教程》,清华大学出版社,2007.8,P1-P6
[3] (美) 麦斯科 颜炯 译:《C#设计模式》,中国电力出版社,2006.7,P130-P144
[4] 张蒲生、何升:《SQL Server 数据库应用技术》,清华大学出版社,2008.3,P20-P35
[5] 徐孝凯、贺桂英:《数据库基础与SQL Server 应用开发》,清华大学出版社,2008.4 P1-P6
[6] 张海藩:《软件工程导论》(第五版),清华大学出版社,2008.2,P216-P228
[7] 王小科、吕双、梁冰:《C#完全自学手册》,人民邮电出版社,2009.10,P132-P221
[8] (美)罗宾逊、(美)内格尔 著 李敏波 译:《C#高级编程(第3版)》 | Simon Robinson Christian Nagel,清华大学出版社,2007.3,P301-P345
[9] 启明工作室:《MIS 系统开发与应用(C#+SQL Server 版) 》,人民邮电出版社,2009.10,P211-P310
[10] Stanley B. Lippman著 侯捷、陈硕 译:《C# Primer中英文版》(C# Primer A Practical Approach),华中科技大学出版社,2009.4,P154-P203
[11] (美)托马斯 等著,陈伟桩 陶文 译《单元测试之道C#版——使用Nunit 》| Pragmatic Unit Testing in C# with NUnit Andrew Hunt,David Thomas,电子工业出版社 ,2008.4,P38-P49