计算机信息管理专业本科毕业设计

更新时间:2023-05-31 05:36:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学籍管理了系统开发

学籍管理子系统的开发

摘要:本文以某校的学籍管理子系统的开发为背景,论述了管理信息系统的概念、结构及系统开发的基本原理和

方法。全文共分为绪论、管理信息系统综述、开发方法的选择、系统规划、系统分析、系统设计、系统实现、系统运行与维护等七章。详细闸述了系统分析、系统设计的技术和应用,讨论了结构化生命周期法和原型法这两种开发方法的技术。

关键词:管理信息系统 学籍管理子系统 系统开发

第一章 绪论

管理工作的成败,取决于能否作出有效的决策,而决策的正确程度则取决于信息的质量。科学技术的进步和生产的发展使人类知识总量的增长速度不断加快。另一方面,生产社会化趋势的扩大和社会对产品需求的多样化使得企业在生产经营活动中涉及的内部和外部信息量迅速膨胀起来。面对激烈的市场竞争,对这些信息进行收集、加工、传递等过程的时间性和准确性也提出了更高的要求。这一切都使传统的、以手工作业为基础的信息系统陷入了机构日益庞大、效率日益降低的困境。电子计算机的出现为摆脱这种困境找到了出路。当1946年的第一台电子计算机问世以来,其发展速度之快,真可谓突飞猛进,日新月异。

运筹学和现代控制论的发展,使许多先进的管理理论和方法应运而生,而这些理论和方法又都因为计算工作量太大,用手工方式根本不可能及时完成。只有现代电子计算机的高速准确的计算能力和海量存贮能力,才能为这些理论从定性到定量方面指导决策开辟了新的局面。另一方面,计算机技术与通信技术的结合,大大地促进了现代化信息技术的发展。

电子计算机主要用于科学技术计算方面、生产控制方面和管理方面。据统计,世界上发达国家都十分重视电子计算机在管理中的应用,许多企业将全部投资的10%以上用于计算机,而其中70%以上是用于管理方面的。管理方面应用电子计算机已经发展成为专门的管理信息系统(Management Information systems,简称MIS)。我国自1983年大力推广微型计算机应用以来,在管理信息系统领域,无论在理论方面,或者在实践方面都有了很大的发展。1986年2月国务院批准建设了国家经济信息系统,全国从中央到省、市地方都陆续成立了信息中心,各行各业应用电子计算机的热情普遍高涨,目前已从单项业务的信息管理,迅速向综合的管理层和决策层的信息管理发展,应用水平日趋提高,以三金工程为代表的国民经济信息化工程也正在加速建设。

谈到管理信息系统,自然离不开数据库的支持。数据库技术,是计算机技术的一个重要分支。由于数据库具有结构化、最小的冗余度、较高的程序与数据独立性、易于扩充、易于编程、多用户可以安全地共享数据等优点,当前各种管理信息系统都是建立在数据库之上的。说到底,管理信息系统是一个集计算机技术、信息技术、数据库技术、现代管理理论为一体的综合性系统。可以说,管理信息系统是一个集计算机技术、信息技术、数据库技术、现代管理理论为一体的综合性系统。建立这样一个复杂的系统是需要付出昂贵代价的,因为它是一个资金密集型、劳动密集型、智力密集型的项目。我国还面临一系列的问题,但只要我们扎扎实实地作好建设管理信息系统的基础性工作,多多注重人材的培养,就一定能够建立起比较实用的应用系统来,实现我国信息化建设的目标。

第二章 管理信息系统的综述

学籍管理了系统开发

2.1概述

管理信息系统是先进的科学技术和现代管理相结合的产物。建立以计算机为主要手段的管理信息系统,已经成为现代企业、政府部门等各类组织提高自身素质、实现组织目标的战略措施。但是,国内外历史事实告诉人们,管理信息系统建设的道路坎坷,许多已建系统带来的效益,远远不及预先的承诺和期望。系统建设中耗资巨大、效益难望、或半途而废、或使建设单位背上沉重包袱等情况时有发生。因此,系统建设者必须深刻理解系统建设工作的复杂性,正确认识其特点和规律,并且运用科学的建设方法。这对成功地建设管理信息系统,至关重要。

2.2管理信息系统建设工作的复杂性

2.2.1、建设环境的复杂性

现代企业、政府部门等组织一般来说来结构复杂。管理信息系统建设通常要涉及到组织内部各级机构、管理人员及组织面临的外部环境。系统建设者必须十分重视、深刻理解组织面临的内、外环境及发展趋势,考虑到管理体制、管理思想、管理方法和管理手段的相互匹配、相互促进,考虑到人的习惯、心理状态及现行的制度、惯例和社会、政治因素。

2.2.2、用户需求的多样性

管理信息系统的最终用户是各级各类管理人员。然而,一个组织内各类机构和管理人员的信息需求不尽相同,系统建设者面对这样复杂的目标集,必须寻求使各方都比较满意的方案。 2.2.3、建设内容的复杂性

管理信息量大面宽,形式多样、来源繁杂,信息内容和处理要求又涉及到广泛的学科和事业领域。管理信息系统要实现一个组织的信息系统的综合处理以支持各级管理决策,必是一个规模庞大、结构复杂、具备多种功能、实现多个目标的大系统。

2.2.4、技术手段的复杂性

