贵州大学教务管理系统

2022-05-27 来源:其他范文收藏下载本文

推荐第1篇:大学教务管理系统——UML模型

某大学教务管理系统UML模型

随着高校校园网的建设和Internet技术的引进,基于校园网和Internet的应用系统的开发正在蓬勃发展。教务管理师高校教学管理的一向重要工作,现代化的高校教务管理需要现代化的信息管理系统支持。新世纪背景下,高校教育体制进行了大规模的改革,招生人数逐年增加,教学计划不断更新。在高校日常管理中,教务管理无疑是核心工作,重中之重。其管理模式的科学化与规范化,管理手段的信息化与自动化对于学校的总体发展产生深远的影响,由于管理内容过多,繁琐,处理的过程也非常复杂,并且随着学校人员的增加,教务管理系统的信息量大幅上升,因此往往很难及时准确地掌握教务信息的运作状态这使得高校教务管理的工作量大幅度增加,另外,随着教育改革的不断深化,教学管理模式也在发生变化,例如实施学分制、学生自主选课等。这一切都有赖于计算机网络技术和数据库技术的支持,在这样的形势下建立和完善一个集成化的教务管理系统势在必行。

目前,国内高校都开发了自己基于校园网的教务管理系统。由于其教务管理模式不尽相同,不同学校的实际教务管理情况各有自己的特点,因而各高校需要针对自己的教务管理模式和特点建立自己的教务管理系统。本设计是基于某高校的教务管理模式开发的基于校园网的教务管理系统。这样一个系统不仅可以降低工作量、提高办公效率,而且使分散的教务信息得到集中处理,对减轻教务工作负担、提高教务管理水平、实现教务管理的现代化具有重要意义。

1.建立系统用例模型

1.1确定系统模型的参与者

仔细分析教务管理系统问题描述。在UML中,角色代表位于系统之外和系统进行交互的一类对象,本系统中创建主要的角色有以下三类:

(1)教务员:教务员在教学管理系统中对全体学生进行用户登录、学籍管理、选课管理、教学管理和成绩管理,并且对教师进行登录管理、教学管理和成绩管理。教务处工作人员处理日常的系统维护,例如维护和及时更新学生,教师信息以及安排选课等。

(2)教师:教师根据教务系统的选课安排进行教学,将学生的考试成绩录入此系统。 (3)学生:学生能够在教务管理系统更改学籍信息、进行选课、查询已选课程和考试成绩。

1.2识别用例

用例是系统外部参与者与系统在交互过程中需要完成的任务,识别用例最好的方法就是从分析系统的参与者开始,考虑每一类参与者需要使用系统的哪些功能,如何使用系统,根据教务管理系统的运行流程个提取的参与者信息,确定系统分为以下几个用例: (1)学生参与者用例:

 用户登录  学籍管理  选课管理 (2)教师参与者用例:

 用户登录  成绩管理  教学管理

(3)教务员参与者用例:

 用户登录  学籍管理  排课管理     成绩管理 选课管理 教学管理 系统维护

1.3建立如下四个用例图模型

(1)顶层用例图如图1-1所示

图1-1顶层用例图

从用例图1-1可以看出学生、教师和教务员都使用了“用户登录”用例,表示学生必须先进行用户登录后才可以进行学籍管理和选课管理。同理,教师也必须登录后才能进行成绩管理和教学管理。教务员登录后进行系统设置、学籍管理、排课管理和教学管理等操作。

(2)学生角色用例图 如图1-2所示

图1-2学生角色用例图

从用例图1-2可以看出学生登录后才能进行所有的操作,这样可以提高系统的安全性。 (3)教师角色用例图如图1-3所示

图1-3教师角色用例图 从用例图1-3可以看出教师所有的用例都是建立在“用户登录”基础上,表示教师必须先登录后才可以执行相应的功能,这样可以提高系统的安全性,以免有人故意提供虚假信息。 (4)教务员角色用例图如图1-4所示

图1-4教务员角色用例图

从用例图1-4可以看出教务员的用例相对较多,但是教务员的所有的用例都必须在“用户登录”的基础上,表示教务员必须先登录才可以执行相关的功能,这样同样可以提高系统的安全性,避免有人故意更改信息。

2 建立系统动态模型 2.1活动图

经过活动图的建模可以比较清楚地了解整个进程过程的操作过程,本系统中主要的活动图有如下几个:学生成绩查询活动图、教务员修改学生资料活动图、学生选课活动图以及教师成绩录入活动图

(1)学生成绩查询图如图2-1所示

图2-1 学生成绩查询活动图

从图2-1可以看出,活动图分为多个不同的泳道,每个泳道表示学生在查询成绩活动中不同参与者的工作流。每个泳道中的活动是参与者要执行的操作。通过不通泳道之间的活动过渡,可以了解参与者之间的通信。这些信息可以帮助我们更好地理解系统的业务过程。

在学生成绩查询活动图中可以知道,学生、教师和教务员之间存在着相互联系。学生登录以后可以查询已选科目和成绩单,如果发现自己的成绩单有错误后可以通知教务员成绩有误,教务员联系教师后,教师修改成绩,然后教务员更新数据库。成绩无误后,查询结束。

(2)教务员学生资料修改活动图如图2-2所示; (3)学生选课活动图如图2-3所示;

图2-2教务员学生资料修改活动图图2-3学生选课活动图

从图2-2可以看出,教务员登录教务系统,系统验证用户名和密码,若有错误重新输入,无误后进行选择修改项目,确定修改,

图2-3学生选课活动图图2-4 教师成绩录入活动图

2.2顺序图

主要包括如下几个顺序图 ①教务学籍管理顺序图 ②学生注册顺序图 ③学生选课顺序图 ④教师成绩录入顺序图

图2-5教务学籍管理顺序图

图2-6学生注册顺序图

图2-7教师成绩录入顺序图

3系统类模型 3.1系统包图

将整个教务管理系统划分为人员信息、接口和事务3个包,分别控制不同的应用。

3.2类图

根据系统划分的三类包图,分别讨论人员信息包,接口包和事务包中的类图分别为: (1)人员信息包内的类图 (2)接口包内的类图 (3)事务包内的类图

图3-1 人员信息包内的类图

图3-2接口信息包内的类图

图3-3系统事务信息包内的类图

推荐第2篇:教务管理系统参考

引言

教务管理系统是教学领域中一个重要的系统。随着计算机的普及,人们迫切希望在计算机上能够实现教务管理操作,希望把人从教学资源,教学评估,编排课程,教学检查等等这些繁琐的工作中解放出来。教务管理系统从人们的需求出发,具有智能化辅助教务人员管理教务工作,并且计算机发挥了它本身的优势,能够存贮大量信息数据。与以往手工的教务相比,教务管理系统软件的出现,使教务工作变得更简单,可靠,安全,方便。为了能让教务管理人员从繁重的工作中解脱出来,使他们在使用一个软件以后能极其容易地对所有教务工作进行管理,并且准确无误,轻松自如。因此开发一个教务管理系统软件是当务之急,也是本论文选题的重要意义和研究宗旨。

教务管理系统是教学活动中一个最重要的部分,系统将教学资源与老师,学生,课程,学生与老师,老师与课程,课程与学生相互间联系起来,而且联系错综复杂,相互联系,相互排斥,因而需要系统应具备较完善的检验防错功能,冲突处理功能,从而根据系统的运行及反馈信息高质量,高效率地管理系统流通部门的全部功能。

在开发教务管理系统软件过程中,使用了当前最新的技术ASP﹒NET和ADO﹒NET。ASP﹒NET是内建于语言运行环境中的编程结构,特别是在创建Web应用程序显示了强大的功能。ADO﹒NET是一种面向对象的方式来处理数据。ASP﹒NET和ADO﹒NET的结合很容易地在一个数据库中建立一个记录集。使用这些脚本建立和打开一个记录集,处理和输出数据。

在开发教务管理系统的过程中,一直用运了软件工程的思想去开发系统。开发前的准备中,进行了系统调查。熟悉系统的组织结构、职能结构和业务流程分析,系统业务流程分析、业务流程图。然后是随数据流进行了分析,对教务系统中的数据流程图,数据字典描述。数据库的设计主要是E-R图和转换成关系模型。规划管理信息系统的功能,设计系统的功能结构图,每个功能模块的主要工作内容、输入输出要求等。

第1章 概述

1.1为什么要开发一个教务管理系统?

在迈入二十一世纪的今天,中小学的教务管理显得极其重要,合理地管理不但反映一个国家的科技水平,而且影响中小学的教学质量。在知识经济时代到来的今天,用计算机控制教务工作由自动化系统运行而完成。这不仅节省了人力,还提高了工作效率和服务质量,而且增强了信息的流通。

今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:首先,计算机可以代替人工进行许多繁杂的劳动;

其次,计算机可以节省许多资源;

第三,计算机可以大大的提高人们的工作效率;

第四,计算机可以使敏感文档更加安全,等等。

随着计算机的应用已普及到经济和社会生活的各个领域,学校的教务人员迫切需要有这样一个软件,能够实现教学资源整体规划,编排课程,评估教学质量,检查教学进度等等这些繁琐的教务管理工作。

1.2 在中小学中用计算机管理教务的意义

我们要实现教育现代化,中小学的教务工作是一个重要的环节。70年代后期,出现图书情报工作的 “联机革命”,使计算机更广泛地,更有效的应用到各个角落,发达国家较重视这一领域的发展,我国尚存在较大的差距。所以我们说,教育工作计算机化是提高我国科学技术水平的一项带有重大战略意义的措施,因而中小学的教务管理工作是一个重要的标志。

计算机技术是现代技术的一部分,教务现代自动化也只是教育现代化的一部分,它们之间是部分和整体的关系,但由于计算机技术是信息技术的心脏,现代社会的骄子,信息社会的科技主角,所以在教务现代化技术中,计算机技术处于核心地位,它对于其他现代化设备起控制,连接和转换的作用,而教务自动化是教育现代化的核心和主导部分。教务管理系统软件能提高教务本身管理水平,能代替工作人员进行教务工作的某些加工处理,把工作人员从繁重的手工劳动,重复劳动中解放出来。

现在我国的中小学校教务管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。

总之,教务的计算机自动化管理系统,不但可以大大提高教务管理工作的效率,而且推动了教学质量的进步。

我作为一个计算机应用的本科生,希望可以在这方面有所贡献。改革的总设计师邓小平同志说过“科学技术是第一生产力”,我希望能用我四年的所学编制出一个实用的程序来帮助中小学进行更有效的教务管理。

归纳起来,好处大约有以下几点:

(1). 可以存储教学资源,安全、高效处理信息;

(2). 节省大量人力,财力;

(3). 可以迅速查到所需信息和实现教务管理功能。

1.3 为将来学校网上办公做好准备

﹒NET技术的发展,大量的Web应用程序开发,在不同地点的用户可浏览Web站点信息。这些技术的成熟,使得在中小学实现网上办公有了技术上保证。学生,老师可以在任何地点,在网上浏览教务信息,学校的最新通知,填写自己的信息,实现用户权限内的操作。教务管理系统是学校网上办公的一个尝试,也是为以后中小学网上办公作基础。

第2章系统分析

系统分析是指在管理信息系统开发的生命周期中系统分析阶段的各项活动和方法,应用系统思想和系统科学的原理进行分析工作的方法与技术。

系统分析阶段的目的,就是按照系统规划所定的某个开发项目范围内明确系统开发的目标和用户的信息需求,提出系统的逻辑方案。系统分析在整个系统开发过程中,是要解决“做什幺”的问题,即根据系统规划所确定的范围,对现行系统进行详细调查,尽可能弄清楚用户对信息的需求,调查原信息系统的资源,输入,处理和输出,描述现行系统的业务流程,指出现行系统的局限性和不足之处,确定新系统的基本目标和逻辑功能要求,也即提出新系统的逻辑模型,为下一阶段进行物理方案设计,解决“怎么做”提供依据。因此,这个阶段又称逻辑设计阶段。

系统分析阶段的主要活动有:系统初步调查、可行性研究、系统详细调查、新系统逻辑方案的提出。

2.1系统调查

系统初步调查中采用的主要方式是与中小学的教师,尤其是与教务处的教职工进行交流,并结合自己的常识,经过调查研究,中小学的基本情况为:中小学实行校长负责制,下设教务处、财务部、党团支部、学生会、后勤部五大部门。各部门分别针对各自管辖范围进行具体管理,并向校长负责。在学校的日常教学活动中,教务管理是至关重要的。

中小学在日常教务活动中出现的主要问题是:

(1) 学校现行的教务管理方式仍为基于文本、表格等纸介质的传统手工处理方式。教务信息管理没有完全科学化、规范化、处理速度较慢,因此影响教学工作的开展,难以进行有效的信息反馈。

(2) 学校领导对整个学校的学生信息不能得到及时反馈,因此不能适时指导教学方向,以至影响教育质量。

(3) 师生之间,学生和教务人员,以及老师和教务管理人员,信息交流少,信息渠道单一,不利于协调工作,容易出错。

因此,通过建立教务管理信息系统,使教务管理工作科学化、规范化、程序化,促使提高信息处理的速度和正确性,使学校的信息流程和流向清晰化、合理化,第一时间把握学生信息,以提高整体教学水平。

2.2系统的可行性研究

可行性研究是系统分析阶段的第二项活动。此活动的主要目标是:进一步明确系统的目标、规模与功能,对系统开发背景、必要性和意义进行调查分析并根据需要和可能提出开发系统的初步方案与计划。可行性研究是对系统进行全面、概要的分析。

通过调查分析,新系统设计方案有以下三个可行性:

(1). 技术可行性:

本系统采用 Windows 2000作为操作平台。数据库选用SQL server 2000,该数据库管理系统在Windows 2000 Profeional上能运行,并提供数据库之间的数据复制功能,可代替现有系统单据数据的手工传递工作,降低出错率,提高数据的可用性。本系统的应用软件开发平台也选用Microsoft Visual Studio .NET 2003。

(2). 经济可行性:

采用新的教务信息管理系统可取代原系统的单据手工传递工作,减少人工开支,节省资金,并且可大大提高信息量的取得,缩短信息处理周期,规划教学资源,提高学生信息,及时反馈教学信息的利用率,使教学质量更上一个台阶。

(3). 营运可行性:

本系统操作简单,易于理解,只需通过简单熟悉,上手较快,学校教务管理处的教职员以及相关教师均能进行操作,营运环境要求低。

面对于系统设计还应该以“标准性、安全性、兼容性、高效性、保密性、可维护性”为标准,在着眼于当前实用的基础上,为将来系统的扩展,升级留有余地。软件的开发应能在较长时间内满足学校的发展需要。故新系统还需要满足以下这几个标准:

(1) 标准性:系统的软硬件选型都应该采用工业化标准,这样既可以保证系统运行质量又可以分享在此标准上的每一次技术进步。

(2) 可靠性:由于学教务息的重要性,系统的软硬件应均为质量可靠,并采用RAID 0+1廉价磁盘冗余保护技术,确保不会由于软硬件故障造成系统运行终止而使用户蒙受损失。

(3) 安全性:通过软件的编制及硬件设置,控制使用者接触数据的权限,从而确保使用者无法操作与其无关的数据。

(4) 兼容性:系统的所有软硬件理论上都应有100%的兼容性,用以保证软硬件的可互换性。

(5) 高效性:由于学校学生信息每次处理的信息量较大,因此系统对信息的处理能力,响应能力都应是快速而有效的,在软件编制过程中应充分考虑到这一点。

(6) 可维护性:系统软件设计时应采用结构化模块设计,以便于开发和维护,也有利于根据情况随时进行功能调整。同时在系统开发时应该充分考虑到用户的日常维护,使之能简便易行

通过可行性分析研究,认为新系统的开发方案切实可行,可进行开发。

2.3 软件开发的总目标

(1) 提高教务管理的自动化、现代化水平,按照管理信息系统开发原理与方法,采用计算机代替手工劳动,规范教务管理的操作全过程。

(2) 提高整体教学水平,相关教务人员可以从系统中取得及时而且正确的教学管理数据信息,并可以迅速而有效地进行信息交流与共享,从而掌握学校的各种信息情况,为校领导做出适合学生全面素质发展的指导策略提供有力的支持。

推荐第3篇:教务管理系统需求分析

江苏技术师范学院

毕业论文(设计)需求分析

题目:常州市育才中学教务管理系统设计学院:计算机工程学院姓名:成义杰

学号:指导教师:陈鉴富

2012 年10月22日

前言

二十一世纪是一个信息化的时代,教务管理信息系统作为教育信息化的重要组成部分,也应该得到很好的发展,以便帮助学院各管理层能及时、准确地掌握信息,使学院的教务管理工作步入新的章篇。

教务管理系统是典型的信息管理系统,其开发主要包括后端数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。

1.选题依据

教务管理系统作为教育单位一个不可缺少的部分,它的内容对于学校的决策者和管理者来说都是至关重要,所以教务管理系统应为使用者提供充足的信息和快捷的查询手段。但是人们一直以来都使用传统人工的方式管理文件资料,这种管理方式存在着许多缺点:如效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。即使有些学校使用了计算机,但由于操作形式各异、输入方法不同、定义不统一,这对于管理者和使用者都产生使用上的不便,因此对于管理系统的统一性、完整性、及时性的要求也就迫在眉急了。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

2.研究内容与方法

2.1内容

教务管理系统是一个基于数据库开发应用程序,由前台功能设计和后台功能设计部组成,规划系统功能模块如下: 1.教学资源管理模块设计

该模块主要包括:主要功能包括导入教师信息、录入教师信息、机构设置、确定部门人员、处理离校人员组成; 2.开课计划管理模块设计

该模块的主要包括:录入科目信息、录入模块信息、设置课程方案、设置开课计划、设置学期、周数组成;3.学生学籍管理模块设计

该模块的主要包括:创建班级、班级注册、确定班级所属年级、录入学生信息、调整学生班级、确定异动学生、查看学生信息;

4.学生成绩管理模块设计

该模块的主要包括:成绩录入、成绩发布、成绩查询、成绩分析一共4个模块;5.学生选课管理模块设计

该模块的主要包括:网上选课设置、选课要求设置、调整学生选课、查看选课结果;

6.数据库维护模块设计

该模块的主要包括:数据备份、数据恢复、创建数据备份维护计划一共3个部分;7.系统管理模块设计

该模块的主要包括:日志管理、用户管理二个子模块。

2.2实现手段

硬件平台:

 

CPU:P41.8GHz。 内存:256MB以上。

软件平台:

    

操作系统:Windows xp/ Windows 2000。 数据库:SQL Server 2005。

浏览器:IE5.0及以上,推荐使用IE6.0。 Web服务器:IIS5.0。

分辨率:最佳效果1024×768像素。

3.工作计划(进度安排)

1---3 周:交流课题任务,正确理解课题,撰写开题报告

4---6 周:系统调查与分析,分析知名博客系统的结构,撰写需求分析文档 7---9 周:系统设计

10-12周:系统实现(编码、调试、验收)

13-15周;检查论文初稿,完善不足之处,完成论文定稿

4.参考文献

[1] ASP.NET网站开发四“酷”全书 电子工业出版社 武嘉 2005年8月 [2] ASP+SQL Server组建动态网站实例精讲 人民邮电出版社魏雪萍2005年6月

[3] ASP.NET程序设计教程(C#版) 机械工业出版社 常永英、崔淼、马润成、梁云杰等2009年9月

[4] ASP数据库开发实例解析 机械工业出版社 李严、于亚芳、王国辉 200

4年12月

[5] ASP.NET服务器控件开发技术与实例 人民邮电出版社 郝刚、袁永刚、齐艳编著

2005年1月

推荐第4篇:教务管理系统个人总结

教务管理系统个人总结

经过一个星期的紧张工作,终于将这个系统做好了啊!在此过程中虽然有很多的困难,但是我们都一一克服了!在此过程中我感受颇多,收获颇多!通过这次课程设计使我更加的了解了软件工程的内在含义!学无止境,这次的课程设计只是学生生涯的一种延续!对于一个在校生来说,学习知识是最重要的,为以后进入专业的软件公司时用足够的经验!不管在人生的那个阶段,学习的脚步不能停歇,要把学习视为工作的铺垫!所以在这次一个星期的课程设计中,我一边学习,一边从基础的事情开始做起!这样做的好处是能够在设计的过程中,了解项目的整体布局,了解项目中的业务逻辑,了解项目中尚未完成的工作并以此作为下个阶段的工作学习的目标。这个星期里,我按时完成组长安排我的任务,并且尽最大的努力来帮助同组的其他同学在设计中遇到的困难。从中我也学到了很多自己以前不是很了解的东西,同时通过这次的课程设计也明白了好多道理,我相信这对我以后的工作和学习有很大的帮助!在这一个星期里最初不知道如何去设计这次课程设计,通过咨询其他组的同学了解了很多自己的缺点和不足,这都要自己努力去克服与改正!

做软件的人必须随时充电,在今后的学习与工作中,我要积累经验教训,不断调整自己的思维方式和工作方法,在实践中磨练自己,我将以饱满的热情和进取的精神,去努力做每一件事情,努力为自己以后的发展做好完美的铺垫,成为社会需要的优秀人才!

推荐第5篇:教务管理系统个人总结

教务管理系统个人总结

经过一个星期的紧张工作,终于将这个系统做好了啊!在此过程中虽然有很多的困难,但是我们都一一克服了!在此过程中我感受颇多,收获颇多!通过这次课程设计使我更加的了解了软件工程的内在含义!学无止境,这次的课程设计只是学生生涯的一种延续!

对于一个在校生来说,学习知识是最重要的,为以后进入专业的软件公司时用足够的经验!不管在人生的那个阶段,学习的脚步不能停歇,要把学习视为工作的铺垫!所以在这次一个星期的课程设计中,我一边学习,一边从基础的事情开始做起!这样做的好处是能够在设计的过程中,了解项目的整体布局,了解项目中的业务逻辑,了解项目中尚未完成的工作并以此作为下个阶段的工作学习的目标。这个星期里,我按时完成组长安排我的任务,并且尽最大的努力来帮助同组的其他同学在设计中遇到的困难。从中我也学到了很多自己以前不是很了解的东西,同时通过这次的课程设计也明白了好多道理,我相信这对我以后的工作和学习有很大的帮助!在这一个星期里最初不知道如何去设计这次课程设计,通过咨询其他组的同学了解了很多自己的缺点和不足!

推荐第6篇:C++课程设计(教务管理系统)

#include using namespace std; #include #include #include #include #include #include\"01.h\" cla University;

void menu(University uni);//菜单函数声明

cla Student//学生类 { public: string name; int age; string sex; int number; string major;

public: void disp_stu();

friend void file_in(University &uni);

friend void file_out(University uni); }; void Student::disp_stu() {

}

cla Institute//学院类 { public: string name; cout head;//封装学生信息

public: void add_stu();

//添加学生

bool delete_stu(int i);

// 删除学生

bool modefy_stu(int i);

//修改学生信息

void disp_ins_1();

// 显示本院学生信息

friend void file_in(University &uni);

friend void file_out(University uni); }; void Institute::add_stu() {

} Student *p=new Student; cout>(*p).name; cout>(*p).age; cout>(*p).sex; cout>(*p).number; cout>(*p).major; head.Add(p);//在链表末尾增加一个节点

bool Institute::delete_stu(int i) {

} head.Remove(i);//删除链表指定位置节点 return true; bool Institute::modefy_stu(int i) {

