学校选课系统设计说明书.docx
《学校选课系统设计说明书.docx》由会员分享,可在线阅读,更多相关《学校选课系统设计说明书.docx(27页珍藏版)》请在冰豆网上搜索。
学校选课系统设计说明书
摘要
学生选课管理系统是教学管理的重要组成部分,其开发主要包括后台、数据库的建立和维护以及前端应用程序的开发两个方面,前者要求建立起数据的一致性、完整性和安全性好的数据库,而对于后者则要求应用程序功能完备、易使用及界面友好等特点。
运用软件工程和面向对象技术对学生选课管理系统进行了建模与分析,在此基础上实现了学生选课管理的功能.主要内容如下:
首先,对学生选课的工作流程进行描述和分析,分析其工作中存在的缺陷和不足,在此基础上得出理想的工作流程模式。
按照模块化设计思想,将流程各个阶段分开设计.
其次,对系统的设计过程中的一些技术难点和实现方法进行叙述。
其中包括权限分配、添加、删除、修改功能的实现,查询功能以及打印功能的实现等等经过仔细分析,系统使用Microsoft公司的VisualFoxPro8。
0来开发,利用其提供的各种面向对象的开发工具,快速建立系统应用原形,并对初始原型系统进行需求分析,然后通过不断修正和改进,最终形成一个用户满意的系统。
关键词:
选课、查询、数据库、VisualFoxPro8。
0
第一章系统分析
1。
1需求分析
我校拟定建立一个基于VF的“选修课管理系统”,以改变原有的选修课教学管理方式,
充分利用校园网环境为教师和学生提供方便。
“选课系统”应提供如下服务:
1、允许教务人员输入下学期的预设课程
2、允许学生查看本学期的预设课程目录,也可以在查看时进行选课报名,系统将对报
名要求进行有效性审核,若该课程报名人数已达上限或该学生已经学习过此课程,将拒绝报名并给出提示。
3、允许学生查看报名结果,若对结果不满意可以改选课。
4、允许教师查看开设课程的学生名单,必要情况下还可以打印名单。
6、允许教师填报某门课程的成绩单。
7、允许学生查看选修课的成绩情况,包括查看某一学期或所有已学过的选修课成绩。
1.2可行性研究
通过对学校各项管理工作的调查,了解到目前学校是教务出负责对学生选修课信息进香直接的管理工作,具体的工作是对学生在校期间的选课、成绩等信息进行管理。
本系统开发的主要目的是对教务处的关于学生选课及成绩管理部分实现计算机管理。
本系统的开发目标确定为学校选修课信息系统的一个子系统,因此,目前流行的软硬件配置足以满足系统运行的需要.此外,本系统的操作界面力求非常的简单,系统操作员不需要参加专业培训,只需要有一定的计算机操作能力就可以使用本系统。
所以,开发这样一个中小型的选修课信息管理系统是完全可行的.具体分析如下:
(1)目标和方案的可行性
这次实验目标很明确,主要是设计、开发下一个简单的选修课管理信息系统,利用我们学过的管理信息系统的有关知识,以及大一学过的VF编程语言,开发的系统经过进一步完善之后可以应用于学校选修课的管理,在一定程度上提高管理效率。
(2)技术可行性
根据该系统目标来衡量所需的技术是否具备,一般可从硬软件的性能要求、环境条件、操作人员水平和数量等方面去考虑和分析.
考虑到系统实施的可行性,在软件方面选择了如今较流行的MicrosoftVisualStudio2008来进行开发管理平台的设计,使用VF编程方法。
在硬件方面,则选择空间较大,只要是PentiumⅣ系列及以上的计算机,内存在512M以上,硬盘在20G,都可以满足系统的开发需要。
当然,硬件的配置越高,系统的开发与运行会更流畅.考虑到如今的家用或商用电脑硬件的整体配置水平,系统在硬件方面是可行的。
在软件方面,由于MicrosoftVisualStudio2008和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登录界面
如上图所示,登录界面包含类别选择、用户名和密码的输入,能够实现不同权限的人员的登录,如管理员、教师、学生.
登录命令按钮程序代码:
PUBLICcname&&定义全局变量
ifthisform.类别。
value=”学生"
USE学生信息表.dbf
cname=alltrim(thisform。
text1.value)
ppassword=alltrim(thisform.text2。
value)&&接收文本框输入的内容
cn=cn+1
ifcn=3
thisform.release&&错误次数超过3次,自动退出
endif
setexacton
gotop
locatefor学号=cname.and。
密码=ppassword
ifeof()
messagebox('用户名或密码错误,请重新输入!
','系统提示’)
return
else
thisform.visible=。
f.
do学生。
mpr&&已学生类别登录后执行学生模块
endif
endif
setexactoff
ifthisform.类别.value=”教师"
USE教师信息表。
dbf
cname=alltrim(thisform。
text1.value)
ppassword=alltrim(thisform。
text2.value)
cn=cn+1
ifcn=3
thisform.release
endif
setexacton
gotop
locatefor教师代码=cname.and。
密码=ppassword
ifeof()
messagebox('用户名或密码错误,请重新输入!
’,’系统提示’)
return
else
thisform。
visible=。
f.
do教师。
mpr&&已教师类别登录后执行学生模块
endif
endif
setexactoff
ifthisform.类别。
value=”管理员”
USE密码。
dbf
cname=alltrim(thisform。
text1.value)
ppassword=alltrim(thisform。
text2.value)
cn=cn+1
ifcn=3
thisform。
release
endif
setexacton
gotop
locatefor用户名=cname。
and。
密码=ppassword
ifeof()
messagebox(’用户名或密码错误,请重新输入!
’,'系统提示’)
return
else
thisform.visible=。
f。
do管理员。
mpr&&已学生类别登录后执行学生模块
endif
endif
setexactoff
退出命令按钮程序代码:
Thisform。
release&&释放表单
3。
2管理员模块
(1)菜单设计
设置菜单和子菜单,已经相关命令,如下图:
以管理员身份登录系统后,进入管理员模块,可以进行相应操作,如数据维护、信息查询、修改个人秘密、打印报表、退出等。
(2)维护
如上图所以,管理员可以选择要维护数据表,如学生信息表、教师信息表、课程表、课程信息、成绩单列表已经密码等,可以对选定的数据包进行添加、删除、修改等操作.
进入维护命令按钮程序代码:
docase
casebo1。
value='学生信息表’
thisform.grid1。
RecordSource='学生信息表'
thisform.grid1.refresh
casebo1。
value='教师信息表’
thisform.grid1。
RecordSource=’教师信息表’
thisform.grid1。
refresh
casethisform。
combo1.value='课程表'
thisform.grid1。
RecordSource='课程表’
thisform.grid1。
refresh
casebo1。
value='课程信息’
thisform。
grid1.RecordSource='课程信息'
thisform。
grid1.refresh
casethisform。
combo1.value=’密码’
thisform.grid1.RecordSource=’密码'
thisform。
grid1.refresh
casethisform。
combo1。
value=’成绩单列表'
thisform。
grid1。
RecordSource='成绩单列表'
thisform.grid1.refresh&&选择进行操作的数据表
endcase
bo1。
enabled=。
F。
thisform。
command1。
enabled=.F。
mand2.enabled=。
F.
thisform。
command3。
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.
thisform。
command3.enabled=。
F。
mand4。
enabled=。
F.
thisform。
combo1。
enabled=。
T.
bo1.setfocus&&退出,进入选择维护模式
(3)查询
已查询学生信息为例,当通过菜单选择查询学生信息时,系统会自动打开学生信息表单,如下图:
在菜单里添加的过程代码为:
doform学生信息.
其他过程代码如下:
doform教师信息
doform课程信息
doform课程表
doform成绩单列表
(4)修改密码
菜单过程命令程序代码:
Doform管理员修改密码
确定命令按钮程序代码:
locafor用户名=cname&&之前定义的全局变量派上用场了
ifalltrim(thisform。
原密码。
value)==alltrim(密码)
ifalltrim(thisform.新密码。
value)==alltrim(thisform.确认新密码.value)
repl密码withalltrim(thisform。
新密码.value)
MESSAGEBOX(”修改成功”,”系统提示”)
ELSE
messagebox(”两次输入密码不相同,请重新输入!
”,16,"系统提示")
ENDIF
ELSE
messagebox("旧密码错误,请重新输入!
”,16,”系统提示”)
ENDIF
(5)打印
管理员可根据需要打印相应表单,如下图
命令代码如下:
Reportform课程表。
frxpreview
Reportform课程信息.frxpreview
Reportform学生信息.frxpreview
Reportform教师信息。
frxpreview
Reportform成绩单。
frxpreview
(6)退出
点击退出菜单,课退出系统
退出菜单命令程序代码:
Quit
3.3学生模块
(1)菜单设计
设置菜单和子菜单,已经相关命令,如下图:
以学生身份登录系统后,进入学生模块,可以进行相应操作,如选课情况、信息查询、修改个人秘密、打印报表、退出等。
(2)选课
打开选课菜单程序代码:
Doform学生选课
效果如下图:
Grid表格控件的返回值是课程名称
Grid表格控件单击触发事件程序代码为thisform。
text1.value=课程名称
提交&&重选命令按钮程序代码如下:
closetablesall&&关闭所有表
d=alltrim(thisform。
text1。
value)
use学生信息表。
dbf
LOCATEfor学号=cname&&定位学生
update学生信息表set所选课程=d;
where学号=cname&&更新
thisform.release&&释放表单
browselast&&浏览
退出命令按钮程序代码如下:
Thisform。
release
(3)查询
学生可用查询菜单查询成绩、已修学分和已选课程,以学号11010101的学生为例,登录后即可查询相关信息,查询结果如下图:
与之相对应的子菜单过程程序代码如下:
select学号,姓名,课程名称,任课老师,成绩;
FROM成绩单列表;
WHERE成绩单列表.学号=cname&&查询个人成绩
select学号,姓名,已修学分;
FROM学生信息表;
WHERE学生信息表。
学号=cname&&查询已修学分
select学号,姓名,所选课程;
FROM学生信息表;
WHERE学生信息表.学号=cname&&查询所选课程
(4)修改密码
为确保信息安全,每个系统都可以修改个人密码,单击菜单修改密码,打开下表:
子菜单程序命令代码:
Doform学生修改密码
确定命令按钮程序代码:
locatefor学号=cname
ifalltrim(thisform。
原密码。
value)==alltrim(密码)
ifalltrim(thisform。
新密码.value)==alltrim(thisform。
确认新密码。
value)
repl密码withalltrim(thisform。
新密码.value)
MESSAGEBOX(”修改成功","系统提示”)
ELSE
messagebox(”两次输入密码不相同,请重新输入!
”,16,"系统提示”)
ENDIF
ELSE
messagebox(”旧密码错误,请重新输入!
”,16,”系统提示")
ENDIF
退出命令按钮程序代码;
Thisform.release
3.4教师模块
(1)菜单设计
设置菜单和子菜单,已经相关命令,如下图:
以教师身份登录系统后,进入教师模块,可以进行相应操作,如学生情况、信息查询、修改个人秘密、打印报表、退出等。
(2)学生子菜单
打开学生子菜单,可查询学生信息、学生成绩、录入成绩和查询选择自己课程的学生,以教师代码106235的教师为例,如下图:
(与前面相同的的已)
查询命令按钮程序代码:
CLOSETABLESall
USE教师信息表.dbf
LOCATEfor教师代码=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(”录入成功",”系统提示”)
br