现代的先进技术成果,如:计算机硬件和软件技术、数据通讯与网络技术、各种信息采集与存储、各种控制与决策方法、建模与仿真技术,以及人工智能技术等,都是进行管理信息系统建设,实现系统各种主要功能的技术手段。

2.2.5建设资源的密集性

管理信息系统的建设,需要巨额投资,是一种资金密集型的建设项目;由于规模大、建设内容复杂,主要工作特别是软件开发需用大量人工,因而也是劳动密集型项目;由于上述建设环境、建设内容、所用技术手段的复杂性,系统建设的各项工作都需要大的智力劳动,所以说,管理信息系统建设项目又是智力密集型或知识密集型的。

2.3管理信息系统在学校建设工作的复杂性

首先,一所大学包括的院系有很多,管理信息系统建设必须要涉及到组织内部各级机构的管理人员所面临的外部环境。

其次,各院系的各级各类管理人员的信息要求不尽相同,管理信息系统必须满足各层次管理人员的需要。

再次,一所大学规模很大,开发这样一个管理信息系统需要长时间的调查,必须深入组织内部,使开发出来的管理信息系统用之所需。

第三章 开发方法的选择

学籍管理了系统开发

3.1系统建设方法的发展概述

本世纪后半叶,尤其是80年代以来,社会经济和科学技术的发展迅速,各类社会组织、特别是企业面临的环境复杂多变、竞争日趋激烈。国际社会的信息化浪潮一浪高过一浪,管理信息建设需求紧迫,先后提出了结构化生命周期法、原型法、面向对象的方法等。

3.2结构化生命周期法简介

“结构化”一词在系统建设中的含义是用一组规范的步骤、准则和工具来进行某项工作。基于系统生命周期概念的结构化方法,为管理信息系统建设提供了规范的步骤、准则与工具,以弥补早期方法的不足。

产品

结构化方法的主要原则,归纳起来有以下四条: (1)用户参与原则 (2)“先逻辑,后物理”的原则 (3)“自顶向下”的原则

(4)工作成果描述标准化原则 其步骤大体分为以下步骤: (1)系统规划 ·战略规划 ·需求分析 ·资源分配

(2)系统开发 ·系统分析 ·系统设计 ·系统实施

(3)系统运行与维护 (4)系统更新

3.3快速原型法简介:

80年代发展起来的原型法(Prototyping Approach)是通过快速建立并供用用户使用的原型

学籍管理了系统开发

(Prototype)来激发用户的信息要求。原型法加速了系统开发中用户需求的获取过程,有助于解决一些规模不大但不确定因素较多的管理决策问题,提高了系统开发效率和有效性。

原型法的基本思想:决策者和研制者在一个小而重要性问题上取得一致意见,然后开发和设计一个原始的系统以支持所需要的决策,在使用一个短时期后,如几周后,对系统进行评价、修改、并增加、扩展,这样循环几次,直到发展成为一个相当稳定的系统。

原型设计法示意图:

采用原型法要经历以下四个阶段: (1)确定用户最初要求 (2)研制系统原则

(3)使用、评价系统原则 (4)修改和完善模型

3.4本系统开发选择

基于上述两种开发方法的优劣,本系统利用软件工程化思想和方法,两种方法相结合,而总结上是结构化生命周期法。

第四章 系统规划

规划,一般是指对较长时期的活动进行总体的、全面的规划。现代社会组织,例如:学校,它们结构和活动内容都很复杂,实现一个组织的信息管理计算机化需要经过长期努力,因而必须对一个组织的管理信息系统进行规划,根据组织的目标和发展战略以及管理信息系统建设和客观规律,并考虑到组织面临的内外环境,科学地制定管理信息系统的发展战略和总体方案,合理安排系统建设的进程。

4.1系统的初步调查:

数据库设计所要的解决的问题是:对于一个给定的应用领域,设计优化的数据库逻辑和物理结构,使之满足用户的信息管理要求和数据操作要求,有效地支持各种应用系统的开发和运行。数据库设计的目标是为用户和各种应用系统提供一个高效的运行环境。而数据库的设计可以视为

学籍管理了系统开发

如下的优化问题。

(1)计算机的软硬件环境; (2)数据库管理系统的能力; (3)用户的操作要求与信息要求; (4)完整性和安全性约束。

经过调查分析,本设计组可以完全解决以上优化问题:

(1)开发采用Microsoft 的MS SQL Server2000是当今社会的主流数据库管理系统,它的稳定性和易用性是为世人所称道的,最重要的一点是它是当今世界最大的软件设计厂商-Microsoft数据的产品。因此,他同Windows NT,Windows2000等操作系统的结合是最完美的。所以,在数据管理系统上,我们采用了MS SQL Server2000。而在数据库开发工具上则采用了SYBASE 公司的PowerBuild7.0,Sybase的PowerBuilder以其高效的开发环境,杰出的数据库开发特性,组件的创建和与其他Sybase开发工具的有机结合,从一个4GL的RAD开发工具,步入了企业级的开发工具市场。它的数据窗口作为一项专利,使得许许多多的程序员大大地减轻开发的工作量。Windows2000作为杰出的32位操作系统,它的稳定性,安全性完全可以满足系统的要求。