Student *p=new Student; cout>(*p).name; cout>(*p).age; cout>(*p).sex; cout>(*p).number; cout>(*p).major; head.Remove(i);//删除链表指定位置节点 head.Insert(i,p);//在链表指定位置插入一个新节点

return true; } void Institute::disp_ins_1() {

}

cla University//学校类 { public: string name; int age; string addr; List head;//封装学院信息 public:

void design_stu();//学生信息设置 int i; Node *q; q=head.pHead;//q指向学生节点双向链表头指针

cout

} coutpData->disp_stu(); q=q->pNext;

void add_ins();

//添加学院

bool delete_ins(int n);

// 删除学院

void design_cqut();

//设置学校信息 bool modefy_cqut();

//修改学校信息 void disp_cqut();

//显示学校信息 void design_ins();

//学院信息设置 bool modefy_ins(int n);

//修改学院 void disp_ins();

//显示学院信息

void search_menu(); void search_name(string n);//姓名

void search(string n);//性别//函数重载

void search(int n);//学号

bool search_age(int n);//年龄

friend void file_in(University &uni); }; friend void file_out(University uni);

void University::design_stu() {

int i,m,j; int n; cout

★★★★★★学生信息设置★★★★★★

\">i;system(\"cls\");//清屏 switch(i) { case 1:

{

disp_ins();

cout

cout

cin>>m;system(\"cls\");//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

}

} head.pCurrent=head.pCurrent->pNext;//当前指针指后移

coutpData->add_stu(); cout

disp_ins();

cout

cout

cin>>m;system(\"cls\");//清屏

head.pCurrent=head.pHead; //当前指针指向双向链表头指针

for(j=1;j

{

head.pCurrent=head.pCurrent->pNext;//当前指针指后移

} } head.pCurrent->pData->disp_ins_1(); cout>n; head.pCurrent->pData->delete_stu(n); cout

{

disp_ins();

cout

cout

cin>>m;system(\"cls\");//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

}

}

head.pCurrent=head.pCurrent->pNext;//当前指针指后移

head.pCurrent->pData->disp_ins_1(); cout

} cin>>n; head.pCurrent->pData->modefy_stu(n); cout

void University::add_ins() {

}

bool University::delete_ins(int n) {

}

bool University::modefy_ins(int n) {

Institute *p=new Institute; cout>(*p).name; head.Remove(n);//删除链表指定位置节点 head.Insert(n,p);//在指定位置插入节点信息 return true; head.Remove(n);//删除链表指定位置节点 return true; Institute *p=new Institute; cout>(*p).name; head.Add(p);//在链表末尾增加一个节点

}

void University::disp_ins() {

int i; Node *q; q=head.pHead; //q指向学院节点双向链表头指针

for(i=1;i

coutpData->namepData->head.size

}

void University::design_ins() {

int i; int j; cout

★★★★★★学院信息设置★★★★★★

\"pNext;

cout>i;system(\"cls\");//清屏 switch(i) { case 1:

{

} disp_ins(); cout

disp_ins();

add_ins();

cout

getch();system(\"cls\");//清屏 design_ins();

break; } case 3: {

} disp_ins(); cout>j; delete_ins(j); cout

disp_ins(); cout>j; modefy_ins(j); cout

} case 5:menu(*this);break; } }

bool University::modefy_cqut() { cout>name; cout>age; cout>addr; return true; }

void University::design_cqut() { int i;

University uni; cout

★★★★★★学校信息设置★★★★★★ cout>i;system(\"cls\");//清屏

switch(i) {

case 1:

{

disp_cqut();

cout

getch();system(\"cls\");//清屏

design_cqut();

break;

}

case 2:

{

modefy_cqut();

cout

getch();system(\"cls\");//清屏

design_cqut(); break; \"

}

} } case 3:menu(uni);break;

void University::disp_cqut() {

cout

}

void University::search_name(string n) {

int i,j,m=0; head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;//当前指cout

for(j=0;jpData->head.size;j++)

{

if(n==head.pCurrent->pData->head.pCurrent->pData->name)

{

} head.pCurrent->pData->head.pCurrent->pData->disp_stu(); m++; head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移

}

bool University::search_age(int n) {

int i,j,m=0; head.pCurrent=head.pHead; for(i=0;ipNext;//学院当前指针后移

} cout

}

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead; for(j=0;jpData->head.size;j++) { if(n==(head.pCurrent->pData->head.pCurrent->pData->age)) {

} head.pCurrent->pData->head.pCurrent->pData->disp_stu(); m++; head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext; } head.pCurrent=head.pCurrent->pNext; } cout

void University::search(string n) {

} int i,j,m=0; head.pCurrent=head.pHead; for(i=0;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;

for(j=0;jpData->head.size;j++) {

if(n==head.pCurrent->pData->head.pCurrent->pData->sex) { head.pCurrent->pData->head.pCurrent->pData->disp_stu(); } m++;

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;

} coutpNext; void University::search(int n) {

int i,j,m=0; head.pCurrent=head.pHead; for(i=0;i

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;

for(j=0;jpData->head.size;j++)

{

if(n==head.pCurrent->pData->head.pCurrent->pData->number)

{

head.pCurrent->pData->head.pCurrent->pData->disp_stu();

m++;

}

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;

}

head.pCurrent=head.pCurrent->pNext; } cout

/****************************************信息查询菜***********************************************/

void University::search_menu() { int i; cout

★★★★★信息查询显示★★★★★\">i;system(\"cls\");//清屏

switch(i) { case 1: {

disp_ins();

coutdesign_ins(); break; } case 2:

{

} head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;i

} head.pCurrent->pData->disp_ins_1(); head.pCurrent=head.pCurrent->pNext; coutsearch_menu(); break; case 3: {

} int j; disp_ins(); cout>i;system(\"cls\");//清屏 head.pCurrent=head.pHead; for(j=1;jpNext; head.pCurrent->pData->disp_ins_1(); coutsearch_menu(); break;

case 4:

{

string n; cout>n;system(\"cls\");//清屏 search_name(n);

} coutsearch_menu(); break; case 5:

{

} int n1; cout>n1; search_age(n1); coutsearch_menu(); break;

system(\"cls\");//清屏

case 6: {

} string n; cout>n;system(\"cls\");//清屏 search(n); coutsearch_menu(); break; case 7: {

} int n; cout>n;system(\"cls\");//清屏 search(n); coutsearch_menu(); break; case 8: {

menu(*this);

}

} } break; /**********************************************************************/ {

int i,j; ifstream inf(\"cqutData.txt\",ios::in); inf>>uni.name; inf>>uni.age; inf>>uni.addr; inf>>uni.head.size;//学院个数 for(i=0;i>p->name;

导出文件数据void file_in(University &uni)

Node *m=new Node;//建立学院信息节点 m->pData=p;//把输入的学院信息节点赋给建立的学院信息节点 m->pNext=0; if(i==0) uni.head.pHead=m;//把节点m赋给学院信息节点

else uni.head.pEnd->pNext=m;//把节点m赋给下一个学院信息节点 m->pPrev=uni.head.pEnd;//节点m指向学院信息的尾节点

uni.head.pCurrent=uni.head.pEnd=m;//学院信息的尾节点始终指向m节点 inf>>uni.head.pCurrent->pData->head.size;//学生个数 for(j=0;jpData->head.size;j++) {

Student *q=new Student; inf>>q->name; inf>>q->age; inf>>q->sex; inf>>q->number; inf>>q->major;

Node *n=new Node; n->pData=q; n->pNext=0; if(j==0) uni.head.pCurrent->pData->head.pHead=n; else uni.head.pCurrent->pData->head.pEnd->pNext=n;

n->pPrev=uni.head.pCurrent->pData->head.pEnd;

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pEnd=n;//学生信息的尾节点始终指向n节点

} } }

/************************************************************************************/ void file_out(University uni) {

ofstream ouf(\"cqutData.txt\",ios::out); int i,j; ouf

导入文件数据ouf

uni.head.pCurrent=uni.head.pHead;//当前指针指向学院节点头指针 for(i=0;i

oufpData->name

oufpData->head.size

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pHead;//当前指针指向学生节点头指针

for(j=0;jpData->head.size;j++) {

oufpData->head.pCurrent->pData->namepData->head.pCurrent->pData->agepData->head.pCurrent->pData->sexpData->head.pCurrent->pData->numberpData->head.pCurrent->pData->major

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移

}

} } uni.head.pCurrent=uni.head.pCurrent->pNext;//学院当前指针后移

/************************退出系统菜单****************************/

void exit(University uni) {

} int i; cout>i; system(\"cls\");//清屏 switch(i) { case 1:

{

} file_out(uni); exit(0); break; case 2:{exit(0);break;} case 3:

{ menu(uni); break; } case 4:

{

file_out(uni);

}

} menu(uni); break;

/***************************************************************************************/ void menu(University uni) {

system(\"cls\");/*清屏*/ int i; cout

主菜单 cout

cout

cout

cout>i;system(\"cls\");//清屏

}

int main() { University u;

} file_in(u); menu(u); return 0; switch(i) {

case 1:uni.design_cqut();break; case 2:uni.design_ins();break; case 3:uni.design_stu();break;

case 4:uni.search_menu();break;

case 5:exit(uni);break; }

推荐第7篇:威尔教务考勤管理系统

摘要....

烟台威尔数据系统有限公司研发的教务考勤管理系统,主要依托先进的智能身份识别终端。通过射频卡(IC/ID/CPU)、手机卡、指纹等识别介质进行身份验证,并依靠TCP/IP网络传输、CDMA/GPRS/WIFI/3G无线传输等多种数据传输方式,完成对教室上课情况的采集和统计。

系统目标

随着我国高校教学体制改革的深入发展,各大院校逐步建立起,以学生自主选择专业、选修课程、实验预约、成绩审核、学分制等为特点的教务管理系统。主要用于管理学生从入学到毕业的全过程,包括学籍管理、教学计划、开课/排课、选课、成绩管理、实验管理、毕业设计等多个环节。

但是随着学校对教务管理的逐渐深入,传统教务系统的缺陷也逐渐显露出来。例如,学校通过教务系统本身,无法及时掌握教师和学生的真实上课情况,教室的使用和变动情况,以及临时调课造成的学生缺课等问题。从而出现教育资源无法合理分配,学生管理出现漏洞等实际情况。同时随着身份识别技术的飞速发展,学校对教务一卡通的需求也越来越强烈。例如:多媒体教室管理、宿舍进出管理、考试考场管理、会议签到管理、车辆门禁管理等多种应用需求,都反映了学校在建立教务管理信息化时,遇到的问题和迫切的需要。高等教育对教务管理工作提出了更高的要求。尽快改变传统的管理模式,运用现代化手段进行科学管理,已经成为整个教育系统亟待解决的课题之一。

基于这种广泛的需求,在充分综合高校自身特点的前提下,开发一套能够适应新的教学体制、能够最大程度满足高校现代化管理要求的教务考勤管理系统成为必然。、系统简介

教务考勤管理系统,主要依托先进的智能身份识别终端。通过射频卡(IC/ID/CPU)、手机卡、指纹等识别介质进行身份验证,并依靠TCP/IP网络传输、CDMA/GPRS/WIFI/3G无线传输等多种数据传输方式,完成对教室上课情况的采集和统计。统计的内容主要包括:教师和学生的上课情况、教室的使用情况、调课/换课/代课的执行情况、任课教师的教学进度、学生的出勤率、教学课程的听课率等信息。帮助学校管理和优化教学资源,提高教学质量,完善教学制度等管理工作。

同时教务考勤系统可直接形成标准一卡通平台,结合教务管理系统、多媒体教室管理系统、宿舍进出管理系统、考试考场管理系统、会议签到管理系统、车辆门禁管理系统等多种应用系统,实现真正意义上的教务一卡通平台。

教务考勤系统除了满足学校的基本管理需求之外,还可以替代课堂点名制度,直接为授课教师统计应到、实到、迟到、未到等学生信息。节省了课程时间,并为教师的日常评分提供有效依据。并且通过终端设备提供的实时拍照和照片彩屏显示等功能,可以有效杜绝学生的替代上课情况,帮助学校完善教学管理的监控工作。

教务考勤系统的软件功能模块包括:

基础档案信息(学生档案、教师档案、管理人员档案、卡片信息、行政班组织结构等) 基础教务信息(校历、上课时间定义、考勤规则定义等)

日常事务流程(请假流程、调课/换课/代课流程、补出勤流程等)

教室设备管理(教室定义、设备定义、教室设备关系定义、设备通讯管理等)

教学课程管理(课程定义、教学班定义、教师任课定义、日常排课等)

上课数据处理(请假管理、调课管理、补录记录、异常调整等)

报表查询统计(上课记录/拍照查询、课程表查询、上课通知查询、上课明细汇总统计等) 系统权限关系(权限组定义、班级授权、菜单授权、设备授权、管理员定义等)

推荐第8篇:教务管理系统总体设计说明书

教务管理系统总体设计说明书

组员:李洪涛 单彦达

一、信息系统的总体目标、子目标与信息系统架构 1.组织的总体目标、子目标及策略:

随着社会的不断进步,经济的快速发展,现今社会对高技术,高素质人才的需要日益迫切。我校为适应社会的需求以及自身办学的需要,发展自身学校的特色及办学特点,合理定位培养人才,提升自身办学的能力,以建设优秀的师资队伍和软硬件设施为目标,明确办学指导思想,提升核心竞争力,发挥地区特色,最终实现为现代信息化社会输送大量高素质高技术的人才的目标。同时,应合理配置各级学院的教学资源,充分利用现有设备和资源,使学院间的联系更加紧密,以求达到同步发展。

2.外部环境: 自上世纪九十年代末高校大扩招以来,我国高等教育规模迅猛扩张,在短短不到十年的时间里完成了量的积累,步入了高等教育大众化阶段。教育和社会的发展,使越来越多的学生能够进入到大学进行更深层次的学习;招生人数的激增,使得我国高等院校原有的办学规模很难应对。为了消化急剧膨胀的生源,很多高校高校都在扩建,这让越来越多的学生有机会进入大学深造。然而,这种扩招的背后,我们能明显的看到,现在的大学已经不是当初所谓的精英教育,转而向大众教育,这使我国的人力资源、人才资源发生了质变。人才市场饱和,每一年都会有一部分毕业生找不到工作。但同时,在这些毕业生中,拥有高技术,高素质的人只占据一部分,这与市场的需求不符,导致目前大学生的就业形势严峻

二、

组织内部限制: 硬件资源部分陈旧,需要更新换代;师资力量分配不均,有些学院的专业老师数量不够。

三、信息系统总体目标、子目标级策略:

教务信息管理系统的目标:实现对教师学生课程、教学计划、学生学习及学籍成绩、教材、教学评估、收费等数据进行网络化信息管理。使各使用部门大大提高工作效率,使学生、教师及其他各类人员查询数据极为方便。

信息系统的构架: 主要功能系统:

1.综合教务管理信息系统:包括基本信息管理、注册系统、课程管理、学籍管理、教学计划管理、成绩管理等子系统。 2.选课系统:支持学生选课平台功能,根据学生的教学计划来预置选课时学生的选课信息及课程的选课情况。在每学期,根据教学计划和排课系统,由学生在网上制定个人的学期学习计划。选课分为三个阶段:预选、正选、补退选,以最大程度的提高教学资源的利用率。

3、学生信息查询系统:包括学生具体个人信息的查询,学生可以更改个人信息,经过管理人员的确定后形成新的个人信息。

4、等级考试;实现等级考试的网上报名,包括

四、六级考试及计算机等级考试,并可在成绩公布时查询自己的考试成绩。系统界面:包括登入界面,主界面,用户管理模块。 登入介面是为了对系统进行安全性管理,使用户拥有自己的权限,同时又保证了用户信息的安全性。

四、主界面是本系统的应用界面,在本界面上集成了本系统的所有功能,包括功能菜单和子菜单,从而实现了本系统从班级管理、档案管理、课程管理、成绩管理等系统的具体功能,同时,在系统管理模块中可以完成对本系统的安全性管理。用户管理界面是本系统的安全性设置模块,根据学校不同部门以及不同使用人员对本系统的要求和需要,从而实行了分级管理,对用户的权限和类别进行了分类管理。同时还包括数据库,对大量信息的存储及管理。

五.系统分析 对现有系统的分析: 现有系统界面比较友好,功能比较完善,能大部分满足用户的需求,但是与其相关配套的服务器功能不强,应付不了同一时间大量用户的访问。当数据访问量大时容易出错,导致系统数据错误甚至丢失。

六.对本系统的简要描述: 本系统将大大改善数据处理速度,并且更加方便的对数据进行管理,同时可以减少人力资源的浪费以及工资支出。1.经济可行性.信息化的教务管理在如今的信息时代是大势所趋,而且随着现代管理念、方法和途径的发展,教务信息化管理手段日渐成熟,也必定会突飞猛进,所以从长远利益出发,主管领导对该项目的开发与实施会大力支持。 2.技术可行性: 本系统采用 Windows xp作为操作平台。数据库选用SQL server 2008,该数据库管理系统在Windows xp上能运行,并提供数据库之间的数据复制功能,可代替现有系统单据数据的手工传递工作,降低出错率,提高数据的可用性。本系统的应用软件开发平台也选用Microsoft Visual Studio .NET 2008。 3.经济可行性: 采用教务管理信息系统可取代原系统的单据手工传递工作,减少人工开支,节省资金,并且可大大提高信息量的取得,缩短信息处理周期,规划教学资源,提高学生信息,及时反馈教学信息的利用率,使教学质量更上一个台阶。 4.营运可行性: 本系统操作简单,易于理解,只需通过简单熟悉,上手较快,学校教务管理处的教职员以及相关教师均能进行操作,营运环境要求低。 面对于系统设计还应该以“标准性、安全性、兼容性、高效性、保密性、可维护性”为标准,在着眼于当前实用的基础上,为将来系统的扩展,升级留有余地。软件的开发应能在较长时间内满足学校的发展需要。 通过可行性分析研究,认为新系统的开发方案切实可行,可进行开发。

七.七.业务流程图分析 选课流程图:

五、数据流程图分析: 选课流程图:

六、

常用的输入方式主要有以下三种:键盘输入、光电设备输入及声音输入。本系统主要采用键盘输入。 ②输入数据的活动及输入格式的设计 原始数据的获得需要考虑数据产生的部门,确定收集的时间和方法;了解 数据产生的周期,平均发生量及最大量。 (2)输出设计 输出设计主要解决的问题是针对不同的用户的特点和要求,以最适当的形 式,输出最切合需要的信息。其主要内容包括: ①输出方式的选择 系统的输出方式根据输出信息的使用要求,信息量的大小、输出设备的限 制条件来决定。 ②输出表的设计 表内容要根据使用人员的实际需要进行设计。对不同的用户,应当提供详 细程度不同、内容不同的表。 ③输出设计说明 输出设计说明包括选用的输出设备,信息输出的频率和数量,各种输出文 件及输出报表的格式及表格样本等。 系统配置设计 本系统采用Asp.net和C#开发技术,所需开发环境如下: 代码编写平台:Microsoft Visual Studio 2008; 数据库:SQL Server2008 操作系统:Microsoft Windows XP。

实验过程中遇到的困难: 业务流程图和数据流程图设计处理那一部分不清楚; E-R图处理由于实体较多,刚开始处理的时候结构关系不明确 代码设计无从下手 处理方法和技巧 对照材料与参考资料,逐步完善,从课本中找出有用信息,并以此为模板进行设计 总结:

经验体会和收获 通过此次系统分析与设计,让我明白了很多课上学不到的东西,才明白那句:纸上得来终觉浅,绝知此事要躬行。很多东西课上觉得自己掌握了,一旦用到实际上就会发现自己不能去做,所以实践还是很重要。另外,借助一些参考资料是必要的,现在互联网这么方便,可以借鉴的东西很多,如果不参考别人的资料,连设计的流程都不清楚,怎么能将设计报告完整的写下来。最终将实验报告完成,总体来说自己感觉还可以。

推荐第9篇:数据库实习报告教务管理系统.

数据库系统课程设计 学生姓名: 班 学 号: 指导教师:

教务管理系统

1、需求分析 1.1 信息要求: 教务管理系统涉及的实体有: ●教师——工作证号、姓名、职称、电话等; ●学生——学号、姓名、性别、出生年月等; ●班级——班号、最低总学分等;

●系——系代号、系名和系办公室电话等; ●课程——课序号、课名、学分、上课时间及名额等。 这些实体之间的联系如下: ●每个学生都属于一个班,每个班都属于一个系,每个教师也都属于一个系。 ●每个班的班主任都由一名教师担任。

●一名教师可以教多门课,一门课可以有几位主讲老师,但不同老师讲的同一门课其课序号是不同 的(课序号是唯一的 。

●一名同学可以选多门课,一门课可被若干同学选中。 ●一名同学选中的课若已学完,应该记录有相应成绩。

●本单位学生、教师都有重名,工作证号、学号可以作为标识。 1.2 处理要求: 教学系统主要提供数据维护、选课和信息查询。 其中常见的查询有:系统中各对象的基本信息查询。 查 询指定班、系的学生信息(名单、人数等 。查询学生的成绩、学分情况。查询教师授课情况和学生选课情 况„„。

1.3 安全性与完整性要求: ●安全性要求: 1.系统应设置访问用户的标识以鉴别是否是合法用户, 并要求合法用户设置其密码, 保证用户身份不被 盗用; 2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;

3.系统应对不同用户设置不同的权限,区分不同的用户,如学生,教师,系统管理员。

●完整性要求: 1.各种信息记录的完整性,关键信息记录内容不能为空; 2.各种数据间相互的联系的正确性; 3.相同的数据在不同记录中的一致性。 1.4 系统功能的设计和划分

根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几部分: 第一部分:用户管理部分 第二部分:管理员管理部分 各部分完成的功能如下:

1、用户管理部分

1、处理用户注册

2、处理用户登录

3、用户可以查询学生信息。

4、用户可以查询快件信息。

5、用户可以提交与查询报修信息。

6、用户可以插入与删除用户自己的离返校信息。

7、用户可以修改用户自己密码。

2、管理员管理部分

1、处理管理员登录

2、管理员可以查询学生信息。

3、管理员可以发布与更新快件信息。

4、管理员可以插入、修改与查询报修信息。

5、管理员可以插入与查询学生夜归信息。

6、管理员可以查询在校与离校学生信息。

7、管理员可以修改管理员密码。

2、概念设计 (1 概念模型(E-R 图 :

选修联系的分 E-R 图 负责联系的分 E-R 图

授课联系的分 E-R 图

教务管理系统的总 E-R 图 (2 数据字典 :

(3数据流图

查询 课程信息 课程信息表 课程信息 查询 课 程 成绩信息 信 息 教师 学 生 选课信息信 息 查询学 生信息 修改教 师信息 教 师 信 息 系 信 息 课 程 选课信息 信 息 学生 学 生 信 息 选课信息 修改学 教 师 信 息 生信息 查询教 师信息 选课信息 选课 已 选 课 信 息 成绩信息 选 课 表 登记 成绩 成 绩 信 息 查询 选课信息 选课信息 查询 系 信 息 班 级 信 息 学生信息 学生信息表 教师信息 教师信息表 学生信息 教师信息 班 级 信 息 班级信息 查询 系信息 班级信息表 系信息表 总 数 据 流 图 班级信息 查询 系信息

3、逻辑结构设计

-R 图向关系模型的转换(关系的码用下横线表出) 教师(工作证号,姓名,职称,电话,系代号) 代码表示:Teacher ( Tno, Tname, Title, Tel, Dno 此为“教师”实体对应的关系模式。其中 1:n 联系“工作”与此关系模式合并,Dno 为外码。存在的函数 依赖为 Tno → (Tname,Title,Tel,Dno) ,且不存在多值依赖,所以满足 4NF。 学生(学号,姓名,性别,出生年月,班号) 代码表示:Student ( Sno, Sname, Ssex, Sbirth, Cla 此为“学生”实体对应的关系模式。其中 1:n 联系“属于”与此关系模式合并,Cla 为外码。存在的函数 依赖为 Sno → (Sname,Ssex,Sbirth,Cla) ,且不存在多值依赖,所以满足 4NF。 系(系代号,系名,系办公室电话) 代码表示:Department ( Dno, Dname, Dphone 此为“系”实体对应的关系模式。存在的函数依赖为 Dno → (Dname,Dphone) ,且不存在多值依赖,所 以满足 4NF。 课程(课序号,课名,学分,上课时间,名额,工作证号) 代码表示:Course ( Cno, Cname, Credit, Ctime, Cnum, Tno 此为“课程”实体对应的关系模式。其中 1:n 联系“授课”与此关系模式合并,Tno 为外码。存在的函数 依赖为 Cno → (Cname,Credit,Ctime,Cnum,Tno) ,且不存在多值依赖,所以满足 4NF。 选课(学号,课序号,成绩) 代码表示:SC ( Sno, Cno, Grade 此为 m: 联系 n “选修” 所对应的关系模式。 Sno 和 Cno 均为外部码。 存在的函数依赖为完全函数依赖 (Sno, Cno) → Grade,且不存在多值依赖,所以满足 4NF。 班级(班号,最低总学分,工作证号,系代号) 代码表示:Cla ( Cla, TotalCredit, Tno, Dno 此为“班级”实体对应的关系模式。其中 1:n 联系“属于”和 1:1 联系“负责”与此关系模式合并,Tno 和 Dno 为外码。该关系模式中存在传递函数依赖:Cla → Tno, (Tno \\ Cla,Tno → Dno,可得 Cla → Dno,故 Cla 不属于

3NF。解决方法是将其模式分解为:Cla ( Cla, TotalCredit, Tno 和 T-D( Tno, Dno,分解后的关系模式满足 4NF,并且 T-D 与 Teacher 的码相同,可合并为同一模式。但 是考虑到系统要经常进行系的学生信息查询,此时就不得不对 Student、Cla 和 Teacher 三个表进行连接 查询,而连接是影响查询效率的主要原因,所以取消对 Cla 的模式分解。此时 Cla 关系模式满足 2NF。

设计用户子模式 为了方便程序查询,建立了如下用户视图:

1、某系的学生信息视图(学号,姓名,性别,出生年月,班号)

2、某系的教师信息视图(工作证号,教师姓名,职称,电话,负责班级)

3、某课程的学生成绩单(学号,姓名,班级,成绩)

4、教师授课信息表(工作证号,教师姓名,职称,教授课程,学分,上课时间)

5、学生已选课表(课序号,课名,学分,授课教师,上课时间,名额)

4、物理设计 4.1 选择存取方法

1、数据库管理系统自动在每个表的主码上建立索引,通常为 B + 树索引。

2、在 Student 表 Sname 列上建立 Stu_name 索引,因为查询操作很多都使通过学生姓名进行的。

3、在 Teacher 表 Tname 列上建立 Tea_name 索引,因为查询操作很多都使通过教师姓名进行的。 4.2 确定数据库的存储结构

1、为了提高系统性能,根据具体情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部 分分开存放。

2、DBMS 产品一般都提供了一些系统配置变量、存储分配参数,根据应用环境确定这些参数值,并且 在系统运行时还要根据系统实际运行情况进行调整,以使系统性能最佳。 4.3 评价物理结构 根据所选用的 DBMS,如 SQL Server 2000,从定量估算各种方案的存储空间、存取时间和维护代价入 手,对估算结果进行权衡、比较,选择一个较优的合理的物理结构。

5、系统实施 编写关系模式,载入数据。分期分批地组织数据入库,先输入小批量数据做调试用,待试运行基本合 格后,再大批量输入数据,逐步增加数据量,逐步完成运行评价。需要注意的是,要首先调试运行 DBMS 的 恢复功能,做好数据库的转储和恢复工作。 基本 SQL 语言代码如下: CREATE SCHEMA \"TeachAffair\" AUTHORIZATION Gao CREATE TABLE Department (Dno CHAR(3 PRIMARY KEY, Dept CHAR(20 UNIQUE NOT NULL, Dphone CHAR(11, ; CREATE TABLE Teacher (Tno CHAR(6 PRIMARY KEY, Tname CHAR(20 NOT NULL, Title CHAR(8, Tel CHAR(11,

Dno CHAR(3, FOREIGN KEY (Dno REFERENCES Department(Dno ; CREATE TABLE Cla (Cla CHAR(6 PRIMARY KEY, TotalCredit NUMERIC(4,1, Tno CHAR(6, Dno CHAR(3, FOREIGN KEY (Tno REFERENCES Teacher(Tno, FOREIGN KEY (Dno REFERENCES Department(Dno ; CREATE TABLE Student (Sno CHAR(11 PRIMARY KEY, Sname CHAR(20 NOT NULL, Ssex CHAR(2, Sbirth DATETIME, Cla CHAR(6, FOREIGN KEY (Cla REFERENCES Cla(Cla ; CREATE TABLE Course (Cno CHAR(6 PRIMARY KEY, Cname CHAR(20 NOT NULL, Credit NUMERIC(2,1, Ctime DATETIME, Cnum SMALLINT, Tno CHAR(6, FOREIGN KEY (Tno REFERENCES Teacher(Tno ; CREATE TABLE SC (Sno CHAR(11 NOT NULL, Cno CHAR(6 NOT NULL, Grade SMALLINT CHECK(Grade>=0 AND Grade

6、运行维护

1、针对不同的应用要求制定不同的转储计划,一旦发生故障尽快将数据库恢复到某种一致的状态,并

尽可能减少对数据库的破坏;

2、根据实际情况修改数据库原有的安全性、完整性控制;

3、在数据库运行过程中,监督系统运行,对监测数据进行分析,找出改进系统性能的方法;

4、数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变坏,降低数据的 存取效率,数据库性能下降。这时应按原设计要求重新安排存储位置、回收垃圾、减少指针链等,提高系 统性能。当原有的数据库设计不能满足新的需求,需要重构造数据库,调整数据库的模式和内模式。

7、用户手册 (,具体内容:使用、操作说明。 )

8、附录 (,源程序清单和结果:源程序必须有注释,以及必要的测试数据和运行结果数据,提倡 用英文描述。 )

推荐第10篇:教务管理系统需求分析报告

教务管理系统需求分析报告

一、导言

现在是信息化的社会,传统的教务管理模式,已经不适应信息时代的要求,迫使人们起用新的管理方法来管理。 计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。因此,教务管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的教务管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,从而使人们有更多时间来学习和享受生活。

二、目的

教务系统是对学校教务和教学活动进行综合管理的平台系统,满足学校管理层、教师。学生等日常工作、学习、管理和咨询等工作。目的是共享学校各种资源、提高学校的工作效率、规范学校的工作流程。

三、术语定义

教务管理系统以下简称系统

四、参考资料

《软件项目管理案例教程》 《软件工程导论》

五、任务概述 目标:通过强教务信息的管理,有利于决策者根据教务信息及时进行信息的处理,每个用户用自己的身份通过登录该系统,并根据自己的权限进行相关操作。

六、运行环境

1台主机:CPU2.4G,4G内存,windows7操作系统,连接到Internet。

WEB服务器、文本编辑工具、打印机一台。可利用学校现有的服务器及教师办公用微机等设备。

七、系统定义

(一)需求规定

1、对功能的定义 (1)学生日常管理

a)限于全体学生操作。

b)一般浏览者只能查看教务信息,不能对它做任何修改。而且不同的用户级别所看到的教务信息是有限制的。 (2)教师日常管理

a)查询单条教务信息:主要适合全体老师操作的。在窗体上先可以选择查询的条件,再输入关键字名。按查询即可。

b)查询全部教务信息:是给管理员用的,为了方便管理员查找,也有关键字搜索和模糊搜索,查到记录后,也可双击记录即可显示详细信息。

c)成绩查询:输入学号、密码即可查询学生成绩 (3)信息公布

a)数据备份:用户可以通过选择保存路径把数据库保存在硬盘中。

b)数据恢复:用户可以通过选择路径把数据恢复。 (4)操作管理

a)仅限管理员。其中可以添加、修改、删除操作学生,设置他们的权限、级别及密码。

b)系统整理信息:显示距离管理员整理系统的时间。 (5)评教管理

a)打印单条教务记录:适用于一般浏览者和用户。他们只能打印在他们的权限范围内所能查看的教务。

b)打印全部教务:市委管理员设置的,他们可以根据需要设置打印。 (6)选课管理

a)学生进行网上选课

b)对选课情况进行统计及分析,并生成新的课表。 (7)招生管理 针对新生进行注册管理,并对注册数据进行统计及分析

(二)对性能的规定

1、数据精准度

(1)按照严格的数据格式输入,否则系统不给予响应进行处理。 (2)查询时要保证查全率,所有响应域包含查询关键字的记录都应能查到。

2、时间特性

一般操作的响应时间应在1~2秒内。

3、适应性

(1)满足学校使用的需求。

(2)对前面提到的运行环境要求不应存在困难。

(三)系统图示

1、数据流图

管理员信息管理教务管理系统公布信息查看信息老师查看信息学生

1.1教务管理系统顶层图

录入信息教师名单登录教师管理信息查询查看信息教师信息学生信息 1.2.零层数据流图

ID和密码命令信息查询修改命令学生返回信息验证有效性返回信息信息数据学生选课情况信息查询系统学生选课系统 1.5.学生子系统

2、数据字典 2.1数据存储 (1)老师信息 别名:无

简述:对老师信息进行存储管理 组成:老师姓名+密码+教师基本信息 组成方式:索引文件,教师姓名为关键字 查询要求:要求能立即查询 (2)学生信息 别名:无

简述:对学生的信息进行存储管理 组成:学号+密码+选课信息+成绩+考试信息 组织方式:索引文件,学号为关键字 查询要求:要求能立即查询 (3)选课信息 别名:无

简述:对学生所选择的课程信息进行存储管理 组成:课程+上课时间+上课地点 查询要求:要求能立即查询 (4)评教信息 别名:无 简述:对评教的过程以及结果进行存储管理 组成:学号+评教信息 查询要求:要求能立即查询 2.2数据加工

(1)加工名:录入信息 编号:1.1 激发条件:接收到教师、学生的信息时 优先级:普通 输入:教师、学生信息 输出:无 加工逻辑:无 (2)加工名:登录 编号:1.2 激发条件:进入本系统 优先级:普通 输入:用户信息 输出:登录成功或失败 加工逻辑:无

3、系统流程图

教务管理系统基本配置成绩管理教学评价系统选课管理基本信息管理信息公布招生管理成绩录入权限设置成绩录入重修重考成绩管理成绩查询成绩统计与分析成绩审批及维护评教指标设置学生在线评教教研室主任评教评教结果分析统计学生网上选课选课数据调查选课结果查询选课结果统计生成课表学生日常管理教师日常管理开课课程管理教务信息公布新生管理学生注册注册进程分析注册数据统计查询

4、用例视图

用例视图(Use Case View)是被称为参与者的外部用户所能观察到的系统功能的模型图。教务管理系统的用例视图如下: 教师档案管理管理员系统维护学生档案管理成绩管理学生成绩查询个人成绩查询课程管理网上评教成绩录入学生选课学生用户教师选课教师用户

5、顺序图

5.1学生选课、退课顺序图

对象11登录基础类学生信息数据信息2:验证消息3:进入学生界面4:点击选课退课5:执行选课、退选课6:提示操作成功

5.2管理员添加、修改、删除用户顺序图 管理员1:登录基础类用户管理界面2:验证登录3:进入管理员界面4:点击添加、修改、删除用户5:添加、修改、删除用户6:提示操作成功

6、状态图

网站主页用户登录浏览多个信息浏览查找信息基本业务模块下载文件数据页面更新

7、活动图

7.1学生查询成绩活动图 学生管理员教师登录用户名、密码错误正确选择查询科目生成成绩单成绩单错误通知管理员成绩有误无错误联系任课教师修改成绩更新数据库 7.2学生选课活动图

登录用户名、密码错误正确选择科目确定选课与专业冲突人数已满不和专业冲突人数未满更新数据库 7.3、管理员修改操作活动图 登录用户名错误正确选择修改项目确定修改继续修改不继续更新数据库

(四)故障处理

1、正常使用时不应出错,若运行时遇到不可恢复的系统错误,也必须保证数据库完好无损。调试中遇到的问题及解决的方案:

2、遇到“数据库已经关闭”提示信息阻止程序运行时:可以查看一下进行此项操作时,操作的表是否被关闭了或者实在没有关闭此表的情况下又一次运用打开语句打开此表。

第11篇:数据库程序设计教务辅助管理系统

数据库设计实例 教务管理系统

数据库实验七 数据库设计

题目要求:

设计一个教务管理系统。要求管理包括:学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。具体考核方法根据自己了解的实际情况处理。

假设此次设计的教务系统是整个学生管理系统数据库中的一部分,整个系统至少还包括学籍管理等其他子系统。

在初期设计时,先关注与教务系统有关的数据。在完成对教务管理系统的建模后再对整个系统进行合并,总终得到整个系统的设计方案。

一、需求分析

1、根据分析可以画出该教务管理系统的数据流图:

学生 选课 上课 考试 测评 选课单 允许考试 成绩单 老师档案 课程简介 教室安排 试卷 考场安排 测评报告单 学生名单 教师 选定教材 申报 课表

2、数据字典

数据结构:学生

含义说明:是教务管理系统的一个核心数据结构,定义了学生的有关信息

组成:学号、姓名

数据项:学号

含义说明:唯一标识每一个学生

别名:学生编号 类型:字符型 长度:9位

取值范围:190000000 – 999999999

取值含义:前四位表明学生所在年级,后五位安顺序编号

数据项:姓名

含义说明:表示学生的姓名 类型:字符型 长度:10位

取值范围:任意字符

数据结构:教师

含义说明:教务管理系统的核心数据结构之一,定义了教师的有关信息 组成:教师号,教师姓名

数据项:教师号

含义说明:教师的编号 类型:字符型 长度:5位

取值范围:10000 – 99999

数据项:教师姓名

含义说明:教师的姓名 类型:字符型 长度:10位

取值范围:任意合法的字符

数据结构:课程

含义说明:教务管理系统的核心数据结构之一,定义了课程的有关信息 组成:课程号,课程名,课程描述,教师,教室,教科书,学分

数据项:课程号

含义说明:课程的编号 类型:字符型 长度:4

取值范围:0001 – 9999

数据项:课序号

含义说明:对于同一课程,由不同老师教授,用课序号来区分 类型:字符型 长度:2

取值范围:01 – 99

数据项:课程名

含义说明:课程的名称 类型:字符型 长度:10

取值范围:任意合法的字符

数据项:课程描述

含义说明:课程内容的基本描述 类型:字符型 长度:200

取值范围:任意合法字符

数据项:教科书

含义说明:课程所用的教科书 类型:字符型 长度:20

取值范围:任意合法字符

数据项:学分

含义说明:课程的学分 类型:整型 长度:1

取值范围:1-9

数据结构:教室

含义说明:上课所用的教室

组成:教室编号,教室地址,教室容量

数据项:教室编号

含义说明:教室的编号 类型:字符 长度:5

取值范围:00001-99999

数据项:教室地址

含义说明:标明教室的地址 类型:字符 长度:30

取值范围:任意合法的字符

数据项:教室容量

含义说明:教室的容纳学生的数量 类型:整型

取值范围:正整数

数据结构:选课记录

含义说明:纪录学生选课的纪录 组成:学生,课程,成绩

数据项:成绩

含义说明:选课学生本学期的成绩

类型:浮点数

范围:0.0 – 100.0

处理过程:分配教室

说明:为所有课程分配上课教室 输入:课程,教室 输出:教室安排

处理:学期课程决定后,要为每个课程安排上课地点,要求上课的地点不能冲突且上课人数不能超过教室容量。

处理过程:分配考场

说明:在考试日期,为所有课程分配考场

输入:课程,教室

输出:考场安排

处理:为每个课程安排考场,考试时间和地点不能冲突且考试人数不能超过考场容量。

数据存储:成绩单

说明:记录学生本学期所有课程成绩 流入数据流:学生所有的选课记录 流出数据流:学生的成绩单 数据量:由学生的人数决定 存取方式:随机存取

二、概念结构设计

1、根据需求分析画出E-R图:

选修 学生 教师 课程 m n 讲授 1 n 教科书 n

成绩 教室 开设 1 n

2、根据E-R图写出各个实体的属性描述

学生:{学号,姓名}

课程:{课程号,课程名,课程描述,学分} 教师:{教师号,教师名,课程数} 教室:{教室编号,地址,容量}

3、视图的集成

假设在学生管理系统的学籍管理系统中存在另一个学生实体,其中还包括以下信息:性别,所属专业,所属班级。为了使两个实体保持一致,对两个实体取并集得到新的学生实体: 学生:{学号,姓名,性别,专业,班级}

三、逻辑结构设计

1、由E-R图向数据模型的转换

一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。所以,E-R图中的属性描述可直接转换为相应的关系模式。

2、对于剩余的一对多和多对多联系可以如下表示

学生-课程:{学号,课程号,课序号,成绩} 课程-教师:{课程号,课序号,教师号} 课程-教科书:{课程号,课序号,教科书}

教室-课程:{教室号,时间,课程号,课序号}

其中 课程-教师 与 课程-教科书 具有相同的主码,可以合并成一个关系 教学:{课程号,课序号,教师号,教科书}

最后得到的关系模式为

学生:{学号,姓名,性别,专业,班级} 课程:{课程号,课程名,课程描述,学分} 教师:{教师号,教师名,课程数} 教室:{教室号,地址,容量}

学生-课程:{学号,课程号,课序号,成绩} 教学:{课程号,课序号,教师号,教科书} 教室-课程:{教室号,时间,课程号,课序号}

3、用户外模式

根据需求,为计算综合测评增加一个外模式,因为综合测评只在学期末进行,查询次数不多,所以没有必要用冗余的方法来提高查询效率,只需要建立一个外模式视图即可。

测评{学号,学生姓名,平均成绩}

4、根据设计写出相应的SQL语句:

CREATE TABLE student (

Sno

VARCHAR(9)

CONSTRAINT pk_student PRIMARY KEY,

Sname

VARCHAR(10) NOT NULL,

Sex

VARCHAR(1)

NOT NULL,

Major

VARCHAR(10)

NOT NULL,

Cla

VARCHAR(10)

NOT NULL,

CHECK

(Sex = \'f\' OR Sex = \'m\') )

CREATE TABLE course (

Cno

VARCHAR(4)

CONSTRAINT pk_course PRIMARY KEY,

Cname

VARCHAR(10)

NOT NULL,

Describe

VARCHAR(200) ,

Mark

INTEGER

)

CREATE TABLE teacher (

Tno

VARCHAR(5)

CONSTRAINT teacher_pk PRIMARY KEY,

Tname

VARCHAR(10)

NOT NULL,

Ccnt

INTEGER

NOT NULL DEFAULT 0 )

CREATE TABLE claroom (

Rno

VARCHAR(5) CONSTRAINT pk_claroom PRIMARY KEY,

Locate

VARCHAR(30) NOT NULL,

Cap

INTEGER CHECK

(Cap >0) )

CREATE TABLE tech (

Cno

VARCHAR(4) NOT NULL CONSTRAINT fk_course_cno FOREIGN KEY REFERENCES course(Cno) ON UPDATE CASCADE

--级联更新

ON DELETE CASCADE, --级联删除

SCno

VARCHAR(2) NOT NULL,

Tno

VARCHAR(5) CONSTRAINT fk_teacher_tno FOREIGN KEY REFERENCES teacher(Tno)

ON UPDATE CASCADE

ON DELETE CASCADE,

Book

VARCHAR(20)

CONSTRAINT pk_tech PRIMARY KEY (Cno,SCno) )

CREATE TABLE SC (

Sno

VARCHAR(9) NOT NULL CONSTRAINT fk_student_sno FOREIGN KEY REFERENCES student(Sno)

ON UPDATE CASCADE

ON DELETE CASCADE,

Cno

VARCHAR(4) NOT NULL CONSTRAINT fk_sc_course_cno FOREIGN KEY REFERENCES course(Cno)

ON UPDATE CASCADE

ON DELETE CASCADE,

SCno

VARCHAR(2) NOT NULL,

Score FLOAT

CONSTRAINT pk_sc PRIMARY KEY (Sno,Cno,SCno) )

CREATE TABLE RC (

Rno

VARCHAR(5) CONSTRAINT fk_claroom_rno FOREIGN KEY REFERENCES claroom(Rno)

ON UPDATE CASCADE

ON DELETE CASCADE,

Time

DATETIME,

Cno

VARCHAR(4) NOT NULL CONSTRAINT fk_rc_course_cno FOREIGN KEY REFERENCES course(Cno)

ON UPDATE CASCADE

ON DELETE CASCADE,

SCno

VARCHAR(2) NOT NULL

CONSTRAINT pk_rc PRIMARY KEY (Rno,Time)

)

为进行综合测评增加一个外模式 CREATE VIEW ae AS

SELECT SC.sno, sname, AVG(score) as average FROM SC,Student where SC.sno = student.sno

GROUP BY SC.sno,sname

为了符合数据的参照完整性约束,避免学生选课的时候选择一个不存在的课程号-课序号组,增加一个外键约束。 ALTER TABLE sc

ADD CONSTRAINT fk_sc_tech FOREIGN KEY (Cno,SCno) REFERENCES tech(Cno,SCno)

ON UPDATE CASCADE

ON DELETE CASCADE

为了在插入一个新课程时能级联更新教师的工作量,增加一个触发器。此任务也可以通过建立一个外模式视图来动态统计,为了练习的目的这里采用了触发器

CREATE TRIGGER workcnter On tech AFTER INSERT ,UPDATE, DELETE AS BEGIN

DECLARE @T VARCHAR(5)

IF EXISTS

(

SELECT TOP 1 Tno FROM INSERTED

)

BEGIN

SET @T = (SELECT TOP 1 Tno FROM INSERTED )

UPDATE teacher SET Ccnt = Ccnt + 1 WHERE Tno = @T

END

IF EXISTS

(

SELECT TOP 1 Tno FROM DELETED

)

BEGIN

SET @T = (SELECT TOP 1 Tno FROM DELETED)

UPDATE teacher SET Ccnt = Ccnt1 WHERE Tno = @T END END 关于课程容量:如何保证选课的学生数量不超过教室的容量?

初步解决办法是:在学生选课时建立暂时不考虑容量问题,都加渗透一个临时的SC表中。然后,在选课结束后将未超额的记录直接加渗透SC表,超额的课程进行抽签,将命中部分学生的选课记录插入SC表,直到人数符合课程容量的要求为止。

抽签的功能较适合用顶层的高级语言来实现。在选课结束后,选超额课程的学生需登陆选课系统进行抽签,抽签的过程可以使用概率算法,如果抽中,系统再将选课记录插入SC表,否则就从临时表中删除。 所以,在数据库系统中,没有对SC表的插渗入渗出操作进行约束。

本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/lesky/archive/2006/12/25/1460 966.aspx

数据库设计---教务管理系统

2009年12月03日 星期四 11:04 P.M. 题目要求:

设计一个教务管理系统。要求管理包括:学生的档案,学生选课的情况,学生每学期的综合测评,教师档案,教师工作量等等。具体考核方法根据自己了解的实际情况处理。

假设此次设计的教务系统是整个学生管理系统数据库中的一部分,整个系统至少还包括学籍管理等其他子系统。

在初期设计时,先关注与教务系统有关的数据。在完成对教务管理系统的建模后再对整个系统进行合并,总终得到整个系统的设计方案。

一、需求分析

1、根据分析可以画出该教务管理系统的数据流图: 学生

选课

上课

考试

测评

选课单

允许考试

成绩单

老师档案

课程简介

教室安排

试卷

考场安排

测评报告单 学生名单

教师

选定教材

申报

课表

2、数据字典 数据结构:学生

含义说明:是教务管理系统的一个核心数据结构,定义了学生的有关信息 组成:学号、姓名 数据项:学号

含义说明:唯一标识每一个学生 别名:学生编号 类型:字符型 长度:9位

取值范围:190000000 – 999999999

取值含义:前四位表明学生所在年级,后五位安顺序编号 数据项:姓名

含义说明:表示学生的姓名 类型:字符型 长度:10位 取值范围:任意字符

数据结构:教师 含义说明:教务管理系统的核心数据结构之一,定义了教师的有关信息

组成:教师号,教师姓名

数据项:教师号

含义说明:教师的编号

类型:字符型

长度:5位

取值范围:10000 – 99999

数据项:教师姓名

含义说明:教师的姓名

类型:字符型

长度:10位

取值范围:任意合法的字符

数据结构:课程

含义说明:教务管理系统的核心数据结构之一,定义了课程的有关信息 组成:课程号,课程名,课程描述,教师,教室,教科书,学分

数据项:课程号 含义说明:课程的编号 类型:字符型 长度:4 取值范围:0001 – 9999 数据项:课序号

含义说明:对于同一课程,由不同老师教授,用课序号来区分 类型:字符型 长度:2

取值范围:01 – 99 数据项:课程名 含义说明:课程的名称 类型:字符型 长度:10

取值范围:任意合法的字符 数据项:课程描述

含义说明:课程内容的基本描述 类型:字符型 长度:200

取值范围:任意合法字符 数据项:教科书

含义说明:课程所用的教科书 类型:字符型 长度:20

取值范围:任意合法字符 数据项:学分 含义说明:课程的学分 类型:整型 长度:1 取值范围:1-9 数据结构:教室

含义说明:上课所用的教室

组成:教室编号,教室地址,教室容量 数据项:教室编号 含义说明:教室的编号 类型:字符 长度:5

取值范围:00001-99999 数据项:教室地址 含义说明:标明教室的地址 类型:字符 长度:30

取值范围:任意合法的字符 数据项:教室容量

含义说明:教室的容纳学生的数量 类型:整型 取值范围:正整数 数据结构:选课记录

含义说明:纪录学生选课的纪录 组成:学生,课程,成绩

数据项:成绩

含义说明:选课学生本学期的成绩

类型:浮点数 范围:0.0 – 100.0 处理过程:分配教室

说明:为所有课程分配上课教室 输入:课程,教室 输出:教室安排

处理:学期课程决定后,要为每个课程安排上课地点,要求上课的地点不能冲突且上课人数不能超过教室容量。

处理过程:分配考场

说明:在考试日期,为所有课程分配考场

输入:课程,教室

输出:考场安排

处理:为每个课程安排考场,考试时间和地点不能冲突且考试人数不能超过考场容量。

数据存储:成绩单

说明:记录学生本学期所有课程成绩 流入数据流:学生所有的选课记录 流出数据流:学生的成绩单 数据量:由学生的人数决定 存取方式:随机存取

二、概念结构设计

1、根据需求分析画出E-R图:

选修

学生

教师

课程

m n 讲授

1 n 教科书

n 成绩

教室

开设

1 n

2、根据E-R图写出各个实体的属性描述 学生:{学号,姓名}

课程:{课程号,课程名,课程描述,学分} 教师:{教师号,教师名,课程数} 教室:{教室编号,地址,容量}

3、视图的集成

假设在学生管理系统的学籍管理系统中存在另一个学生实体,其中还包括以下信息:性别,所属专业,所属班级。为了使两个实体保持一致,对两个实体取并集得到新的学生实体: 学生:{学号,姓名,性别,专业,班级}

三、逻辑结构设计

1、由E-R图向数据模型的转换

一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。所以,E-R图中的属性描述可直接转换为相应的关系模式。

2、对于剩余的一对多和多对多联系可以如下表示 学生-课程:{学号,课程号,课序号,成绩} 课程-教师:{课程号,课序号,教师号} 课程-教科书:{课程号,课序号,教科书} 教室-课程:{教室号,时间,课程号,课序号}

其中 课程-教师 与 课程-教科书 具有相同的主码,可以合并成一个关系 教学:{课程号,课序号,教师号,教科书} 最后得到的关系模式为

学生:{学号,姓名,性别,专业,班级} 课程:{课程号,课程名,课程描述,学分} 教师:{教师号,教师名,课程数} 教室:{教室号,地址,容量}

学生-课程:{学号,课程号,课序号,成绩} 教学:{课程号,课序号,教师号,教科书} 教室-课程:{教室号,时间,课程号,课序号}

3、用户外模式

根据需求,为计算综合测评增加一个外模式,因为综合测评只在学期末进行,查询次数不多,所以没有必要用冗余的方法来提高查询效率,只需要建立一个外模式视图即可。 测评{学号,学生姓名,平均成绩}

4、根据设计写出相应的SQL语句: CREATE TABLE student (

Sno VARCHAR(9) CONSTRAINT pk_student PRIMARY KEY, Sname VARCHAR(10) NOT NULL, Sex VARCHAR(1) NOT NULL, Major VARCHAR(10) NOT NULL, Cla VARCHAR(10) NOT NULL, CHECK (Sex = \'f\' OR Sex = \'m\') )

CREATE TABLE course (

Cno VARCHAR(4) CONSTRAINT pk_course PRIMARY KEY, Cname VARCHAR(10) NOT NULL, Describe VARCHAR(200) , Mark INTEGER )

CREATE TABLE teacher (

Tno VARCHAR(5) CONSTRAINT teacher_pk PRIMARY KEY, Tname VARCHAR(10) NOT NULL,

Ccnt INTEGER NOT NULL DEFAULT 0 )

CREATE TABLE claroom (

Rno VARCHAR(5) CONSTRAINT pk_claroom PRIMARY KEY, Locate VARCHAR(30) NOT NULL, Cap INTEGER CHECK (Cap >0) )

CREATE TABLE tech (

Cno VARCHAR(4) NOT NULL CONSTRAINT fk_course_cno FOREIGN KEY REFERENCES course(Cno) ON UPDATE CASCADE --级联更新 ON DELETE CASCADE, --级联删除 SCno VARCHAR(2) NOT NULL,

Tno VARCHAR(5) CONSTRAINT fk_teacher_tno FOREIGN KEY REFERENCES teacher(Tno) ON UPDATE CASCADE ON DELETE CASCADE, Book VARCHAR(20)

CONSTRAINT pk_tech PRIMARY KEY (Cno,SCno) )

CREATE TABLE SC (

Sno VARCHAR(9) NOT NULL CONSTRAINT fk_student_sno FOREIGN KEY REFERENCES student(Sno) ON UPDATE CASCADE ON DELETE CASCADE,

Cno VARCHAR(4) NOT NULL CONSTRAINT fk_sc_course_cno FOREIGN KEY REFERENCES course(Cno) ON UPDATE CASCADE ON DELETE CASCADE, SCno VARCHAR(2) NOT NULL, Score FLOAT

CONSTRAINT pk_sc PRIMARY KEY (Sno,Cno,SCno) )

CREATE TABLE RC ( Rno VARCHAR(5) CONSTRAINT fk_claroom_rno FOREIGN KEY REFERENCES claroom(Rno) ON UPDATE CASCADE ON DELETE CASCADE, Time DATETIME,

Cno VARCHAR(4) NOT NULL CONSTRAINT fk_rc_course_cno FOREIGN KEY REFERENCES course(Cno) ON UPDATE CASCADE ON DELETE CASCADE, SCno VARCHAR(2) NOT NULL

CONSTRAINT pk_rc PRIMARY KEY (Rno,Time) )

为进行综合测评增加一个外模式 CREATE VIEW ae AS

SELECT SC.sno, sname, AVG(score) as average FROM SC,Student where SC.sno = student.sno GROUP BY SC.sno,sname

为了符合数据的参照完整性约束,避免学生选课的时候选择一个不存在的课程号-课序号组,增加一个外键约束。 ALTER TABLE sc

ADD CONSTRAINT fk_sc_tech FOREIGN KEY (Cno,SCno) REFERENCES tech(Cno,SCno) ON UPDATE CASCADE ON DELETE CASCADE

为了在插入一个新课程时能级联更新教师的工作量,增加一个触发器。此任务也可以通过建立一个外模式视图来动态统计,为了练习的目的这里采用了触发器 CREATE TRIGGER workcnter On tech AFTER INSERT ,UPDATE, DELETE AS BEGIN

DECLARE @T VARCHAR(5) IF EXISTS (

SELECT TOP 1 Tno FROM INSERTED ) BEGIN

SET @T = (SELECT TOP 1 Tno FROM INSERTED ) UPDATE teacher SET Ccnt = Ccnt + 1 WHERE Tno = @T END

IF EXISTS (

SELECT TOP 1 Tno FROM DELETED ) BEGIN

SET @T = (SELECT TOP 1 Tno FROM DELETED) UPDATE teacher SET Ccnt = Ccnt - 1 WHERE Tno = @T END END 关于课程容量:如何保证选课的学生数量不超过教室的容量?

初步解决办法是:在学生选课时建立暂时不考虑容量问题,都加入一个临时的SC表中。然后,在选课结束后将未超额的记录直接加入SC表,超额的课程进行抽签,将命中部分学生的选课记录插入SC表,直到人数符合课程容量的要求为止。

抽签的功能较适合用顶层的高级语言来实现。在选课结束后,选超额课程的学生需登陆选课系统进行抽签,抽签的过程可以使用概率算法,如果抽中,系统再将选课记录插入SC表,否则就从临时表中删除。

所以,在数据库系统中,没有对SC表的插入操作进行约束。

第12篇:正方教务管理系统教师操作手册

教务管理系统教师操作手册

发布时间:2012-02-15 08:39 来源:教务处 作者:刘晓木点击量:428

一、系统登录

打开IE浏览器,输入WEB服务器地址(10.10.1.21)或从教务处主页登录“正方教务管理系统”,进入用户登录界面。输入用户名及口令(与原系统相同),选择“教师”角色,按“登录”。(请各位老师不要忘记关闭所有开启的窗口,以防他人进入,造成不良后果!)

二、信息维护

信息维护内容包括:个人简历、密码修改、全校性公选课申请、公选课教材指定、教学日历、临时调、停(补)课申请。

2.1教师个人简历维护

点击“信息维护”->“个人简历”,维护性别、联系电话、E-MAIL、教师简介等内容; 2.2密码修改

为防止登录信息泄密,请各位教师尽快更改原始密码,点击“信息维护”->“密码修改”,修改自己的原始密码和登陆名。

2.3全校性公选课申请

点击“信息维护”->“全校性公选课申请”。

1.依次选择开课学年学期、课程名称、课程性质、课程类别、课程归属、考核方式、上课校区、场地要求;

2.输入周学时、起止周(格式如01-16)、学分、容量;

3.设置面向对象、禁选对象:选择年级、或学院、或专业(若面向2001级的只选年级2001),点击添加对象;

4.录入课程简介(250字以内)、申请说明(150字以内);5.点击“保存”完成申请。

6.点击“打印”输出到EXCEL,打印后交院系签字审核。

2.4公选课教材指定

担任全校性公选课开课任务的老师可点击“信息维护”->“公选课教材指定”指定公选课教材,但必须录入教材名称、教材作者、出版社及教材版别。

2.5教学日历

选择学年,学期以及课程名称,录入周次,选择授课形式,录入教学内容;录入完毕后按保存按钮。若有多个相同教学班的,可点击“拷贝来自”,复制相同的日历再保存。教学日历可以根据不同的系统设置显示不同的两种格式,可以满足不同学校的要求。

格式一

2.6临时调、停(补)课申请

点击“信息维护”->“临时调、停(补)课申请”,依次选择变动类别、课程、变动上课信息、原起始周、原结束周、变动后起始周、变动后结束周、变动后上课时间(星期几、第几节、上课长度),点击“检测可使用教室”后选择可使用教室,再录入调课理由,点击“申请”,下面显示申请信息及审核情况,待教务处审批同意后,会显示审批结果及调整后的时间、地点。若输入有误可点击“退选”取消申请。

三、信息查询

信息查询包括:教学任务、专业推荐课表、教师个人课表、选课情况、教学质量评价、考试安排、培养计划、教材库存、教室等内容查询。

3.1教学任务查询

点击“信息查询”->“教学任务”可查询教师各学期担任的教学任务。

3.2专业推荐课表查询

点击“信息查询”->“专业推荐课表查询”可查询各专业推荐课表。

3.3教师个人课表查询

点击“信息查询”->“教师个人课表查询”可查询全校每位教师的上课情况。

3.4选课情况查询

点击“信息查询”->“选课情况查询”可查询、打印教学班的学生名单。

3.5教学质量评价查询

点击“信息查询”->“教学质量评价查询”可查询教学评价结果。

3.6考试安排查询

点击“信息查询”->“考试安排查询”可查询教师担任监考任务。

点击“信息查询”->“监考安排”可查询教师担任监考任务。

3.7培养计划查询

点击“信息查询”->“培养计划查询”可查询全校各专业的培养计划。

3.8教材库存查询

点击“信息查询”->“教材库存查询”可查询教材科库存教材的相关信息。

四、成绩录入

1.点击“成绩录入”->选择学期任教课程,进入网上成绩录入系统;

2.输入课程密码(默认为0);

3.按“确定”按钮,进入学生成绩录入界面,在左下角输入各部分成绩比例及选择总评记分方式,在右上角选择各部分成绩记分方式后,录入成绩按“保存”,全部完成后并检查无误后按“提交”按钮。注:按“提交”按钮后,成绩不能更改。

按“输出打印”按钮可将该班成绩输出打印。

选择班级及“格式一”导到EXCEL,打印并签名后交教务员存档。选择班级及“试卷分析”导到EXCEL,可制作试卷册用。

4.教师成绩录入

教师进入登陆成绩的页面时会看到一个学生信息的列表;

如果要给某位学生录成绩的话只要点击该学生列表后面的“选择”字样;

教师只要在这个页面上录入学生的各个单项的成绩就可以了。

五、公文管理

5.1 公文起草

教师可以在本页面内起草公文;

5.2 公文发送

登陆公文发送页面,教师可以发送公文和修改附件,发送了公文完成,公文的接受对象就可以通过公文的查看页面进行查看。

5.3 公文查看

教师可以通过该页面查看别的用户发送给自己的公文,也可以对公文进行回复。

5.4 公文管理

教师可以在该页面管理自己所发送的公文,可以查看公文的接受用户的回复。

六、教学评价

教师可以在该页面进行同行评价页面如下;教师可在该页面中选择评价的指标,完成对各个教师评价,评价完后只要点“提交”即可。

第13篇:数据库课程设计 计算机教务管理系统

中北大学

数据库课程设计

说 明 书

学 院、系: 专

业: 学 生 姓 名: 设 计 题 目:

李翰超

软件学院 软件工程

学 号: 1221010619

计算机等级考试教务管理系统

起 迄 日 期: 2014年5月26日- 2014年6月20日 指 导 教 师:

2012 年 6月 21 日

1 .引言

随着全国计算机等级考试的全面推广,我市学生每年参加两次全国计算机等级考试,考试管理工作量相当大。但是靠人工的方式管理等级考试相关的信息,这种管理方式存在着许多缺点,如:工作效率低、统计容易出错,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。所以开发一个计算机等级考试成绩管理系统是非常必要的。 2.需求分析

计算机等级考试分为若干种类:如:计算机一级VB、C语言;计算机二级VB、C语言、C++;计算机三级数据库、网络技术;计算机四级数据库工程师、网络工程师。对于每个种类,考试分为笔试和机试.计算机等级考试工作过程如下:每个考生在报名时,登记姓名、性别、报考种类、学校、身份证号、个人照片等。考试办公室根据考生报考的种类,以及所在的考区来安排考场,编排准考证号码,打印准考证。考生参加考试后,登记每个考生每项的成绩,并计算出每个考生笔试和机试的成绩是否都>=60分。对机试和笔试都>=60分的考生,按所在考区打印通过证书,同一考区按准考证号码顺序打印出通过证书,分发给考生;计算机四级只要笔试成绩>=60则通过;打印成绩表供考试办公室留存、备查。

开发计算机等级考试成绩管理系统,有计算机辅助实现上述过程,代替人工操作,节省人力、时间,提高工作效率。

2.1 处理对象 (1) 用户帐号密码管理 对考点代码,考点名称进行管理 用户与密码进行管理 (2) 报名管理功能模块

报各库录入(姓名不能不空,之间不能有空格) 增加、删除、修改、浏览 (3) 准考证管理模块

准考证生成规则:xxx+yy+zz+kk 其中XXX为考点代码;YY为语言代码,XX为考场号,KK为座位号 (4) 考务管理功能模块

考生信息查询、浏览 成绩管理模块

成绩数据录入、接收

成绩合成(总成绩=笔试成绩*0.6+上机成绩*0.4),按大于或等于60合格

2.2数据字典:

考生信息表(考生主键(主键),姓名,性别,出生年份,民族,身份证号,联系地址,联系电话,备注)

准考证表(准考证号主键,准考证号)

成绩表(成绩表主键,笔试成绩,上机成绩,总成绩)

级别语言代码表(级别语言代码主键,级别语言代码,级别,语言) 考生考点信息表(考生考点主键,考点代码,考点名称,) 用户帐号管理(用户帐号主键,用户名,密码)

信息操作表(考生主键(主键),准考证号主键, 级别语言代码主键,考生考点主键,用户帐号主键)

3.E-R图

4.关系模型

考生信息表(考生主键(主键),姓名,性别,出生年份,民族,身份证号,联系地址,联系电话,备注)

准考证表(准考证号主键,准考证号)

成绩表(成绩表主键,笔试成绩,上机成绩,总成绩)

级别语言代码表(级别语言代码主键,级别语言代码,级别,语言)

考生考点信息表(考生考点主键,考点代码,考点名称,) 用户帐号管理(用户帐号主键,用户名,密码)

信息操作表(考生主键(主键),准考证号主键, 级别语言代码主键,考生考点主键,用户帐号主键)

其模式定义:

见附件:模式定义。

5.物理设计

本数据库共有5张表组成,其中t_manage表为管理表,而其他4张表:t_grade,t_information,t_level,t_regist都为基本表,当要查询所需要的信息时,就用连接查询将管理表和基本表连接在一起,从而看到想看到信息。

6.数据库实施

create table t_grade ( grade number primary key, write number, shangji number, totalgrade number ); alter table t_grade add constraint write check(write=0); alter table t_grade add constraint shangji check(shangji

shangji>=0); alter table t_grade add constraint totalgrade check

(totalgrade=write+shangji);

insert into t_grade values(001,40,50,90); insert into t_grade values(002,30,50,80); insert into t_grade values(003,20,60,80); insert into t_grade values(004,25,50,75); insert into t_grade values(005,30,40,70); create table t_information ( information number, sname varchar2(20) not null, gender varchar2(2)check(gender=\'n\' or gender=\'v\'), birth number, nation varchar2(20)not null, idnumber char(18), addre varchar2(20) not null, phone number not null, note varchar2(20),

primary key(information) ); alter table t_information add constraint birth check(birth

birth>=19200101);

insert into t_information values

(006,\'ling\',\'n\',19950302,\'han\',\'140107199203060014\',\'shanxi\',\'0101111\',null ); insert into t_information values

(007,\'wang\',\'n\',19950607,\'han\',\'140107199206070014\',\'shanxi\',\'0101241\',null ); insert into t_information values

(008,\'john\',\'n\',19950504,\'german\',\'140107199205040014\',\'german\',\'010234511\'

,\'forgien\'); insert into t_information values

(009,\'liu\',\'v\',19930407,\'han\',\'140107199204070014\',\'shanxi\',\'010123511\',nul l); insert into t_information values

(010,\'yuan\',\'n\',19910408,\'han\',\'140107199204080014\',\'shanxi\',\'0101211\',null ); create table t_level ( leve number primary key, codes number not null, language varchar2(15) not null ); insert into t_level values(015,01,\'chinese\'); insert into t_level values(016,01,\'chinese\'); insert into t_level values(017,02,\'chinese\'); insert into t_level values(018,01,\'english\'); insert into t_level values(019,01,\'chinese\');

create table t_regist ( regist number, place varchar2(14), registnumber varchar2(9), primary key(regist) );

insert into t_regist values(020,10101,\'14010101\'); insert into t_regist values(021,10201,\'14010102\'); insert into t_regist values(022,11101,\'14010103\'); insert into t_regist values(023,12101,\'14010104\'); insert into t_regist values(024,15103,\'14010105\'); create table t_user ( use number, username varchar2(14) not null, code varchar2(20)not null, primary key(use) );

insert into t_user values(025,\'ling\',\'asasn\'); insert into t_user values(026,\'wang\',\'asasn\'); insert into t_user values(027,\'john\',\'sdrhy\'); insert into t_user values(028,\'liu\',\'eryery\'); insert into t_user values(029,\'yuan\',\'hjlmyu\');

create table t_manage ( information number, grade number, leve number, use number, regist number, foreign key(grade) references t_grade(grade), foreign key(information) references t_information(information), foreign key(leve) references t_level(leve), foreign key(regist) references t_regist(regist), foreign key(use) references t_user(use) );

insert into t_manage values(006,001,015,025,020); 5

insert into t_manage values(007,002,016,026,021); insert into t_manage values(008,003,017,027,022); insert into t_manage values(009,004,018,028,023); insert into t_manage values(010,005,019,029,024);

7.系统调试

通过sql语句对其进行调试,以测试其正确性,如图1,2,3,4,5

图 1 6

图 2

图 3 7

图 4 用自然连接查询:

图 5

8.心得体会

本次课程设计主要设计一个计算机管理系统,我的大体思路就是将基本信息录入到基本表当中,并保证没有重复属性,然后设计一个管理表,让其它基本表参照这个管理表,这个管理表当中只有各表主键,需要查看信息时,就将两表连接。。。

这次课设我觉得有两个难点,一个是表间的参照,另一个是约束条件的设置,尤其是约束条件一定要充分考虑到,还有当有那种范围值的约束时要在建表后要用alter修改,而不是在定义时直接约束。

最后一点是关于主键的问题,主键最好别用学号什么的,最好应该用连续的、无意义的数字,create sequence之后,每加一个元组就用一次nextval,这样可以让电脑自动排号。

第14篇:教务管理系统 数据库实例设计

第17章 数据库系统设计实例

本章以一个考务管理系统的设计过程为例,介绍在VB 6.0+SQL Server 2000环境中开发数据库系统的一般方法。

17.1 系统概述

17.1.1 系统功能

本系统用于从考生报名、产生准考证到录取考生和打印成绩单即对考生考试和录取全过程进行管理的考务系统,包含主要功能如下:

      考生报名,按报名顺序产生报名号

产生准考生号和以紧凑方式打印准考证 输入考生考试成绩和输入录取合格标准 根据合格标准录取上线考生 打印考生成绩单和考生录取通知书 设置系统用户和系统初始化

17.1.2 设计技巧

本系统设计中的一些技巧如下:     公共模块设计(参见17.4节的Module1.Bas模块) SQL Server数据库设计(参见17.3节) VB菜单设计方法(包括菜单项的有效性设计,对于“一般操作员”,使若干菜单项无效。参见menu多文档窗体设计过程) 统一的数据编辑设计方法:以ksb表为例进行说明:为了编辑其记录,设计了edks窗体,在其中的DataGrid数据网格控件中显示所有已输入的考生记录。用户可以先通过“设置条件”框架查找到满足指定条件的考生记录,然后选择“修改”或“删除”命令按钮进行考生记录的修改或删除,或者选择“添加”命令按钮输入新的考生记录。    VB报表设计方法(包括使用Data Report设计器和PrintForm方法) 图像数据的存取方法(参见edks窗体设计过程) 事件编程技术:一些数据编辑窗体(如edks等窗体)上有两个事件过程即Load和Activate,它们的执行过程是:在启动本窗体时先执行Load(仅执行一次)事件过程,

第15篇:数据库课程设计之教务管理系统

源代码:

CREATE DATABASE JWGL

/*建立教务管理系统*/ ON

(NAME = JWGL_Data,

FILENAME = \'e:\\sql_data\\Jwgl_Data.mdf\', SIZE = 20, MAXSIZE = 500, FILEGROWTH = 25%) LOG ON

(NAME = JWGL_LOG,

FILENAME = \'e:\\sql_data\\Jwgl_Log.ldf\', SIZE = 10, MAXSIZE = 100, FILEGROWTH = 1%);

CREATE TABLE Student

/*建立学生表*/ (Sno CHAR(8) PRIMARY KEY NOT NULL, Sname VARCHAR(10) NOT NULL,

Sex CHAR(2) CHECK (Sex IN (\'男\',\'女\'))NOT NULL,

Age TINYINT CHECK(Age BETWEEN 15 AND 30)NOT NULL, Phonenumber CHAR(12) UNIQUE, Sdept VARCHAR(20)NOT NULL, );

CREATE TABLE Course

/*建立课程表*/ (Cno CHAR(10) PRIMARY KEY NOT NULL, Cname VARCHAR(20) UNIQUE NOT NULL,

Total_perior TINYINT CHECK(Total_perior BETWEEN 32 AND 108),/*总学时*/ Week_perior TINYINT CHECK(Week_perior BETWEEN 2 AND 7),/*周学时*/ Credit TINYINT CHECK(Credit BETWEEN 1 AND 7)NOT NULL,/*学分*/ Pcno CHAR(10)/*先修课*/ );

CREATE TABLE SC

/*建立学生选课表*/ (Sno CHAR(8)NOT NULL, Cno CHAR(10)NOT NULL,

Grade TINYINT CHECK(Grade BETWEEN 1 AND 100), PRIMARY KEY(Sno,Cno),

FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno) );

DROP TABLE Student

/*删除学生表*/ DROP TABLE Course

/*删除课程表*/ DROP TABLE SC

/*删除学生选课表*/

INSERT

/*向学生表中插入数据*/ INTO Student

VALUES(\'04111020\',\'张倩\',\'女\',19,\'18789430000\',\'计算机\'); INSERT

INTO Student

VALUES(\'04111021\',\'张花\',\'女\',20,\'15236982111\',\'信息\'); INSERT

INTO Student

VALUES(\'04111022\',\'李强\',\'男\',20,\'13625984666\',\'英语\'); INSERT

INTO Student

VALUES(\'04111023\',\'王若\',\'女\',19,\'18789437777\',\'计算机\'); INSERT

INTO Student

VALUES(\'04111024\',\'小淼\',\'男\',20,\'15555982111\',\'信息\'); INSERT

INTO Student

VALUES(\'04111025\',\'李新\',\'男\',20,\'13621111666\',\'英语\'); INSERT INTO Student

VALUES(\'04111026\',\'刘浮\',\'男\',19,\'15278982181\',\'信息\'); INSERT

INTO Student

VALUES(\'04111027\',\'二毛\',\'男\',20,\'13666684666\',\'英语\'); INSERT

INTO Student

VALUES(\'04111028\',\'朱琪\',\'女\',19,\'18789111777\',\'计算机\'); INSERT

INTO Student

VALUES(\'04111029\',\'小马\',\'男\',20,\'155533332111\',\'信息\'); INSERT

INTO Student

VALUES(\'04111030\',\'吴欣\',\'女\',20,\'13621199666\',\'英语\')

INSERT

/*向课程表中插入数据*/ INTO Course

SELECT \'0011\',\'数据结构\',\'64\',\'2\',\'3\',\'c语言\'

UNION SELECT \'0012\',\'数据库\',

\'64\',\'2\',\'3\',\'离散数学\' UNION SELECT \'0013\',\'信息管理\',\'64\',\'2\',\'3\',\'计算机基础\' UNION SELECT \'0014\',\'专业英语\',\'64\',\'2\',\'4\',\'基础英语\' UNION SELECT \'0015\',\'电气学\',

\'64\',\'2\',\'4\',\'电子科技\'

INSERT

/*向学生选课表中插入数据*/ INTO SC

SELECT \'04111020\',\'0011\',\'90\' UNION SELECT \'04111020\',\'0012\',\'87\' UNION SELECT \'04111022\',\'0012\',\'85\' UNION SELECT \'04111022\',\'0015\',\'76\' UNION SELECT \'04111023\',\'0014\',\'69\' UNION SELECT \'04111024\',\'0013\',\'90\' UNION SELECT \'04111025\',\'0011\',\'92\' UNION SELECT \'04111026\',\'0011\',\'83\' UNION SELECT \'04111027\',\'0012\',\'87\' UNION SELECT \'04111027\',\'0013\',\'79\' UNION SELECT \'04111028\',\'0011\',\'88\' UNION SELECT \'04111028\',\'0014\',\'85\' UNION SELECT \'04111029\',\'0012\',\'97\' UNION SELECT \'04111030\',\'0013\',\'69\' UNION SELECT \'04111028\',\'0015\',\'88\'

CREATE TABLE Student_temp

/*建立 Student_temp空表*/ (Sno CHAR(8) PRIMARY KEY NOT NULL, Sname VARCHAR(10) NOT NULL,

Sex CHAR(2) CHECK (Sex IN (\'男\',\'女\'))NOT NULL,

Age TINYINT CHECK(Age BETWEEN 15 AND 30)NOT NULL, Phonenumber CHAR(12) UNIQUE, Sdept VARCHAR(20)NOT NULL, );

INSERT INTO

Student_temp

/*在Student_temp表中保存计算机系所有学生的情况*/ SELECT * FROM Student

WHERE Sdept = \'计算机\';

ALTER TABLE Student ADD Addre CHAR(20);

/*向Student表中插入地址列*/

DELETE FROM SC

/*删除计算机系学生的选课记录*/ WHERE Sno IN(SELECT Sno FROM Student

WHERE Sdept =\'计算机\');

UPDATE Student

/*将每个学生的年龄增加1岁*/ SET Age=Age+1; UPDATE

SC SET Grade=0 WHERE Sno IN(SELECT Sno FROM Student

WHERE Sdept = \'计算机\') ;

SELECT Sno,Sname,Sdept

/*查询学生表中所有学生的学号、姓名、所在系*/ FROM Student;

SELECT *

/*查询学生表中的所有信息*/ FROM Student;

SELECT Sname,2013-Age AS Birthday

/*查询学生表中所有学生的出生年份,用2013-Age的值作为Birthday的列值*/ FROM Student;

SELECT *

/*查询课程表中的所有信息*/ FROM Course;

SELECT *

/*查询学生选课表中的所有信息*/ FROM SC;

SELECT DISTINCT Sno

/*查询所有选了课程的学生的学号*/ FROM SC;

SELECT Sno,Sname

/*查询计算机系所有学生的学号和姓名*/ FROM Student

WHERE Sdept =\'计算机\';

SELECT Sno

/*查询考试成绩在80分以上的学生学号*/ FROM SC

WHERE Grade >=80;

SELECT Sname,Sdept,Age /*查询年龄在20-23岁的学生姓名、所在系和年龄*/ FROM Student

WHERE Age >=20 AND Age

SELECT Sname,Sdept,Age,Sex /*查询计算机和英语系的学生姓名、年龄和性别*/ FROM Student

WHERE Sdept IN(\'计算机\',\'英语\');

SELECT Sname,Sdept,Age,Sex /*查询不是计算机和英语系的学生姓名、年龄和性别*/ FROM Student

WHERE Sdept NOT IN(\'计算机\',\'英语\');

SELECT *

/*查询信息系所有学生的情况*/ FROM Student

WHERE Sdept LIKE \'信息\';

SELECT *

/*查询姓张的学生所有信息*/ FROM

Student

WHERE Sname LIKE \'张%\';

SELECT

Cno,Credit

/* 查询\'数据结构\'课程的课程号和学分*/ FROM Course

WHERE Cname LIKE \'数据结构\';

SELECT Sno,Cno

/*查询没有考试成绩的课程后和学分*/ FROM SC

WHERE Grade IS NULL;

SELECT *

/*查询全体学生的信息,查询结果按所在系的升序排列,同一系中的学生按年龄降序排列*/ FROM Student

ORDER BY Sdept ,Age DESC;

SELECT AVG(Grade) AS \'平均成绩\'

/*查询选修\'0014\'号课程的学生的平均分*/ FROM SC

WHERE Cno =\'0014\';

SELECT MIN(DISTINCT Grade) AS \'最低分\' /*查询成绩表中的最低分*/ FROM SC;

SELECT COUNT(*)AS\'总人数\'

/*统计学生总人数*/ FROM Student;

SELECT COUNT (DISTINCT Sno)/*统计选修了课程的学生人数*/ FROM SC;

SELECT Cno ,COUNT (Sno )/*查询每门课程的课程号及选课人数*/ FROM SC GROUP BY Cno;

SELECT Student .*,SC .*

/*查询每个学生及其选修课的情况*/ FROM Student ,SC

WHERE Student.Sno=SC.Sno;

SELECT Student.Sno,Sname,Grade

/*查询选修了\'数据库\'课程并且成绩在85分以上的学生的学号和姓名*/

FROM Student ,Course,SC

WHERE Student.Sno = SC.Sno AND SC.Cno

= Course .Cno AND Cname = \'数据库\'AND Grade>85;

SELECT Sno,Sname

/*查询和王若在同一个系学习的学生的学号和姓名*/ FROM Student

WHERE Sdept =

(SELECT Sdept

FROM Student

SELECT Sname ,Age

/*查询其他系中比英语系某一学生年龄小的学生是姓名和年龄*/ FROM Student

WHERE Sdept \'英语\'

AND AGE

FROM Student

WHERE Sdept =\'英语\');

SELECT Sname /*查询选修了0014号课程的学生的姓名*/ FROM Student

WHERE EXISTS

(SELECT * FROM SC

WHERE Sno =Student.Sno AND Cno=\'0014\');

SELECT Cno FROM Course

UNION ALL

/*ALL表示合并两个查询输出的全部记录,没有ALL表示结果中不包含重复行*/ SELECT Cno FROM SC ORDER BY Cno;

CREATE PROCEDURE Student_Course

/*在学生-课程数据库中创建存储过程,查看和\'小马\'有关的基本信息及选修课程*/ AS

SELECT Student.Sno,Sname,Cname,Grade

FROM Student,Course,SC

WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Sno AND Sname=\'王若\' IF EXISTS(SELECT name FROM sysobjects

WHERE name=\'Student_Course\' AND type=\'P\')

DROP PROCEDURE Student_Course; WHERE Sname = \'王若\' ); EXECUTE Student_Course;/*查看存储的信息*/

SELECT Sno

/*查询选修\'0012\'或\'0015\'号课程的所以学生的学号*/ FROM SC

WHERE Cno=\'0012\' UNION SELECT Sno FROM SC

WHERE Cno=\'0015\';

CREATE UNIQUE INDEX Stusno ON Student(sno);/*建立索引*/ CREATE UNIQUE INDEX Coucon ON Course (Cno);

CREATE UNIQUE INDEX SCno ON SC (Sno ASC,Grade DESC);

drop index Stusno ON Student/*删除索引*/ drop index Coucon ON Course drop index SCno ON SC

CREATE VIEW C_Student

/*建立计算机系学生的视图,进行修改和插入操作时只能对计算机系的学生操作*/ AS

SELECT Sno,Sname,Sex,Age FROM Student WHERE Sdept=\'计算机\' WITH CHECK OPTION

CREATE VIEW Student_Course_0013(Sno,Sname,Sex,Age,Grade) /*建立选择0013号课程并且成绩在80分以上的学生视图*/ AS

SELECT Student.Sno,Sname,Sex,Age,Grade FROM Student,SC

WHERE Student.Sno=SC.Sno AND Grade>=80 AND Cno=\'0013\'

CREATE VIEW Student_Birth(Sno,Sname,Sbirth)/*建立反应学生出生年份的视图*/ AS

SELECT Sno,Sname,2013-Age FROM Student

CREATE PROCEDURE student_count/*创建一个存储过程,返回选修某门课程的学生人数*/ @CourseName VARCHAR(20), @StudentSum INT OUTPUT AS SELECT @StudentSum=COUNT (*) FROM Course ,SC

WHERE Course .Cno=SC.Cno AND Cname =@CourseName;

drop procedure student_count; /*

DELCARE @StudentSum INT;

EXECUTE student_count \'专业英语\',@StudentSum output; SELECT \'the result is:\',@Student_Sum ;*/

CREATE PROCEDURE student_course1 /*通过参数@StudentName将指定学生的姓名传递给存储过程*/

@StudentName VARCHAR(10) AS

SELECT Student.Sno,Sname,Cname,Grade

FROM Student,Course,SC

WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno

AND Sname=@StudentName ;

EXECUTE

student_course1 \'小马\';/*调用存储过程*/

/*删除视图*/

DROP VIEW C_Student;

DROP VIEW Student_Course_0013; DROP VIEW Student_Birth;

CREATE TRIGGER student_change/*创建触发器,当学生表中的记录被更新时,显示表中的所有记录*/

ON Student AFTER INSERT,UPDATE,DELETE AS

SELECT * FROM Student ;

CREATE TRIGGER sc_insert3 ON SC

/*在SC表上创建触发器,当向SC表中添加学生的选课记录时,检查学生的学号是否存在。若不存在,不能插入改条记录*/ AFTER INSERT AS

IF(SELECT COUNT (*) FROM Student ,inserted WHERE Student.Sno=inserted.Sno)=0 BEGIN

PRINT\'学号不存在,不能插入记录\' ROLLBACK TRANSACTION END;

INSERT INTO SC

VALUES(\'04111098\',\'0015\',73)

ALTER TABLE SC

/*删除触发器*/

DISABLE TRIGGER sc_insert2

第16篇:十五、江汉大学文理学院 综合教务系统

十五、江汉大学文理学院

2011年江汉大学文理学院教师招聘需求

一、人文学部

1.教学课程/岗位职责:公共事业管理;专业要求:文化产业、会展经济;学历或职称要求:硕士及以上;人数:2。

2.教学课程/岗位职责:广告学;专业要求:广告策划、广告制作;学历或职称要求:硕士及以上;人数:1。

3.教学课程/岗位职责:传媒经济;专业要求:传媒经济、传媒管理;学历或职称要求:硕士及以上;人数:1。

4.教学课程/岗位职责:汉语;专业要求:汉语言文学、文化;学历或职称要求:硕士及以上;人数:1。

二、机建学部

1.教学课程/岗位职责:教师;专业要求:材控、模具类;学历或职称要求:硕士或讲师;人数:2;其它要求:工程技术人员要求中级职称,男士优先。 2.教学课程/岗位职责:教师;专业要求:汽车工程类;学历或职称要求:硕士或讲师;人数:2;其它要求:工程技术人员要求中级职称,男士优先。

3.教学课程/岗位职责:教师;专业要求:机械、机电类;学历或职称要求:硕士或讲师;人数:1;其它要求:工程技术人员要求中级职称,男士优先。

三、生物与环境工程学部园艺系

1.教学课程/岗位职责:园林制图、园林CAD;专业要求:园林及相关专业;学历或职称要求:硕士及以上,或讲师以上;人数:1。

2.教学课程/岗位职责:园林设计、园林绿地规划、园林植物造景;专业要求:园林及相关专业;学历或职称要求:硕士及以上,或讲师以上;人数:1。

四、体美学部

1.教学课程/岗位职责:艺术设计;专业要求:三维动画;学历或职称要求:硕士;人数:2。

2.教学课程/岗位职责:艺术设计;专业要求:动漫理论;学历或职称要求:硕士;人数:1。

3.教学课程/岗位职责:艺术设计;专业要求:数字摄影;学历或职称要求:硕士;人数:1。

4.教学课程/岗位职责:艺术设计;专业要求:后期制作;学历或职称要求:硕士;人数:1。

5.教学课程/岗位职责:艺术设计;专业要求:分镜头设计;学历或职称要求:硕士;人数:1。

6.教学课程/岗位职责:体育;专业要求:羽毛球;学历或职称要求:硕士;人数:1;其它要求:一级运动员以上。

7.教学课程/岗位职责:体育;专业要求:乒乓球;学历或职称要求:硕士;人数:1;其它要求:一级运动员以上。

8.教学课程/岗位职责:体育;专业要求:网球;学历或职称要求:硕士;人数:1;其它要求:一级运动员以上。

五、商学部 管理系

1.教学课程/岗位职责:会计学/教学科研;专业要求:会计;学历或职称要求:硕士及以上或副教授;人数:3;其它要求:在该专业领域从事过相关教学,并有实务操作经验。

2.教学课程/岗位职责:财务管理/教学科研;专业要求:财务管理;学历或职称要求:硕士及以上或副教授;人数:3;其它要求:在该专业领域从事过相关教学,并有实务操作经验。

3.教学课程/岗位职责:物流与供应链管理/教学科研;专业要求:物流工程;学历或职称要求:硕士及以上;人数:1。

4.教学课程/岗位职责:投资学/教学科研;专业要求:财政学或经济学;学历或职称要求:硕士及以上;人数:2。

5.教学课程/岗位职责:会计电算化/教学科研;专业要求:会计;学历或职称要求:硕士及以上;人数:3;其它要求:在该专业领域从事过相关教学,并有实务操作经验。

6.教学课程/岗位职责:纳税筹划/教学科研;专业要求:税务;学历或职称要求:硕士及以上;人数:2。

7.教学课程/岗位职责:项目管理与评估/教学科研;专业要求:工商管理;学历或职称要求:硕士及以上或副教授;人数:2。

8.教学课程/岗位职责:资产评估学/教学科研;专业要求:财务管理;学历或职称要求:硕士及以上;人数:2。

9.教学课程/岗位职责:战略管理/教学科研;专业要求:企业管理;学历或职称要求:硕士及以上或副教授;人数:2。

10.教学课程/岗位职责:电子商务/教学科研;专业要求:电子商务;学历或职称要求:硕士及以上;人数:1。

11.教学课程/岗位职责:汽车营销/教学科研;专业要求:营销管理;学历或职称要求:硕士及以上;人数:1。 旅游系

1.教学课程/岗位职责:旅游资源开发与设计等/教学科研;专业要求:旅游管理;学历或职称要求:硕士及以上或副教授及以上;人数:1。

2.教学课程/岗位职责:导游实务等/教学科研;专业要求:旅游管理;学历或职称要求:硕士及以上或讲师及以上;人数:1。

3.教学课程/岗位职责:休闲概论等/教学科研;专业要求:旅游管理;学历或职称要求:硕士及以上或讲师及以上;人数:1。 经济系

1.教学课程/岗位职责:金融学/教学科研;专业要求:金融学/经济学;学历或职称要求:副教授及以上;人数:1。

2.教学课程/岗位职责:保险学/教学科研;专业要求:金融学/经济学;学历或职称要求:副教授;人数:1。

3.教学课程/岗位职责:信用管理/教学科研;专业要求:金融学/经济学;学历或职称要求:硕士及以上或讲师及以上;人数:1。

4.教学课程/岗位职责:金融学、保险、信用评估/教学科研;专业要求:金融学/经济学;学历或职称要求:硕士及以上;人数:2。

5.教学课程/岗位职责:世界经济/教学科研;专业要求:国际贸易/世界经济;学历或职称要求:副教授及以上;人数:1。

6.教学课程/岗位职责:国际贸易理论与实务/教学科研;专业要求:国际贸易/世界经济;学历或职称要求:副教授;人数:1;其它要求:有外贸实务经验。 7.教学课程/岗位职责:国际贸易实务/教学科研;专业要求:国际贸易/世界经济;学历或职称要求:硕士及以上或讲师及以上;人数:1。

8.教学课程/岗位职责:国际商务函电/教学科研;专业要求:国际贸易/世界经济;学历或职称要求:硕士及以上;人数:1。 信息学部

1.教学课程/岗位职责:教师;专业要求:计算机网络工程专业;学历或职称要求:硕士(讲师以上);人数:1。

2.教学课程/岗位职责:教师;专业要求:管理信息系统专业;学历或职称要求:硕士(讲师以上);人数:1。

3.教学课程/岗位职责:教师;专业要求:自动化专业;学历或职称要求:硕士(讲师以上);人数:1。

4.教学课程/岗位职责:教师;专业要求:汽车电子专业;学历或职称要求:硕士(讲师以上);人数:1。

5.教学课程/岗位职责:实验员;专业要求:计算机专业;学历或职称要求:本科(男性);人数:1。

六、基础课部

教学课程/岗位职责:工程数学/教师;专业要求:数学/应用数学;学历或职称要求:研究生以上学历讲师及以上职称;人数:1。

七、外语系

1.外语学部外语自主学习中心

教学课程/岗位职责:实验员;专业要求:计算机专业+大英四级;学历或职称要求:本科学历;人数:1;其它要求:管理自主学习中心和未来的同声传译室。 2.英语专业

教学课程/岗位职责:英美文学、词汇学课程;专业要求:英语专业硕士,专八,能担任该专业课;学历或职称要求:如有教学经验可放宽到讲师以上的本科学历);人数:1;其它要求:除承担基础课外,可胜任这两门专业课。 3.大外系

教学课程/岗位职责:大学英语(本、专科);专业要求:英语专业硕士,专八;学历或职称要求:胜任大学英语本、专科课程;人数:3。 4.法语系

教学课程/岗位职责:高年级文学,文体学课程;专业要求:法语专业硕士,法语专八;学历或职称要求:硕士学历或讲师以上;人数:1。

八、政法学部

1.教学课程/岗位职责:心理学;专业要求:心理学;学历或职称要求:研究生或讲师;人数:1;其它要求:实验方向。

2.教学课程/岗位职责:心理学;专业要求:心理学;学历或职称要求:研究生或讲师;人数:1;其它要求:神经生物学方向。

3.教学课程/岗位职责:教育学;专业要求:教育心理学;学历或职称要求:副教授;人数:1。

4.教学课程/岗位职责:实验员;专业要求:心理学;学历或职称要求:研究生;人数:1。

5.教学课程/岗位职责:行政监察学、管理学原理;专业要求:行政管理/公共事业管理;学历或职称要求:硕士及以上或讲师;人数:1。

6.教学课程/岗位职责:决策科学、领导科学;专业要求:管理科学与工程;学历或职称要求:硕士及以上或讲师;人数:1。

7.教学课程/岗位职责:财政学、社会保障;专业要求:公共管理;学历或职称要求:硕士及以上或讲师;人数:1。

8.教学课程/岗位职责:申论、行政能力测试;专业要求:管理学;学历或职称要求:硕士及以上或讲师;人数:1。

9.教学课程/岗位职责:政治学原理;专业要求:政治学;学历或职称要求:硕士及以上或讲师;人数:1。

10.教学课程/岗位职责:法学;专业要求:法学;学历或职称要求:副教授;人数:1。

第17篇:高校教务管理系统的设计应用

摘 要:近年来,随着我国教育事业的不断发展,大学教育逐渐从传统的“精英教育”向当代的“大众教育”转变,高校教育事业规模日益扩大,学校教务管理的任务变得更加繁重和复杂。本文充分利用b/s体系结构,结合asp.net的优势和sql server2005数据库技术,设计并应用高校管理的高校教务管理系统。

关键词:教务管理系统;高效;设计;应用

近年来,我国高等教育改革体制不断深化,受学生扩招、校区扩建、学生人才培养计划的更新等因素的影响,高校教务管理工作面临着新的挑战,需要依靠一个良好的教务管理系统来完成教务管理工作,促使其向规范化、效率化方向发展,推动高校的良好发展。

一、高校教务管理系统的需求分析

(一)系统的工作流程

在高校的教务管理系统中,从总体上来讲,其工作主要包括三条主线:(1)以教学培养计划为基础,监控学生的学习结果,综合考虑多方面的因素,为学生的学习进程提供咨询,管理学籍直至学生通过毕业资格审核;(2)对学生的课程和考试进行管理,包括选课、排课、开课,学校所有教学资源的协调调度,学生各项考试的管理等;(3)教学质量的管理与控制(比如对教师的授课情况的调查与分析等),教材与其他教学保障体系的管理等。

(二)系统需求

在设计高校教务管理系统的过程中,需要分析其需求,在此基础上才能逐一满足各项需求,为高校教务管理工作提供帮助。具体来讲,主要涉及以下四个方面:(1)功能性需求。这个需求主要是根据高校教务管理工作的内容,结合不同的对象设计不同的用户,其中包括适用教务处管理员的校级管理用户、教学秘书用的院系级管理用户、各科教师的教师用户、学生用户等,根据用户的不同,其所拥有的使用权限、使用功能均不同。(2)性能性需求,即需要系统满足多方面的性能,包括操作需求、扩展性和兼容性需求等。(3)安全需求。主要包括操作系统安全、硬件设施安全、管理安全等方面。

二、高校教务管理系统设计中的关键技术

在此次设计高校教务管理系统中,其中涉及几个关键技术,需要特别加以注意。

(一)b/s体系结构设计。据大量实践证实,b/s结构具有开发周期短、适应性强等优势,并且可以与internet/intranet完美的集成。因此,采用b/s体系结构,可以最大程度上利用网络资源,实现高校各类信息的及时发布。与此同时,该结构可以被应用到地理位置分散、通讯介质各异的网络中,既可以更好的为用户服用,同时又可以减少客户端的维护量。

(三)ado.net技术。采用该技术设计的目标如下:对关系型和非关系型数据库简单访问,将前一个数据库与xml访问统一起来,协助程序开发人员可以在网络上充分、高效使用多层数据库应用程序。采用该技术后,用户通过登录网站的后台管理程序,可以实现多种操作,比如信息的更新、插入等。

三、高校教务管理系统的设计

(一)整体性设计。在设计高校教务管理系统时,根据用户身份角度,在此做出不同的功能分配,包括部门管理员、教师、学生以及访客四个部分。

(二)功能模块设计。在功能模块设计中,主要包括以下四个模块:

(1)用户登录模块。首先,在登录高校教务管理系统中,用户需要选择登录身份,即部门管理员、教师、学生或者访客,对于不同的用户,其权限是不同的。其中,在这四个用户中,部门管理员的权限最高,访客无需登录即可浏览学校相关教务信息。

(2)部门管理子系统。该系统相当于系统的后台管理,其涉及两个身份,一个是教务管理处管理员(具有最高的管理功能,学校的一切教学事务均可被管理),一个是学校各个二级学院的教务秘书。该子系统包括8个模块,即公告管理(学校各项通知、安排等)、学生管理(成绩管理、学籍管理等)、师资管理、教学计划管理、排课管理(各个院系、专业等的课程安排)、考试管理、系统维护。

(3)教师管理子系统。用户以教师身份登录到系统后,就可以直接进入该子系统,起重工包括5个模块,即成绩管理(学生成绩的登记、核对等)、信息查询、信息维护、毕业设计、系统维护。

(4)学生管理子系系统。高校学生以学生身份登录后即可进入该系统,其主要包括5个功能模块,即网上报名、网上选课(根据开课情况,在网上选择自己感兴趣的课程)、信息查询(比如成绩查询等)、教学质量评估(比如给授课教师打分等)、系统维护。

四、高校教务管理系统的应用

(一)登录模块

进入高校教务管理系统时,用户根据自身的身份,通过输入用户名、密码来登录,访客则可以直接访问。其中,实现界面如图1所示。

图1 教务管理系统的登录界面

(二)考试管理模块

在教务管理系统的考试管理模块,可以实现多种功能,比如考试课程安排,考试时间、地点安排等。其中,该模块子菜单的实现界面如表2所示:

图2 教务管理系统考试管理模块主界面

(三)学生管理模块

这个模块主要是针对高校学生,它可以实现新老学生数据导入、报到、注册等。当新生报到后,对其分班编学号、学生基本信息维护、各类表格的输出打印等。学生根据自己的用户名和密码,登录该模块,可以在线网上查询或修改系统授权的个人信息。

结束语

在高效管理工作中,其核心在于教务管理工作,它是维护学校各校教学活动、研究活动等工作的保障。本文利用相关技术,设计开发一个基于b/s结构的高校教务管理系统,基本可以满足高校教务管理的各项工作。要想保障该系统的良好运行,后期还需加强学习和研究,不断完善该系统。

第18篇:正方现代教务管理系统WEB端

正方现代教务管理系统WEB端

教师用户手册

杭州正方电子工程有限公司

一、系统登录 .....................................3

二、信息维护 .....................................3 2.1教师个人简历维护 ..................................3 2.2密码修改 .........................................3 2.5教学日历 .........................................4

三、信息查询 .....................................4 3.1教学任务查询 ......................................4 3.2专业推荐课表查询 ..................................5 3.3教师个人课表查询 ..................................5 3.4选课情况查询 ......................................6 3.5教学质量评价查询 ..................................6 3.6考试安排查询 ......................................6 3.7培养计划查询 ......................................7 3.9教室查询 .........................................7

四、成绩录入 .....................................8

一、系统登录

打开IE浏览器,从教务处主页登录“教务信息管理系统”,进入用户登录界面。输入用户名及口令(二者初始都为6位职工号,不足6位,职工号前面补0),选择“教师”角色,按“登录”。(请各位老师退出前,要关闭所有开启的IE窗口,以防他人进入,造成不良后果!)

二、信息维护

信息维护内容包括:个人简历、密码修改、教学日历。 2.1教师个人简历维护

点击“信息维护”->“个人简历”,维护性别、联系电话、E-MAIL、教师简介等内容;

2.2密码修改

为防止登录信息泄密,请各位教师尽快更改原始密码,点击“信息维护”->“密码修

3 改”,修改自己的原始密码和登陆名。

2.5教学日历

选择学年,学期以及课程名称,录入周次,选择授课形式,录入教学内容;录入完毕后按保存按钮。若有多个相同教学班的,可点击“拷贝来自”,复制相同的日历再保存。

三、信息查询

信息查询包括:教学任务、专业推荐课表、教师个人课表、选课情况、教学质量评价、考试安排、培养计划、教材库存、教室等内容查询。

3.1教学任务查询

点击“信息查询”->“教学任务”可查询教师各学期担任的教学任务。

3.2专业推荐课表查询

点击“信息查询”->“专业推荐课表查询”可查询各专业推荐课表。

3.3教师个人课表查询

点击“信息查询”->“教师个人课表查询”可查询全校每位教师的上课情况。

5 3.4选课情况查询

点击“信息查询”->“选课情况查询”可查询、打印教学班的学生名单。

3.5教学质量评价查询

点击“信息查询”->“教学质量评价查询”可查询教学评价结果。

3.6考试安排查询

点击“信息查询”->“考试安排查询”可查询教师担任监考任务。

6 3.7培养计划查询

点击“信息查询”->“培养计划查询”可查询全校各专业的培养计划。

3.9教室查询

点击“信息查询”->“教材库存查询”可查询全校教室使用情况及教室使用申请。

1、选择学年学期,输入教室名称,点击“按教室查询使用情况”可查询使用情况;

2、选择时间段、星期几、节次,点击“按时间段查询空教室”查询时间段内的空教室;

3、选择某一空教室,点击后面的“教室预约”,填入借用单位及电话、预约人电话及用途即可向教务处预约教室,并可打印预约单;

再点击“预约教室审核结果”可查询审批结果。

四、成绩录入

1、点击“成绩录入”->选择学期任教课程,进入网上成绩录入系统;

2、输入课程密码

3、按“确定”按钮,进入学生成绩录入界面,在左下角输入各部分成绩比例及选择总评记分方式,在右上角选择各部分成绩记分方式后,录入成绩按“保存”,全部完成后并检查无误后按“提交”按钮。注:按“提交”按钮后,成绩不能更改。

按“输出打印”按扭可将该班成绩输出打印。

选择班级及“格式一”导到EXCEL,打印并签名后交教务员存档。选择班级及“试卷分析”导到EXCEL,可制作试卷册用。

第19篇:新教务管理系统学籍异动说明

新教务管理系统学籍异动说明

新教务系统2007春秋两季学生现在可以开始进行学籍异动,学籍异动包括“省内异动”和“省间异动“现在只能进行省内异动,同时只能进行新系统内部得异动,新系统和老系统目前不能进行互相转学。

一、学籍异动流程如下:

学籍异动要求各个教学点在自己教务平台上先进行学籍异动,完成后在书面材料(学籍异动申请表)加盖公章报分校批准,分校接到教学点得异动材料后立刻进行审批并在分校教务平台上完成操作,完成后在书面材料上加盖公章,同时报送书面材料到省电大,省电大接到分校书面材料后在教务系统中进行批准,同时在书面 材料上加盖公章返回分校(书面材料一式三份,省校一份、分校一份、教务点一份)。

学籍异动只进行转专业操作,其他休学退学在开放教育中不进行。 学籍异动包括以下集中情况:(教务系统中操作流程)

1、教学点内转专业:这种情况先有教学点替学生提出申请,(注意教学点内转专业提出申请时必须保证教学点内本年度学期要有目标专业的教学班才能进行转换)、教学点审批、分校在分校平台进行审批、省校审批。

2、分校内跨教学点转专业:

首先转出教学点提出替学生提出申请,转出教学点审批申请,转入教学点审批同意,教学点所在分校在分校平台审批同意,省电大审批同意。

3、跨分校转专业: 首先转出教学点提出替学生提出申请,转出教学点审批申请,转出教学点所在分校在分校平台审批同意,转入教学点审批同意,转入教学点所在分校在分校平台审批同意,省电大审批同意。

以下用分校内跨教学点转专业为例子进行说明:

1、首先转出教学点用户登陆系统,在

“学籍\\相关查询\\学生信息查询 ” 中查询到要转学的学生的学号

2、在 “学籍\\学籍异动“ 中 选择 “申请学籍异动” 操作 在“输入查询条件”中按照学生的 层次、年度、专业、班级、及学号查询该学生,然后点击“申请”。

3、在申请界面中按照要求输入“转入分校” “转入教学点” “转入专业”点击由专业查询规则按钮 在“新专业中的规则”下拉菜单中按照学生所转换的年级选择相应的专业规则,如果学生由2007 年级转换到2007年级的选择07年专业规则,再在“异动原因中”输入学生提出转学的原因,然后选择提交按钮

4、如果没有问题系统会弹出对话框“申请学籍异动成功”那么申请这一步骤完成,接下来进行审批。

5、转出教学点用户选择“学籍异动\\审批学籍异动” 点击查询按钮就可以查询到已经进行了申请的学生的学籍异动信息。这时候在“审核”下拉菜单中选择是否同意,不论是否同意都要输入原因(就时教学点审批的理由),完成后点击“提交”按钮完成转出教学点的审批程序。此时教学点审批过程完成,转出教学点准备好书面材料(如果是分校内跨教学点转学这时候应该联系转入教学点让他们在系统中进行操作,同时将材料报转入教学点审批后再报分校。如果是跨分校进行转学这时候转出教学点应该联系转出分校,并将材料上报分校,由分校进行批准后联系转入分校和转入教学点进行审批)。

6、转入教学点登陆教学点平台对学生转入学籍异动进行审批:选择“学籍异动/审批学籍异动”点击查询按钮就可以查询到要求转入学生的学籍异动申请,这是可以看到转出教学点已经同意的学籍异动申请,此时输入审批是否同意,同意的原因,同时请一定要为转入学生指定教学班级。完成后点击确定按钮。完成系统中异动后请在转出教学点送来的书面材上加盖公章,并将材料报送所在分校批准。

7、分校学籍管理用户登陆分校平台(注意这里要求的是分校用户,不是分校本部的教学点用户)“在学籍异动/审批学籍异动申请”点击查询,这是可以看到转入和转出教学点都已经同意的学籍异动申请。输入审批是否同意,原因,点击确定按钮完成分校一级的审批功能,如果没有问题系统会弹出对话框说明学籍异动审批成功。同时在书面材料上加盖公章,将书面材料报送省电大学籍科审批。

8、省校用户登陆省校平台对分校已经批准的学籍异动进行审批,选择“学籍异动\\审批学籍异动”点击查询就可以查询到分校已经审批的学籍异动信息,输入审批意见点击确定,系统提示学籍异动成功,完成在分校报送的材料上加盖公章返回两分材料给分校和工作站。至此全部完成一个学生的学籍异动。

,此时转入教学点就可以在相应的教学班级查询到该异动已经完成的学生信息,此时才能对该学生进行进行选课等操作,

第20篇:C语言课程设计报告——教务管理系统

功能说明:实现两种权限的身份登陆的教务管理系统 */ #include \"stdio.h\" #include \"stdlib.h\" #include \"string.h\" #include \"time.h\" #include \"memory.h\" #define share \"d:\\share.dat\"

//定义邮件地址

#define manager \"d:\\manager.dat\"

#define outmsg

\"d:\\outmsg.dat\" //定义管理员邮件地址

//定义公告邮件地址 //定义用户登录时间信息 //定义学生起始文件信息

//定义学生成绩信息地址 #define logtimemsg \"d:\\used login time.dat\" #define star_stu

\"d:\\stu_scname.dat\"

#define stu_msg

#define ma_key \"3110008758\" typedef struct student stu; #define sc_num 4

#define uint unsigned int

\"d:\\stu.dat\"

//定义文件头部密码

//只设定4门科目,不允许改动

/*学生成绩管理系统结构*/ struct student {

char num[10]; /*学生学号*/ char name[10]; /*学生姓名*/ uint score[sc_num]; /*科目分数*/ uint average; /*科目平均分*/ stu *next;

}st; char gettemp=0; /*管理员身份识别结构*/ typedef struct username user; struct username { char username[20];// char paword[20]; }use; /*时间登录信息*/ struct Logtime { char userlogin[20]; struct tm; }; char logc;//登录次数

typedef struct Logtime logtime; //============ //定义通讯协议

//============

#define ma_max 200 struct Maage {

//定义信息量

int cont;

//文件数量 char username[15]; //发送人

char ma[ma_max];//信息 }mas; typedef struct Maage maage;

//============ //============ char userlogin[10]; char sc_name[sc_num][10]; /*以上是学生信息*/

char welcome(void);/*用户界面,返回0,则表示退出系统*/ /* ====================== 学生信息操作

====================== */ stu*creat();/*建立链表*/ void display(stu *head);/*显示用户信息*/ void insert(stu *head);/*增加学生信息*/ stu* delname(stu*head,char *stu_name);/*根据学生姓名删除用户信息*/ stu* delnum(stu *head,char *stu_num);/*根据学生学号删除用户信息*/ stu* checkname(stu *head,char *stu_name);/*输出指定学生的信息*/ stu* checknum(stu *head,char *stu_num);/*输出指定学生学号的学生信息*/ void changsc_name(stu *head,char *name);/*修改用户成绩*/ void changsc_num(stu *head,char *num);/*修改用户成绩*/ void waring(void);/*产生警告信息*/ char cheknum(char *num);/*检查学生学号是否符合格式*/ char chekname(char *name);/*检查学生姓名是否符合格式*/ char chekscore(char score);/*检查学生分数是否符合格式*/ stu* sortscore(stu *head);/*学生按平均成绩排序*/ stu* sortnum(stu *head);/*学生信息按学号排序*/ /* ====================== 学生用户登录

====================== */ char stulogin(void);/*进入普通用户登录界面*/ char stucheck(char *nam,char *stnum);/*查找是否存在该学生信息*/ char newlogin(char *nam,char *stnum);/*注册学生信息*/ void disnewst(void);/*获得学生信息*/ /* ====================== 系统管理选择,管理员权限

====================== */ void stu_system(void);/*对各种操作集中管理*/ void sentmsg(void);/*发送公告*/ char readmsg(void);/*浏览信息*/ char delemsg(void);//删除信息

void chagesbject(void);/*修改课程信息*/ /* ====================== 用户登录信息

====================== */ void setlogintime(void);/*记录用户登录时间*/ void dislogintime(void);/*显示用户登录信息*/ void setused(void);/*注册新用户资料*/ char usedcheckname(char *name);/*用户信息检查,若存在用户,则返回1,否则返回0*/ char usedcheckpa(char *name,char *paword);/*查看用户名密码是否符合*/ /* ====================== 存储操作

====================== */ char save(stu *head);/*保存用户数据*/ char disload();/*显示用户信息*/ stu* load(void);/*加载用户数据*/ void clrtxt(char *str);/*清除文本信息*/ char* creat_txt(char *username);/*根据用户名,创建一个用户文件*/ FILE* chekuser(char *username);/*根据用户名,查找是否有此用户信息,若无,返回NULL*/ /* ====================== ---------------main函数---------- ====================== */ void main() {

FILE *fp; char i,j; char name[15]; system(\"color b5\"); memset(name,\'\\0\',sizeof(name)); if((fp=fopen(star_stu ,\"r+\"))==NULL) { printf(\"将新建文件!\\n\"); } fp=fopen(star_stu ,\"w+\"); fread(name,sizeof(name),1,fp); if(strcmp(name,ma_key)!=0) {

printf(\"文件载入出错!\\t N为退出 回车键继续...:\"); i=getchar(); if((i==\'n\')||(i==\'N\')) {

} else { fclose(fp); exit(1);

} else {

} printf(\"\\n\\n数据将重新初始化!\\n\"); printf(\"\\n\\n请输入4门科目名称\\n\"); memset(name,\'\\0\',sizeof(name)); fwrite(name,sizeof(name),5,fp); strcpy(name,ma_key); rewind(fp); fwrite(name,sizeof(name),1,fp); for(i=0;i

} printf(\"\\n\\n第%d门科目名称 : \",i+1); scanf(\"%s\",sc_name[i]);

if(fwrite(sc_name[i],sizeof(sc_name[i]),1,fp)!=1) {

} printf(\"\\n\\n\\t\\t\\t\\t保存出错!\\n\"); getchar(); exit(1);

if(fp==NULL) printf(\"\\n文件错误!\"); fscanf(fp,\"%s%s%s%s\",sc_name[0],sc_name[1],sc_name[2],sc_name[3]); } fclose(fp); fp=fopen(share,\"w\"); fclose(fp); fp=fopen(manager,\"w\"); fclose(fp); fp=fopen(outmsg,\"w\"); fclose(fp); do { j=welcome(); if(j==1) {

system(\"cls\"); printf(\"\\t\\t欢迎进入学生用户中心系统!\"); setlogintime();

//为防止文件在后面打开错误

j=stulogin(); } else if(j==2)

{ setlogintime(); stu_system(); } }while(j!=0);

//为防止文件未关闭,倒置文件内容 fp=fopen(share,\"w\"); 丢失

} fclose(fp); fp=fopen(manager,\"w\"); fclose(fp); fp=fopen(outmsg,\"w\"); fclose(fp); fp=fopen(logtimemsg,\"w\"); fclose(fp); fp=fopen(star_stu,\"w\"); fclose(fp); fp=fopen(stu_msg,\"w\"); fclose(fp); /* ====================== ---------------------------初始化用户界面--------------------------- ====================== */ //返回1,则进入stu用户界面 //返回0,则表示退出

//返回2,则表示进入管理员界面 char welcome(void) { char username[20];

char userpa[20]; char i,wrong_cont=0,key=0,weling=1,back=0; char temp; system(\"color b5\"); while(weling) { do{ system(\"cls\"); printf(\"\\t*********************欢迎进入教务管理系统********************\\n\"); printf(\"\\t*

*\\n\"); printf(\"\\t*

1.用户登录

*\\n\"); printf(\"\\t*

*\\n\"); printf(\"\\t*

2.用户注册

*\\n\"); printf(\"\\t*

*\\n\");

printf(\"\\t*

3.管理员登陆

*\\n\"); printf(\"\\t*

*\\n\"); printf(\"\\t*

4.管理员注册

*\\n\"); printf(\"\\t*

*\\n\"); printf(\"\\t*

5.退出系统

*\\n\"); printf(\"\\t*

*\\n\"); printf(\"\\t===============\\n\"); printf(\"\\t

请按命令提示操作\\n\"); printf(\"\\n\\n\\n\"); printf(\"\\n\\n\\n\"); printf(\"您输入的命令为:\\t\"); i=getchar(); if((i!=\'1\')&&(i!=\'2\')&&(i!=\'3\')&&(i!=\'4\')&&(i!=\'5\')) { printf(\"\\n输入错误的指令!请按命令提示操作 1-3\\n\"); getchar(); } }while((i!=\'1\')&&(i!=\'2\')&&(i!=\'3\')&&(i!=\'4\')&&(i!=\'5\')); switch(i) {

case \'1\': {

system(\"cls\"); memset(username,\'\\0\',sizeof(username)); memset(userpa,\'\\0\',sizeof(userpa)); printf(\"\\n\\t请输入用户名 :\\t\"); scanf(\"%s\",username); printf(\"\\n\\t请输入学号 :\\t\"); scanf(\"%s\",userpa); temp=stucheck(username,userpa); if(temp==0) {

} {

} printf(\"没有学生档案信息!请注册...\\n\"); getchar(); break; else if(temp==1) memset(userlogin,\'\\0\',sizeof(userlogin)); strcpy(userlogin,username);

printf(\"\\n\\t学生成绩登录有效!\"); getchar(); return 1;

getchar(); //======================= break; } case \'2\': {

} system(\"cls\"); memset(username,\'\\0\',sizeof(username)); memset(userpa,\'\\0\',sizeof(userpa)); printf(\"\\n\\t请输入用户名 :\\t\"); scanf(\"%s\",username); printf(\"\\n\\t请输入学号 :\\t\"); scanf(\"%s\",userpa); while(cheknum(userpa)!=1) {

printf(\"您的输入格式有误,请重新输入!\\n\"); printf(\"按回车键继续...\\n\"); getchar(); memset(userpa,\'\\0\',sizeof(userpa)); printf(\"\\n\\t请输入学号 :\\t\"); scanf(\"%s\",userpa); } if(newlogin(username,userpa)) printf(\"\\n\\t注册成功!用户名:%s\\t学号:%s\",username,userpa); getchar(); break; case \'3\': {

do

{

system(\"cls\"); memset(username,\'\\0\',sizeof(username)); memset(userpa,\'\\0\',sizeof(userpa)); printf(\"\\n\\t请输入用户名 :\\t\"); scanf(\"%s\",username); printf(\"\\n\\t请输入密码 :\\t\"); scanf(\"%s\",userpa); if(usedcheckpa(username,userpa)==0) {

wrong_cont++; if(wrong_cont==3) { printf(\"\\n\\t输入次数大于3次!请按回车键退出系统!\\n\");

getchar(); weling=0; return 0; } key=1; printf(\"\\n\\t按1选择返回主菜单\\n\\t按0继续输入用户验证码\\n\"); do {

back=getchar();

if((back!=\'1\')&&(back!=\'0\')) {

}

printf(\"\\n\\t输入错误!按回车键继续...\"); getchar(); }while((back!=\'1\')&&(back!=\'0\')); if(back==\'1\') key=0; } else {

key=0; weling =0; system(\"cls\"); printf(\"\\n\\n\\t\\t欢迎%s进入学生管理系统\\n\",username); memset(userlogin,\'\\0\',sizeof(userlogin)); strcpy(userlogin,username);

//记录用户

登录信息

return 2; } }while(key); back=0; weling=1; break; return 2; } case \'4\': {

} setused();/*注册新管理员资料*/ weling=1; break; case \'5\': { weling=0;

} /*

return 0; }

} } return 1; ====================== ---------------建立链表---------- ====================== */ stu*creat()/*建立链表*/ {

char i,j; char stu_num; stu *p1, *p2; stu *head; FILE *fp; fp=fopen(stu_msg,\"w+\"); head=(stu*)malloc(sizeof(stu)); head->next=NULL; p1=p2=(stu*)malloc(sizeof(stu)); i=0,j=0; system(\"cls\"); printf(\"\\n\\n请输入要录入的学生人数: \"); scanf(\"%d\",&stu_num); for(i=0;i

system(\"cls\"); p1->average=0; printf(\"\\n\\n请输入学生学号: \"); scanf(\"%s\",p1->num); while(!cheknum(p1->num)) { printf(\"\\n\\n输入格式错误!请重新输入学号 : \"); scanf(\"%s\",p1->num); } printf(\"\\n\\n请输入学生姓名 : \"); scanf(\"%s\",p1->name); while(!chekname(p1->name)) { printf(\"\\n\\n输入格式出错!不能带数字或下划线!\\n\");

printf(\"\\n\\n请重新输入学生姓名: \"); scanf(\"%s\",p1->name); }

do

{

printf(\"\\n\\n请输入学生%s成绩 :\",sc_name[j]);

scanf(\"%d\",&p1->score[j]);

while((100score[j])||(p1->score[j]

{

printf(\"\\n\\n成绩格式出错!\\n \"); getchar(); printf(\"\\n\\n请重新输入学生成绩 : \"); scanf(\"%d\",&p1->score[j]);

} p1->average+=p1->score[j]; j++; }while(javerage=p1->average/4; if(i==0)

/*分清楚是head->next=p还是

{

head->next=p1; head=p*/

p2=p1;

}

} p1->next=NULL; } else { p2->next=p1; p2=p1; p2->next=NULL;

/*产生新的节点*/ } fwrite(p1,sizeof(stu),1,fp); p1=(stu*)malloc(sizeof(stu)); display(head); getchar(); fclose(fp); return head; /* ====================== 检查学生学号是否符合格式,若正确,则返回1,否则返回0 ====================== */ char cheknum(char *num)/*检查学生学号是否符合格式*/ { char i;

/*获取字符串长度*/

} char j=strlen(num); for(i=0;i

} if((\'0\'>num[i])||(\'9\'

}

/* ====================== 显示学生成绩情况

====================== */ void display(stu *head)/*显示用户信息*/ { for(i=0;i

} /*if((\'A\'>name[i])||((\'Z\'name[i]))||(\'z\'next; system(\"cls\"); if(p1!=NULL) {

while(p1!=NULL)

{

if(i==0)

{

printf(\"姓名\\t学号\\t

%s\\t

%s\\t

%s\\t%s\\t

平均\\n\",sc_name[0],sc_name[1],sc_name[2],sc_name[3]);

i++;

}

printf(\"%s\\t%s\\t %d\\t %d\\t%d\\t%d\\t%d\\n\",\\

p1->name,p1->num,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->average);

p1=p1->next;

}

getchar(); } else {

printf(\"\\t\\t\\t链表为空!\\n\\n\\n请按回车键继续...\\n\");

getchar(); } } /* ====================== 插入学生信息

====================== */ void insert(stu *head)/*增加学生信息*/ { stu *p1,*p2; char j=0; p1=head->next; p2=(stu*)malloc(sizeof(stu)); /*创建新的学生信息*/

p2->average=0;

system(\"cls\");

printf(\"\\n\\n请输入要增加的学生学号: \");

scanf(\"%s\",p2->num);

while(!cheknum(p2->num)) {

printf(\"\\n\\n输入格式错误!请重新输入学号 : \"); scanf(\"%s\",p2->num); } printf(\"\\n\\n请输入学生的姓名 : \"); scanf(\"%s\",p2->name); while(!chekname(p2->name)) {

}

do

{

printf(\"\\n\\n请输入学生%s成绩 :\",sc_name[j]);

scanf(\"%d\",&p2->score[j]); while((100score[j])||(p2->score[j]

{

printf(\"\\n\\n成绩格式出错!\\n \"); getchar(); printf(\"\\n\\n请重新输入学生成绩 : \"); scanf(\"%d\",&p2->score[j]); printf(\"\\n\\n输入格式出错!不能带数字或下划线!\\n\"); printf(\"\\n\\n请重新输入学生姓名: \"); scanf(\"%s\",p2->name); } p2->average+=p2->score[j]; j++; }while(javerage=p2->average/4; if(head->next==NULL) {

} else {

} while(p1->next!=NULL) p1=p1->next; p1->next=p2; p2->next=NULL; printf(\"\\n原链表为空!\"); getchar(); head->next=p2; display(head); getchar(); } /* ====================== 删除学生信息

====================== */ stu* delname(stu*head,char *stu_name)/*根据学生姓名删除用户信息*/ {

stu *p1,*p2; char i,j=0; system(\"cls\"); if(head->next==NULL) { printf(\"\\n\\n没有学生信息!\\t操作错误!\\n\"); return head; } p1=head->next; p2=p1; while(p1!=NULL) {

if(strcmp(p1->name,stu_name)==0) {

printf(\"\\n\\n你所删除的学生姓名为: %s\\t学号为:%s\\n\",p1->name,p1->num); printf(\"\\n\\n确定为:y,取消为n\\t:\"); i=getchar();

while(!((i==\'y\')||(i==\'Y\')||(i==\'n\')||(i==\'N\'))) {

printf(\"\\n\\n输入错误!\\t请重新输入 :\"); } i=getchar(); if((i==\'y\')||(i==\'Y\')) { if(j==0)

} { } else { } printf(\"\\n\\n\\t\\t\\t\\t成功删除用户信息!\\n\\n\\t\\t\\t按回车键继续...\\n\"); free(p1); return head; p2->next=p1->next; head->next=p1->next;/*删除头部接点*/ else { return head;

}

} } j++; p2=p1; p1=p1->next; } printf(\"\\n\\n\\t\\t没有此用户记录信息!\\n按回车键继续\\n\"); getchar(); system(\"cls\"); display(head); getchar(); return head; /* ====================== 删除学生信息(以学号为对象) ====================== */ stu* delnum(stu *head,char *stu_num)/*根据学生学号删除用户信息*/ {

stu *p1,*p2; char i,j=0; system(\"cls\"); if(head->next==NULL) { printf(\"\\n\\n\\t\\t没有存储学生信息!\\n\\n\\t\\t操作错误!\\n\"); return head; } p1=head->next; p2=p1; while(p1->next!=NULL) {

if(strcmp(p1->num,stu_num)==0) {

printf(\"\\n\\n你所删除的学生姓名为: %s\\t学号为:%s\\n\",p1->name,p1->num); printf(\"\\n\\n确定为:y,取消为n\\t:\"); i=getchar();

{

} while(!((i==\'y\')||(i==\'Y\')||(i==\'n\')||(i==\'N\'))) printf(\"\\n\\n输入错误!\\t请重新输入 :\"); i=getchar();

}

}

if((i==\'y\')||(i==\'Y\')) {

} if(j==0) { head->next=p1->next; } else { }

printf(\"\\n\\n\\t\\t\\t\\t成功删除用户信息!\\n\\n\\t\\t\\t按回车键继续...\\n\"); free(p1); return head; p2->next=p1->next; else

return head; } p2=p1; p1=p1->next; j++; printf(\"\\n\\n没有此用户信息!\\n按回车键继续...\\n\"); getchar(); system(\"cls\"); display(head); getchar(); return head; /* ====================== 输出指定学生信息(以学生姓名为对象) ====================== */ stu* checkname(stu *head,char *stu_name)/*输出指定学生的信息*/ {

stu *p1; system(\"cls\"); if(head==NULL) {

printf(\"\\n\\n\\t\\t没有存储学生信息!\\t操作错误!\\n\"); getchar(); return head;

} } p1=head; while(p1->next!=NULL) { if(strcmp(p1->name,stu_name)==0)

{

printf(\"\\n\\n你所查找的学生信息如下\\n\"); printf(\" \\n\\n%s\\t学号为:%s\\n\",p1->name,p1->num); printf(\"姓名\\t学号\\t\\t %s\\t %s\\t %s\\t%s\\t平均分 \\n\",\\ sc_name[0],sc_name[1],sc_name[2],sc_name[3]); printf(\"%s\\t%s\\t\\t %d\\t %d\\t%d\\t%d\\t%d\\n\",\\

p1->name,p1->num,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->average);

} getchar(); return p1; } p1=p1->next; printf(\"\\n\\n\\t\\t找不到相关用户信息!\\n按回车键继续...\\n\"); getchar(); system(\"cls\"); display(head); getchar(); return (stu*)NULL; /* ====================== 输出指定学生信息(以学生学号为对象) ====================== */ stu* checknum(stu *head,char *stu_num)/*输出指定学生学号的学生信息*/ {

stu *p1,*p2; p2=(stu*)malloc(sizeof(stu)); system(\"cls\"); if(head==NULL) { printf(\"\\n\\n\\t\\t没有存储学生信息!\\t操作错误!\\n\"); return head; } p1=head;

} while(p1->next!=NULL) {

p1->name,p1->num,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->average);

getchar(); return p1; if(strcmp(p1->num,stu_num)==0) {

printf(\"\\n\\n你所查找的学生信息如下\\n\"); printf(\" %s\\t学号为:%s\\n\",p1->name,p1->num); printf(\"姓名\\t学号\\t\\t %s\\t %s\\t %s\\t%s\\t平均分 \\n\",\\ sc_name[0],sc_name[1],sc_name[2],sc_name[3]); printf(\"%s\\t%s\\t\\t %d\\t %d\\t%d\\t%d\\t%d\\n\",\\ } p1=p1->next; } printf(\"\\n\\n\\t\\t找不到相关用户信息!\\n按回车键继续...\\n\"); getchar(); return (stu*)NULL; /* ====================== 修改指定学生信息(以学生姓名为对象) ====================== */ void changsc_name(stu *head,char *name)/*修改用户成绩*/ { stu *p;

char j=0; system(\"cls\"); p=checkname(head,name); if(p!=NULL) {

p->average=0; printf(\"\\n\\n请输入学生新的学号: \"); scanf(\"%s\",p->num); while(!cheknum(p->num)) { printf(\"\\n\\n输入格式错误!请重新输入学号 :\\n \"); scanf(\"%s\",p->num); }

do

}

{

printf(\"\\n\\n请输入学生成绩%s :\",sc_name[j]);

scanf(\"%d\",&p->score[j]); while((100score[j])||(p->score[j]

{

j++;

} printf(\"\\n\\n成绩格式出错!\\n \"); getchar(); printf(\"\\n\\n请重新输入学生成绩 : \"); scanf(\"%d\",&p->score[j]);

p->average+=p->score[j];

}while(j

p->average=p->average/4;

printf(\"\\n\\n\\t\\t用户数据更新完毕!\\n请按回车键退出...\\n\");

getchar(); system(\"cls\"); display(head);

getchar(); } /* ====================== 修改指定学生信息(以学生学号为对象) ====================== */ void changsc_num(stu *head,char *num)/*修改用户成绩*/ {

stu *p2; char j=0; system(\"cls\"); p2=checknum(head,num); if(p2!=NULL) {

p2->average=0; printf(\"\\n\\n请输入学生姓名: \"); scanf(\"%s\",p2->name); while(!chekname(p2->name)) { printf(\"\\n\\n输入格式错误!请重新输入学号 : \"); scanf(\"%s\",p2->name); }

do

{

}

printf(\"\\n\\n请输入学生成绩%s :\",sc_name[j]);

scanf(\"%d\",&p2->score[j]); while((100score[j])||(p2->score[j]

{

printf(\"\\n\\n成绩格式出错!\\n \");

j++;

} getchar(); printf(\"\\n\\n请重新输入学生成绩 : \"); scanf(\"%d\",&p2->score[j]);

p2->average+=p2->score[j];

}while(j

p2->average=p2->average/4;

printf(\"\\n\\n\\t\\t用户数据更新完毕!请按回车键退出...\\n\");

getchar(); } /* ====================== ====================== ============================存储操作类函数========================== ====================== ====================== */ /* ====================== 加载学生信息

====================== */ stu* load(void)/*加载用户数据*/ {

FILE *fp; stu *p,*head,*p1; char i=0,j=0; fp=fopen(stu_msg,\"r\"); rewind(fp); head=(stu*)malloc(sizeof(stu)); p1=p=(stu *)malloc(sizeof(stu)); while(fread(p,sizeof(stu),1,fp)==1) {

if(i==0) { head->next=p; p1=p;

}

} } else { p1->next=p; p1=p; p1->next=NULL; } i++; p=(stu*)malloc(sizeof(stu)); j++; if(j==0) {

printf(\"\\n\\n\\t\\t\\t没有数据信息可载入!\\n\"); head=NULL; free(p); getchar(); } fclose(fp); return head; /* ====================== 显示学生信息

====================== */ char disload()/*显示用户信息*/ {

FILE *fp; stu *p1; char i=0; p1=(stu*)malloc(sizeof(stu)); if((fp=fopen(stu_msg,\"r+\"))==NULL)fp=fopen(stu_msg,\"w+\"); rewind(fp); while(fread(p1,sizeof(stu),1,fp)==1) { printf(\"%s\\t%s\\t %d\\t %d\\t%d\\t%d\\t%d\\n\",\\

p1->name,p1->num,p1->score[0],p1->score[1],p1->score[2],p1->score[3],p1->average);

i++;

//fread(p1,sizeof(stu),1,fp); } fclose(fp); if(i==0)

} /* { printf(\"\\n\\t\\t\\t文件中不含学生信息!\\n\\t\\t\\t按回车键继续...\\n\"); getchar(); } else {

} printf(\"\\n\\t\\t\\t一共记录了%d名学生信息!\\n\\t\\t\\t按回车键继续...\\n\",i); getchar(); ====================== 保存学生信息

====================== */ char save(stu *head)/*保存用户数据*/ {

stu *p; FILE *fp; stu stt; char i=0; p=head->next; system(\"cls\"); clrtxt(stu_msg); fp=fopen(stu_msg,\"w\"); rewind(fp); // if(head->next!=NULL) { while(p!=NULL)

{

fwrite(p,sizeof(stu),1,fp); p=p->next; i++; } if(i==0) {

} else { printf(\"没有保存数据!\\n\"); getchar(); fclose(fp); return 0;

} fclose(fp); return 1; } } else {

} fclose(fp); return 0;

fclose(fp); return 0; /* ====================== 创建文本信息

====================== */ char* creat_txt(char *username)/*根据用户名,创建一个用户文件*/ {

char name[20]; FILE *fp; strcpy(name,\"d:\"); strcat(name,username); strcat(name,\".txt\"); fp=fopen(name,\"w+\"); system(\"cls\"); if(fp!=NULL) {

} else {

} printf(\"\\n\\n\\t\\t无法创建用户文件!\\n\\n\\t\\t请按回车键继续...\\n\"); getchar(); fclose(fp); return name; //printf(\"\\n\\n文件路径为:%s\\n\\n\",name); //printf(\"\\n\\n\\t\\t用户文件创建成功!\\n\\n\\t\\t请按回车键继续...\\n\"); //getchar(); fclose(fp); return name; } /* ====================== 清除文本信息

====================== */ FILE* chekuser(char *username)/*根据用户名,查找是否有此用户信息,若无,返回NULL*/ { }

/* ====================== 清除文本信息

====================== */ void clrtxt(char *str)/*清除文本信息*/ {

char clrmem[10]; char semem[40]; FILE *fp; int i=0,j=0; if((fp=fopen(str,\"r\"))==NULL) { printf(\"\\n\\t无此文件!\"); getchar(); } else {

fclose(fp); fp=fopen(str,\"w\"); memset(clrmem,\'\\0\',sizeof(clrmem)); rewind(fp); for(i=0;i

if(fwrite(clrmem,sizeof(clrmem),1,fp)!=1) {

if(j==0) { printf(\"\\n\\n\\t\\t文件清除失败!\\n\\n\\t\\t请按回车键继续...\\n\"); getchar(); break; } else { //printf(\"\\n\\n\\t\\t文件清除成功!\\n\\n\\t\\t请按回车键继续...\\n\"); //getchar(); break;

} /*

}

} } else j++; } fclose(fp); ====================== 用户登录信息

====================== */ void setlogintime(void)/*记录用户登录时间*/ {

FILE *fp; int y,m,d,hour,min,sec; time_t T;

struct tm *timeinfo;

// 一个可以包含时间信息的长整型

// 得到机器的日历时间 time( &T );

if((fp=fopen(logtimemsg,\"a+\"))==NULL) { fp=fopen(logtimemsg,\"w\"); } time( &T );

// 得到机器的日历时间

timeinfo = localtime( &T ); 时间格式的指针

} /*

// 将日历时间转换为当地时间,timeinfo 是一个// 年份

// 月份 // 日期 y=timeinfo->tm_year + 1900; m=timeinfo->tm_mon + 1; d=timeinfo->tm_mday;

hour=timeinfo->tm_hour; min=timeinfo->tm_min; sec=timeinfo->tm_sec; fwrite(userlogin,sizeof(userlogin),1,fp); fwrite(timeinfo,sizeof(struct tm),1,fp);//写入用户登陆信息

printf(\"\\n\\n\\n\\t\\t登陆时间为:\\n\\t\\t%d年 %d月 %d日 %d时 %d分 %d秒\\n\\n\\n\", y, m, fclose(fp); d,hour,min,sec); ====================== 用户登录信息

====================== */ void dislogintime(void)/*显示用户登录信息*/ { FILE *fp; int y,m,d,hour,min,sec;

struct tm *timeinfo; char name[10]; int i=0; timeinfo=(struct tm*)malloc(sizeof(struct tm)); fp=fopen(logtimemsg,\"r+\"); if(fp==NULL) {

} else { memset(name,\'\\0\',sizeof(name)); while(fread(name,sizeof(name),1,fp)==1) { fread(timeinfo,sizeof(struct tm),1,fp); y=timeinfo->tm_year + 1900; m=timeinfo->tm_mon + 1; d=timeinfo->tm_mday;

hour=timeinfo->tm_hour; min=timeinfo->tm_min; sec=timeinfo->tm_sec;

// 年份ins // 月份 // 日期 printf(\"\\n\\n\\t\\t找不到文件信息!\\n\\n\\t\\t按回车键继续...\\n\"); getchar(); i++; printf(\"\\n\\t第%d次登陆时间为:%d年 %d月 %d日 %d时 %d分 %d秒\\t%s用户登录\",i,y, m, d,hour,min,sec,name);

} memset(name,\'\\0\',sizeof(name)); } if(i==0) printf(\"\\n没有记录用户登录时间!\\n\"); getchar(); free(timeinfo); fclose(fp); } /* ====================== 用户登录信息

====================== */ void setused(void)/*注册新用户资料*/ {

FILE *fp; char chekpaword[20]; char lgway[20]; char i=0; system(\"cls\"); memset(use.paword,\'\\0\',sizeof(use.paword)); memset(chekpaword,\'\\0\',sizeof(chekpaword)); memset(use.username,\'\\0\',sizeof(use.username)); do{ printf(\"\\n\\n请输入用户名:\\t\"); scanf(\"%s\",use.username); printf(\"\\n\\n请输入用户密码:\\t\"); scanf(\"%s\",use.paword); printf(\"\\n\\n请再次输入密码:\\t\"); scanf(\"%s\",chekpaword); if(strcmp(use.paword,chekpaword)!=0) {

printf(\"\\n\\n\\t\\t密码不匹配!\\n按回车键继续\\n\"); getchar(); i=1; memset(use.paword,\'\\0\',sizeof(use.paword)); memset(chekpaword,\'\\0\',sizeof(chekpaword)); memset(use.username,\'\\0\',sizeof(use.username));

//10检查用户密码输入

} else i=0; } while(i); strcpy(lgway,creat_txt(use.username)); clrtxt(lgway); fp=fopen(lgway,\"w+\"); if(fp!=NULL) {

rewind(fp);/*清除文本信息*/ if(fwrite(&use,sizeof(use),1,fp)==1) {

rewind(fp); memset(use.username,\'\\0\',sizeof(use.username)); memset(use.paword,\'\\0\',sizeof(use.paword)); fscanf(fp,\"%s%s\",use.username,use.paword);/////////////////////////////////此处写有问题!

//fread(&use,sizeof(use),1,fp);

//printf(\"您保存的用户名为:%s\\n\",use.username);

} /*

} else {

} else {

//printf(\"您保存的密码是:%s\\n\",use.paword); //printf(\"\\n\\n\\t\\t数据保存成功!\\n按回车键继续...\\n\"); //getchar(); fclose(fp); printf(\"\\n数据保存失败!\\n按回车键继续...\\n\"); getchar(); fclose(fp); } printf(\"\\n用户注册失败!\\n按回车键继续...\\n\"); getchar(); fclose(fp); } fclose(fp); ====================== 用户登录信息

====================== */ char usedcheckname(char *username)/*用户信息检查*/ {

char name[20]; FILE *fp; system(\"color b5\"); strcpy(name,\"d:\"); strcat(name,username); strcat(name,\".txt\"); fp=fopen(name,\"r+\"); rewind(fp); if(fp!=NULL) {

} else { printf(\"\\n\\n\\t\\t用户名输入错误!\\n\\n\\t\\t请按回车键继续...\\n\"); getchar(); fclose(fp); return 1;

return 0; } } /* ====================== 检查输入密码是否正确

====================== */ char usedcheckpa(char *user,char *pa)/*查看用户名密码是否符合*/ {

char filename[20]; FILE *fp; memset(filename,\'\\0\',sizeof(filename)); strcpy(filename,\"d:\"); strcat(filename,user); strcat(filename,\".txt\"); if((fp=fopen(filename,\"r\"))==NULL) { printf(\"\\n操作错误!不存在此用户!\\n\"); getchar(); return 0; } //printf(\"\\n文件名为:%s\\n\",filename); getchar(); memset(use.username,\'\\0\',sizeof(use.username)); memset(use.paword,\'\\0\',sizeof(use.paword)); if(fp==NULL) {

printf(\"\\n\\n\\t\\t用户名错误!\\n\\n\\t\\t请按回车键继续...\\n\"); getchar(); fclose(fp); return 0; } rewind(fp); fread(&use,sizeof(use),1,fp); //printf(\"用户名:%s\\t密码:%s\\n\",use.username,use.paword); //getchar(); if(strcmp(use.paword,pa)==0) {

system(\"cls\"); printf(\"\\n\\n\\t\\t密码输入正确!\\n\\n\\t\\t请按回车键继续...\\n\"); getchar(); fclose(fp); return 1;

} /* } else { printf(\"\\n\\n\\t\\t密码输入错误!\\n\\n\\t\\t请按回车键继续...\\n\"); getchar();

} fclose(fp); return 0; ====================== 系统管理选择

====================== */ void stu_system(void)/*对各种操作集中管理*/ {

FILE *fp; stu *head,*temp_str; char menue[8],reg[8],temp[10]; char key=0,i=0,quet=0,insert_num; char str3[10]; char loginout=0; system(\"color b4\"); head=load(); do { quet=0; loginout=0; system(\"color b5\");

getchar(); while(head==NULL) {

} while(!quet) { do{ system(\"cls\"); printf(\"\\t\\t学生成绩管理系统\\t\\t\\t管理员%s登录\\n\",userlogin); printf(\"\\t==============\\n\"); printf(\"\\t||\\t\\t0.修改课程信息\\n\"); system(\"cls\"); printf(\"数表为空,请至少输入一个学生信息!\\n\"); head=creat();

printf(\"\\t||\\n\"); printf(\"\\t||\\t\\t1.查看学生信息\\t\\t2.增加学生信息\\n\"); printf(\"\\t||\\n\"); printf(\"\\t||\\t\\t3.删除学生信息\\t\\t4.修改学生信息\\n\"); printf(\"\\t||\\n\"); printf(\"\\t||\\t\\t5.查找学生信息\\t\\t6.广播信息管理\\n\"); printf(\"\\t||\\n\"); printf(\"\\t||\\t\\t7.历史登录信息\\t\\t8.注销用户信息\\n\"); printf(\"\\t||\\n\"); printf(\"\\t||\\t\\t9.整理学生信息\\t\\ta.退出系统\\n\"); printf(\"\\t==============\\n\"); printf(\"\\t\\t\\t\\t\\t\\t请按命令操作\\n\"); printf(\"您输入的命令是:\\t\"); i=getchar(); if(!((i>=\'0\')||(i=\'0\')||(i

case \'0\': { chagesbject(); break; } case \'1\': {

} system(\"cls\"); printf(\"姓名\\t学号\\t %s\\t %s\\t %s\\t%s\\t平均分 \\n\",\\ sc_name[0],sc_name[1],sc_name[2],sc_name[3]); disload(head); printf(\"\\n\\n\\t\\t按回车键返回...\\n\\n\"); getchar(); break; case \'2\': {

system(\"cls\"); printf(\"\\n请输入要增加学生的个数:\\t\"); scanf(\"%d\",&insert_num); for(temp[2]=0;temp[2]

break; } case \'3\': { do

{ system(\"cls\"); display(head); printf(\"\\t==============================\"); printf(\"\\n\\t请输入删除方式:\\t\"); printf(\"\\n\\t1.以学号方式\"); printf(\"\\n\\t2.以姓名方式\"); printf(\"\\n\\t3.退出\"); printf(\"\\n\\t==============================\"); printf(\"\\n\"); printf(\"您的选择是: \\t\"); temp[3]=getchar(); if(!((temp[3]==\'1\')||(temp[3]==\'2\')||(temp[3]==\'3\'))) { printf(\"\\n您的输入格式不正确,请重新输入!\\n按回车键继续...\"); getchar(); } }while(!((temp[3]==\'1\')||(temp[3]==\'2\')||(temp[3]==\'3\'))); if(temp[3]==\'1\') {

} else {

memset(str3,\'\\0\',sizeof(str3)); printf(\"\\n请输入您要删除的学生姓名:\\t\"); scanf(\"%s\",str3); head=delname(head,str3); system(\"cls\"); display(head); save(head); getchar(); memset(str3,\'\\0\',sizeof(str3)); printf(\"\\n请输入您要删除的学生学号:\\t\"); scanf(\"%s\",str3); head=delnum(head,str3); system(\"cls\"); display(head); save(head); getchar();

} break; } case \'4\': {

do { system(\"cls\"); display(head); printf(\"==============================\"); printf(\"\\n\\t请输入修改方式:\\t\"); printf(\"\\n\\t1.以学号方式\"); printf(\"\\n\\t2.以姓名方式\"); printf(\"\\n\\t3.退出\"); printf(\"\\n==============================\"); printf(\"\\n\\n\\n\\n\\n\"); printf(\"您的选择是: \\t\"); temp[4]=getchar(); if(!((temp[4]==\'1\')||(temp[4]==\'2\')||(temp[4]==\'3\'))) { printf(\"\\n您的输入格式不正确,请重新输入!\\n按回车键继续...\"); getchar(); } }while(!((temp[4]==\'1\')||(temp[4]==\'2\')||(temp[4]==\'3\'))); if(temp[4]==\'1\') {

} memset(str3,\'\\0\',sizeof(str3)); printf(\"\\n请输入您要修改的学生学号:\\t\"); scanf(\"%s\",str3); changsc_num(head,str3); save(head); else if(temp[4]==\'2\') {

memset(str3,\'\\0\',sizeof(str3)); printf(\"\\n请输入您要修改的学生姓名:\\t\"); scanf(\"%s\",str3); changsc_name(head,str3); save(head); } break; } case \'5\': {

} {

do { system(\"cls\"); printf(\"\\t==============================\"); printf(\"\\n\\t\\t请输入查找方式:\\t\"); printf(\"\\n\\t\\t1.以学号方式\"); printf(\"\\n\\t\\t2.以姓名方式\"); printf(\"\\n\\t\\t3.退出\"); printf(\"\\t\\n==============================\"); printf(\"\\n\"); printf(\"您的选择是: \\t\"); temp[5]=getchar(); if(!((temp[5]==\'1\')||(temp[5]==\'2\')||(temp[5]==\'3\'))) { printf(\"\\n您的输入格式不正确,请重新输入!\\n按回车键继续...\"); getchar(); } }while(!((temp[5]==\'1\')||(temp[5]==\'2\')||(temp[5]==\'3\'))); if(temp[5]==\'1\') {

memset(str3,\'\\0\',sizeof(str3)); printf(\"\\n请输入您要查找的学生学号:\\t\"); scanf(\"%s\",str3); checknum(head,str3); getchar(); } else if(temp[5]==\'2\') { memset(str3,\'\\0\',sizeof(str3)); printf(\"\\n请输入您要查找的学生姓名:\\t\"); scanf(\"%s\",str3);

checkname(head,str3);

getchar(); } break; case \'6\': do { system(\"cls\"); printf(\"\\t==============================\"); printf(\"\\n\\t请输入信息管理操作:\\n\"); printf(\"\\n\\t1.发布公告\\n\");

} printf(\"\\n\\t2.删除信息\\n\"); printf(\"\\n\\t3.查看信息\\n\"); printf(\"\\n\\t4.退出\"); printf(\"\\n\\t==============================\"); printf(\"\\n\"); printf(\"您的选择是: \\t\"); temp[6]=getchar(); if(!((temp[6]>\'0\')&&(temp[6]

printf(\"\\n您的输入格式不正确,请重新输入!\\n按回车键继续...\"); getchar(); } }while(!((temp[6]>\'0\')&&(temp[6]

case \'1\': {

sentmsg(); break; } case \'2\': {

}

while(delemsg()); break; case \'3\': {

}

while(readmsg()); break; case \'4\': { }

break; //disload(); break; } break; case \'7\': {

system(\"cls\"); dislogintime(); getchar();

getchar(); break; } case \'8\': {

} case \'9\': {

do { system(\"cls\"); printf(\"\\t==============================\"); printf(\"\\n\\t请输入信息管理操作:\\n\"); printf(\"\\n\\t1.学号排序\\n\"); printf(\"\\n\\t2.平均分信息\\n\"); printf(\"\\n\\t3.退出\"); printf(\"\\n\\t==============================\"); printf(\"\\n\"); printf(\"您的选择是: \\t\"); temp[9]=getchar(); if(!((temp[9]>\'0\')&&(temp[9]

//先退出系统,然后进入用户登录界面

} }while(!((temp[9]>\'0\')&&(temp[9]

case \'1\': {

head=sortnum(head); save(head); disload(head); getchar(); break; } case \'2\': {

}

}

}

head=sortscore(head); save(head); disload(head); getchar(); break; break; case \'a\': {

} quet=1; loginout=0; do {

system(\"cls\"); printf(\"\\n\\n\\t您将退出教务管理系统...\\n\"); printf(\"\\n\\n\\tY:确认退出\\t\\tN:返回\\n\"); printf(\"\\n\\n\\n\"); printf(\"您的选择是:\\t\"); i=getchar(); if(!((i==\'y\')||(i==\'Y\')||(i==\'n\')||(i==\'N\'))) {

printf(\"\\n您的输入有误!请按回车键继续...\"); getchar(); menue[7]=1; } else menue[7]=0; } while(menue[7]); if((i==\'N\')||(i==\'n\')) quet=0; break; } } if(quet==1) {

} }while(loginout); }

/* ====================== 学生用户登录

====================== */ char stulogin(void)/*进入普通用户登录界面*/ {

char temp[6];//定义数据项的变量 int tem[6]; char going[6]; FILE *fp; maage *msg;//定义信息载体 char key,i,logout=0; while(!logout) { do { system(\"cls\"); printf(\"

%s学生登录\\n\",userlogin); printf(\"\\t=============================================\\n\"); printf(\"\\t\\t欢迎进入学生信息中心\\n\"); printf(\"\\n\"); printf(\"\\t\\t1.查看学生信息\\n\"); printf(\"\\n\"); printf(\"\\t\\t2.给管理员留言\\n\"); printf(\"\\n\"); printf(\"\\t\\t3.查看广播\\n\"); printf(\"\\n\"); printf(\"\\t\\t4.发送广播\\n\"); printf(\"\\n\"); printf(\"\\t\\t5.查看公告\\n\"); printf(\"\\n\"); printf(\"\\t\\t6.注销用户\\n\"); printf(\"\\t=============================================\\n\"); printf(\"

请按数字进行菜单选择\\n\"); printf(\"\\n您的选择是:\\t\"); key=getchar(); if(!((key>\'0\')&&(key

} printf(\"\\n您的输入有误,请重新输入!\"); printf(\"\\n\\n请按回车键继续...\"); getchar();

//如果不是选择退出

}while(!((key>\'0\')&&(key

} case \'2\': {

system(\"cls\"); msg=(maage*)malloc(sizeof(maage));

memset(msg->username,\'\\0\',sizeof(msg->username));//清除数组内容 strcpy(msg->username,\"学生\"); strcpy(msg->username,userlogin);

//加载用户名 printf(\"\\n您最大能留言的字数不超过ma_max个英文字符\"); printf(\"\\n\\n\\t请输入您要留言的信息,按回车键结束:\\t\"); scanf(\"%s\",msg->ma); fp=fopen(manager,\"a+\"); fwrite(msg,sizeof(maage),1,fp); fclose(fp);

printf(\"\\n留言成功!按回车键继续...\"); getchar(); getchar(); free(msg);

//结束操作 disnewst(); getchar(); getchar(); break;

//显示学生信息

break; } case \'3\': {

system(\"cls\"); msg=(maage*)malloc(sizeof(maage)); fp=fopen(share,\"r\"); memset(msg,\'\\0\',sizeof(maage));//清除信息内容 going[5]=1; rewind(fp); while((fread(msg,sizeof(maage),1,fp)!=0)) { printf(\"%s用户:\\t\",msg->username); printf(\"%s:\\n\\n\",msg->ma);

//结束操作 } fclose(fp);

printf(\"\\n退出成功!按回车键继续...\");

} getchar(); getchar(); free(msg); break; case \'4\': {

} system(\"cls\"); msg=(maage*)malloc(sizeof(maage));

memset(msg->username,\'\\0\',sizeof(msg->username));//清除数组内容 strcpy(msg->username,\"学生\"); strcpy(msg->username,userlogin);

//加载用户名

system(\"cls\"); printf(\"\\n\\t您最大能留言的字数不能超过200个英文字符\"); printf(\"\\n\\n请输入您要留言的信息,按回车键结束:\\t\"); scanf(\"%s\",msg->ma); fp=fopen(share,\"a+\"); fwrite(msg,sizeof(maage),1,fp); fclose(fp);

//结束操作

printf(\"\\n信息发送成功!按回车键继续...\"); getchar(); getchar(); free(msg); break; case \'5\': {

system(\"cls\"); msg=(maage*)malloc(sizeof(maage)); fp=fopen(outmsg,\"r\"); memset(msg,\'\\0\',sizeof(maage));//清除信息内容 going[5]=1; rewind(fp); while((fread(msg,sizeof(maage),1,fp)!=0)) { printf(\"%s用户:\\t\",msg->username); printf(\"%s:\\n\\n\",msg->ma);

//结束操作 } fclose(fp); printf(\"\\n退出成功!按回车键继续...\"); getchar(); getchar(); free(msg); break;

}

} } } case \'6\': { system(\"cls\"); do{

} printf(\"\\n\\t\\t您将退出学生用户中心\\n\"); printf(\"\\n\\t\\tY:确认\\tN:取消\"); printf(\"\\n\\n您的选择是:\\t\"); temp[5]=getchar(); }while(!((temp[5]==\'y\')||(temp[5]==\'Y\')||(temp[5]==\'n\')||(temp[5]==\'N\'))); if(temp[5]==\'y\'||temp[5]==\'Y\') { } return 1; break; /* ====================== 学生用户登录返回0,则说明文件不存在,返回1,则说明找到用户信息,返回2,说明刚注册了该用户信息

====================== */ char stucheck(char *nam,char *stnum)/*查找是否存在该学生信息*/ {

FILE *fp; /*用于打开用户数据库*/ stu *st; /*目的用于寻找学生信息*/ st=(stu*)malloc(sizeof(stu)); fp=fopen(stu_msg,\"r\"); if(fp==NULL) {

} rewind(fp); while((fread(st,sizeof(stu),1,fp))==1) { if((strcmp(st->name,nam)==0)&&(strcmp(st->num,stnum)==0)) /*核实用户名和学号printf(\"\\n\\t\\t没有用户数据!请重新注册用户信息...\"); getchar(); return 0; 是否正确*/

{

memset(userlogin,\'\\0\',sizeof(userlogin));

} strcpy(userlogin,st->name);

/*存在该学生用户,保存用户姓名*/

}

printf(\"\\n\\t\\t用户存在!请按回车键继续...\"); getchar(); fclose(fp);

return 1;

/*关闭学生文件*/

/*操作成功*/ if(strcmp(st->name,nam)==0) {

} printf(\"\\n\\t\\t用户名存在,学号错误!请按回车键继续...\\n\"); getchar(); fclose(fp); return 2; } fclose(fp); printf(\"\\n\\t\\t学生用户不存在\\n\"); getchar(); return 3;

/* ====================== 学生用户登录返回0,则说明文件不存在,返回1,则说明找到用户信息,返回2,说明刚注册了该用户信息

====================== */ char newlogin(char *nam,char *stnum)/*注册学生信息*/ {

char i=0; FILE *fp; stu *st; st=(stu*)malloc(sizeof(stu)); i=stucheck(nam,stnum); switch(i) {

case 0: {

fp=fopen(stu_msg,\"w\"); printf(\"\\n\\t\\t%s信息将被注册...\",nam); getchar(); memset(st->num,\'\\0\',sizeof(st->num)); memset(st->name,\'\\0\',sizeof(st->name));

/*对数据进行清零*/ /*对数据进行清零*/

strcpy(st->name,nam);

strcpy(st->num,stnum);

st->score[0]=0;

st->score[1]=0;

st->score[2]=0;

st->score[3]=0;

st->average=0;

fwrite(st,sizeof(stu),1,fp);

fclose(fp);

return 1;

}

case 1:

{

return 0;

break;

}

case 2:

{

return 0;

break;

}

case 3:

{

memset(userlogin,\'\\0\',sizeof(userlogin));

strcpy(userlogin,st->name);

fp=fopen(stu_msg,\"a\");

printf(\"\\n\\t\\t%s信息将被注册...\");

memset(st->num,\'\\0\',sizeof(st->num));

memset(st->name,\'\\0\',sizeof(st->name));

strcpy(st->name,nam);

strcpy(st->num,stnum);

st->score[0]=0;

st->score[1]=0;

st->score[2]=0;

st->score[3]=0;

st->average=0;

fwrite(st,sizeof(stu),1,fp);

fclose(fp);

return 1;

}

default :return 0; } }

/*保存学生信息*/

/*对数据进行清零*/ /*对数据进行清零*/

/*保存学生信息*/ /* ====================== 显示学生用户信息

====================== */ void disnewst(void)/*获得学生信息*/ {

stu *p; FILE *fp; char temp,full=0; printf(\"姓名\\t学号\\t %s\\t %s\\t %s\\t%s\\t平均分 \\n\",\\ sc_name[0],sc_name[1],sc_name[2],sc_name[3]);

fp=fopen(stu_msg,\"r\"); p=(stu*)malloc(sizeof(stu)); do {

if(fread(p,sizeof(stu),1,fp)==1) { if(strcmp(userlogin,p->name)==0)

{ full=1;

/*已找到用户信息*/ /*退出循环*/

} else { temp=0;

full =0; temp =1; } } else { temp=0; } }while(temp); if(full==1) { printf(\"%s\\t%s\\t %d\\t %d\\t%d\\t%d\\t%d\\n\",\\

p->name,p->num,p->score[0],p->score[1],p->score[2],p->score[3],p->average); } getchar(); else { printf(\"\\n\\n\\t\\t找不到学生用户信息!按回车键继续...\");

} /* getchar(); getchar(); } fclose(fp);

/*关闭文件信息*/ ====================== 发送公告

====================== */ void sentmsg(void)/*发送公告*/ {

} /* ====================== 浏览公告

====================== */ char readmsg(void)/*浏览信息*/ { FILE *fp; maage *msg; FILE *fp; maage *msg; int i=0; fp=fopen(outmsg,\"a+\"); if(fp==NULL) { } fp=fopen(outmsg,\"w+\"); msg=(maage*)malloc(sizeof(maage)); system(\"cls\"); printf(\"\\n\\n请输入您要公布的信息,按回车键结束:\\t\"); memset(msg,\'\\0\',sizeof(maage));//清除 scanf(\"%s\",msg->ma); strcpy(msg->username,\"管理员\"); strcpy(msg->username,userlogin); fwrite(msg,sizeof(maage),1,fp); printf(\"\\n\\n公告发布成功!\"); getchar(); getchar(); free(msg); fclose(fp);

int i=0; char key=0; char chose,temp=1; do{ system(\"cls\"); printf(\"======================================\\n\"); printf(\"请输入您要浏览的信息:\"); printf(\" \\n\"); printf(\"1.管理员邮箱\\n\"); printf(\"\\n\"); printf(\"2.学生共享信息\\n\"); printf(\"\\n\"); printf(\"3.公告邮箱信息\\n\"); printf(\"\\n\"); printf(\"4.退出\"); printf(\"\\n======================================\\n\"); printf(\"\\t\\t\\t\\t请按照提示选择\\n\\n\"); printf(\"\\n\\n您的选择是:\\t\"); key=getchar(); if(!((key>\'0\')&&(key\'0\')&&(key

case \'1\': { fp=fopen(manager,\"r\");

msg=(maage*)malloc(sizeof(maage)); memset(msg,\'\\0\',sizeof(maage)); rewind(fp); while((fread(msg,sizeof(maage),1,fp)==1)) {

} printf(\"%s用户:\\t\",msg->username); printf(\"%s\\n\",msg->ma); memset(msg,\'\\0\',sizeof(maage)); getchar(); getchar(); free(msg); fclose(fp); return 1;

break; } case \'2\': { msg=(maage*)malloc(sizeof(maage));

} fp=fopen(share,\"r\"); memset(msg,\'\\0\',sizeof(maage));//清除信息内容 rewind(fp); while((fread(msg,sizeof(maage),1,fp))!=0) { printf(\"%s用户:\\t\",msg->username); printf(\"%s:\\n\\n\",msg->ma);

} fclose(fp); printf(\"\\n\\n信息读取完毕!按回车键继续...\");//结束操作 getchar(); getchar(); free(msg); return 1; break; case \'3\': { fp=fopen(outmsg,\"r\"); msg=(maage*)malloc(sizeof(maage));

memset(msg,\'\\0\',sizeof(maage)); rewind(fp); while((fread(msg,sizeof(maage),1,fp)==1)&&temp) { printf(\"%s用户:\\t\",msg->username); printf(\"%s\\n\",msg->ma); memset(msg,\'\\0\',sizeof(maage)); } getchar(); getchar(); free(msg); fclose(fp); return 1; break; } case \'4\': { return 0; break;

}

/* } } ====================== 浏览公告

====================== */ char delemsg(void)//删除信息 {

FILE *fp; maage *msg; int i=0; char key=0; char chose,temp=1; do{ system(\"cls\"); printf(\"======================================\\n\"); printf(\"请输入您要删除的信息:\"); printf(\" \\n\"); printf(\"1.管理员邮箱\\n\"); printf(\"\\n\"); printf(\"2.学生共享信息\\n\"); printf(\"\\n\"); printf(\"3.公告信息\\n\"); printf(\"\\n\"); printf(\"4.退出\"); printf(\"\\n======================================\\n\"); printf(\"\\t\\t\\t\\t请按照提示选择\\n\\n\"); printf(\"\\n\\n您的选择是:\\t\"); key=getchar(); if(!((key>\'0\')&&(key

printf(\"\\n您的输入有误,请按回车键继续...\\n\"); getchar(); } }while(!((key>\'0\')&&(key

《贵州大学教务管理系统.doc》
贵州大学教务管理系统
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

相关推荐

实施方案自查报告整改措施先进事迹材料应急预案工作计划调研报告调查报告工作汇报其他范文
下载全文