资源描述
目录
摘 要 1
第一章 系统分析 2
1.1需求分析 2
1.2可行性研究 4
1.3系统开发方法选择 5
1.4组织结构及功能分析 5
第二章 系统设计 6
2.1系统总体结构设计 6
2.2数据结构及数据库设计 7
2.3 设计步骤: 10
2.4 输入/输出设计 11
第三章 界面及模块设计 12
3.1 登录界面 12
3.2 管理员模块 14
3.3 学生模块 20
3.4 教师模块 23
第四章 小结 28
参考资料 28
摘 要
学生选课管理系统是教学管理重要组成部分,其开发主要包括后台、数据库建立和维护以及前端应用程序开发两个方面,前者要求建立起数据一致性、完整性和安全性好数据库,而对于后者则要求应用程序功能完备、易使用及界面友好等特点。
运用软件工程和面向对象技术对学生选课管理系统进行了建模及分析,在此基础上实现了学生选课管理功能。主要内容如下:
首先,对学生选课工作流程进行描述和分析,分析其工作中存在缺陷和不足,在此基础上得出理想工作流程模式。按照模块化设计思想,将流程各个阶段分开设计。
其次,对系统设计过程中一些技术难点和实现方法进行叙述。其中包括权限分配、添加、删除、修改功能实现,查询功能以及打印功能实现等等 经过仔细分析,系统使用Microsoft公司Visual FoxPro8.0来开发,利用其提供各种面向对象开发工具,快速建立系统应用原形,并对初始原型系统进行需求分析,然后通过不断修正和改进,最终形成一个用户满意系统。
关键词:选课、查询、数据库、Visual FoxPro8.0
第一章 系统分析
1.1需求分析
我校拟定建立一个基于VF“选修课管理系统”,以改变原有选修课教学管理方式,
充分利用校园网环境为教师和学生提供方便。“选课系统”应提供如下服务:
1、允许教务人员输入下学期预设课程
2、允许学生查看本学期预设课程目录,也可以在查看时进行选课报名,系统将对报
名要求进行有效性审核,若该课程报名人数已达上限或该学生已经学习过此课程,将拒绝报名并给出提示。
3、允许学生查看报名结果,若对结果不满意可以改选课。
4、允许教师查看开设课程学生名单,必要情况下还可以打印名单。
6、允许教师填报某门课程成绩单。
7、允许学生查看选修课成绩情况,包括查看某一学期或所有已学过选修课成绩。
1.2可行性研究
通过对学校各项管理工作调查,了解到目前学校是教务出负责对学生选修课信息进香直接管理工作,具体工作是对学生在校期间选课、成绩等信息进行管理。本系统开发主要目是对教务处关于学生选课及成绩管理部分实现计算机管理。
本系统开发目标确定为学校选修课信息系统一个子系统,因此,目前流行软硬件配置足以满足系统运行需要。此外,本系统操作界面力求非常简单,系统操作员不需要参加专业培训,只需要有一定计算机操作能力就可以使用本系统。所以,开发这样一个中小型选修课信息管理系统是完全可行。具体分析如下:
(1)目标和方案可行性
这次实验目标很明确,主要是设计、开发下一个简单选修课管理信息系统,利用我们学过管理信息系统有关知识,以及大一学过VF编程语言,开发系统经过进一步完善之后可以应用于学校选修课管理,在一定程度上提高管理效率。
(2)技术可行性
根据该系统目标来衡量所需技术是否具备,一般可从硬软件性能要求、环境条件、操作人员水平和数量等方面去考虑和分析。
考虑到系统实施可行性,在软件方面选择了如今较流行Microsoft Visual Studio 2008来进行开发管理平台设计,使用VF编程方法。
在硬件方面,则选择空间较大,只要是Pentium Ⅳ系列及以上计算机,内存在512M以上,硬盘在20G,都可以满足系统开发需要。当然,硬件配置越高,系统开发及运行会更流畅。考虑到如今家用或商用电脑硬件整体配置水平,系统在硬件方面是可行。
在软件方面,由于Microsoft Visual Studio 2008 和 VF编程方法两个都是非常成熟开发工具,无论在安全性、可用性、可靠性方面都毫无置疑,因此软件方面是可行。
另外,由于平时在老师领导下已做过相关项目,我们已具备处理各种问题基本能力,因此以我们现在业务水平,是可以成功进行本次项目开发。
(3)经济可行性
我们电子商务实验室拥有一套比较完善软硬件设备,平时供我们上课实验使用,所以这次系统开发不用在系统购置、安装和调试方面花费过多费用,只须负责设备日常维护。关于人员方面,我们通过两年多学习,已经初步掌握了一定技术、知识,不用外聘技术人员,节省了很大开支。另外,系统投入使用以后,学校可以更及时更准确得到信息,可以对管理者决策提供强有力支持,改善学校形象,提高学校教务管理效率。
(4)操作可行性
我们开发系统操作比较简单,操作人员不需要懂得编程方面知识,在前台以这些简单操作,就可以实现系统控制。
1.3系统开发方法选择
我们选修课管理信息系统开发采用是结构化系统开发方法,按照用户至上原则,机构化,模块化,自上而下对整个系统进行分析设计。
本次实验设计将整个开发过程分为五个阶段:系统规划阶段、系统分析阶段(可行性分析、需求分)、系统设计阶段(总体设计、详细设计)、系统实施阶段、系统运行及维护阶段。
在系统调查和规划管理业务时,从最顶层管理业务入手,逐步深入之基层;在系统分析和系统设计阶段,从宏观整体考虑入手,先考虑系统整体优化,再考虑局部系统优化问题;在系统实施阶段,坚持自底向上地逐步实施,然后按照系统设计结构,将模块一个个拼接起来进行调试,自底向上,逐步完成整个系统。
1.4组织结构及功能分析
此套管理信息系统开发是为了适应学校各层用户对选修课进行管理需求,选修课管理信息系统应是一套通用性、实用性都比较强软件系统,主要应包括管理员管理、教师录入和输出、学生选课和查询模块等功能。具体为:
(1)管理员管理模块
管理员可以使用系统维护功能:对系统学生信息、教师信息、课程信息进行维护,如指定每门课程任课老师,修改课程信息,增加、删除、修改学生信息。
(2)教师模块
询功能:对该教师所教授课程选课情况、授课时间等信息进行查询;
上传成绩功能:在学期末,教师将本课程成绩信息上传到系统,以供学生查询。
(3)学生模块
个人信息维护:对个人信息进行修改 ,如修改登录密码;
查询功能:对课程信息、成绩信息、已选课程、已修学分等查询;
选课功能:对要选修课程进行选定和提交或者重新选课;
第二章 系统设计
我们对本次系统设计部分工作做了如下进度安排:管理信息系统计算机及其网络
硬件、系统软件选型(物理配置方案设计)、功能结构(总体设计)、数据库设计(数据库设计)、确定系统编码(代码设计)、系统输入输出设计(输入输出设计)。
2.1系统总体结构设计
系统总体结构设计,即系统总体功能结构确定(功能结构图、子系统及模块划分和信息系统流程图设计)。我们在分解-协调原则、模块化原则、自顶向下原则、抽象原则、明确性原则指导下,完成了对学生选修课管理信息系统设计。
我校学生“选课”系统数据流程图如下图所示。这是一个简单、具有明显变换流特征数据流程图。首先登录到系统,输入密码,经过验证合格后,即可进行选课处理。先查询相关课程信息,再进行选课登记,选课完成后,显示所选课程表,并打印输出课表。
确定变换流、输入流和输出流部分。从左向右分析数据流程图,确定“登录系统”为输入部分;从右向左分析数据流程图,确定“打印课表”、“显示课表”为输出部分;分别用虚线加以标示,则得到虚线内部分为变换流,包括“课程查询”和“选课登记”两个加工。虚线外两部分为输入流和输出流。
将数据流程图映射为模块结构图
2.2数据结构及数据库设计
准备:本系统涉及到信息主要分为学生信息、成绩信息、教师信息、课程表和课程信
息。因此,可设计五个数据库表,即学生信息表、成绩单列表、课程信息、教师信息表和课程信息。
2.3 设计步骤:
数据库设计步骤包括用户需求分析、概念结构设计、逻辑结构设计和物理结构设计四个阶段。
①用户需求分析就是对现实世界进行分析;我们在调查和分析用户(学生、教师)业务活动和数据使用情况,弄清所用数据(学生信息表、课程信息、成绩单列表)种类、范围、数量以及它们在业务活动中交流情况后,确定了用户对数据库系统使用要求和各种约束条件等,形成用户需求规约。
②概念结构设计是根据对现实世界进行分析,将现实世界转换为概念世界。即数据库概念模型(实体联系E-R模型);
A:标识实体:对一个基本选修课系统,最基本实体必须包含有教师,学生,及所学习课程。
B:划分和确定关系:
教师和课程之间,存在“讲授”这个关系,是一个M:N(由于技术原因本系统采用1:1模式)关系;
学生和课程之间,存在“学习”这个关系,是一个L:N关系(由于技术原因本系统采用1:1模式);
C:确定属性 实体属性:
教师(教师代码、姓名、职称、年龄、任课课程);
学生(学号、姓名、性别、学院、专业、班级、性别、所选课程、备注);
课程(课程代码、课程名称、教学内容、要求、任务及目、考试方法);
联系属性: 讲授(效果); 学习(成绩);
D:画出E-R模型(选择部分属性)
姓名
职称
姓名
性别
学号
代码
教师
学生
讲授
学习
课程
效果
成绩
代码
名称
要求
2.4 输入/输出设计
在做系统输入/输出设计时,我们选择了先进行系统输出设计,之后再设计输入。输出是系统产生结果或提供信息。我们主要是基于以下考虑:对于大多数用户来说,输出是系统开发目和使用效果评价标准。尽管有些用户可能直接使用系统或从系统输入数据,但都要应用系统输出信息,输出设计目正是为了正确及时地反映和组成用于生产和服务部门有用信息,因此,系统设计过程及实施过程相反,是从输出设计到输入设计。即先确定要得到哪些信息,再考虑为了得到这些信息,需要准备哪些原始资料作为输入。
(一)输出设计
本系统输出设计根据用户需求综合运用了多种输出设备、多种输出方式,并且输出内容完全满足用户需要。本系统输出设备采用显示器、打印机,输出格式采用表格形式,输出介质采用U盘、普通白纸等。本系统输出主要包括学生选修课查询信息、教师授课情况查询、学生考试成绩查询、查询结果打印等。
输出设计包括有以下几方面:
(1)输出内容确定:学生选修课信息、教师授课情况、学生成绩情况;
(2)输出方式选择:表格 ;
(3)输出格式设计:标准版 ;
(4)输入数据校验。
从对本学生选修课管理信息系统试用情况反馈来看,本系统基本上达到了输出评价标准要求:能为用户提供及时、准确、全面信息服务;便于阅读和理解,符合用户习惯;充分考虑和利用了输出设备功能;能为今后发展预留一定余地。
第三章 界面及模块设计
3.1 登录界面
如上图所示,登录界面包含类别选择、用户名和密码输入,能够实现不同权限人员登录,如管理员、教师、学生。
登录命令按钮程序代码:
PUBLIC cname &&定义全局变量
if thisform.类别.value="学生"
USE 学生信息表.dbf
cname=alltrim(thisform.text1.value)
ppassword=alltrim(thisform.text2.value) &&接收文本框输入内容
cn=cn+1
if cn=3
thisform.release &&错误次数超过3次,自动退出
endif
set exact on
go top
locate for 学号=cname.and.密码=ppassword
if eof()
messagebox('用户名或密码错误,请重新输入!','系统提示')
return
else
thisform.visible=.f.
do 学生.mpr &&已学生类别登录后执行学生模块
endif
endif
set exact off
if thisform.类别.value="教师"
USE 教师信息表.dbf
cname=alltrim(thisform.text1.value)
ppassword=alltrim(thisform.text2.value)
cn=cn+1
if cn=3
thisform.release
endif
set exact on
go top
locate for 教师代码=cname.and.密码=ppassword
if eof()
messagebox('用户名或密码错误,请重新输入!','系统提示')
return
else
thisform.visible=.f.
do 教师.mpr &&已教师类别登录后执行学生模块
endif
endif
set exact off
if thisform.类别.value="管理员"
USE 密码.dbf
cname=alltrim(thisform.text1.value)
ppassword=alltrim(thisform.text2.value)
cn=cn+1
if cn=3
thisform.release
endif
set exact on
go top
locate for 用户名=cname.and.密码=ppassword
if eof()
messagebox('用户名或密码错误,请重新输入!','系统提示')
return
else
thisform.visible=.f.
do 管理员.mpr &&已学生类别登录后执行学生模块
endif
endif
set exact off
退出命令按钮程序代码:
Thisform.release &&释放表单
3.2 管理员模块
(1)菜单设计
设置菜单和子菜单,已经相关命令,如下图:
以管理员身份登录系统后,进入管理员模块,可以进行相应操作,如数据维护、信息查询、修改个人秘密、打印报表、退出等。
(2)维护
如上图所以,管理员可以选择要维护数据表,如学生信息表、教师信息表、课程表、课程信息、成绩单列表已经密码等,可以对选定数据包进行添加、删除、修改等操作。
进入维护命令按钮程序代码:
do case
case bo1.value='学生信息表'
thisform.grid1.RecordSource='学生信息表'
thisform.grid1.refresh
case bo1.value='教师信息表'
thisform.grid1.RecordSource='教师信息表'
thisform.grid1.refresh
case bo1.value='课程表'
thisform.grid1.RecordSource='课程表'
thisform.grid1.refresh
case bo1.value='课程信息'
thisform.grid1.RecordSource='课程信息'
thisform.grid1.refresh
case bo1.value='密码'
thisform.grid1.RecordSource='密码'
thisform.grid1.refresh
case bo1.value='成绩单列表'
thisform.grid1.RecordSource='成绩单列表'
thisform.grid1.refresh &&选择进行操作数据表
endcase
bo1.enabled=.F.
mand1.enabled=.F.
mand2.enabled=.F.
mand3.enabled=.T.
mand4.enabled=.T.
退出维护命令按钮程序代码:
thisform.release &&释放整个表单
修改命令按钮程序代码:
thisform.grid1.enabled=.T.
thisform.grid1.allowaddnew=.T.
thisform.grid1.setfocus
thisform.refresh &&刷新表单
退出命令按钮程序代码:
use
thisform.grid1.enabled=.F.
thisform.grid1.allowaddnew=.F.
thisform.grid1.recordsource=''
thisform.grid1.refresh
mand1.enabled=.T.
mand2.enabled=.T.
mand3.enabled=.F.
mand4.enabled=.F.
bo1.enabled=.T.
bo1.setfocus &&退出,进入选择维护模式
(3)查询
已查询学生信息为例,当通过菜单选择查询学生信息时,系统会自动打开学生信息表单,如下图:
在菜单里添加过程代码为:do form 学生信息。
其他过程代码如下:
do form 教师信息
do form 课程信息
do form 课程表
do form 成绩单列表
(4) 修改密码
菜单过程命令程序代码:
Do form 管理员修改密码
确定命令按钮程序代码:
loca for 用户名=cname &&之前定义全局变量派上用场了
if alltrim(thisform.原密码.value)==alltrim(密码)
if alltrim(thisform.新密码.value)==alltrim(thisform.确认新密码.value)
repl 密码 with alltrim(thisform.新密码.value)
MESSAGEBOX("修改成功","系统提示")
ELSE
messagebox("两次输入密码不相同,请重新输入!",16,"系统提示")
ENDIF
ELSE
messagebox("旧密码错误,请重新输入!",16,"系统提示")
ENDIF
(5)打印
管理员可根据需要打印相应表单,如下图
命令代码如下:
Report form 课程表.frx preview
Report form 课程信息.frx preview
Report form 学生信息.frx preview
Report form 教师信息.frx preview
Report form 成绩单.frx preview
(6) 退出
点击退出菜单,课退出系统
退出菜单命令程序代码:
Quit
3.3 学生模块
(1)菜单设计
设置菜单和子菜单,已经相关命令,如下图:
以学生身份登录系统后,进入学生模块,可以进行相应操作,如选课情况、信息查询、修改个人秘密、打印报表、退出等。
(2) 选课
打开选课菜单程序代码:
Do form 学生选课
效果如下图:
Grid表格控件返回值是 课程名称
Grid表格控件单击触发事件程序代码为 thisform.text1.value=课程名称
提交&&重选命令按钮程序代码如下:
close tables all &&关闭所有表
d=alltrim(thisform.text1.value)
use 学生信息表.dbf
LOCATE for 学号=cname &&定位学生
update 学生信息表 set 所选课程=d;
where 学号=cname &&更新
thisform.release &&释放表单
browse last &&浏览
退出命令按钮程序代码如下:
Thisform.release
(3)查询
学生可用查询菜单查询成绩、已修学分和已选课程,以学号11010101学生为例,登录后即可查询相关信息,查询结果如下图:
及之相对应子菜单过程程序代码如下:
select 学号,姓名,课程名称,任课老师,成绩;
FROM 成绩单列表;
WHERE 成绩单列表.学号=cname &&查询个人成绩
select 学号,姓名,已修学分;
FROM 学生信息表;
WHERE 学生信息表.学号=cname &&查询已修学分
select 学号,姓名,所选课程;
FROM 学生信息表;
WHERE 学生信息表.学号=cname &&查询所选课程
(4)修改密码
为确保信息安全,每个系统都可以修改个人密码,单击菜单修改密码,打开下表:
子菜单程序命令代码:
Do form 学生修改密码
确定命令按钮程序代码:
locate for 学号=cname
if alltrim(thisform.原密码.value)==alltrim(密码)
if alltrim(thisform.新密码.value)==alltrim(thisform.确认新密码.value)
repl 密码 with alltrim(thisform.新密码.value)
MESSAGEBOX("修改成功","系统提示")
ELSE
messagebox("两次输入密码不相同,请重新输入!",16,"系统提示")
ENDIF
ELSE
messagebox("旧密码错误,请重新输入!",16,"系统提示")
ENDIF
退出命令按钮程序代码;
Thisform.release
3.4 教师模块
(1)菜单设计
设置菜单和子菜单,已经相关命令,如下图:
以教师身份登录系统后,进入教师模块,可以进行相应操作,如学生情况、信息查询、修改个人秘密、打印报表、退出等。
(2)学生子菜单
打开学生子菜单,可查询学生信息、学生成绩、录入成绩和查询选择自己课程学生,以教师代码106235教师为例,如下图:(及前面相同已)
查询命令按钮程序代码:
CLOSE TABLES all
USE 教师信息表.dbf
LOCATE for 教师代码=cname
IF 教师代码=cname
Thisform.Grid1.RecordSource = "select 学号,姓名,性别,专业,学院,班级,所选课程;
from 学生信息表;
where 学生信息表.所选课程=教师信息表.任课课程"
endif
Grid表格控件recordsourcetype设为4-SQL说明
录入命令按钮程序代码:
i=ALLTRIM(thisform.Text2.value)
j=ALLTRIM(thisform.Text1.value) &&接收文本框信息
USE 成绩单列表.dbf
update 成绩单列表 set 成绩 = i;
where 学号 = j
thisform.Text1.value=""
thisform.Text2.value=""
MESSAGEBOX("录入成功","系统提示")
browse last
(4)修改密码
为确保信息安全,每个系统都可以修改个人密码,单击菜单修改密码,打开下表:
子菜单程序命令代码:
Do form 教师修改密码
确定命令按钮程序代码:
loca for 教师代码=cname &&定位
if alltrim(thisform.原密码.value)==alltrim(密码) &&匹配密码
if alltrim(thisform.新密码.value)==alltrim(thisform.确认新密码.value)
repl 密码 with alltrim(thisform.新密码.value)
MESSAGEBOX("修改成功","系统提示")
ELSE
messagebox("两次输入密码不相同,请重新输入!",16,"系统提示")
ENDIF
ELSE
messagebox("旧密码错误,请重新输入!",16,"系统提示")
ENDIF
(5)查询
教师通过单击查询菜单可以查看个人信息,以教师代码为10625教师为例如下图:
查询菜单过程程序代码:
select 教师代码,姓名,职称,年龄,性别,密码;
FROM 教师信息表;
WHERE 教师信息表.教师代码=cname
(6)打印
教师通过打印菜单打印成绩单,如下图:
命令代码如下:
Report form 成绩单.frx preview
(7)退出
单击退出系统菜单可以退出系统。
命令代码:
Quit
第四章 小结
分析:本系统基本能符合最初设计要求,简单,易于操作,程序运行之后直接选择要查询信息,继而进入查询界面,信息查询和信息维护界面,没有反锁多重操作,减少了对学生、教师输入麻烦,还可以课程查询学生选课情况,每个功能模块都有退出功能,退出查询系统。
不足之处:系统退出程序还不成熟,如每个老师只能带一门课程,学生也只能选一科,运行有点费时,在这个方面还有待改进。
在这次设计过程中,我学到不仅是知识,我还认识到许多事情。这次设计使我编程水平提高了一大步,使我充分认识到合作可贵。由于这次设计涉及到数据库,我做了一些调查,我不仅学到了不少编程工具及数据库连接知识,对数据库操作有了进一步了解;这次设计对我综合能力是一次很好锻炼,但是我必须承认自己能力和知识还很肤浅,自己程序做也很基本,所以今后我学习道路还是很漫长。
同时本次设计让我越发深入了解了VF程序,而这次设计成功主要是得到了老师大力帮助,以及同学们热心帮助,在此对那些帮助过我人表示感谢,对学院领导和老师帮助和支持表示敬意。由于我水平有限,加之时间短暂,故学生选课管理系统中还有许多不足之处,请老师批评指正,我会在以后制作中不断改进,不断完善。我在以后学习和生活中一定再接再厉,继续发扬艰苦奋斗优良作风,努力学习,刻苦专研,积极工作。以此次课程设计为契机,提升自己综合素质。
参考资料
李雁翎.数据库技术及应用-------Visual Foxpro.北京:高等教育出版社,2005.8(2010重印)
40 / 41
展开阅读全文