(2)采用的数据库管理系统:MS SQL Server2000是SQL Server家族的最新产品,SQL Server2000 扩展了 Microsoft SQL Server 7.0 版的性能、可靠性、质量和易用性。Microsoft SQL Server 2000 增加了几种新的功能,由此成为大规模联机事务处理 (OLTP)、数据仓库和电子商务应用程序的优秀数据库平台。而我们做的学籍管理系统,数据来源就是某大学的学生信息成绩,大概有一万名学生,数据不算很多,用MS SQL Server2000完全可以很好地处理这些数据。

(3)在用户的操作要求方面:操作数据库的用户基本上是大学的教师,有较高的文化水平和计算机操作能力,他们对整个学籍管理程序比较熟悉。在信息要求方面,由于学校的学生信息比较容易管理,而且信息更新比较快,同时信息的查询是比较频繁的。设计的系统必须能对查询进行有效的处理。

(4)在完整性和安全性方面:学校的学生信息是在变化的,在更新和删除方面,要做到更新及时删除完整。安全性方面则分清操作员的权限问题,限制非授权的存取,某大学学籍管理系统是被多个用户共享使用,每个用户对数据库的存取权是有限的。管理员可以对用户进行管理。而用户当中的教师可以对数据库进行录入,修改,删除。而用户中的学生则只能对自己的数据进行查询操作。同时做好数据库的数据恢复,设计一个系统恢复子系统。这个子系统在系统的硬件或软件发生故障时,能保证数据库的正确性。系统恢复子系统的关键是在系统的硬件或软件故障修复后,能够把数据库恢复到正确的状态。

4.2本次设计的学籍管理子系统采用的“客户/服务器”体系简介

随着计算机网络的信息服务的不断深入发展,传统的联机远程终端和以文件服务器为核心的计算机网络结构已经不能满足实际需要。取而代之的是客户/服务器(Client/Server)模式,该模式以其高性能和高可靠性等优点迅速地被广泛应用起来。

客户/服务器是在网络基础上,以数据库管理为后援,以计算机为网上工作站的一种系统结构。该结构的关键在把网络环境上的数据库存取和应用程序一分为二,分别由网上的数据库服务器和网上客户来执行。虽然某大学学籍管理系统客户/服务器是建立在LAN的基础上,但它比以往的文件服务系统有了很大的改进。首先,它消除了不必要的网络传输负担;其次,它可以使作为数据库服务器的计算机被高度优化,以适应数据处理的需要。相比之下以往的宿主式计算机系统除了数据处理之外,还要承担应用的工作,从而降低了工作效率。另一方面,由于作为客户的计算机如今主要承担应用方面的专门任务,这就有可能使其高度优化。由此可见,客户/服务器体系在网络连接上和设备上并没有什么变化,只是改变软件应用的系统的配置方法,从而明显地改变了整个系统的运行性能,有效地增强了系统的可扩充性和可维护性。

学籍管理了系统开发

客户/服务器已经能够应用于复杂的网络上,并使之能够更有效地进行选择、检索、索引排序等数据处理。作为一种高级的分布式计算机环境、客户/服务器有足够的能力把处理后的结果(不是整个文件)通过网络传输出去,并根据用户需求灵活地配置各种大、中、小型计算机系统。 整个客户/服务器体系分为三部分。

(1)客户:发送请求及处理返回结果,显示和控制应用工作环境及用户界面,完成数 据合理性校验。显示报告和使数据表现图形化;

(2)服务器:处理客户请求,为客户分析数据并返回结果或动作。一个服务器本身有时又可以成为另一个服务器的客户。

(3)网络:实现客户和服务器的之间的透明连接;

第五章 系统分析

5.1学籍管理子系统的详细调查

一个大学的学生信息是庞大的,其信息量不亚于许多大型的数据库系统。在我设计的学生管理系统中,通过调查得知大学的院系众多,而且各院系下又有众多的专业,各个专业又有众多的班级。班级里又有众多的学生。因此学籍管理系统的管理是分层次的。最低层的数据是每个学生具体的信息,如个人信息,家庭信息,成绩信息等。而这些信息都是从最初的院系里,一级一级地检索出来。由于一个在校的学生的信息是在他们入学以后就建立起来的,因此在,新生入学的时候,就可以录入学生的信息,然后再分班。在以后的学习过程中,信息在不断的改变,增加。设计的学籍管理系统能够动态地对学生信息进行管理。在成绩管理方面,每个学期,都要录入学生的成绩,对数据进行整理,然后通过另一个设计小组的Web服务器把数据在网上发布,供学生查询。

在代码管理方面,在众多的学生信息中,有许多的信息是重复的,如一个班的学生,他们所属的院系,专业,班级都是相同的,如果把这些数据都录入数据库,就会浪费很大的空间,同时数据库的性能也会下降。因此单独建立代码表、把学院名称,专业名称用代码表示,这样当一个院系或专业改变名称的时候,不必依次改变每个学生的信息,只要改变学院、专业代码表就可以了。这样在数据库的维护方面也很方便。

通过我的设计,使学校在管理学生方面能够实现自动化,网络化。学生的信息更新将更加及时。

在系统的设计方面,采用服务器/客户模式,多个客户可以访问同一个服务器的数据,这样数据的集中性就较合理,同时数据的完整性也可以得到保障。

在学籍管理系统中,每个数据库文件的存储结构、存取方法等详细信息存储在数据字典中。存取数据库时,用户只需要引用数据的抽象概念表示,数据库管理系统负责从数据字典中提取数据库文件的存储结构和存取方法细节,把用户引用的抽象概念表示转换为物理表示,完成用户的存取要求。

