《毕业设计论文教务管理系统.doc》由会员分享,可在线阅读,更多相关《毕业设计论文教务管理系统.doc(41页珍藏版)》请在三一办公上搜索。
1、吉林农业工程职业技术学院毕业设计(论文)摘 要在日新月异的今天社会经济发展高速增长,计算机已经成为人们不可分割的一部分。为了加强计算机的智能化,人们开发了各种管理系统来解决现实生活的尖端问题。教务管理系统就是管理系统很重要的一部分。教务管理系统的需要是面向所有的教职工和学生,用户数量大,地点分布广。在这里我们使用的是C/S模式系统。 关键词:powerbuilder程序设计 Access数据库 教务管理系统。目 录第一章 前言1第二章 系统流程及库文件32.1 数据库需求分析32.2 数据库设计及过程 -7第三章 程序开发103.1 登录布置-10 3.1.1 登录界面-10 3.1.2 创建
2、系统系统主菜单-133.2 基础信息查询-133.2.1 系部信息查询界面-133.2.2 班级信息查询界面-163.2.3 学生信息查询界面-173.2.4 院校职工信息和课程信息查询界面-193.3 教务管理20 3.3.1 学生选课-20 3.3.2 课表查询-25 3.3.3 成绩输入-263.4 报表统计29 3.4.1 成绩输出-29 3.4.2 打印成绩单-313.5 系统维护31 3.5.1 系部信息维护-31 3.5.2 班级信息维护-34 3.5.3 学生信息维护-34 3.5.4 课程信息维护-34 3.5.5 院校职工维护-34 3.5.6 用户登录维护-34参考文献-
3、38致谢-39第一章 前 言信息管理系统(MIS)是集计算机技术、网络通信技术为一体的信息系统工程,它能够使企业运行的数据更加准确、及时、全面、详实,同时对各种信息进一步的加工,使企业领导层对生产、经营的决策依据更充分,更具有合理性科学性,并创造出更多的发展机会;另外也进一步加强企业的科学化、合理化、制度化、规范化管理,为企业的管理水平跨上新台阶,为企业持续、健康、稳定的发展打下基础。MIS系统开发过程不仅仅是一个编写应用程序的过程,而是以软件工程的思想为指导,从可行性研究开始,经过系统分析、系统设计、系统实施等主要阶段而进行规范的开发过程。目前国内使用和发展的MIS平台模式大体上分为两种:客
4、户机/服务器(Client/Server,简称C/S)模式和浏览器/服务器(Browser/Server,简称C/S)模式。MIS系统不仅仅使用在企业中,它可以应用的方面很广,各行各业都可以应用:金融、保险、农业、工业等等。只要是有数据采集整理纪录的方面,都可以应用。学校作为一个独立的机构同样也不例外。而且学校的各种情况都比较复杂,各个机构都各自独立,又相互联系,这就需要一个比较复杂的MIS系统。学校的MIS系统一般由以下管理部分组成:学生信息管理,教学管理,教务处管理,财务管理,物资管理,后勤管理等。学校的各个系统又分为不同的管理人员,不同的管理人员所看到的以及所操作管理的部分又不同,这就需
5、要给不同的操作者提供不同的操作管理权限。不同身份的用户所需要的资料也不同,这需要给不同的用户提供不同的操作界面,进行不同的操作。而且不同身份的客户所关心的问题也不同,比如学校的使用者大体分学生、教师、教务处、这就需要在做MIS系统开发之前一定要做好前期的需求分析,中期的系统设计、程序开发,而且也要注意后期的系统维护。开发工具介绍:PowerBuilder提供了对目前流行的大多数关系数据库管理系统的支持,由于在PowerBuilder的应用程序中对数据库访问的部分一般采用国际化标准数据库查询语言SQL,使得用PowerBuilder开发的应用程序可以不做修改或者只做少量的修改就可以在不同的后台数
6、据库管理系统上使用。也就是说用PowerBuilder开发的应用程序是独立于服务器上的数据库管理系统的。和大多数的WINDOWS应用程序一样,PowerBuilder也是事件驱动工作方式。在这种工作方式中,程序的运行没有固定的流程,程序中的代码也是为各种可能发生的事件编写的,当程序开始运行之后,它就可以接受来自系统,用户或者其它应用程序触发的事件,然后执行相应的事件代码。事件驱动的工作方式与面向对象技术是紧密相关的,在PowerBuilder应用程序中,接受发生的事件的往往就是程序界面中的各种可视化对象。PowerBuilder是一种面向对象的开发工具,各种WINDOWS应用程序中常见的窗口、
7、菜单、控件等在PowerBuilder中都是一个个的对象。在PowerBuilder中我们还可以创建自己的用户对象。特别要指出的是PowerBuilder提供了对面向对象方法中的各种技术的全面支持,我们可以利用面向对象方法中的对象的封装性、继承性、多态性等特点使得我们开发的应用程序具有极大的可重用性和可扩展性,而这一点正是软件工程中对应用程序所提出的重要目标。在当前,由于网络技术的发展,许多种不同的操作系统平台在INTERNET网上同时被使用,这对开发的应用程序的跨平台性提出了更高的要求,而PowerBuilder就提供了良好的跨平台性,比如在PowerBuilder中,利用WINDOWS平台
8、开发的各种对象可以方便地应用到UNIX平台中,因为PowerBuilder支持对象的跨平台性。这样使得把应用程序从一个平台移到另一个平台变得并不复杂。为了给用户提供各个方面的支持,PowerBuilder具有自己的编程语言POWERSCRIPT,这个语言除了提供基本的流程控制语句,还提供了几百个函数来操纵各种对象和提供诸如DDE,OLE等方面的支持。此外我们还可以定义自己的函数,处理特定的事件。学习PowerBuilder时相当一部分的时间就是用来了解和熟悉PowerBuilder提供的各种函数。PowerBuilder一个很大的特点就是提出了数据窗口对象的概念。数据窗口对象也是PowerBu
9、ilder中的一种对象类型,与其它对象不同的是数据窗口对象是专门为了访问后台的数据库服务的,在数据窗口对象中我们定义了数据的来源和数据的显示风格,这样在应用程序中我们就可以把精力完全放在程序的运行流程控制上,而不用关心具体数据的来源,因为我们在数据窗口对象中已经定义好了数据的来源。如果需要使用数据库中不同的数据也只要对数据窗口对象进行修改就可以了。特别要指出的是PowerBuilder在数据窗口对象中提供了丰富的数据显示方式,可以满足各种不同的需要。 在PowerBuilder较新的版本中提供了基础类库PFC,它为应用程序的开发提供了许多可重用的预定义类和对象,利用基本类库PFC可以快速开发出
10、高质量重用性好的应用程序。真正发挥面向对象编程的巨大威力。最后要指出的是PowerBuilder有三个不同的版本,分别为DESKTOP型,PROFESSIONAL型,和ENTERPRISE型,DESKTOP型是为个人使用的桌面型应用程序,在这里可以利用PowerBuilder内置的数据库管理系统SYBASE SQL ANYWHERE来创建和使用本地数据库,为个人的应用服务;PROFESSIONAL型的PowerBuilder最重要的一点就是提供了对MICROSOFT ODBC(数据库标准连接接口)的支持,在PROFESSIONAL版本中我们就可以使用PowerBuilder的继承,多态等绝大多
11、数特性;在ENTERPRISE版本中最重要的一点就是提供了对开发大型的数据库应用程序的全面的支持,提供了开发大型应用程序的许多辅助的工具,比如C+ CLASS BUILDER等第二章 系统流程及库文件2.1教务管理系统需求分析:将通用教务管理系统所必备的功能归纳如下图所示,其中每个功能都由若干相关联的子功能模块组成,除此之外,系统还应包括信息系统必须具备的通用功能如:权限设置、数据备份与恢复。教务管理系统基础数据管理教学计划管理课程管理学籍管理教师管理注册收费管理排课选课管理考分管理毕业管理教材管理系统管理2.1.1系统数据流程: 如下图所示:2.1.2 基础数据管理“基础数据管理”用于维护整
12、个教务管理系统正常运行所需的基础数据集,以保证教系统有一个统一的标准的基础数据集,便于数据的共享使用,内容包括入学年份、学年学期、院系数据、专业设计、教室情况等。如下图所示:基础数据管理基本信息专业代码学期代码学年代码科属部门代码班级代码教室代码学历代码职称代码教学计划名称管理教师代码管理其他基础信息管理2.1.3 教学计划管理:“教学计划管理”用于维护学校中各系各专业的课程、课组计划安排信息,作为选课和毕业审查的标准,包括的功能有课程计划登记、课和计划审批、选课情况查询、选课信息审批等。2.1.4 课程管理:“课程管理”用于学校所有开设课程的情况,包括课程编号、课程名称、上课学时、开课系、上
13、课教师等相关信息,功能包括课程的增加、删除、查询、统计等。学籍管理:“学藉管理”主要包括了高校学籍基本信息的录入、查询修改、打印输出、维护等常用功能、并提供学号、编排、学生照片输入与显示、学籍变动(留级、休学、跳级、转班、转学、退学等)、奖惩登记、毕业情况统计等功能。教师管理:“教师管理”用于管理教师相关的信息,提高教学质量,保证教学工作的高效运行,包含的功能模块如下图所示:教师管理教师基本信息教师任课档案教师奖惩 档案教师考评管理教师课时数统计教师进修档案2.1.5注册收费管理:“注册收费”用于记录学生新学期的注册情况,如果未注册将记录学生的未注册原因及未注册的去向。“收费管理”用于记录学生
14、开学初的收费情况,每个学生的收费标准来自学生学籍信息中的收费类别。2.1.6排课选课管理:“排课管理”用于根据教学计划、教师资源等,制订每学期的课程表。2.1.7教务管理:“教务管理”用于根据课程自动生成本学期的考试地点考试时间监考老师等数据,并对考试的过程和结果进行监控,包含的功能模块如下图所示。“教务信息发布”用于发布教务信息,如学年,学期,期中(期未)考试,考试时间等,以及其他一些有关事务的事项。、“考试日程安排”用于管理考试日期,时间,考试科目,考试班级,监考教师/,考场等信息。“评卷安排”用于对评卷专业,评卷科目,评卷教师,评卷教师,评卷日期,时间等评卷信息进行管理。“考场情况记录”
15、用于考场情况进行管理,如考试班级,考试科目,应考人数,实到人数,违纪记录情况等。“成绩录入”用于授课教师输入学生的考试成绩。“补考成绩录入”用于授课教师输入学生的补考考试成绩。“补考通知单”用于教务处依据班级,个人,课程进行不及格统计,并打印出学生的补考通知单。“班级成绩单”用于以班级为单位,打印该班级所开设课程的每个学生的成绩,送教务处存档用。考务管理考务信息发布考试日程安排评卷安排考场情况记录学生成绩录入补考成绩录入补考通知单班级成绩单2.1.8毕业管理:“毕业管理”用于对学生毕业进行处理,同时对毕业信息,学位授予,证书授予及校友信息等进行管理,包含的功能模块如下图所示。“技能管理”用于对
16、学生在校期间获得的资格证书进行存档,有利于提高学生的综合素质。“实习管理”用于记录学生在校期间的实习情况。“论文管理”用于记录学生的毕业论文情况,供日后查询或借鉴。“毕业审核”用于根据学生所在系所,专业的教学计划,选课成绩和学籍来审查来审查该生是否具备毕业资格。“毕业管理”用于记录学生毕业信息,包括毕业证书号,工作去向等。2.1.9教材管理: “教材管理”用于对教材库存,教材计划,教材预订,班级预收款,教材采购及教材销售等工作进行有效管理,包含的功能模块如下图所示。教材管理教材信息设置开课教材设置教材计划库存管理教材采购教师领书说明:说了一下需求分析,由于本人掌握基础有限,另外还有本系统的关系
17、复杂性,并没有全部开发,只开发了其中子部分,望老师包涵。下面把本系统的所有功能作成流程图,让读者明确本系统的所有功能:教务管理系统退出系统维护教务管理报表统计基础信息查询退出系统成绩输出打印成绩单系部信息查询班级信息查询学生信息查询课程信息查询院校职工查询学生选课课表查询成绩输入班级信息系部信息维护维护学生信息维护系统维护课程信息维护院校信息查询用户登录维护2.2教务管理系统数据库分析:建立本系统所使用基础数据的关键表,如下图所示: 用户表(在数据库中为youghu )字段名数据类型是否为空说明YhmcChar(10)Not null用户名称YhmmChar(10)Not null用户密码 班
18、级信息表 (在数据库中为j_bjxxb) 字段名数据类型是否为空说明BjbkChar(14)Not null班级编号(主关键字)NjChar(4)Not Null年级BjmcChar(30)Not null班级名称BjjcChar(16)Not null班级简称RsInt (3,0)Not null人数BjInt(10)null班级学生信息表(在数据库中为j_xsxxb)字段名数据类型是否为空说明XhChar(14)Not null学号(主关键字) XmChar(8)Not null姓名BjbhChar(14)Not null班级编号(外键班级信息表)XbChar(2)Not null性别Nj
19、Int(2)Not null班级ZzmmbhInt(10)Not null政治面貌编号(外键政治面貌表)MzbhInt(10)Not null民族编号(外键民族代码表)JgbhInt(10)Not null籍贯编号(外键籍贯代码表)SfzhInt(18)Not null身份证号XjbhInt(10)Not null学籍编号(外键学籍代码表) 课程信息表(在数据库中为j_kcxxb)字段名数据类型是否为空说明KcbhInt(10)Not null课程编号(主关键字)KcmcChar(40)Not null课程名称KcjcChar(40)Not null课程间称PymInt(10)Not null
20、拼音码BxqkcChar(2)Not null本学期课程JsChar(10)Not null教师KkxbChar(30)Not null开课系别XfInt (100)Not null学分 课程表(在数据库中为j_kcb)字段名数据类型是否为空说明BhInt(10)Not null编号(主关键字)KxhChar(14)Not null课序号KcbhInt(10)Not null课程编号(外键课程信息表)SksjtInt(5)Not null上课时间天sksjjInt(2)Not null上课时间节SkddChar(20)Not null上课地点 选课表(在数据库中为j_xkb)字段名数据类型是否
21、为空说明BhChar(10)Not null编号(主关键字)XhChar(14)Not null学号KxhChar(14)Not null课序号 成绩表(在数据库中为j_cjb)字段名数据类型是否为空说明BhChar(10)Not null编号(主关键字)Xh Char(14)Not null学号(外键学生信息表)KcbhInt(14)Not null 课程编号(课程信息表)CjInt (2)Not null成绩KsjsInt(2)Not null考试次数SfbxInt(2)Not nul是否补修JfbkChar(2)Not null 是否补考 学籍代码表(本数据库叫作j_xjdmb)字段名数
22、据类型是否为空说明XjbhChar(2)Not null学籍编号(主关键字)XjdmChar(8)Not null学籍名称 政治面貌表(在本数据库中为j_zzmmb)字段名数据类型是否为空说明ZzmmbhChar(14)Not null政治面貌编号(主关键字)ZzmmChar(14)Not nul政治面貌 民族代码表(在本数据库中为j_mzdmb)字段名数据类型是否为空说明MzbhChar(2)Not null民族编号(主关键字)MzChar(2)Not null民族 籍贯代码表(在本数据库中为j_jgdmb)字段名数据类型是否为空说明JgbhChar(2)Not null籍贯编号(主关键字)
23、JgChar(30)Not null籍贯新建access数据库步首先建立表本系统需要的表(如图所示):第三章 程序开发3.1 登录窗口布置 3.1.1 登录界面 1点击开始|程序|Sybase|powerbuilder9.0打开系统主窗体,进入PB程序设计界面,点击filenew命令,打开一个选项卡,建立本软件的工作区间:2点击OK按钮,设置 workspace工作区间的名字为:j_jwglxt(教务管理系统的缩写),再点击新建按钮,在target选项卡,选中applicaton按钮,点击OK 并起名为j_jwglxt(与上一个扩展名是不相同的)。3此时已建立了工作区间和application
24、 ,下面建一个窗体并保存名为j_main即为系统的登录界面,登录界面如下图所示。4.在数据库连接时,进入登录界面(五福娃_falsh),有时候需要很长的一段时间,所以在这里安排一个flash窗口,使软件使用者在等待连接数据库的枯燥的时间里制作一个动画窗口,使使用者不在等不急,心情快乐舒畅! (如图为登录界面) ( 如图:建立flash窗口) 用户在登录窗口进入主菜单前的属性值和进入“登录”按钮的clicked!事件代码:J_main窗体的属性设置:控件类型对象名属性说明WindowJ_mianTitle教务管理系统SinglelineSle_1textNullSinglelineSle_2Te
25、xtNullRichboxRb_1Text登录RichboxRb_1text退出在“登录”的clicked事件中加入以下代码: 单击窗中下方 标签,定入实例变量Boolean user_auth,login_name在单击layout标签输入:Open(j_falsh) /打开falsh窗口 / Profile EAS Demo DB V9SQLCA.DBMS = ODBCSQLCA.AutoCommit) = FalseSQLCA.DBParm = ConnectString=DSN=EAS Demo DB V9;UID=dba;PWD=sqlIf sqlca.sqlcode0 then M
26、essagebox(“提示”, “连接数据库失败!请重新连接或检查是否正确!”) ReturnEnd if Connect;String passInt countLogin_time=0Login_time =login_time+1If login_time 3 then Select count(*) into :count from youhu Where yhmc=:sle_1.text;If count=0 then Messagebox(“提示”, “用户名不正确,请重新输入!”) Sle_info.textcolor=red /使文本框变成红色 If login_time3 t
27、hen Messagebox(“提示”, “用户名不正确,请重新输入!”) Sle_1.text=“” Sle_2.text=“” Sle_1.setfocus( )Else Messagebox(“提示”,你无权使用本软件,谢谢!) Close(parent)End if ElseSelect yhmm into:pass from youghu Where yhmc=:sle_1.text;If sle_2.text =pass then Sle_info.textcolor=green User_auth=true Login_name=sle_1.text Open(j_main) C
28、lose(j_falsh)Else Messagebox(“提示”, “密码不正确,请重试!”) Sle_info.textcolor=red If login_time3 then Sle_info.text=“密码不正确,请重新输入!” Close(j_falsh) End if End if End if End if 在“退出”按钮的clicked事件中加入代码: Close(parent)3.1.2创建系统主菜单: 选择file|new菜单命令,的弹出的对话框中,选中PB object选项卡,然后选择menu对象,单击OK按钮,创建一个菜单名为j_menu,如下图所示:3.2 基础信
29、息查询3.2.1 系部信息查询界面:1依次打开其他代码打开表单窗口(如下图所示): 在窗体w_xbxx中定义实例变量: Integer il_row,il_rowcount /当前行和记录总数 String is_sql, /数据窗口的dw_1原始语法2在窗体中打开open事件并加入以下代码,将数据窗口连接到数据库,并得到数据窗口dw_1的原始语法,为后面查询作准备。 (如图为创建系部信息查询的数据窗口) Dw_1.settransobject(sqlca) /连接数据库 Is_sql=dw_1.getsqlselect /得到数据窗口原始语法3在dw_1中clicked事件中加入代码(下面的
30、代码的作用是控制在数据数据窗口每一次选中的都是行): if row=0 then return if dw_1.isselected(row)=false then dw_1.selectrow(row,true) else dw_1.selectrow(row,false) end if return 1在查询命令按钮单击(clicked)事件加入代码: String ls_select,ls_xbbhInteger ls_xbmcLs_xbbh=trim(sle_1.text)Ls_xbmc=trim(sle_2.text)Ls_select =”If not isnull(ls_xbbh
31、) and sl_xbbh ” then Ls_xbbh=”%”+sl_xbbh+”%” Ls_select=ls_select+”系部编号 like”+ls_xbbh+”End ifIf not isnull(sl_xhmc) and ls_xbmc” then Ls_xbmc=”%”+ls_xbmc+”%” Ls_select=ls_select+”系部名称 like”+ls_xbmc+”End ifIf ls_select “” then Ls_select=is_sql+”where” +ls_select Else Ls_select=is_sqlEnd if Dw_1.setsql
32、select(ls_select)Il_row=dw_1.retrieve()3.2.2班级信息查询: 如下图所示图片:1 在选择file|new菜单命令,建立一个新的窗体,保存名为j_bjxx,在窗体的open事件中加入以下代码: Dw_1.settransobject(sqlca) /连接数据库 Is_sql=dw_1.getsqlselect /得到数据窗口原始语法2 在dw_1中clicked事件中加入代码: if row=0 then return if dw_1.isselected(row)=false then dw_1.selectrow(row,true) else dw_
33、1.selectrow(row,false) end if return 1 /控制在数据数据窗口每一次选中的都是行3 在窗体中的查询的clicked中加入代码:String ls_select,ls_bjbh,ls_nj,ls_njmcLs_bjbh=trim(sle_1.text)Ls_nj=trim(sle_2.text)Ls_njmc=trim(sle_3.text)Ls_select=”If not isnull(ls_bjbh) and ls_bjbh” then Ls_bjbh=”%”+ls_bjbh+”%” Ls_select=ls_select+”班级编号 like”+ls_
34、bjbj+”End if If not isnull(ls_nj) and ls_nj” then Ls_nj=”%”+ls_nj+”%” If ls_select =” then Ls_select=”年级 like”+ls_nj+” Else Ls_select=ls_select+”and 年级 like”+ls_nj” End ifEnd if If not isnull(ls_njmc) and ls_njmc” then Ls_njmc=”%”+ls_njmc+”%” If ls_select=” thenls_select=”班级名称 like”+ls_njmc+”else ls
35、_select=ls_select+”and 班级名称 like”+ls_njmc+”end if end if / 获得SQL的原始语法If ls_select ” then Ls_select=is_sql+”where”+ls_selectElse Ls_select=is_sqlEnd if Dw_1.setsqlselect(ls_select) /重新连接数据库 il_rowcount =dw_1.retrieve( ) /重新检索数据3.2.3学生信息查询: 1新建一个窗体保存名为j_xsxx,其如图所示: 2在窗体的open事件中加入以下代码: Dw_1.settransobj
36、ect(sqlca) /连接数据库 Is_sql=dw_1.getsqlselect /得到数据窗口原始语法 3在dw_1中clicked事件中加入代码: if row=0 then return if dw_1.isselected(row)=false then dw_1.selectrow(row,true) else dw_1.selectrow(row,false) end if return 1 /控制在数据数据窗口每一次选中的都是行 4在窗体中的查询的clicked中加入代码:String ls_select,ls_xh,ls_xmInteger li_njLs_xh=trim(
37、sle_1.text)Ls_nj=integer(trim(sle_2.text)Ls_xm=trim(sle_3.text)Ls_select=”If not isnull(ls_xh ) and ls_xh ” then Ls_xh =”%”+ls_xh+”%” Ls_select=ls_select +”学号 like”+ls_xh+”End if If not isnull(ls_xm) and ls_xm” then Ls_xm=”%”+ls_xm+”%” If ls_select =” then Ls_select=”姓名 like”+ls_xm+” Else Ls_select=
38、ls_select+”and 姓名 like”+ls_xm+” End if End if If not isnull(li_nj) and li_nj0 then If ls_select=” then Ls_select=”年级=”+string(li_nj) Else Ls_select=ls_select+”and 年级=”+string(li_nj) End if End if If ls_select=” then Ls_select=is_sql+”where”+ls_select Else Ls_select=is_sql End if Dw_1.setsqlselec(ls_select)Il_rowcount=dw_1.retrieve()3.2.4院校职工查询和课程信息查询:1新建一个窗体保存名为j_yxzg,其如图所示: 2在窗体的open事件中加入以下代码: Dw_1.settransobject(sqlca) /连