网上教务管理系统毕业设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网上教务管理系统毕业设计
目录
1 绪论 (4)
1.1 课题的研究背景与意义 (4)
1.1.1 课题的研究背景 (4)
1.1.2 课题的研究意义 (4)
1.2 系统的定义及容简介 (4)
1.2.1 系统的定义 (5)
1.2.2 系统的容简介 (5)
2 系统中主要用到的技术 (3)
2.1 MySQL数据库 (3)
2.2 Flex (3)
2.3 Java (4)
3教务管理系统的设计与实现 (6)
3.1 开发和运行环境选择 (6)
3.2 系统设计 (6)
3.2.1 系统功能分析 (6)
3.2.2 系统功能模块设计 (7)
3.3 数据库设计 (7)
3.3.1 数据库概念结构设计 (7)
3.3.2 数据库逻辑结构设计 (8)
4 模块详细设计 (11)
4.1 主页面 (11)
4.2 用户登录页面 (13)
4.3 学生功能模块设计 (17)
4.3.1 个人信息查询页面 (17)
4.3.2 个人信息修改页面 (241)
4.3.3 在线选课页面 (22)
4.3.4 密码修改页面 (27)
4.3.5 历史留言查询页面 (27)
4.3.6 留言板页面 (28)
4.4 教师功能模块设计 (29)
4.4.1 教学实施计划查询页面 (29)
4.4.2 选课信息查询页面 (30)
4.4.3 个人信息查询修改页面 (30)
4.4.4 密码修改页面 (30)
4.5 管理员功能模块设计 (31)
4.5.1 教师信息修改、删除页面 (31)
4.5.2 管理员信息修改、删除页面 (32)
4.5.3 课程信息添加、修改、删除页面 (32)
4.5.4 学生学籍查询、修改、删除页面 (34)
4.5.5 留言查看、删除页面 (35)
5 用户手册 (36)
5.1 系统功能简介 (36)
5.2 系统运行与操作指南 (36)
6 总结与展望 (37)
6.1 系统总结及不足之处 (37)
6.2 设计心得 (37)
致谢 (39)
参考文献 (40)
附录1 外文参考文献(译文) (41)
附录2 外文参考文献(原文) (44)
1 绪论
1.1 课题的研究背景与意义
1.1.1 课题的研究背景
目前我国各行各业的信息化建设开展得如火如荼,这种信息化的发展已经影响到了各学校。
学校在对学生进行管理时,学生学籍的管理一直都是很麻烦的事情,不仅仅管理起来不易修改和更新,而且学生需要了解本人的信息时,也需要去学校教务处找专门人员。
由于这些操作的繁琐性,教务管理系统的开发成为各学校必须的事情,特别是各个高校。
一个成功的教务管理系统,应该能够有效地辅助教务人员工作,提高学校学生的学籍、成绩等管理能力,并且不断完善系统,以便更好的帮助学生、教师、系统管理人员等管理成绩、课程、学籍等。
然而目前许多教务管理系统在使用时,效率低下容易出错,学生、教师资料不易整理,大量丢失,这些无疑都已成为管理学生学籍、教师信息的障碍。
这就要求学校能够建立高效的教务管理系统,对学生的选课、查询等操作及流程进行规化管理,简化业务流程,提高工作效率并防止中间的漏洞;迅速、准确地捕捉用户要求,并加以高效回应。
同时需要不断完善系统,增加模块,更好的满足用户需求,简化教务人员的管理工作,尽量做到一切信息化。
1.1.2 课题的研究意义
对于学校教务处而言,最主要的是管理学生的学籍、管理教师的课程教授。
如果使用一般的方法来管理,会比较繁琐,管理起来也很有可能出错。
为了方便教务人员的管理工作,提高工作效率,同时为了更好地为学生、教师提供服务,有必要开发教务管理系统,使学校的教务管理走上信息化之路,克服人为的种种弊端。
教务管理系统的开发不仅可以减少人力、物力和财力资源的浪费,更重要的是有助于提高教务管理的效率。
教务管理人员管理学生学籍、管理教师课程教授时是一项复杂的组织工作,这种复杂性不仅仅指学生学籍变更快,变更人数众多,更突出地表现在教务管理主要对象(即学生)的数据量大,管理起来带来不便,所以开发一个实用、高效的教务管理信息系统是很有必要的。
1.2 系统的定义及容简介
1.2.1 系统的定义
本系统是方便学校教务人员管理学生学籍、管理教师、方便教师和学生处理日常学籍工作而开发的。
现今全国各学校的管理系统正逐步与网络信息技术接轨,对学校的学员信息能够更方便地进行管理,运用教务管理系统实现管理模式的科学化、现代化,大大提高学校教务管理的运行效率和管理水平。
因此,在科技、信息和网络技术高速发展的带动下,教务管理系统趋向于集计算机网络技术、科学管理方法等于一体,方便处理教务工作。
由于学校教务管理的特殊性,决定了教务服务的综合性较其他服务更为突出和特殊,而学校教务对用于辅助管理的管理系统要求就相对更高。
对于学校教务而言,具有实用意义的管理系统,在硬件上应采用互联网、办公自动化等信息技术,在软件上应融入当代各学校最优秀的管理思想,从而更好地辅助教务人员的管理工作。
本课题就基于教务管理的理念和信息技术的结合这样一个出发点而提出的需要。
我国的各学校教师、学生人数众多,学校需要一个足够完善的教务管理系统来管理学生的学籍、选课和教师的授课安排等,所以本系统提供了对学生的学籍管理、对学生的选课、对教师的信息管理等功能,足够教务人员管理日常的教务工作。
1.2.2 系统的容简介
教务管理系统为教务管理人员管理日常教务工作提供了方便。
学生可以使用此系统查询自己已修完课程的成绩、查看自己的学籍信息、选课等;教师可以使用此系统给学生所选的课程打分、查看自己的信息及课程安排情况等;管理员可以使用此系统添加相关用户信息、备份数据等。
因此本系统主要实现学生功能、教师功能、管理员功能。
学生功能:个人信息查询、修改;在线选课;密码修改;留言、查看留言等。
教师功能:教学实施计划查询;选课信息查询、打分;个人信息查询、修改;密码修改等。
管理员功能:教师信息修改、删除;管理员信息修改、删除(有权限之分);课程信息添加、修改、删除;学生学籍信息查询、修改、删除(有权限之分);留言查看、删除(有权限之分)等。
2 系统中主要用到的技术
2.1 MySQL数据库
MySQL是一个遵循GPL的开源软件、在Linux平台底下它是LAMP(LAMP代表了Linux 平台上的Apache服务器;MySQL数据库以及Perl、Python或者PHP编程语言的结合)组合重要组成部分,同时它提供的C API可以结合Glade/GTK+,代替Windows平台的VB+ACCESS/MS SQL SERVER组合。
MySQL数据库具有以下特性:
➢使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
➢支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
➢为多种编程语言提供了API。
这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
➢支持多线程,充分利用CPU资源。
➢采用优化的SQL查询算法可以有效地提高查询速度。
➢既能够作为一个单独的应用程序应用在客户端/服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、
BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
➢提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
➢提供用于管理、检查、优化数据库操作的管理工具。
➢可以处理拥有上千万条记录的大型数据库。
2.2 Flex
Adobe Flex是支持RIA(Rich Internet Applications)开发和部署一系列发展中的技术和产品线的概括词,主要包括the Flex Framework,Flex Builder 2,Flex Enterprise Services 2等。
FLEX试图通过提供一个程序员们已经熟知的工作流和编程模型,让程序员比从前更快更简单地开发动画及RIA应用。
在多层式开发模型中,FLEX 应用属于表现层,FLEX的语言和文件结构也试图把应用程序的逻辑从设计中分离出来。
Adobe Flex所包含的产品和相关软件如下所述:
➢Flex Framework包括MXML,类库,组件,容器和效果(effects)等,它不需
另外的服务器或IDE就可以生成和美化FLEX应用程序。
➢Flex Builder 2是在Eclipse基础上创建的全新RIA IDE,是生成FLEX应用的最简单最强大的方式,实现了集成编译器、代码缩进、调试、设计视图、源代
码控制系统集成等许多功能。
它可以当作标准的独立应用软件,也可以当作
Eclipse的插件使用。
➢Flex Enterprise Services 2是Flex 1.5 server的下一代,拥有众多新功能,比如自动测试,企业通信支持(提供一种发布/订阅的通信架构),数据服务(使
本地处理的数据和服务器端同步)等。
➢Flex Charting 2提供平滑的数据可视能力,可看作是Flex Framework的扩展。
➢Flex编译器,被包含于Flex Builder 2和Flex Enterprise Services,但可以在命令行方式下单独使用。
➢ActionScript 3是Flex Framework的核心,更加面向对象化和类型化,全面兼容ECMA Script标准(Java Script 2.0的基础标准)。
➢Flash Player,从8.5版本就开始加入AS3虚拟机,作为FLEX 2应用的运行时。
FLEX最初是作为一个J2EE(Java 2 Platform,Enterprise Edition)应用,或者可以说是JSP(Java Server Pages)标签库而发布的。
它可以把运行中的MXML(FLEX 标记语言)和 ActionScript编译成FLASH应用程序(即二进制的SWF文件)。
相对于基于HTML的应用(如PHP,ASP,JSP等)在每个请求时都需要执行服务器端的模板,由于客户端只需要载入一次,FLEX应用程序的工作流被大大改善。
新版的Flex Builder 2基于Eclipse IDE,对于需要诸如data push和自动测试等高级功能的用户来说,企业级的服务仍然有效。
Flex2引入了新版本的语言ActionScript 3的使用,这需要 Flash Player 9 以上版本作为运行时(runtime)。
2.3 Java
Java是由Sun公司于1995年5月推出的程序设计语言(以下简称Java语言)和Java平台的总称。
用Java实现的Hot Java浏览器显示了Java的魅力,可实现跨平台、动态的Web、Internet计算。
从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java Applet;另一方面,Java技术也不断更新。
Java语言是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。
而Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface,简称API)构成。
Java 应用编程接口为Java 应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。
现在Java平台已经嵌入了几乎所有的操作系统。
这样Java程序可以只编译一次,就可以在各种系统中运行。
3 教务管理系统的设计与实现
3.1 开发和运行环境选择
教务管理系统主要用于学校部资源管理(如学生在线选课、成绩查看、学籍查看等),充分利用现代高度信息化手段来接受学生信息的咨询和反馈,形成目前学校部受欢迎的教务产品,同时也方便了教务管理人员的管理工作,也方便了学生对自己个人信息的实时了解。
1、开发工具的选择
用Tomcat作Web服务器,利用My Eclipse设计代码,使用MySQL建立数据库。
2、运行环境要求
●中央处理器:Inter Pentium 4 2.67GHz或更高性能的CPU(推荐使用P4 3.0GHz
以上)。
●操作系统:Microsoft Windows XP /Vista,或Windows2003(或更高)。
●物理存:512MB(推荐使用1G以上)。
●硬盘空间:至少需要2G硬盘空间。
●光驱。
●VGA监视器。
●鼠标或其他定位装置。
●网络支持:任何与Windows 98/NT/2000/Me兼容的网络。
3.2系统设计
3.2.1 系统功能分析
教务管理系统主要具有以下功能要求:
➢学生功能:个人信息查询、修改;在线选课,密码修改;留言、查看留言等。
➢教师功能:教学实施计划查询;选课信息查询、打分;个人信息查询、修改;
密码修改等。
➢管理员功能:教师信息修改、删除;管理员信息修改、删除(有权限之分);课程信息添加、修改、删除;学生学籍查询、修改、删除(有权限之分);留言查
看、删除(有权限之分)等。
3.2.2 系统功能模块设计
根据系统功能要求分析,可以将系统分解成以下几个功能模块来设计,如图3.1所示。
图3.1 系统功能模块图
3.3 数据库设计
数据库是信息管理系统的基础,数据库的结构直接关系到各种功能的实现和程序运行的效率。
3.3.1 数据库概念结构设计
数据库概要结构设计图如图3.2所示。
图3.2 数据库结构设计图
3.3.2 数据库逻辑结构设计
根据数据库结构设计图,可知在数据库中需建立8表。
本系统创建的数据库为education,该数据库由学生信息表单(stuinfo)、教师信息表单(teachinfo)、管理员表单(manainfo)、教学实施计划表单(teachingplan)、教学班表单(teachclassinfo)、留言板表单(leavewordinfo)、课程信息表单(courseinfo)、选课信息表单(selectcourseinfo)组成,在设计中所用到的关系表及其结构分别如下所示。
1、学生信息表单(stuinfo),如表3.1所示。
表3.1 学生信息表单
列值数据类型数据长度可否为空描述主键stu_id varchar 30 否学号
name varchar 10 否
password varchar 30 否密码
sex varchar 2 否性别
表3.2 教师信息表单
表3.3 管理员表单
表3.4 教学实施计划表单
5、教学班表单(teachclassinfo),如表3.5所示。
表3.5 教学班表单
表3.6 留言板表单
表3.7 课程信息表单
表3.8 选课信息表单
4 模块详细设计
4.1 主页面
此教务管理系统的用户有三种身份,即学生、教师和系统管理员,如果是系统管理员,登录后进入的主页面如图4.1所示:
图4.1 系统管理员主页面
此界面中包含五个功能模块,即管理教师、管理员管理、课程信息管理、学生学籍管理、留言维护。
系统管理员在此页面中可对教师、管理员及学生等信息进行浏览、修改、删除、添加等操作。
如果是登录用户是学生,登录后进入的主页面如图4.2所示。
图4.2 学生主页面
此页面包含六个功能模块,即选课、个人信息查询、个人信息修改、密码修改、历史留言查询、留言,学生可以在此页面中对其个人信息分别进行浏览、修改等操作。
如果是登录用户是教师,登录后进入的主页面如图4.3所示:
图4.3 教师管理主页面
此页面包含五个功能模块,即教学实施计划查询、选课信息查询和打分、个人信息查询、个人信息修改、密码修改,教师可在此页面中对相关信息进行浏览、修改等操作。
4.2 用户登录页面
此页面的主要功能是对使用本系统的用户进行用户名、密码、用户身份的验证,只有合法的用户才能使用本系统。
对于初次使用本系统的用户,首先必须是在此学校有学籍,而且教务人员已经将学生、教师、管理员信息写入数据库之后才能访问登录用户界面,此系统不支持陌生人注册。
在登录界面中设置了身份列表下拉框,方便用户进行身份选择、登录。
用户填写的所有信息通过Flex与Java的远程调用,通过send()方法将获取的text文本提交到Java端,并与数据库中的相应信息进行比较做出判断。
登录界面如图4.4所示。
图4.4 用户登录界面
用户登录界面的主要实现代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx=".adobe./2006/mxml" layout="absolute"
width="949" height="565" verticalAlign="bottom" horizontalAlign="right"
xmlns:ns1=".education.views.*">
<mx:Metadata>
[Event(name="loginevent",type=".education.events.LoginEvent")]
[Event(name="studentloginevent",type=".education.events.StudentLo ginEvent")]
[Event(name="teacherloginevent",type=".education.events.TeacherLo ginEvent")]
</mx:Metadata>
<mx:Script>
<![CDATA[
import mx.automation.codec.KeyCodePropertyCodec;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import mx.validators.Validator;
import .education.vo.*;
import .education.events.*;
[Bindable]
public var arr:Array = new Array("学生", "教师", "管理员");
private function userlogin():void
{
//全部验证后flag值为0,只要有一个没验证,flag值会大于0
var flag:int=Validator.validateAll(validators).length;
if(flag==0)
{ loginLO.login.send(); }
}
private function exit():void
{
var request:URLRequest = new
URLRequest("javascript:window.close()");
navigateToURL(request,"_self");
}
private function processResult(event:ResultEvent):void
{
var flag:String=event.result as String;
if(flag=="管理员")
{
this.parentApplication.vs.selectedIndex=1;
var manager:Manager=new Manager();
manager.mana_id=username.text;
var loginevent:LoginEvent=new LoginEvent(manager);
this.dispatchEvent(loginevent);
}
else if(flag=="学生")
{
this.parentApplication.vs.selectedIndex=6;
var student:Student=new Student();
student.stu_id=username.text;
var studentloginevent:StudentLoginEvent=new
StudentLoginEvent(student);
this.dispatchEvent(studentloginevent);
}
else if(flag=="教师")
{
this.parentApplication.vs.selectedIndex=7;
var teacher:Teacher=new Teacher();
teacher.teach_id=username.text;
var teacherloginevent:TeacherLoginEvent=new
TeacherLoginEvent(teacher);
this.dispatchEvent(teacherloginevent);
}
else
{
Alert.show("登陆失败,请检查输入信息!");
}
}
private function processFault(event:Event):void {
Alert.show(event.toString());
}
]]>
</mx:Script>
<!-- 远程调用方法定义和数据传递 -->
<mx:RemoteObject id="loginLO" destination="loginRO"> <mx:method name="login" result="processResult(event)"
fault="processFault(event)">
<mx:arguments>
<username>
{username.text}
</username>
<password>
{password.text}
</password>
<type>
{types.text}
</type>
</mx:arguments>
</mx:method>
</mx:RemoteObject>
<!-- 登录时,判断用户名和密码框不能为空 -->
<mx:Array id="validators">
<mx:StringValidator source="{username}" property="text" required="true" requiredFieldError="用户名不能为空"/>
<mx:StringValidator source="{password}" property="text"
required="true" requiredFieldError="密码不能为空"/>
</mx:Array>
<mx:Label text="选择用户类型:"/>
<mx:ComboBox dataProvider="{arr}" id="types"/>
<mx:Label text="用户名:"/>
<mx:TextInput id="username" enter="userlogin()"/>
<mx:Label text="密码:" />
<mx:TextInput id="password" enter="userlogin()"
displayAsPassword="true"/>
<mx:Button label="登录" click="userlogin()"/>
<mx:Button label="退出" click="exit()"/>
</mx:Panel>
4.3 学生功能模块设计
学生功能模块主要包括个人信息查询、修改,在线选课,密码修改,留言、查看留言。
学生选课,修满学时之后,由授课教师打分,然后学生再次查询信息时则可查询到分数。
4.3.1 个人信息查询页面
个人信息查询页面如图4.5所示,当前登录的学生可在此页面中查看自己的基本信息。
图4.5 个人信息查询页面
在个人信息查询页面中,通过studetLO.getTheStudent.send()方法来操作数据库,把数据库中的容用datagrid显示出来。
首先,将进行查询、修改、删除、增加等操作需要与数据库连接的代码单独封装为一个类,具体代码如下所示:
package .education;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.rowset.CachedRowSet;
import .sun.rowset.CachedRowSetImpl;
public class DBTools {
String driver = ".mysql.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/education";
String user = "root";
String password = "123456";
Connection con = null;
ResultSet rs = null;
public DBTools() {
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
public ResultSet select(String sql) {
Statement st = null;
CachedRowSet crs = null;
try {
st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
crs = new CachedRowSetImpl();
crs.populate(rs);
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return crs;
}
public int update(String sql) {// 此方法int与boolean类型都可以Statement st = null;
int var = 0;
try {
st = con.createStatement();
int i = st.executeUpdate(sql);
if (i == 1) {
var = 1;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return var;
}
}
其中使用的数据库操作语句为:
public List<Student> getTheStudent(String stu_id) {
List<Student> list = new ArrayList<Student>();
DBTools db = new DBTools();
String sql = "select * from stuinfo where stu_id='" + stu_id + "'";
ResultSet rs = db.select(sql);
Student student = null;
try {
while (rs.next()) {
student = new Student();
student.setAcademe(rs.getString("academe"));
student.setAchievement(rs.getString("achievement"));
student.setGrade(rs.getString("grade"));
student.setName(rs.getString("name"));
student.setOvercourse(rs.getString("overcourse"));
student.setPassword(rs.getString("password"));
student.setSex(rs.getString("sex"));
student.setSpeciality(rs.getString("speciality"));
student.setStatus(rs.getString("status"));
student.setStu_id(rs.getString("stu_id"));
list.add(student);} } }
4.3.2 个人信息修改页面
个人信息修改页面如图4.6所示,在该页面中学生可对自己的个人信息进行修改。
图4.6 个人信息修改页面
每个Text文本框中的信息是通过传递stu_id,通过stu_id在数据库中查询出相应的值,然后显示在此页面上,方便用户对比进行修改,修改信息的主要代码如下所示:public boolean modifystudentinfo(String stu_id, String name, String sex, String speciality, String academe, String grade) {
boolean flag = false;
String sql = "update stuinfo set name='" + name + "',sex='" + sex
+ "',speciality='" + speciality + "',academe='" + academe
+ "',grade='" + grade + "' where stu_id='" + stu_id + "'";
if (sex.equals("男") || sex.equals("女")) {
DBTools tool = new DBTools();
int rs = tool.update(sql);
if (rs == 1) {
flag = true; }
}
return flag;
}
<mx:method name="modifystudentinfo" result="processinfoResult(event)"
fault="processFault(event)">
<mx:arguments>
<stu_id>
{stu_id.text}
</stu_id>
<studentname>
{studentname.text}
</studentname>
<sex>
{sex.text}
</sex>
<speciality>
{speciality.text}
</speciality>
<academe>
{academe.text}
</academe>
<grade>
{grade.text}
</grade>
</mx:arguments>
</mx:method>
4.3.3 在线选课页面
学生在线选课页面如图4.7所示,在此页面中学生可根据教务安排的选修课情况对自己感兴趣的课程进行选择,但是课程一经选定不允许退选。
图4.7 在线选课页面
实现该页面的功能代码如下所示:
public List<TeachPlan> SelectCourse() {
List<TeachPlan> list = new ArrayList<TeachPlan>();
DBTools db = new DBTools();
String sql = "select * from teachingplan where course_kind=2";
ResultSet rs = db.select(sql);
TeachPlan teachplan = null;
try {
while (rs.next()) {
teachplan = new TeachPlan();
teachplan.setId(rs.getInt("id"));
teachplan.setCourse_name(rs.getString("course_name"));
teachplan.setCourse_kind(rs.getString("course_kind"));
teachplan.setBegin_term(rs.getString("begin_term"));
teachplan.setBegin_speciality(rs.getString("begin_speciality"));
teachplan.setPeriod(rs.getString("period"));
list.add(teachplan);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
public boolean addcourses(String stu_id, String overcourse) { boolean flag = false;
boolean b = checkcourse(stu_id,overcourse);
DBTools tool = new DBTools();
if (b) {
addcoursetoselect(stu_id,overcourse);
List<Student> list = getTheStudent(stu_id);
String name = list.get(0).getName();
String password = list.get(0).getPassword();
String sex = list.get(0).getSex();
String speciality = list.get(0).getSpeciality();
String academe = list.get(0).getAcademe();
String grade = list.get(0).getGrade();
String status = list.get(0).getStatus();
String sql= "insert into stuinfo values('" + stu_id + "','" + name + "','" + password + "','" + sex + "','" + speciality
+ "','" + academe + "','" + grade + "','" + overcourse
+ "','0','" + status + "')";
int rs = tool.update(sql);
if (rs == 1) {
flag = true;
}
}
return flag;
}
public boolean checkcourse(String stu_id, String overcourse){ boolean flag=false;
String sql = "select overcourse from education.stuinfo where stu_id='" + stu_id+ "'";
DBTools db = new DBTools();
ResultSet rs = db.select(sql);
try {
outer:while(rs.next()){
String str = rs.getString("overcourse");
if(str.equals(overcourse)){
flag = false;
break outer;
}else{flag=true;}
}
} catch (SQLException e) {
e.printStackTrace();
}
return flag;
}
public boolean addcoursetoselect(String stu_id, String course_name){ boolean flag=false;
DBTools db = new DBTools();
String str2=ads(stu_id,course_name);
System.out.println(str2);
String sql= "insert into selectcourseinfo values('"+ course_name + "','" + stu_id+ "','" + str2 + "','0')";
int rs = db.update(sql);
if (rs == 1) {
flag = true;
}
return flag;
}
public String ads(String stu_id, String teachcourse){
String str=null;
String sql1="select teach_id from teachinfo where teachcourse='"+ teachcourse+ "'";
DBTools db=new DBTools();
ResultSet rs = db.select(sql1);
try {
while(rs.next()){
str = rs.getString("teach_id");
}
} catch (SQLException e) {
e.printStackTrace();
}
return str;
}
<mx:method name="addcourses" result="processcoursesResult(event)"
fault="processFault(event)">
<mx:arguments>
<stu_id>
{user_name}
</stu_id>
<courses>
{selectdg.selectedItem.course_name}
</courses>
</mx:arguments>
</mx:method>
4.3.4 密码修改页面
学生密码修改页面如图4.8所示,在此页面中已经登录系统的学生用户可以对自己的登录密码进行修改。
图4.8 密码修改页面
4.3.5 历史留言查询页面
历史留言查询页面如图4.9所示,在此页面中当前登录学生用户可查看其已经发表过的历史留言。
图4.9 历史留言查询页面
该页面的实现代码如下所示:
private function wordOperator(event:MouseEvent):void
{
if(event.target is Button)
{
if(bel=="查看")
{
var look_words:look_word=
look_word(PopUpManager.createPopUp(this,look_word,true));
pointer1.x=0;
pointer1.y=0;
pointer1=check.localToGlobal(pointer1);
look_words.x=pointer1.x+25;
look_words.y=pointer1.y+25;
var word:Word=new Word();
word.leave_id=worddg.selectedItem.leave_id;
word.leave_date=worddg.selectedItem.leave_date;
word.leave_name=worddg.selectedItem.leave_name;
word.leave_content=worddg.selectedItem.leave_content;
var look_wordevent:Look_WordEvent=new Look_WordEvent(word);
this.dispatchEvent(look_wordevent);
} } }
4.3.6 留言板页面
留言板页面如图4.10所示,已登录用户可通过此页面在管理系统系统中发表留言。
图4.10 留言页面
学生进入此页面后,可以对教学或者系统完善性提出意见或者指出错误。
管理员通过登录,可以查看到学生的留言,针对学生的意见可以对系统进行维护。
4.4 教师功能模块设计
教师功能模块主要包括教学实施计划查询,选课信息查询、打分,个人信息查询、修改,密码修改。
4.4.1 教学实施计划查询页面
教学实施计划查询页面如图4.11所示,教师进入此页面后,可以查看到各课程的教学安排情况。
教师通过按要求查询,可以查询到与自己教学有关的相关教学信息。
图4.11 教学实施计划查询页面
4.4.2 选课信息查询页面
选课信息查询页面如图4.12所示。
教师进入此页面之后,可以查看到已经选修了自己所授课程的学生,点击“打分”按钮,可以对选了此课程的学生的成绩进行修改或者打分。
图4.12 选课信息页面
4.4.3 个人信息查询修改页面
个人信息修改查询页面如图4.13所示,教师进入此页面后,可以查看到自己的基本信息(包括教师工号、、职称等)。
还可以对其中一些信息进行修改。
图4.13 个人信息查询修改页面
4.4.4 密码修改页面
密码修改页面如图4.14所示,教师进入此页面后,可以输入新密码,更改登录时使用的密码。
图4.14 密码修改页面
4.5 管理员功能模块设计
管理员功能模块包括教师信息修改、删除,管理员信息修改、删除(有权限之分),课程信息添加、修改、删除,学生学籍查询、修改、删除(有权限之分),留言查看、删除(有权限之分)。
4.5.1 教师信息修改、删除页面
教师信息修改、删除页面如图4.15所示:
图4.15 教师信息修改、删除页面
进入此页面后,管理员可以查看或者修改现有教师的基本信息。
当点击“删除”时,如果此管理员权限为1,则不能进行删除,显示权限不够,如图4.16所示。
图4.16 删除时权限不够页面
4.5.2 管理员信息修改、删除页面
管理员信息修改、删除页面如图4.17所示,管理员可在此页面中查看或者修改现有系统管理员的基本信息。
当点击“删除”时,如果此管理员权限为1,则不能进行删除,显示权限不够。
图4.17 管理员信息修改、删除页面
4.5.3 课程信息添加、修改、删除页面
课程信息添加、修改、删除页面如图4.18所示,系统管理员可在此页面中添加新的课程信息,或者修改和删除已存在的课程信息。
图4.18 课程信息添加、修改、删除页面
基本实现代码如下所示:
<mx:method name="selectcourse" result="processResult(event)"
fault="processFault(event)">
<mx:arguments>
<check>。