5.2系统分析的主要工具

5.2.1数据流图(DFD:Data Flow Diagram)

数据流图就是组织中信息运动的抽象,是管理信息系统逻辑模型的主要形式。以数据关联图和数据顶层图为主要的组成部分。

首先,对学籍管理的总体情况,划分系统边界,识别系统的数据来源和去向,确定外部实体,得出系统关联图:

学籍管理了系统开发

管理要求

查询要求

管理结果 查询结果

数据流图说明

系统管理员是整个系统的拥有者,拥有对系统的一切权利,他能对整个系统进行管理,包括数据管理,用户管理,权限管理。由于系统管理员对数据库的安全起很大的作用,所以系统管理员对数据库应该很熟悉,同时对系统的结构也应该很了解,计算机操作水平高,这一类人员占整个系统的人员不应该超过千分之一,甚至更少。

数据操作员是整个系统的维护者,他虽然不能对整个系统进行管理,但是,系统的数据基本上是由他来维护,由于数据的安全性和完整性要得到保证,所以不是任何人都能对数据库进行修改,删除,更新。只有数据操作员才能对数据的数据进行检验,和操作。因此数据操作员对学生工作比较熟悉,而且对各种数据的含义应该了解。这一类操作员可以不必了解整个系统的结构。但是要有一定的计算机操作能力,这一类人员占整个用户群的百分之十。

数据录入员是负责数据录入的群体,他们对数据进行录入,但是不能对数据进行修改,删除等,在每年新生入校时,他们负责录入新生的信息,同时在每一学期结束时,他们负责录入学生这一学期的学习成绩,在录入完毕以后,由数据操作员对数据的完整性和正确性进行校正,如果有错误,由他们进行修改,删除,更新。而不是数据录入员,数据录入员占整个系统用户的百分之二十。

查询用户是整个系统没有操作权限的人员,他们分别由学生,学生家长,教师组成。这些用能进行信息,成绩查询;但是又不是什么信息都能查询,当一个数据库系统被多个用户共享时,每个用户对数据的存取是有限的。并非每个用户都可以随心所欲地存取数据中的任何信息。如,一个学生的基本信息和成绩信息只允许学生自己查询或者是学生的家长获得学生授权而进行查询,其它的学生就不能查询到其他人的信息,因为这涉及到学生的个人隐私。同样的本系的老师只能查询到本系的学生信息和成绩,所不同的是学生只能查询到个人的信息而老师则可以查询到整个班级甚至是整个院系的学生信息。因此学生和老师的查询权限不同。

然后划分几个主要的信息管理功能,并明确各功能之间的联系,绘制出数据流图的顶层图。

学籍管理了系统开发

5.2.2数据字典(简称DD)

数据词典的作用是给数据流图上每个成分以定义和说明。换句话说,数据流图上所有成分的定义和解释的文字集合就是数据词典。上面讨论的数据流图只是给出系统逻辑功能的一个总框架而缺乏详细、具体的内容。数据词典对数据流的各种成分起注解、说明作用。

这里列出了某大学学籍管理系统数据字典

学籍管理了系统开发

这样,用MS SQL Server2000建表的工作就完成了,可以将表添加到数据库关系图,对其结构进行编辑或使其与关系图中的其它表相关。既可以将现有数据库表添加到关系图,也可以插入尚未在数据库中定义过的新表。添加现有表意味着想使其出现在关系图中的表已存在于数据库中。如果将一组表添加到关系图,则表之间存在的任何关系也将添加到关系图中去。

第六章 系统设计

管理信息系统设计阶段的主要目的是系统分析阶段所提出的反映了用户信息要求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理(技术)方案。

6.1某大学学籍管理系统设计

在PowerBuilder中首先建立一个应用(Application),在应用中填写相应的应用名称和库(Library)文件名称及存放路径。这样在以后开发出的窗口(Window)、菜单(menu)、数据窗口(DataWindow)、函数(Function)等就可以放在库文件中了。

建立好库文件,就可以建立各种窗口、控件了。在设计的过程中,窗口是各种控件的载体。

学籍管理了系统开发

因此先新建一个窗口(Windows),再往里面添加各种控件。

6.2学籍档案子系统的功能和模块:

6.2.1登陆系统的功能和模块:

(一)登陆系统流程图

学籍管理了系统开发

(二)设计思想

(1)数据库的安全性和完整性

数据库的安全旨在保证数据库的任何部分都不受到恶意侵害或未经授权的存取和修改。 为了确保数据库的安全性,我们设计的数据库管理系统要考虑到以下三方面的问题。

第一个问题是用户权限问题。在这个系统中,用户是多种多样的,有教务处的教师,有各个院系的教师,有各个授课的教师,还有学校的学生。因此在多用户数据库系统,数据库管理系统必须提供授权机制,为不同的用户授予不同的数据库操作权限,使得每个用户只能在被限定的数据库集合上执行被允许的操作,防止数据库被非法访问或破坏,如教务处的老师就只能浏览数据、统计数据,而不能修改,删除数据;各个院系的教师则可以对数据进行操作;授课教师只能对学生成绩进行录入;学生只能查询到自己个人的成绩,访问他人的数据是不行的,因为这涉及到个人隐私问题。

