管理是指一定组织中的管理者,通过实施计划、组织、领导、协调、控制等职能来协调他人的活动,使别人同自己一起实现既定目标的活动过程。是人类各种组织活动中最普通和最重要的一种活动。近百年来,人们把研究管理活动所形成的管理基本原理和方法,统称为管理学, 以下是为大家整理的关于学生中心教务管理系统5篇 , 供大家参考选择。
学生中心教务管理系统5篇
【篇1】学生中心教务管理系统
2 任务二 基于文件的学生/教务管理系统2.1 前言为了巩固我们C语言知识,并了解其在生活中的应用,由老师为我们带来了这个题目。通过实训,学会为实际应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,从而对C语言程序设计这门课能有一个更深刻的理解和认识;再者,实训相对于平时试验课来说,要完成的是一个难度较大的可执行综合性程序,培养需求分析和系统架构等处理复杂问题的能力,从而极大的提高学生的编程能力以及撰写文档的能力;希望能通过实训,实际做到理论和实践紧密结合,同时也为后续课程打下坚实的基础知识。
2.2 系统需求分析2.2.1 问题定义本系统可以应用于教务处,进行对学生,教师,教务处人员的管理(添加,修改,删除,统计),人员查询,成绩查询(可以按照姓名查询,证件号查询)。
本系统主要面对学生,教师,教务处,所以进入该系统时可以选择不同的身份进入,若已存在账号,则可以直接进去选择自己的身份,若不存在账号,则需要管理员进入添加,管理员可以进行的功能有成绩管理,学生管理,教师管理,管理员管理,每个模块都有添加,删除,修改,统计,查询五个基本功能。而教师则可以进行成绩的添加,修改,查询,等功能。学生只有查询和修改个人信息的功能。
2.2.2需求分析 2.3 系统设计2.3.1系统架构将要实现的模块分级进行架构
学生管理系统
管理员模块:
管理教师:教师添加,教师修改,教师删除,教师统计,教师查询
管理学生:学生添加,学生修改,学生删除,学生统计,学生查询
管理管理员:管理员添加,管理员修改,管理员删除,管理员统计,管理员查询
成绩管理:计算个人成绩,计算各科成绩,计算平均成绩,计算最高最低分,排序
学生模块:查询个人成绩,查询个人信息,修改个人信息
教师模块:添加学生成绩,修改学生成绩,删除学生成绩,查询学生信息,查询个人信息,修改个人信息。
2.3.2数据物理设计学生
教师
管理员
成绩
2.3.3功能模块管理员可以进行的功能有成绩管理,学生管理,教师管理,管理员管理,每个模块都有添加,删除,修改,统计,查询五个基本功能。而教师则可以进行成绩的添加,修改,查询,等功能。学生只有查询和修改个人信息的功能。
2.4 系统实现系统硬件环境为计算机,系统软件环境:VC++6.0,TC3.0
2.4.4 系统功能模块设计与实现2.4.4.1功能实现
下面分别对该模块中的具体功能进行详细描述,并配相应功能的截图
1.添加功能
FILE *fp;
char ch2;
int i=0,ch1;
printf("欢迎进入防灾科技学院学生管理系统\n");
printf("添加请输入y,退出请输入n\n");
scanf("%c",&ch2);
if(ch2=="y")
{
do
{
fp=fopen("manager.txt","a+");
/*输入所要添加的内容*/
fwrite(&manager[i],sizeof(struct manager),1,fp);
printf("%s,%s,%s,%s\n",manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiwei);
printf("是否继续添加,继续添加请输入1,否则输入0\n");
scanf("%d",&ch1);
i++;
fclose(fp);
}while(ch1==1);
}
2.修改功能
首先选择修改的依据,可以依据证件号,姓名两张方式修改。具体实现代码如下:
fp=fopen("manager.txt","r+");
printf("请输入需要修改的人员的编号\n");
scanf("%s",str);
for(i=0;fread(&manager[i],sizeof(struct manager),1,fp)!=0;i++)
{
if(strcmp(str,manager[i].mnum)==0)
{
printf("%s,%s,%s,%s\n",manager[i].name,manager[i].sex,manager[i].mnum,manager[i]. zhiwei);
printf("确认修改,确认请输入1,退出则输入0\n");
scanf("%d",&ch1);
if(ch1==1)
{
/*选择修改的类型*/
scanf("%d",&ch2);
switch(ch2)
{
case 1:{
printf("请输入所要修改的姓名\n");
scanf("%s",manager[i].name);
fwrite(&manager[i],sizeof(struct manager),1,fp);
}break;
3.删除功能
删除可以依据证件号和姓名查询,删除方法是,先找到需要删除的人,然后让排在其后的人员的信息替换这个人的信息。具体代码如下:
FILE *fp;
char name[20];
int i,flag,n,j,ch;
fp=fopen("manager.txt","r+");
printf("original data\n");
for(i=0,flag=1;fread(&teacher[i],sizeof(struct teacher),1,fp)!=0;i++)
printf("%s,%s,%s,%s\n",manager[i].name,manager[i].sex,manager[i].mnum,manager[i].zhiwei);
n=i+1;
fclose(fp);
do
{
printf("请输入您所要删除的人员的名字\n");
scanf("%s",name);
fp=fopen("manager.txt","r");
for(i=0,flag=1;flag&&i
【篇2】学生中心教务管理系统
教务管理系统教务处是比较繁忙的部门,日常中有很多事情要处理。在平台中,教务管理主要是为了协助教务处老师进行日常教务管理,操作简单、方便,极大了提高工作效率,把教务教师从繁重的日常工作中解脱出来。用户可依据主界面“操作向导”中的教务管理导航图进行设置。
教务管理基本流程图
第一章 教学基本信息对教务管理初始化的工作基本都在教学基本信息下完成。主要包括初始化【年级设置】、【学科设置】、【课程开设】等模块。这里的模块操作可由系统管理员分权限给教务处老师,由教务处老师根据主界面“操作向导”中的教务管理导航图进行操作。
一.1 课程类别维护
菜单位置:【教务管理】->【教学基本信息】->【课程类别维护】
功能描述:在此模块维护可用的课程类别。点击“增加”按钮维护类别代码、类别名称后保存即可。选择要删除的类别,点“删除”按钮进行删除,已被引用的课程类别不允许删除。
一.2 学科设置
菜单位置:【教务管理】->【教学基本信息】->【学科设置】
功能描述:对学生所学学科进行维护。
按“增加”按钮进行学科添加,维护好各项后按“保存”即可。如图所示,在一些成绩打印和分析模块中将按照排序号来升序排列显示学科成绩表。其中学科类型可在【微代码维护】中设置。
若学科在用标志打勾,在【课程开设】中该学科将在下拉学科列表中显示,否则将不可用。对于不在用的学科建议不直接删除,而是取消其在用标志即可。需注意的是学科设置的编号和名称要与教育局中的学科统一对应,这样学校在进行学生成绩报送到教育局时,可以保证相应学科成绩不会丢失和出错。
图 1.21 学科设置
一.3 课程开设
菜单位置:【教务管理】->【教学基本信息】->【课程开设】
功能描述:课程设置需要对必修和选修两大类课程进行开设。必修分为专业必修及班级必修,选修分为专业限选、年级任选、全校公选。全校公选针对网上选课系统。下面对操作进行分别介绍。
首先进行专业必修课程开设,选择所要设置的年级和专业,按“增加/删除”按钮对课程进行增加、删除操作。对新增记录选择学科、课程类别,输入总课时、周课时、开始周、结束周、学分,勾选辅修必须、选课开放范围后保存即可。其中下拉学科列表显示的是【学科设置】中在用的学科,周课时的设置用于【课程编排】中。
图 1.31 专业必修课程开设
再进行班级必修课程开设,选择要维护的班级,班级课程自动继承‘专业必修课程开设’中的课程。选择各科授课教师、是否考试、计分方式及选用教材教材,输入权重、学分、学分转换标准、学分转换标准(等第)(如果学生成绩已经输入了,这里将不能进行学分转换标准、学分转换标准(等第)的输入),按“保存”即可保存维护结果。维护完毕按“保存”按钮保存维护结果。考试/考查字段,选择的结果将在【学生成绩卡】里查询学生背面成绩页时显示。
图 1.32 班级必修课程开设
专业限选课程开设:选择所要设置的年级和专业,按“增加/删除”按钮对课程进行增加、删除操作。对新增记录选择学科、课程类别,输入总课时、周课时、开始周、结束周、开班人数、计分方式、学分、学分转换标准、学分转换标准(等第)(如果学生成绩已经输入了,这里将不能进行学分转换标准、学分转换标准(等第)的输入),勾选有效、必选、选课开放范围后保存即可。这里下拉选择的课程类别在【课程类别维护】里设置的结果。
图 1.33 专业限选课程开设
年级任选课程开设:选择年级,通过“增加/删除”按钮对任意选修课进行设置,对新增记录选择学科、课程类别,输入总课时、周课时、开始周、结束周、开班人数、计分方式、学分、学分转换标准、学分转换标准(等第)(如果学生成绩已经输入了,这里将不能进行学分转换标准、学分转换标准(等第)的输入),勾选有效标志、选课开放范围后保存即可。
图 1.34 年级任选课程开设
全校公选课程开设:对新增记录选择学科、课程类别,输入总课时、周课时、开始周、结束周、开班人数、计分方式、学分、学分转换标准、学分转换标准(等第)(如果学生成绩已经输入了,这里将不能进行学分转换标准、学分转换标准(等第)的输入),勾选有效标志后保存即可。
图 1.35 全校公选课程开设
一.4 教研组负责学科
菜单位置:【教务管理】->【教学基本信息】->【教研组负责设置】
功能描述:此处设置的教研组负责学科信息,将在教师管理/教师信息维护中的【所教课程登记】中用到。选中某教研组,通过“增加”、“删除”和“保存”按钮对各教研组负责学科进行设置。如图所示。
图 1.41 教研组负责学科设置
一.5 专业类别维护
菜单位置:【教务管理】->【教学基本信息】->【专业类别维护】
功能描述:利用“增加”和“删除”设置专业类别,选中一级类别可添加其二级类别,以此类推。设置完后点击“保存”即可。点击“类别刷新”可刷新专业类别树结构。如图所示。
图 1.51专业类别维护
一.6 专业维护
菜单位置:【教务管理】->【教学基本信息】->【专业维护】
功能描述:根据学校的课程性质,用户可以通过“增加”和“删除”来维护专业信息,维护完成后“保存”即可,如图所示。对于已在用的专业,专业代码不能修改。不能修改或删除的专业表示已经被其它模块引用。
图 1.61专业维护
一.7 年级设置
菜单位置:【教务管理】->【教学基本信息】->【年级设置】
功能描述:进行年级信息的设置。
在打开的窗口中通过“增加/删除”按钮可进行年级的增减操作,操作完毕后进行“保存”。在进行增加操作时,‘年级名称’、‘入学年度’为必录项;‘状态’默认为在校,若状态为已毕业,则进行保存时该年级自动隐藏,用户需勾选‘所有年级’复选框时已毕业年级信息才会显示。
图 1.71年级设置
一.8 班级设置
菜单位置:【教务管理】->【教学基本信息】->【班级设置】
功能描述:设置各年级的班级信息。
在打开的窗口中通过“增加/删除”按钮进行班级的增减操作,操作完毕后进行“保存”。在进行增加操作时,班级代码(若“图书管理”模块要引用班级代码生成学生借书证号,则需将‘班级代码’设置成4位)、班级名称可手动输入;年级为【年级设置】中维护年级;专业为【专业维护】维护的专业;‘当前状态’默认为在校,若状态为已毕业,则进行保存时该班级自动隐藏,用户需勾选‘包括已毕业班级’复选框时已毕班信息才会显示。
图 1.81班级设置
word/media/image17.gif
一.9 班主任信息
菜单位置:【教务管理】->【教学基本信息】->【班主任信息】
功能描述:输入学年和学期(默认为当前学年/学期),利用“增加”、“删除”和“保存”对过学期过班级的班主任信息进行维护,如图所示。这里维护的信息在【班主任信息查询】模块能进行查询。
图 1.91班主任信息
第二章 教学计划教学计划录入只允许拥有权限的用户使用,各功能模块操作类同,流程如下,以下作简单介绍。
二.1 年级教学计划录入
菜单位置:【教务管理】->【教学计划】->【年级教学计划录入】
功能描述:通过“增加”、“删除”和“保存”按钮对年级教学计划进行维护,按“编辑计划”,系统按“文档类型”打开对应编辑器,计划维护完毕后“保存”即可。也可按“文件导入”,选择要导入的文件并对其进行编辑。当前登录用户不为该教学计划的制定人或录入人,则不能对其进行编辑等操作。
二.2 教学进度表录入
菜单位置:【教务管理】->【教学计划】->【教学进度表录入】
功能描述:输入学年学期(默认为当前学年/学期),选择班级及其学科,在右边编辑框中选择制定人,输入制定日期,然后便可录入教学内容及章节以及完成情况。如果此教学进度与上学年同一学期同一班级同一学科的教学进度出入不大,可以“调用上学年”进行修改。点击“重建计划”可彻底清除当前进度表,重新进行输入。输入完后“保存”即可。当前登录用户不为该教学进度的制定人或输入人,则不能对其进行编辑等操作。
二.3 教学活动计划录入
菜单位置:【教务管理】->【教学计划】->【教学活动计划录入】
功能描述:输入学年学期(默认为当前学年/学期),在教学活动处录入教学活动计划;也可以“调用上学年”的计划进行修改;按“重建计划”可清除原有计划,重新输入;教学活动计划填写完成后“保存”即可。
二.4 教务工作计划录入
菜单位置:【教务管理】->【教学计划】->【教务工作计划录入】
功能描述:输入学年学期(默认为当前学年/学期),通过“增加”、“删除”按钮对教务工作计划进行设置,输入起始周和终止周,录入工作内容;或者“调用上学年”的内容进行修改,维护完毕后“保存”即可。
二.5 教研组工作计划输入
菜单位置:【教务管理】->【教学计划】->【教研组工作计划输入】
功能描述:输入学年学期(默认为当前学年/学期),选择教研组、制定人,输入教研组计划说明、每周工作内容以及完成情况;也可“调用上学年”进行修改,点击“重建计划”清除原计划,重新输入。维护完毕后“保存”即可。
二.6 年级教学计划查询
菜单位置:【教务管理】->【教学计划】->【年级教学计划查询】
功能描述:选择某教学计划,点击“查看计划”按钮就可查看该计划的内容,也可直接双击该教学计划。
二.7 教学进度表查询
菜单位置:【教务管理】->【教学计划】->【教学进度表查询】
功能描述:输入学年学期(默认为当前学年/学期),选择班级及其学科,在右边窗口显示该学科教学进度信息;点击“查看说明”进行计划说明的查看;按“另存为”按钮可将查询结果保存为所需格式的文件,并可对其进行“预览”和“打印”操作。
二.8 教学活动计划查询
菜单位置:【教务管理】->【教学计划】->【教学活动计划查询】
功能描述:输入学年学期(默认为当前学年/学期),窗口中显示该学期的教学活动计划,可以按“上页”,“下页”进行计划查看,并对其进行“预览”和“打印”操作。
二.9 教务工作计划查询
菜单位置:【教务管理】->【教学计划】->【教务工作计划查询】
功能描述:输入学年学期(默认为当前学年/学期),窗口中显示该学期的教务工作计划,可以按“上页”,“下页”进行计划查看,并对其进行“预览”和“打印”操作。
二.10 教研组工作计划查询
菜单位置:【教务管理】->【教学计划】->【教研组工作计划查询】
功能描述:输入学年学期(默认为当前学年/学期),选择教研组,右边窗口中显示该教研组该学期的工作计划。点击“查看说明”可查看该教研组的工作计划说明,按“显示列”设置表中各列是否显示,按“另存为”将工作计划保存为所需格式的文件,并可对其进行“预览”和“打印”操作。
二.11 教案维护及查询
菜单位置:【教务管理】->【教学计划】->【教案维护及查询】
功能描述:教案维护之前需在【数据输入权限设置】模块对当前操作者设置操作权限,将教案维护工作具体定义到某个年级某个专业某门学科,那么用户才能在此模块进行操作,而且只能在自己的权限范围内进行操作。选择班级、学科,按“增加”在弹出窗口中输入教案详细信息,单击“教案内容编辑及查看”直接编写教案,也可点击“通过选择文件导入教案内容”导入教案文件,修改后“保存”即可。在主窗口中用户可通过“设置条件”查询所需要的教案。对于其它用户维护的教案则不能进行修改,只能进行查看。
对于每个计划输入都有一个对应的计划查询模块,提供各输入计划的查询。
二.12 专业教学计划模板
菜单位置:【教务管理】->【教学计划】->【专业教学计划模板】
功能描述:针对专业维护专业的教学计划课程开设通用模板(不分年级),供维护年级专业教学计划时调用。
下拉选择专业,点击“增加”按钮增加一条记录,选择课程类别,学科编号、性质,输入总学时、一学年上、一学年下、二学年上、二学年下、三学年上、三学年下,总学分,完成后点击“保存”即可。
点击“统计学分”,提供分‘科目性质’和‘课程类别’统计查看开课总学分功能。
维护新的【专业教学计划时】系统会自动使用此模板,而对已维护的年级专业教学计划没有影响。
二.13 专业教学计划
菜单位置:【教务管理】->【教学计划】->【专业教学计划】
功能描述:以年级专业为单位,维护其开课计划。
点击“学期周数”按钮,输入学年、学期、理论周数、开始日期、结束日期然后“保存”结果;
选择年级及专业,点击“增加”维护课程类别、科目、性质、总学时、学时分配、选用教材等数据后“保存”结果;
点击“统计信息”,用户可以按课程性质、课程类别统计开课总学分。
选择某科目,点击“教材设置”在列出的教材里勾选选用的教材,如果勾选了“必配”项,那该教材就必须被配用。
第三章 课程表管理新的排课系统是为了代替以往的手工排课方式,由计算机代替人力进行自动排课,排课时只需设置排课要求,系统自会按照用户的需求生成课程表。系统运用多种算法保证了排课的准确性,从而提高学校的排课效率。
三.1 教室信息
菜单位置:【教务管理】->【课程表管理】->【教室信息】
功能描述:维护学生上课所必需的教室信息。
点击“增加”按钮,输入教室号、教室名、教学楼、地点,选择用途,维护完毕后点击“保存”即可。
选择教室信息,点击“删除”即可对删除记录,如果上课已安排的教室信息则不允许删除。
对已有教室信息,可直接进行修改,修改后“保存”结果。已被引用的教室代码不允许修改。
三.2 课程编排
菜单位置:【教务管理】->【课程表管理】->【课程编排】
功能描述:排课时首先需要设置排课条件,分别从“教学场地信息”、“学科信息设置”、“班级设置”、“合班设置”、“课时要求”、“教室分配”、“课程信息”、“课程设置”、“其他设置”等八个方面进行设置,系统将保存各项设置信息,方便用户可以随时进行排课操作。
一、排课简介
最简单的排课是设置是只需在“学科信息设置”中初始化学科信息(学科信息来自于【学科设置】中对学科的设置)后,将课程的主副课设置好,然后在“课程信息”中进行初始化、节次连排,初始化是初始【课程开设】中各班级的开课信息、教师的授课信息以及课程的课时信息,节次连排是设置一个连排值,确认后系统将以该值替换所有的连排节次。保存后即可到“排课”页面中进行排课。
图 3.21课程编排主窗口
按“排课”按钮,在系统弹出的对话框中,按“检查”按钮查看检查数据合理性,如果数据无误按“下一步”,如果有错误则在窗口中显示班级、课程、授课教师出错的相关信息;根据需要选择排课选项,按“下一步”进入排课界面;按“排课”按钮即可开始排课。多次按“排课”按钮可以进行课程连排,用户可以选择一种较好的排课方案(如错误信息较少),按“导入”按钮将结果保存到课程表中。
图 3.22排课
如有未排班级的课程或不满意自动按排的课程,可以在课程表维护中进行手动调整维护,同一节课分单、双周的课程也需要在【课程表维护】中进行手动调整。
二、排课设置
1、教学场地信息
教学场地信息:设置教学场地,对有教室限制课程的教学场地情况(如试验课需要在试验室上课,在此设置实验室的情况)进行设置。其中容量是指该教室可容纳的学生数,数量是指该种教室的数量,同一时间排的班级不能多于它的容量。按增加按键后在表格中维护教室名称、课程号(从下拉框中选择)、容量、数量后按“保存”,教室号会自动生成。
图 3.23教学场地信息设置
2、学科信息设置
首先初始化学科信息,如果“学科设置”有更改一定要在此进行初始化操作,按“初始化”按键后系统将删除已设置并保存的学科信息,各项设置分别从各选项的下拉框中选取。
1)学科:下拉选择进行学科设置。
2)教室限制设置:下拉在四种情况中选择合适选项。分别是不安排教室、按教室场地设置、指定教室和按教室分配。
3)课程优先排课设置:对重要学科如语文、数学、英语等主课课程可以设置成“特别照顾”排课或“优先”排课,而班会、自习等这类课程可以设置为“最后”排课,不设置时系统默认为“普通”,当排课时出现一些课程无法自动排进课程表时,系统将先排优先级高的课程,优先级有高到低的顺序为特别照顾、优先、普通、最后。
4)教案是否对齐设置:对该课程的授课进度是否保持一致进行设置,系统默认为“是”。
图 3.24学科信息设置窗口
3、班级设置
班级设置是以班级为单位设置排课优先权和不排课时间。
1)班级排课的优先权设置,系统将根据班级排课优先权的高低安排排课的先后次序,当班级的授课教师或教室有冲突时,优先权较高的班级先排,对于重点班或特色班可以设置“特别照顾”、“优先”排课等,不设置的班级排课优先权默认为“普通”。按“增加”后,从下拉框中选择班级和排课优先权,设置完成后按“保存”保存设置信息。
2)固定课程限制,是对班级不排课的节次进行设置,节次表示上、下午第几节课不排课,节次设置一般上午为1-4、下午1-4,0表示任意一节(即上午或者下午不上课),也可以设置(所有)班级任何一天的某节课不上课,节次在学校基本信息【学期日期维护】中设置。 按“增加”后,从下拉框中选择班级、星期、时间段、节次,设置完成后按“保存”保存设置信息。
图 3.25 班级设置窗口
4、合班设置
合班设置是将相同的课程,在相同的时间和地点,由相同的老师上课的不同班级进行合班,例如语音课,可以将两个班级合班由同一个老师在同一个语音教室上课;或者相同的课程,在相同的时间,由不同的老师上课的班级进行合班。例如男、女生分开上课的体育课,可以将两个班级合班,分成男、女两个班由两个老师同时上课。首先选择合班上课的课程,然后按“增加分组”,从班级下拉框中选择班级,再按“插入组明细”在这个分组中加入合班的班级,每个分组可以设置多个组明细(即合班班级),且每个分组中必须包含两个或两个以上的班级。合班信息的设置需要在“课程信息”页面同步后才能排课,保存时系统也会显示提示信息。
图 3.26 合班设置窗口
5、课时要求
课时要求是对课时有特殊要求的学科进行设置,节次表示要求在第几节课上课或不上课,根据学期日期维护里的设置,节次一般分为上午为1-4、下午1-4,0表示任意一节。按“增加”后从班级、学科、要求、星期几、时间段各下拉框中选择有课时要求的班级、学科、要求和时间,然后输入课时安排的节次,要求分两类一是要求在设置的时间上课另外一类是要求在设置的时间不上课。如星期一下午第3节课是教师教学活动时间所有数学教师都不上课,只需将数学教师的授课班级设置为星期一下午第3节课不上课即可。设置完成后保存设置信息,系统将提示需在“课程信息”页面中同步的信息。
图 3.27课时要求设置窗口
6、教室分配
系统提供了对某一班级使用的教室范围进行设置。如:在“课程信息”页的“教室限
制”中选择了“按教室分配”,系统将在您设置的教室中选择。点击“教室约束分配”按钮,进入教室分配向导,在左边树选择一个班级范围或者某一个班级,直接拖到右边窗口中,
图 3.28 教室分配
点击“下一步”在左边树中选择一个或者多个教室,仍然拖到右边窗口中,点击“确定”后该班级即和选择的教室进行了分配。
7、课程信息
课程信息是进行课程信息的初始化和节次连排操作(节次连排和学科信息设置里概念同),进行初始化操作后窗口中将显示“学科信息设置”的设置信息,以及【课程开设】中设置的班级、周课时和授课教师信息,可以对已设置的周课时、主/副课时、教室限制、排课优先度、教案对齐进行更改,对非整数课时的课程进行单周上课或双周上课的设置。课程信息初始化后才可以排课,如果学科信息设置、课程开设信息有更改时一定要在此重新进行初始化并保存。
图 3.29课程信息设置窗口
8、课程设置
课程设置是设置每周课时要求均匀的课程和班级,以及一天中课程的分布情况。
1)周课时均匀是指某班级的某门课程在一周内的课时是否均匀分布,此项设置可以避免课程安排过于集中。首先按“增加”从下拉框中选择需要设置的课程和班级,选择后按“保存”保存设置信息,通常对周课时较多的课程进行课时均匀的设置。
2)课程分布是指在一天中课程的分布情况,习惯在上午安排的课程多一些。按“增加”后从下拉框中选择星期(其中‘任意一天’就是包含了每一天),选择要求后按“保存”保存设置信息。
图 3.210课程设置窗口
9、其他设置
其他设置是对全校课时和教师个人对课时的特殊要求进行设置。
1)全校课时均匀主要是针对一名教师为多个班级上课时为了避免课时过分集中设定的,在此选中需要均匀分布的课程,按“保存”保存设置信息。
2)教师每日上课课时是设置教师对课时的特殊要求,避免教多门课程的教师在一天中课程分布过于集中,可以设置每天上课最多和最少上课课时,不输入节数表示0。按“增加”从教师下拉框中选择教师,在最少上课节数和最多上课节数字段中输入课时,然后按“保存”保存设置信息。
图 3.211其他设置窗口
10、排课
按照用户设置的条件进行排课操作。
1)首先按“排课”按钮。
图 3.212排课窗口
2)在弹出的窗口中检查数据的合理性,按“检查”,如果课程数据设置不合理,系统将在窗口中显示不合理数据信息,例如课时设置过大或者没有设置授课教师系统均会提供相应的系统提示。检查后没有不合理数据则点击“下一步”开始排课。
图 3.213 检查数据窗口
3)在排课系统窗口中点击“下一步”按钮,排课结果将显示在窗口中,如果在排课选项中设置了课程连排,此时可以连续点击“排课”进行连续排课,尽量减少排课时出现的错误信息后,点击“完成”按钮。
图 3.214 排课结果窗口
在排课窗口中按“导入”,将所排的课程导入到系统当中,窗口中也将显示排课结果(未排班级课程信息),关闭窗口后将不再保留排课结果,按“打印”打印排课结果。
系统排课完成的课程表在【课程表维护】显示,用户可以对其校验冲突和排课情况,并进行手工调整维护。
三.3 课程表维护
菜单位置:【教务管理】->【课程表管理】->【课程表维护】
功能描述:在【课程表调整】中对各班级课程表进行手工维护。输入学年学期(默认值为当前学年/学期),选择需维护的班级,课表中便会显示该班级的课程表信息,根据所选调课方法(选择课程或两课互换)进行课表维护,按“保存”按钮保存维护结果。按“课程校验”按钮可以查看课程有否漏排或者与其它班级发生冲突。按“复制课表”可复制以前学期的课表到本学期,对复制过来的课程表更需要进行课程校验,在“保存”前按“取消”按钮系统用原来的课表覆盖当前的维护。
系统根据学校的实际教学情况,可以提供占用教学时间,但不是课程的排课项目,如:班会等。这些排课项你可以点击“自定义学科”按钮来维护,在弹出窗口点击“增加”维护好‘描述’和‘是否启用’后,“保存”即可。在‘选择课程’时,系统将提供用户设置的这些排课项供选择。
选择课程:双击某节课,在弹出窗口中该节课所对应的学科默认为被选中,同时显示该班级已排课的所有学科及不上课(‘不上课’是指在调课时可将某节已排课的节次设置为不上课)。若只是想调整该节次的学科,则取消该节次原学科前的‘选择’框,选择另一门学科,“确定”后在主窗口中“保存”即可;若想将某节次的课程排成单/双周的形式,则需增选一门学科,并各自设置‘单/双周’即可。
两课互换:将已排好课程中的某两节课进行对调。对调时分为“不允许冲突”和“允许冲突”两种。如图所示。
图 3.31课程表调整(两课互换)
不允许冲突:选中某节课(该课程底色呈蓝色),课表中呈现红色的方格表示与当前所选节次的课程有冲突(即不允许对调),呈现绿色的方格为不冲突的课程,即可以与当前所选课程进行对调。此时,在某节课的方格处按住鼠标左键不放,将其拖动到要调换的方格处,松开鼠标即可。
允许冲突:操作同“不允许冲突”。不同处在于:选中某节课后(该课程底色呈蓝色),课表中呈现红色的方格也可与当前所选节次的课程进行对调。
三.4 班级、教师、全校、年级、教研组、专业课程表
菜单位置:【教务管理】->【课程表管理】->【班级课程表】
功能描述:课程编排后,系统会自动生成班级、年级、全校以及各教师、各教研组、各专业等课表,用户可以在相应的模块中查看及打印。此处不作详细说明。
三.5 临时调课
菜单位置:【教务管理】->【课程表管理】->【临时调课】
功能描述:选择需要调课的班级以及周次(默认为当前周次),在课程表中选择需要调课的课程(该课程底色变为蓝色),此时课表中底色呈现粉红色的方格表示与所选课程有冲突,不能调换。拖动需调课课程到相应位置(白色方格),在弹出的窗口中输入调课周次后“确定”即完成临时调课。
如果是对单双周进行调课,当前周次如果是双周的,进行代课或删除时是针对双周的任课教师,反之是单周教师。其中,‘持续周数’默认为一周并且不可以修改,如果是多周调课需要分别在所需时间进行调课操作。
双击某课程,在弹出窗口中可取消临时调课或者设置由他人代课等操作(换过课的课程不能再进行此操作)。根据需要选择所需选项,输入操作周次“确定”即可。
保存好调课信息后,进行调课的课程底色显示为绿色,对于长期的课程变动可考虑到【课程表调整】模块中进行修改。显示代码的课程是因为任课教师没有设置,需要到【必修课程开设】中进行设置。
三.6 班级实时课表
菜单位置:【教务管理】->【课程表管理】->【班级实时课表】
功能描述:实时课表指经过临时调课后的班级课表。输入学年、学期和周次(默认为当前学年/学期及当前周次),选择班级,在课表窗口中可查看班级的实时课表。
三.7 调课信息
菜单位置:【教务管理】->【课程表管理】->【调课信息】
功能描述:进行临时调课的同时在此处生成调课信息,以便用户查看。输入学年,选择学期并填写周次(默认为当前学年/学期/周次),临时调课变动表中便会显示符合设定条件的课程变动情况(比如换课、代课以及删课等信息)。
三.8 教室使用、空闲教室、无课班级查询
菜单位置:【教务管理】->【课程表管理】->【教室使用查询】、【空闲教室查询】、【无课班级查询】
功能描述:分别查询教室被安排上课情况、未被安排上课教室、未被安排上课班级情况。对查询到的结果可以点击“上页”、“下页”进行翻看,还可以进行“预览”和“打印”操作。
三.9 学科课程表、学生课表查询
菜单位置:【教务管理】->【教学计划】->【学科课程表查询】、【学生课表查询】
功能描述:分别按单学科查询课程表情况、按单个学生的课程表信息。对查询到的结果可以点击“上页”、“下页”进行翻看,还可以进行“预览”和“打印”操作。
【篇3】学生中心教务管理系统
目 录
一、 系统规划 2
1、 项目背景 2
2、 系统目标 2
3、 系统功能 2
4、 可行性分析 2
技术可行性 2
经济可行性 3
社会可行性 3
二、 系统分析 3
1、 组织机构图 3
学生选课管理系统组织就构图 5
2、 功能体系图 6
3、 业务流程图 7
4、 数据流程图 8
5、 数据字典 8
数据项条目 8
数据流条目 9
处理功能条目 9
三、 系统设计 10
1、 功能结构图 10
2、 代码设计 10
3、 输入输出设计 10
附: 12
1、 人员分工 12
2、 工作进度 12
“教务管理信息系统---学生选课管理系统”规 划
一、系统规划
1、项目背景
通过初步调查得知,西安财经学院共有教师、学生12800余人,学校下设经济学院、商学院、管理学院、信息学院、统计学院等八个二级院。其中商学院教务管理系统负责全院的教学、学生管理等工作。该学院现行学生选课信息管理业务工作量特别大,还时常出现差错。有关人员迫切要求早日开发出全院学生选课信息的管理系统,用计算机代替手工工作。学校主管领导也十分支持这项工作,现已批准投资10万元人民币用于购置设备和软件开发,同时学院还拥有雄厚的技术力量。
2、系统目标
管理全院学生的选课信息,方便学生选课信息的查询,系统的使用对象是西安财经学院商学院的所有老师和学生。
3、系统功能
●学生选课的录入,包括学号、姓名、班级、系别、所选科目
●学生选课信息的修改维护
●学生选课情况的变动,如:改选
●选课信息的查询
4、可行性分析
●技术可行性
随着计算机技术和系统开发技术的飞速发展为本选课系统提供了良好的础可利用计算机进行操作管理,方便快捷,可承载庞大的工作量且储存空间大管理起来更加容易。
●经济可行性
开发所需要的工具是VB和SQL Server.从所花费用和将来的项目收益来看是可行的。首先,开发这个系统所需要工具简单,易于维护,安全也可能得到可靠保障,开发费用低。另外,投入使用后,可以节省人力、物力、财力、同时带来许多直接和间接的效益。
●社会可行性
项目组从学校学生管理部门获取了许多学生选课信息管理方面的情况,各级领导和老师给予了有力的支持和帮助,且教务管理部门的工作人员对计算机的操作也十分熟练。因此,一旦开发成功,便可立即投入使用。因此,该系统在组织管理和操作上是可行的。
结论:本系统领导支持,需求迫切,且开发维护难度不大,开发费用较低,故开发是可行的。
二、系统分析
1、组织机构图
●商学院组织机构图
●学生选课管理系统组织就构图
2、功能体系图
3、业务流程图
4、数据流程图
5、数据字典
数据字典要描述的内容主要有:数据项、数据结构、数据流、存储文件、处理功能和外部实体。
学生选课数据字典如下所示:
●数据项条目
数据项编号
数据项名称
长度
取值范围
A-01
学号
10
数字
A-02
姓名
8
汉字
A-03
性别
2
汉字
A-04
班级
10
数字
A-05
课程名称
20
数字 字母
A-06
课程编号
6
汉字
A-07
代课老师
8
数字
A-08
课时
2
汉字 数字
A-09
教师编号
8
文本
A-10
教室编号
4
数字
●数据流条目
编号
名称
简述
数据来源
数据流向
组成
B-01
教学课程安排表
商学院公布的所选课程表
学校
教务处
课程名称+课程标号+上课地点+上课时间+代课老师
B-02
课程表
学校供学生选课的表单
学校
学生
课程名称+课程标号+上课地点+上课时间+代课老师
B-03
选课一览表
学生选择的课程表
学生
教务处
课程名称+课程标号+上课地点+上课时间+代课老师
B-04
有效选课单
审核确认有效的选课单
教务处
学生
课程名称+课程标号+上课地点+上课时间+代课老师
B-05
无效选课单
审核确认无效的选课单
教务处
学生
课程名称+课程标号+上课地点+上课时间+代课老师
●处理功能条目
处理功能
系统名:学生课程管理 编号:C001
条目名:选课表审核 别名:无
输入:选课一览表 输出:有效选课表,无效选课表
加工过程:获得选课一览表
获得课程编号
在选课信息库中查找课程
获得课程名称
若不符合选课标准则做无效选择处理
简要说明:
三、系统设计
1、功能结构图
2、代码设计
代码:选课代码设计
选课代码设计采用助记码形式编制,通过课程名称的首字母缩写组成
高等数学 GS-1001
大学英语 DY-1002
管理学 GLX-1003
会计学 KJ-1004
3、输入输出设计
选课资料
高数:课时 2 代课老师 张三
大学英语: 课时 2 代课老师 李四
管理学: 课时 3 代课老师 王五
附:
1、人员分工
组长:
组员:
人员工作安排:
总负责:
:项目背景、系统功能、可行性分析
:组织机构图、功能体系图、业务流程图、数据流程图、数据字典
:功能结构图
:代码设计
:输出设计
:撰写人员分工和工作进度情况
注:以上工作中主体由分配人员完成,如需资料调集和数据分析,可由团队内其他成员协助进而共同完成。
2、工作进度
2011年11月3日(第九周)开始进入初步规划和组员协调阶段
2011年11月10日(第十周)完成项目背景、系统功能、可行性分析以及组织机构图和功能体系图的初稿并在课堂上进行演示,请老师点评指导。
2011年11月19日(第十一周周末)进行对11月10日完成的作业和课堂上演示结果进行总结分析,寻找不足;认真完成作业的修改和完善。
2011年12月4日(第十三周周末)进入校官网教务管理系统进行摸底、积累作业所需材料;同时,于12月5日(周一)上午前往商学院教务处(行政楼526室)对主管教务处学生选课系统的教师进行详细咨询。
2011年11月14日至12月8日进行对课本第五章《系统分析》的学习和对第四章至第六章的预习、学习和及时的复习,并为管理信息系统期末大作业的顺利完成奠定坚实的基础。
2011年12月12日(第十五周)由 对组织机构图、功能体系图进行修缮,由 进行业务流程图和数据流程图材料的整理和初步定稿。
2011年12月17日(第十五周周末)确定业务流程图和数据流程图的终稿。
2011年12月19日和22日(第十六周)分别确定数据字典、功能结构图、代码设计和输出设计的初稿和终稿,工作由此进入全面总结阶段。
2011年12月23日全部完成大作业要求。
【篇4】学生中心教务管理系统
教务管理系统学生端设计
设计任务和设计要求
学生登录学生选课系统后可进行如下操作:
(1)查看备选课程及该课程的信息。
(2)查看希望教授该课程的教师的信息。
(3)选择希望选修的课程,并从候选的教师中选择两个自己认同的教师(如只有一个候选教师则只能选择一个),相当于给教师投票,该投票结果最终决定该课程的任课教师。
(4)删除误选的课程。
选课的规则如下:
(1)每个学生最多能选5门课,至少选2门课。
(2)每门课选修的人数有限,如果选修的人数超过了限制的人数,先报名的学生有上课的资格。
(3)学生选课时可以选择课程,同时选择2名候选的任课教师。
(4)每名教师最多可以教授3门课。
内容摘要
教务管理系统是一个基于桌面的系统,供管理员、教师和学生选课使用。管理员可以管理教师和学生选课的相关信息;教师可以开设课程、管理学生的选课信息以及对学生评分;学生则可以选修课程、查看成绩等。通过查询选课信息以开设自己的课程;学生则可以在一定范围内自由选修课程,查看授课老师的相关教学信息等。其中,选课活动是推进学分制建设的重要环节,也是教务管理的难点之一。选课工作顺利与否直接关系到教学秩序的稳定。因此开发一个完整的选课管理模式是其中一个至关重要的环节
本系统是一个在Microsoft Visual Studio C#环境下通过访问ADO.NET来实现数据库的连接的,由于编者知识有限,仅运行实现了该系统的学生端设计的部分功能。具体设计如下。
第一章 设计概述……………………………………… 4
第二章 总体设计……………………………………… 5
2.1 系统功能简介………………………………… 5
2.2 需求分析……………………………………… 6
2.2.1 数据需求………………………………… 6
2.2.2 事务需求………………………………… 6
第三章 详细设计……………………………………… 7
3.1 E-R模型设计……………………………………7
3.2 数据库设计………………………………………7
3.2.1 创建数据库…………………………………8
3.2.2 创建数据表…………………………………9
3.2.3 数据连接……………………………………11
3.3 程序设计与实现…………………………………12
第四章 总结………………………………………………44
参考文献………………………………………………… 45
第一章 设计概述
教务管理系统学生端的设计目标是方便学生用户使用。通过学生端应用程序,学生可以登录进入系统并进行一系列相关操作。本设计包括系统的各模块或单元程序的设计、具体的算法、相关的程序实现图以及相关的代码。
第二章总体设计
2.1 系统功能简介
本系统主要功能模块如下:
(1)系统管理
学生登录:学生用户通过登录窗口进入系统。
学生注销:学生用户完成操作后可以注销自己的登录行为。
退出系统:所有操作完成后直接退出系统。
(2)学籍管理
(3)课程管理
所有课程列表:显示所有教师开设的课程。
我的课程列表:显示当前用户所选的全部课程。
添加选课:选修教师开设的课程。
删除选课:删除已经选择的课程。
2.2 需求分析
2.2.1 数据需求
事务需求根据系统的需求,首先将要记录的信息分类,要记录的信息如下。
(1)学生信息:包括学生学号、姓名、性别、年龄、专业等。
(2)课程信息:包括课程编号、课程名、授课教师、开课地点、时间及学分等。
(3)学生选课:包括学生学号、课程编号、学分及选修号等。
2.2.2 事务需求
该系统采用三层结构,其中位于表现层的是Student项目;
位于数据访问层的则是DataAccess项目;位于数据存储层的则是数据库Student,如图(1)所示。
(1)学生端系统结构图
第三章 详细设计
3.1 E-R模型设计
具体实体相关属性在前面已给出,该系统的E-R图如
图(2)所示。
(2)E-R图
3.2 数据库设计
3.2.1 创建数据库
使用SQL Server 作为数据库,其中数据库
Student,该数据库中有如下数据表
student:保存学生信息。
course:保存教师开设课程信息。
stuCourse:保存学生选课信息。
建立数据库 Student及相关数据表:
CREATE DATABASE Student
GO
USE Student
GO
CREATE TABLE [dbo].[student]
( [stuID] [varchar] (50) NOT NULL
[stuPassword] [varchar](50) NOT NULL
[stuName] [varchar](50) NOT NULL
[stuMajor] [varchar](50) NOT NULL ,
[stuSex] [varchar] (2) NOT NULL ,
[stuBirthday] [datetime] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[course]
([courseID] [int] NOT NULL ,
[courseName] [varchar] (50) NOT NULL ,
[courseTime] [datetime] NOT NULL ,
[courseCredit] [int] NOT NULL ,
[courseTeacher] [varchar] (16) NULL ,
[courseAddress] [varchar] (50) NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[stuCourse]
([scID] [int] NOT NULL ,
[stuID] [varchar] (50)NOT NULL,,
[courseID] [int] NOT NULL ,
[scScore] [int] NOT NULL
) ON [PRIMARY]
3.2.2 创建数据表
student 表:
course表:
stuCouse表:
3.2.3 数据连接
本系使用ADO.NET访问数据库,因为每个数据提供程序都包含自己特有的Connection对象。
SQL Server.NET数据提供程序的SqlConnection对象是在System.Data.SqlClient命名空间中定义的,它包含在System.Data DLL程序集中。一般使用SqlConnection类的方法如下:
System.Data.Sqlclient.SqlConnection conn
= new System.Data.Sqlclient.SqlConnection( );
具体实例操作如下一节所述。
3.3 程序设计与实现
具体程序代码如下:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace SchoolMIS.UI.Student
{
static class Program
{
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForms());
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace SchoolMIS.UI.Student
{
class GlobalInfo
{
private static bool isLogin = false;
private static string stuName;
private static string stuID;
public static bool IsLogin
{
get
{
return isLogin;
}
set
{
isLogin = value;
}
}
public static string StuName
{
get
{
return stuName;
}
set
{
stuName = value;
}
}
public static string StuID
{
get
{
return stuID;
}
set
{
stuID = value;
}
}
}
}
主界面:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace SchoolMIS.UI.Student
{
public partial class MainForms : Form
{
public MainForms()
{
InitializeComponent();
}
private void mainMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void stuLogin_Click(object sender, EventArgs e)
{
LoginForm frmLogin = new LoginForm();
frmLogin.ShowDialog();
if (GlobalInfo.IsLogin)
{
this.ChangeMenuState();
}
}
private void ChangeMenuState()
{
//改变菜单的时使能状态
this.menuCourse.Enabled = !this.menuCourse.Enabled;
this.stuLogin.Enabled = !this.stuLogin.Enabled;
this.stuLogout.Enabled = !this.stuLogout.Enabled;
}
private void stuLogout_Click(object sender, EventArgs e)
{
GlobalInfo.StuID = String.Empty;
GlobalInfo.StuName = String.Empty;
GlobalInfo.IsLogin = false;
MessageBox.Show("成功退出本系统", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.ChangeMenuState();
}
private void stuExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void courseAll_Click(object sender, EventArgs e)
{
AllCourseForm allCourseForm = new AllCourseForm();
allCourseForm.MdiParent = this;
allCourseForm.Show();
}
private void courseSelected_Click(object sender, EventArgs e)
{
SelectedCourseForm selectedCourseForm = new SelectedCourseForm();
selectedCourseForm.MdiParent = this;
selectedCourseForm.Show();
}
}
}
程序实现如图:
首先进入登录界面:
登录系统:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using SchoolMIS.DataAccess.Student.SQLServer;
namespace SchoolMIS.UI.Student
{
public partial class LoginForm : Form
{
public LoginForm()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
if (this.txtStuNum.Text.Trim() == "")
{
MessageBox.Show("请输入您的学号", "错误提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else if (this.txtStuPassword.Text.Trim() == "")
{
MessageBox.Show("请输入您的密码", "错误提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
StudentDB stuDbAccess = new StudentDB();
string stuName = stuDbAccess.Login(txtStuNum.Text.Trim(), txtStuPassword.Text.Trim());
if (stuName != String.Empty)
{
GlobalInfo.StuName = stuName;
GlobalInfo.StuID = this.txtStuNum.Text;
GlobalInfo.IsLogin = true;
this.Dispose();
}
else
{
MessageBox.Show("用户名或者密码错误,请重新输入。", "错误提示:");
}
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.txtStuNum.Text = "";
this.txtStuPassword .Text ="";
}
private void LoginForm_Load(object sender, EventArgs e)
{
}
}
}
所有课程:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using SchoolMIS.DataAccess.Student.SQLServer;
namespace SchoolMIS.UI.Student
{
public partial class AllCourseForm : Form
{
BindingSource bsAllCourse;
public AllCourseForm()
{
InitializeComponent();
}
int n=0;
public int N
{
get { return n; }
set { n = value; }
}
public void InitialData()
{
CourseDB courseDB = new CourseDB();
DataSet courseDataSet = courseDB.GetAllCourse();
bsAllCourse = new BindingSource();
bsAllCourse.DataSource = courseDataSet.Tables["course"];
this.dgvAllCourse.DataSource = bsAllCourse;
this.txtCourseAddress.DataBindings.Add(new Binding("Text", bsAllCourse, "上课地点"));
this.txtCourseCredit.DataBindings.Add(new Binding("Text", bsAllCourse, "学分"));
this.txtCourseID.DataBindings.Add(new Binding("Text", bsAllCourse, "编号"));
this.txtCourseName.DataBindings.Add(new Binding("Text", bsAllCourse, "名称"));
this.txtCourseTime.DataBindings.Add(new Binding("Text", bsAllCourse, "上课时间"));
this.txtTeacherName.DataBindings.Add(new Binding("Text", bsAllCourse, "教师"));
this.ChangeButtonState();
if (this.bsAllCourse.Position == -1)
{
this.btnChoose.Enabled = false;
}
}
private void ChangeButtonState()
{
if (this.bsAllCourse.Position == this.bsAllCourse.Count - 1)
{
this.btnNext.Enabled = false;
}
else
{
this.btnNext.Enabled = true;
}
if (this.bsAllCourse.Position == 0)
{
this.btnPre.Enabled = false;
}
else
{
this.btnPre.Enabled = true;
}
}
private void AllCourseForm_Load(object sender, EventArgs e)
{
InitialData();
}
private void btnPre_Click(object sender, EventArgs e)
{
this.bsAllCourse.MovePrevious();
this.ChangeButtonState();
}
private void btnNext_Click(object sender, EventArgs e)
{
this.bsAllCourse.MoveNext();
this.ChangeButtonState();
}
private int GetCourseID(int rowIndex)
{
return (int)((DataTable)bsAllCourse.DataSource).Rows[rowIndex][0];
}
private void btnChoose_Click(object sender, EventArgs e)
{
CourseDB courseDB = new CourseDB();
bool addResult = courseDB.AddSelectedCourse(GlobalInfo.StuID, GetCourseID(bsAllCourse.Position));
if (addResult)
{
MessageBox.Show("您已经成功选择该课程,请注意学习!");
}
else
{
MessageBox.Show("操作失败,请稍后重试!");
}
}
private void refreshDataSource()
{
CourseDB courseDB = new CourseDB();
DataSet courseDataSet = courseDB.GetSelectedCourse(GlobalInfo.StuID);
bsAllCourse.DataSource = courseDataSet.Tables["course"];
}
}
}
登录过程中,会出现以下几个界面:
如图:
选修课程:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using SchoolMIS.DataAccess.Student.SQLServer;
namespace SchoolMIS.UI.Student
{
public partial class SelectedCourseForm : Form
{
BindingSource bsAllCourse;
public SelectedCourseForm()
{
InitializeComponent();
}
private void SelectedCourseForm_Load(object sender, EventArgs e)
{
InitialData();
}
private void InitialData()
{
CourseDB courseDB = new CourseDB();
DataSet courseDataSet = courseDB.GetSelectedCourse(GlobalInfo.StuID);
bsAllCourse = new BindingSource();
bsAllCourse.DataSource = courseDataSet.Tables["course"];
this.dgvAllCourse.DataSource = bsAllCourse;
}
private void ChangeButtonState()
{
if (this.bsAllCourse.Position == -1)
{
this.btnUnChoose.Enabled = false;
this.btnNext.Enabled = false;
this.btnPre.Enabled = false;
}
if (this.bsAllCourse.Position == this.bsAllCourse.Count - 1)
{
this.btnNext.Enabled = false;
}
else
{
this.btnNext.Enabled = true;
}
if (this.bsAllCourse.Position == 0)
{
this.btnPre.Enabled = false;
}
else
{
this.btnPre.Enabled = true;
}
}
private void btnPre_Click(object sender, EventArgs e)
{
this.bsAllCourse.MovePrevious();
this.ChangeButtonState();
}
private void btnNext_Click(object sender, EventArgs e)
{
this.bsAllCourse.MoveNext();
this.ChangeButtonState();
}
private void btnUnChoose_Click(object sender, EventArgs e)
{
CourseDB courseDB = new CourseDB();
bool deleteResult = courseDB.DeleteSelectedCourse(Convert.ToInt32(this.txtCourseID.Text));
if (deleteResult)
{
MessageBox.Show("您已经成功放弃了该课程!");
}
else
{
MessageBox.Show("操作失败,请稍后重试!");
}
this.ChangeButtonState();
}
private void txtCourseID_TextChanged(object sender, EventArgs e)
{
}
private void dgvAllCourse_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void txtCourseName_TextChanged(object sender, EventArgs e)
{
}
private void txtCourseTime_TextChanged(object sender, EventArgs e)
{
}
private void txtCourseAddress_TextChanged(object sender, EventArgs e)
{
}
private void txtTeacherName_TextChanged(object sender, EventArgs e)
{
}
private void txtCourseCredit_TextChanged(object sender, EventArgs e)
{
}
}
}
进入所有课程能够界面:
具体操作情况如图:
退出课程界面后:
进入选课列表:
数据库连接:
using System;
using System.Collections.Generic;
using System.Text;
namespace SchoolMIS.DataAccess.Student.SQLServer
{
class Constants
{
//数据库链接字符
public static readonly string ConnString = @"server=(local);user id=sa;password=1234;Initial Catalog=Student;";
//验证学生登录
public static readonly string StuLogin = @"select stuName from student
where stuID=@stuID and stuPassword=@stuPassword";
public static readonly string GetAllCourse = @"SELECT courseID AS 编号,
courseName AS 名称,
courseTime AS 上课时间 ,
courseAddress AS 上课地点,
courseCredit AS 学分,
courseTeacher AS 教师
FROM course";
public static readonly string AddSelectedCourse = @"INSERT INTO stuCourse(stuID,courseID) VALUES(@stuNum,@courseID)";
public static readonly string IsSelectedCourse = @"SELECT COUNT(scID) FROM stuCourse WHERE stuID=@stuNum AND courseID=@courseID";
public static readonly string GetSelectedCourse = @"SELECT stuCourse.scID AS 选课编号,
courseName AS 名称,
courseTime AS 上课时间,
courseAddress AS 上课地点,
courseCredit AS 学分,
courseTeacher AS 教师
FROM course,stuCourse
WHERE stuCourse.stuID=@stuNum AND course.courseID=stuCourse.courseID";
public static readonly string DeleteSelectedCourse = @"DELETE FROM stuCourse WHERE scID=@scID";
}
}
课程信息:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace SchoolMIS.DataAccess.Student.SQLServer
{
public class CourseDB
{
public DataSet GetAllCourse()
{ //建立数据库连接对象
SqlConnection conn = new SqlConnection(Constants.ConnString);
//建立数据库命令对象
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.GetAllCourse;
cmd.CommandType = CommandType.Text;
SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = cmd;
DataSet allCourse = new DataSet();
try
{
dataAdapter.Fill(allCourse, "course");
return allCourse;
}
catch (SqlException ex)
{
return null;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
public bool AddSelectedCourse(string stuID, int courseID)
{
if (this.IsSelectedCourse(stuID, courseID))
{
return true;
}
else
{
SqlConnection conn = new SqlConnection(Constants.ConnString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.AddSelectedCourse;
cmd.CommandType = CommandType.Text;
SqlParameter paramStuNum = new SqlParameter("@stuID", stuID);
cmd.Parameters.Add(paramStuNum);
SqlParameter paramCourseID = new SqlParameter("@courseID", courseID);
cmd.Parameters.Add(paramCourseID);
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
return true;
}
catch (SqlException ex)
{
return false;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
}
public DataSet GetSelectedCourse(string stuNum)
{
SqlConnection conn = new SqlConnection(Constants .ConnString );
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.GetSelectedCourse;
cmd.CommandType = CommandType.Text;
SqlParameter paramStuNum = new SqlParameter("@stuNum", stuNum);
cmd.Parameters.Add(paramStuNum);
SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = cmd;
DataSet selectedCourse = new DataSet();
try
{
dataAdapter.Fill(selectedCourse, "course");
return selectedCourse;
}
catch
{
return null;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
public bool DeleteSelectedCourse(int scID)
{
SqlConnection conn = new SqlConnection(Constants.ConnString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.DeleteSelectedCourse;
cmd.CommandType = CommandType.Text;
SqlParameter paramSCID = new SqlParameter("@scID", scID );
cmd.Parameters.Add(paramSCID);
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
return true;
}
catch (SqlException ex)
{
return false;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
public bool IsSelectedCourse(string stuNum, int courseID)
{
SqlConnection conn=new SqlConnection (Constants.ConnString );
SqlCommand cmd=new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.IsSelectedCourse;
cmd.CommandType = CommandType.Text;
SqlParameter paramStuNum = new SqlParameter("@stuNum", stuNum);
cmd.Parameters.Add(paramStuNum);
SqlParameter paramCourseID = new SqlParameter("@courseID", courseID);
cmd.Parameters.Add(paramCourseID);
try
{
conn.Open ();
int result=(int)cmd.ExecuteScalar ();
conn.Close ();
if(result ==1)
{
return true ;
}
else
{
return false ;
}
}
catch (SqlException ex)
{
return false ;
}
finally
{
if(conn.State ==ConnectionState.Open )
{
conn.Close ();
}
}
}
}
}
学生信息:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace SchoolMIS.DataAccess.Student.SQLServer
{
public class StudentDB
{
public string Login(string stuID, string stuPsw)
{
//建立数据库链接对象
SqlConnection conn = new SqlConnection(Constants.ConnString);
//建立数据库命令对象
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.StuLogin;
cmd.CommandType = CommandType.Text;
//添加参数给数据命令
SqlParameter prmStuNum = new SqlParameter("@stuID", stuID);
SqlParameter prmStuPassword = new SqlParameter("@stuPassword", stuPsw);
cmd.Parameters.Add(prmStuNum);
cmd.Parameters.Add(prmStuPassword);
try
{
conn.Open();
object stuName = cmd.ExecuteScalar();
if (stuName != null)
{
return stuName.ToString();
}
else
{
return String.Empty;
}
}
catch (SqlException ex)
{
return String.Empty;
}
finally
{
//确保数据库连接被关闭
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
}
}
//------------------------------------------------------------------------------
//
// 此代码由工具生成。
// 运行库版本:2.0.50727.832
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
//
//------------------------------------------------------------------------------
namespace SchoolMIS.DataAccess.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Student.mdf;Integrated " +
"Security=True;User Instance=True")]
public string StudentConnectionString {
get {
return ((string)(this["StudentConnectionString"]));
}
}
}
}
具体退出界面在上图中皆有体现。
以上即为本系统的详细设计过程。
第四章 总结
本次实习任务为利用所学的计算机知识开发出一套完整的管理系统。实习期间让我学会了很多,当然也发现了自己的许多不足。
该系统利用了C#语言的相关知识,简单的设计了一个学生选课所需的管理系统。在设计的过程中,由于编者现有知识掌握的有限以及时间的仓促,所以整个系统看上去一目了然,比较简单。但在设计的过程中也掌握了许多,特别是在探究算法时,必须具备一定的逻辑知识等。
然而与上学期课程设计比较,本次设计中,运用C#结合SQL Server 2000开发的系统,减少了代码的入录,实现了一些只用C#编写不能实现的功能。若只用C#编写程序对一些数据资料都应输入到相应的代码中,若数据资料稍一多,使代码文件看起来繁琐,某些代码重复使用,重复书写,工作量大。而通过SQL Server 2000创建数据库,建立数据资料,运用代码C#与数据库建立连接。SqlDataAdapter 作为数据适配器可以将数据从数据库中取出来,放到DataSet以供程序调用;SqlCommand 和SqlDataReader 可以执行简单的查询和读取数据。这样建立的系统资料更加完备充实。浏览也方便,修改资料也方便。
结合这次设计,我会在以后的学习过程中更加认真学好每一门计算机语言,认真钻研其中的开发理论知识,相信在不久的将来,我会将该系统完善成一个很好的应用软件!
参考文献
[1] 郭常圳. C#网络应用开发例学有实践. 清华大学出版社. 2006
[2] 邵鹏鸣. VisualC#程序设计基础教程. 清华大学出版社. 2005
[3] 王晟 邓远辉. VisualC++.NET数据开发经典案例解析. 清华大学出版社.2006
【篇5】学生中心教务管理系统
大学学生成绩管理信息管理系统分析报告大学学生教务管理系统规格需求分析
教务管理是学校的教务工作的主要内容,其信息量大,信息变动频繁历来是各学校的头疼问题,随着人们对用计算机的使用越来越广泛以及互联网络普及,教务管理也已经基本形成了多元的网络化管理,极大的方便了广大师生,也方便了学校对教务工作的管理,大大的提高了教学质量。
本系统采用ASP结合ACCESS数据库进行设计。教育管理系统可以实现教务信息的集中管理、分散操作、信息共享,使传统的教务管理朝数字化、无纸化、智能化、综合化的方向发展,并为进一步实现完善的计算机教务管理系统和全校信息系统打下良好的基础。教务管理系统从管理和使用的角度分为两个部分:学校教务管理端和学生使用端。前者主要有系统管理员和教务处人员和各院系教务员及任课教师使用,后者则是主要面对在校学生。
学生管理信息系统的系统分析部分,包括可行性分析、业务流程分析等.学生信息管理系统可以说是一个综合性的学校学生管理系统,这它集成了学生学籍管理系统、学生成绩管理系统、学生档案管理系统、学生缴费管理系统等多种功能,因而具有较强的实用性和先进性。
通过调查,要求系统需要有以下功能:⑴由于操作人员的计算机知识普遍较差,要求有良好的人机界面;⑵由于该系统的使用对象多,要求有较好的权限管理;⑶原始数据修改简单方便,支持多条件修改⑷方便的数据查询,支持多条件查询;⑸在相应的权限下,删除数据方便简单,数据稳定性好;⑹数据计算自动完成,尽量减少人工干预;
由于本系统管理的对象单一,都是在校学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。因此,比较适合于采用数据库管理。且学校用于学生管理的微机是PIII以上的机器,在存储量、速度方面都能满足数据库运行的要求。在技术难度方面,于有指导老师的指导和相关参考文献,特别是网
6
页脚内容
大学学生成绩管理信息管理系统分析报告
上资料,特别是参考其它程序的功能,因此完全可以实现。
本系统的设计是在Windows98中文版操作系统环境下,使用VisualBasic6.0中文版开发成功的。数据库是MIS中的重要支持技术,在MIS开发过程中,如何选择数据库管理是一个重要的问题,目前,数据库产品较多,每种产品都具有各自的特点和适用范围,因此,在选择数据库时,应考虑数据库应用的特点及适用范围,本系统选用的数据库语言介绍如下:
一,VisualBasic语言
VisualBasic是一种可视化的、面对对象和条用事件驱动方式的结构化高级程序设计,可用于开发Windows环境下的种类应用程序。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础。在VisualBasic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的应用程序接口(API函数,以及动态链接(DLL、动态数据交换(DDE、对象的链接与嵌入(OLE、开放式数据访问(ODBC等技术,可以高效、快速地开发出Windows环境下功能强大、图形界面丰富的应用软件系统。总的来说,VisualBasic具有以下特点:
二,可视化编程:
用传统程序设计语言设计程序时,都是通过编写程序代码来设计用户界面,在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察。如果对界面的效果不满意,还要回到程序中修改。有时候,这种编程-编译-修改的操作可能要反复多次,大大影响了软件开发效率。VisualBasic提供了可视化设计工具,把Windows界面设计的复杂性“封装”起来,开发人员不必为界面设计而编写大量程序代码。只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部库件”,即图形对象,并设置这些图形对象的属性。VisualBasic自动产生界面设代码,程序设计人员只需要编写实现程序功能的那部分代码,从而可以大大提高程序设计的效率。
面向对象的程序设计4.0版以后的VisualBasic支持面向对象的程序设计,但它与一般的面向对象的程序设计语言(C++不完全相同。在一般的面向对
页脚内容
6
大学学生成绩管理信息管理系统分析报告
象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;而VisualBasic则是应用面向对象的程序设计方法(OOP,把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,VisualBasic自动生成对象的程序代码并封装起来。每个对象以图形方式显示在界面上,都是可视的。
结构化程序设计语言
VisualBasic是在BASIC语言的基础上发展起来的,具有高级程序设计语言的语句结构,接近于自然语言和人类的逻辑思维方式。VisualBasic语句简单易懂,其编辑器支持彩色代码,可自动进行语法错误检查,同时具有功能强大且使用灵活的调试器和编译器。VisualBasic是解释型语言,在输入代码的同时,解释系统将高级语言分解翻译成计算机可以识别的机器指令,并判断每个语句的语法错误。在设计VisualBasic程序的过程中,随时可以运行程序,而在整个程序设计好之后,可以编译生成可执行文件(.EXE,脱离VisualBasic环境,直接在Windows环境下运行。
事件驱动编程机制
VisualBasic通过事件来执行对象的操作。一个对象可能会产生多个事件,每个事件都可以通过一段程序来响应。例如,命令按钮是一个对象,当用户单击该按钮时,将产生一个“单击“(CLICK事件,而在产生该事件时将执行一段程序,用来实现指定的操作。
在用VisualBasic设计大型应用软件时,不必建立具有明显开始和结束的程序,而是编写若干个微小的子程序,即过程。这些过程分别面向不同的对象,由用户操作引发某个事件来驱动完成某种特定的功能,或者由事件驱动程序调用通用过程执行指定的操作,这样可以方便编程人员,提高效率。访问数据库
VisualBasic具有强大的数据库管理功能,利用数据控件和数据库管理窗口,可以直接建立或处理MicrosoftAccess格式的数据库,并提供了强大的数据存储和检索功能。同时,VisualBasic还能直接编辑和访问其他外部数据库,
页脚内容
6