第二个问题是防止非授权用户使用系统的问题。这类安全性问题是各种计算机软硬件系统所共有的问题。数据库管理系统必须具有防止非授权用户进入和使用数据库系统的机制。这种机制被称为系统保护机制。系统保护机制可以通过创建用户账号和口令来实现。

第三个问题是统计数据库的安全性问题。统计数据库中的数据分为两类。一类是微数据。微数据是描述现实世界的实体、概念或事件的数据。另一类是统计或统计数据。统计数据是对微数据进行综合处理而得到的结果数据。例如,在学籍管理系统中,微数据是每个人的详细资料信息,统计数据包括关于不同年龄组、不同院系、不同专业的统计数据。统计数据系统只为用户提供统计数据,不允许用户访问微数据。统计数据包括只为用户提供统计数据,不允许用户访问微数据。但是,微数据有时可以从一组统计数据推导出来。在数据库管理系统必须防止用户访问或推导出统计数据库的微数据

(2)数据库的连接参数和属性

由于这个系统要连接不同的数据库,数据库的连接参数就必须是动态的。连接参数 包括(DBMS.数据库管理系统,Server:服务器,Database.数据库,User.用户,Pwd.密码),这些参数如果写在应用(Application)里的话,经过编译以后。这些参数就不能改了,系统就只能连接一个指定服务器,而且这个指定的服务器有所改变(如:服务器名,数据库名,用户及密码等)那么系统就再也连不上服务器。如果想要重新连接数据库,就必须重新编译,但这是不可能的事。这些参数就要放在和数据库无关的其它位置,在连不上数据库时就可以对这些参数进行修改。常见的做法是在生成一个初始化文件(pb.ini)在系统连接数据库时,从这个文件中调出连接参数,从而达到连接数据的目的。

但是这样做的缺点是:

(1)初始化文件不是很安全,其他没有权利去访问数据库的用户,可以打开初始化文件,这样就可以看到连接参数,数据库系统的安全性就显得不完整,因为他人可以用获得的这些参数,访问数据库。

(2)初始化文件容易被删除,修改。如果(ini)文件在无意被修改或者删除,那么数据库就连接不上,而且在以后的使用过程中,软件的使用人员不知道怎么修改。

针对采用初始化文件连接数据库的缺点,我们采用把数据库连接参数放置在注册表中。 采用把参数放置在注册表的优点是:

(1)注册表文件对大多数人来说,不是很容易理解。了解注册表的用户知道注册表是一个重要的文件,也不敢随意修改注册表。所以说把参数放置在数据库中是安全的。

(2)而且注册表文件也算是一个比较大的数据库,要想在里面找出数据库连接参数也不是一件很容易的事。

学籍管理了系统开发

在PowerBuilder中,有专门操作注册表的注册表函数:

在系统进行初始化的时候就要对注册表进行写入数据库连接的参数。用RegistrySet (key,valuename,valetype,value)函数对系统注册表中指定的键或值名设置值;如果指定的键或值名不存在,则建立一个新的键或值名,并为它设置值。

在系统开始运行的时候从注册表中读出连接参数,从而连接数据库。用RegistryGet(key,valuename)函数。如果从注册表中读出的连接参数不能成功连接上数据库,系统就会提示错误,把注册表中的数据清除。并且在下一次系统运行的时候自动弹出系统初始化窗口,让用户重新进行初始化,添入正确的连接参数。

获得正确的数据库连接参数后,如果数据没有问题,那么连接就没有问题,可以连接数据库了。根据用户输入的用户名和密码,从数据库中进行检索,如果用户名和密码正确的化。那么在根据用户的等级和操作权限,让用户进入不同的界面进行操作。

在登陆的时候用户只要输入登陆名称(logname)和登陆密码(logpassed),而其它的详细信息如用户姓名(usrname),用户权限(opringht),用户单位(usrdep),备注(note)等信息则会从数据库中自动检索出来,作为全局变量(Global Varilabes)。在主窗口中,通过传递过来的全局变量:用户权限(opright),来决定用户的操作权限;如果是拥有管理员权限的用户,则设置其可以对系统进行管理;如果用户是操作用户,则设置其可以对数据进行操作,如果用户是查询用户,则设置其可以进行相应的数据查询操作。

6.2.2代码管理系统的功能和模块:

(一)设计思想

在我们设计的学籍管理系统中,为了提高数据库系统的效率和方便对数据库数据的管理,采用了大量的代码模式。因为在学生的信息中,存在很大重复的信息,如一个班的学生,其所在院系、专业、年级、选课等信息都是相同的,如果在每个学生的信息中,都写上完整的院系名称、专业名称、年级、选课名称,那么在数据库的存储中就会存在大量的存储空间的浪费,而且延长了从数据库查询数据的时间。还有一个不能忽视的问题是:当一个院系、或专业改变名称时,涉及到这个院系、专业的所有学生都要进行改变其所在的院系、专业名称。这样做的话,系统的维护量就很大,让数据库管理员对成千上万的学生信息进行逐个修改,这是不可能的事。

针对以上问题,我们在设计的时候,对大量重复的数据信息都采用用代码表示。 (1)院系代码(xycode) (2)专业代码(zycode) (3)地区代码(dqcode) (4)民族代码(mzcode) (5)课程代码(lesson)

其中的院系代码和专业代码又有联系,因为一个专业是所属一个院系的,他们之间的

关系是多对一的关系。当增加一个专业的时候,必须指定它所属的院系,可以单独删除一个专业,

学籍管理了系统开发

但是如果删除一个院系,就必须把这个院系的所有专业都删除或者是把其中的专业所属院系改成已经存在的院系代码。

光是有代码,而不对代码进行有效的管理,那么代码就会变的混乱,因此代码管理 只是对有较高权限的用户开放。

代码是一些简单数据,如果让普通用户直接面对它,用户很不容易理解。例如,在一个学生的信息中:学生所在院系,所学专业直接是代码显示。信息学院的代码012,那么只有管理员经过查询才知道012是信息学院,其它没有代码管理权限的用户不知道012的含义。但是在PowerBuilder中,可以用下拉数据窗口解决这个数据项是代码、但是显示出来却是代码的问题。

6.2.3学生学号管理系统功能和模块: 当一个专业的学生进入学校后,学校都会分给学生一个在学校里独一无二的学号,学生在学校里的情况都是以学号为主键。因此在新生入学的时候,为学生尽快地分配好学号,拥有了学号以后,就可以对学生进行管理。

根据某大学的学号分配情况,可以根据新生入学的情况(院系、专业、年级等)自动分配学号。

具体的实现方法是:设置学号位所对应的含义(院系、专业、年级、班级等),设计相应的数据窗口,和下拉列表框,以及各种单行编辑框等。由用户自己分配学号各个位段所对应的含义和相应的值。

但是在我的数据过程中,不能就这么指定各个字段的含义。因为,在将来,字段的含义也许会改变,所以要设置动态的字段含义,把字段包含的所有含义都放在一个下拉列表框中,让用户自己选择,如果用户选择了院系,则会出现院系的下拉数据窗口,用户从中选择拥有该学号的院系名称。其它字段实现方法同上。在选择了这些字段含义的后,就要以班级为单位输入学号。学号的有两位是有序增长的,因为这是一个学生在班上序号,采用了动态编码,那么序号这个字段就不一定是在最后两位,他可以是在字段1或者其它位置。在设计的过程中要一次性的输入一个班的学号,因此我采用了循环的算法。

以学号的序号字段中起始数据为初值,以终止数据为终值。递增量是1;终值和初值的差就是这个班级的学生人数,再把学号信息中其它信息的字段加上去。因此一条循环语句结束时,就自动生成了一个班级学号,把学号赋值到数据窗口中相应的学号列,同时,学院名称,专业名称,班级等大量相同的则自动录入。用户要做的事是,输入学生姓名,这样,一个班级就分好了,并且学生的基本信息也录入了。

6.2.4成绩管理系统的功能和模块:

(一)设计思想

近几年由于扩招,大学的学生人数从原来的几千人增加到现在的上万人。因此,对众多学生的管理方面变得越来越复杂化,成绩管理也不例外,为了管理好每个学生的成绩,所以很有必要开发一个成绩管理系统来对学校每个学生的成绩进行管理,以方便管理人员进行管理和学生进行查询。成绩是一个学生在学校表现的体现.同时它也影响到学生的各种评比.如奖学金,三好学生的评比。学生的家长有必要了解自己的子女在学校的表现情况.了解子女学习成绩是最好的途径之一。因此,在大学,对学生的成绩管理是很重要的。一般来说,学生的成绩管理包括以下几个基本要素:

学籍管理了系统开发

学生学号(stuid);

学生所在院系(yxcode),用代码表示; 学生所在专业(zycdoe),用代码表示; 学生班级(class); 课程(lesson); 课程学分(credit); 任课教师(teacher); 上课时间(smstm); 学生成绩(score); 重修成绩(repscore);

根据以上要素,我设计学生成绩管理系统,其中包括以下子系统:

(1)成绩录入子系统

只有学生成绩,才提得上修改、浏览、打印和查询成绩。因此成绩录入子系统是整个成绩管理系统的核心,设计好录入系统可以大大减轻操作员的工作量。

该项操作必须是系统的管理人员才具备的操作权限,在进入系统的成绩录入页面时,要求输入正确的用户名和密码,经过系统验证正确无误后方可进入,如输入的用户名和密码不匹配,则不能进入该系统。

设计思路:

当一个学期结束后,各个课程的主考老师会把学生的成绩送交到学生所在的系上,成绩的录入就由各个系上管学生工作的教师完成。通常都是针对一门课程,然后一个班的学生为单位,来录入整个班的成绩。但是由于学生的学号只有后两位是不同的,而且学号从低到高是递增的,而且递增量通常是1。因此,只要输入开始学号和结束学号,让系统自动产生中间的学号;并且课程是相同的。这样,就针对一个指定的班级,指定的课程而让教师只管输入学生成绩(根据学号)。

学籍管理了系统开发

设计界面如下图:

成绩录入主窗口

(2)成绩修改系统

设计思想:一般来说,学生成绩录入之后,就不能修改了;但是要修改的情况也不是不可能的事情。如果一个学生某一科目重修过多次,那么这些重修成绩在每一次重修完毕后,就要追加入数据库。当管理人员发现录入的记录有误或学生反映自己的成绩有误时,经核实正确后可进行该成绩的修改,该操作可以是在成绩修改界面中进行的,也可以在成绩录入界面中进行。具体操作是在下面的显示框中点击该条记录,在录入的文本框中修改保存后即可把修改后的记录保存到数据库中。所以要设计一个系统让用户修改成绩。

进行数据修改的用户权限应该是比较高的。不允许权限低的用户修改数据。

由于时间的原因,我在设计成绩修改的时候,只能是对单个人的成绩进行修改。即用户在修改的窗口中,输入所要修改成绩的学生学号,让系统检索出这个学生的所有成绩,还有一个实现途径是:在成绩浏览窗口中,根据学院、专业、班级等信息检索出一个班的学生,再从中选择出要进行修改成绩的学生,直接进入修改。

(3)成绩浏览系统

当数据库系统中有了学生的成绩后,就可以浏览学生的成绩了。教师为了解学生的学习情况,就要对学生的成绩有一个综合的了解,对学生成绩浏览是最好的办法了。同时学生的也可以看到自己的学习成绩结果等。

浏览成绩的过程:

由于成绩浏览不能对数据进行修改,所以成绩普通用户可以拥有此权限。本设计的成绩浏览单位是分层次的。采用的是一个树型结构。

用户进入成绩浏览系统之后,必须要选择要浏览成绩的院系,这时,在窗口(见下图)的索引数据窗口中,就会显示出这个院系的所有学生;同时在专业的下拉列表框中,通过游标

学籍管理了系统开发

(CURSOR)技术,把属于这个院系的专业显示出来。

成绩浏览界面

(4)成绩查询系统

数据库管理系统的主要任务是有效地处理用高级查询语言编写的用户查询。查询的处理是数据库管理系统的核心

查询结果

学籍管理了系统开发

本系统的主要目的是提供给学生查询,而学生则不可能都到教务处或者是系上进行查询,那么把这些数据都放到网上,让学生用浏览器进行查询则是最好的办法。在我设计完查询系统后,把数据提供给另一个JSP设计小组。利用他们设计的WEB服务器,提供给学生查询。

(5)打印系统的实现

设计思想:打印系统是整个系统关键的部分,任何资料都要打印,但是如果每个窗口都要单独编程进行打印的化,开发的工作就要加倍。所以,在设计打印系统的,我们设计了一个通用打印系统,但任何数据窗口需要打印的时候,就调用打印系统。

(6)照片管理系统

图片(image)是一个比较大的数据类型,要把图片装人数据库中就不是那么容易,常见的做法是在数据库中存放的是图片所在的系统路径,在数据窗口中根据图片路径,找出图片,并且显示。这样做虽然减轻了数据库的检索时间,为数据库节省了空间(把照片存放在数据库之外的文件夹里,而不是数据库)。但这样照片很难管理,容易不慎删除照片,只要文件夹有一点改变,那么存放的所有照片都显示不出来。

因此把照片存放在数据库里是比较安全也比较可行的方法。PowerBuilder提供的BLOB(Binary Large Object)数据类型可以用来处理大型数据,包括图像、大文本、Word文档、二进制文件和多媒体等各种数据,它的长度可以是0~2GB字节,我们利用BLOB类型的变量可以将数据传递给数据库以大字段方式存储。但是用通常的数据窗口技术无法将BLOB类型数据加入到数据库中,也不能将数据库中相应字段的数据提取出来,即使在程序中直接使用UPDATE和SELECT等SQL语句也是无法对BLOB类型数据进行操作的。

第七章 系统实现、运行及维护

7.1软件开发工具的选择

开发采用Microsoft 的MS SQL Server2000是当今社会的主流数据库管理系统,而在数据库开发工具上则采用了SYBASE 公司的PowerBuild7.0

7.2系统的运行

(1)用户界面:友好、清晰、易学易用。

(2)录入中包括自然情况和成绩录入,用户可以方便的录入每期学生成绩,并通过学号与学生的自然情况连接。

7.3系统维护

系统维护是为了应付信息的环境和其它因素的各种变化,保证系统正常工作而采用的一切活动,它包括系统功能的改进、或解决在系统运行期间发生的一切问题和错误。据统计,世界上90%的软件人员在维护现存的系统,因此,信息系统是在不断的维护活动中得以生存的。

由于系统环境的变化或系统运行中发现了错误和问题,以及用户要求提高系统的某些功能等原因,提出了修改申请。系统维护工作包括以下几个方面:改正性维护、适应性维护、完善性维护。

改正性维护是在软件运行中发生异常或故障时进行。 适应性维护是使运行的软件能适应外部环境的变动。

完善性维护是为扩充软件的功能,提高软件性能而开发的维护工作。

学籍管理了系统开发

参考文献

[1]甘仞初,信息系统开发,经济科学出版社,1996年9月 [2]黄梯云,管理信息系统,电子工业出版社,1995年4月 [3]陈禹方美琪,软件开发工具经济科学出版社1996年9月 [4]杨文龙,软件工程电子工业出版社,1999年

[5]李建中,王珊,数据库系统原理,电子工业出版社,1998年 [6]崔巍,PowerBuilder 7.0参考手册,清华大学出版社,2001年

[7]李代平,章文,SQL Server2000数据库应用基础,冶金工业出版设,2000年

主要代码如下:

String xh,xh_l,xh_r,temp Integer i,ii,xh_p,en_xh

xh = xh1 + xh2 + xh3 + xh4 + xh5 + xh6 //获得的初始学号 xh_p = pos(xh,"xh") //字段xh的位置 xh_l = Left(xh,xh_p - 1) //xh左边的字段 xh_r = Right(xh,Len(xh) - (xh_p + 1)) //xh右边的字段

en_xh = Integer(xh_e) - Integer(xh_s) + 1 If xh = "" Then MessageBox("学号不能为空","请重新输入学号",StopSign!,Ok!) Else

If Integer(xh_e) < Integer(xh_s) Then MessageBox("初始错误","开始序号必须比结束序号小",StopSign!,OK!) End If

FOR i= 1 TO en_xh //采用循环语句一次设置整个班的学号 dw_1.ScrollToROw(dw_1.InsertRow(0)) //增加新记录 dw_1.SetColumn("Stuid") //设置学号 If (ii + Integer(xh_s))<10 Then dw_1.SetText(xh_l + "0" + String(ii + Integer(xh_s)) + xh_r) Else dw_1.SetText(xh_l + String(ii + Integer(xh_s)) + xh_r) End If ii++

dw_1.SetColumn("xycode")

dw_1.SetText(yx) //设置院系 dw_1.SetColumn("zycode")

dw_1.SetText(zy) //设置专业 dw_1.SetColumn("grade")

If sle_class.Text = "none" Then //设置班级

dw_1.SetText(temp) Else

学籍管理了系统开发

dw_1.SetText(Right(sle_class.Text,2))

End If dw_1.SetColumn("class") If sle_grade.Text = "none" Then //设置年级 dw_1.SetText(temp) Else dw_1.SetText(sle_grade.Text) End If NEXT

dw_1.Modify("#1.Edit.DisplayOnly = True") //设置学号列不可修改 dw_1.Modify("#3.Edit.DisplayOnly = True") //设置院系列不可更改 dw_1.Modify("#4.Edit.DisplayOnly = True") //设置专业列不可更改 dw_1.Modify("#5.Edit.DisplayOnly = True") //设置年级列不可更改 dw_1.Modify("#6.Edit.DisplayOnly = True") //设置班级列不可更改

End If

IF dw_1.RowCount() = 0 Then cb_4.Enabled = False Else cb_4.Enabled = True End If

打印的代码:

在打印预览窗口的Open事件中编写以下代码 blob lblb_data

idw_data = message.powerobjectparm //接受传递过来的参数:打印数据窗口

dw_print.create( idw_data.describe("datawindow.syntax")) //创建数据窗口

idw_data.getfullstate( lblb_data ) dw_print.setfullstate( lblb_data )

dw_print.sort( )

dw_print.groupcalc( )

dw_print.Event ue_sharechild( )

dw_print.modify("datawindow.print.preview=yes datawindow.print.preview.rulers=yes")

post event ue_set_page( )

this.title = dw_print.describe('datawindow.print.documentname')+' 预览'

学籍管理了系统开发

ddlb_pre.text = '100%' em_1.Text = '100'

If dw_print.RowCount () = 0 Then cb_printer.Enabled = False cb_print.Enabled = False cb_first.Enabled = False cb_last.Enabled = False cb_prior.Enabled = False cb_next.Enabled = False Else cb_printer.Enabled = True cb_print.Enabled = True cb_first.Enabled = True cb_last.Enabled = True cb_prior.Enabled = True cb_next.Enabled = True End If

//不可打印

//可以打印

在′打印′按钮的Clicked 事件中

dw_print.Object.DataWindow.Print.Copies = ii_print_copies Choose Case ii_print_mode Case 1 //打印全部 Case 2 //范围打印

dw_print.Object.DataWindow.Print.Page.Range = is_print_range End Choose dw_print.Print() ib_printed = True close(parent)

更新照片代码如下: integer icount,r,fh

string filepath,filename,bmpno,xh blob blb_tmp

If dw_1.RowCount() <> 0 Then

xh = dw_1.GetItemString(dw_1.GetRow(),1) End If

bmpno = xh

// 此处对图片编号bmpno赋值,例如bmpno=101;可以通过程序实现为弹出对话框窗口提供一个图片编号

//查询指定的图片编号是否已经存在 If bmpno = "" Then MessageBox("有错了","请选择照片入库的学生学号") Return

学籍管理了系统开发

End IF icount=0

SELECT COUNT(0) INTO :icount FROM photo

WHERE photo.stuid=:bmpno

USING SQLCA; //:bmpno为给定的图片编号 if icount>0 then

If MessageBox("查询结果",string(bmpno)+" 号图片已经存在确认要替换更新照片吗?",Question!,YesNo!) =1 Then

DELETE FROM photo WHERE stuid = :bmpno USING SQLCA; Else Return end if End If

//在OLE控制对象ole_1中插入BMP图片文件

r = GetFileOpenName("请选择一个需要插入数据库的照片文件",filepath,filename,"BMP","JPEG图片文件(*.jpg),*.jpg,BMP图片文件(*.bmp),*.bmp")

If Len(filepath)=0 Then Return End If

//If ole_1.InsertFile(filepath)<>0 Then //OLE错误 //Return //End If

Long flen,bytes_read Integer i,loops blob b

flen = FileLength(filename) IF r= 1 THEN fh = FileOpen(filepath, StreamMode!,Read!,LockRead!) IF Flen > 32756 THEN If Mod(flen,32756) = 0 Then loops = flen/32756 Else loops = (flen/32756) + 1 End If Else loops = 1 End If For i = 1 TO loops bytes_read = FileRead(fh,b) blb_tmp = blb_tmp + b

本文来源:https://www.bwwdw.com/article/zr34.html

Top