课程设计学生选修课程系统设计书.docx
《课程设计学生选修课程系统设计书.docx》由会员分享,可在线阅读,更多相关《课程设计学生选修课程系统设计书.docx(38页珍藏版)》请在冰豆网上搜索。
课程设计学生选修课程系统设计书
摘要
随着课程改革的不断深入,学校规模不断扩大、课程项目不断增多,为了解决学生选课管理上的复杂的人工操作,减轻重复工作,故设计了选课系统。
学校规模的扩大使得学校对每年新生入学、毕业生离校及本校各种分流机制造成的学生信息产生变动,如学籍变动、个人信息修改。
为了适应课程的改革,学校在每个学期都要开设一定的课程提供给学生,让学生根据自己的情况来选择,根据学生选择结果给出课程表。
本校根据教学实际,为了使教师有效地管理学生信息,设计学生信息管理系统,由此形成学生成绩管理系统,本文就此设计思路进行阐述。
随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,因此,迫切需要开发基于互联网的课程信息管理系统来提高管理工作的效率。
基于校园网的学生选课管理系统,在学生选课的规范管理、科学统计和快速查询方面具有较大的实用意义。
它提高了信息的开放性,大大地改善了学生、教师对其最新信息查询的准确性.
关键词:
选课系统;学生信息管理系统;数据流图
Abstract
Withthedeepeningofthecurriculumreform,increasingtheschoolcontinuestoexpandthescale,courseproject,inordertosolvethecomplexmanualoperationofstudentmanagement,reduceduplicationofwork,sothedesignofthecourseselectionsystem.Theschoolscaleexpansionsothattheschoolofnewstudentseachyear,theschoolleaversandvariousdistributionmechanismofstudentinformationchanges,suchasthestudentstatuschanges,personalinformationchanges.Inordertoadapttothereformofcurriculum,theschoolshouldsetupsomecoursesavailabletostudentsineachsemester,studentsaccordingtotheirownsituationtochoose,accordingtotheirchoiceresultsaregivencurriculum.Theschoolaccordingtotheteachingpractice,inordertoenableteacherstoeffectivelymanagestudentinformation,studentinformationmanagementsystemdesign,therebyformingastudentachievementmanagementsystem,thispaperdescribedthedesignideas.
Withthecontinuousexpansionofschoolsize,thenumberofprofessional,class,studentsincreaseddramatically,theamountofinformationonavarietyofelectivestudentsalsomultiplied,andnowmanycollegestudentscoursemanagementstillstaysinthecomplexmanualoperation,toomuchrepeatedwork,heavyworkload,lowefficiency,therefore,itisurgenttodevelopcurriculuminformationmanagementsystembasedonInternettoimprovemanagementefficiency.Studentcoursemanagementsystembasedoncampusnetwork,isofgreatpracticalsignificanceinstandardizingmanagement,studentelectivesciencestatisticsandrapidinquiry.Itimprovestheopennessofinformation,hasgreatlyimprovedtheaccuracyofstudents,teachersofthelatestinformationquery.
Keywords:
coursesystem,;studentinformationmanagementsystem;dataflowdiagram
1概述
1.1学生选修课的介绍
现代的社会是信息化的社会,信息无所不在。
在生产领域、流通领域、各个部门每天都和信息打交道,如何处理如此多的信息成为了一个重要的课题。
学生在学期开始选课是教学活动中的一个重要环节,该环节如果能管理好,它不仅能加快学生的选课速度,也提高了整个活动的效率。
大学一般都有上千名学生,每学期开始学生都要选课,因而产生了大量的课程信息。
考虑到用户使用的方便和处理的信息量系统要完成录入,保存,查询,修改和删除课程信息的各种过程,能打印出课程信息表。
系统的主要使用对象是需要选课的学生。
学生在选课是要察看各个课程的详细信息,还要选择一些感兴趣的课程,需要生成课表,在发现课程有冲突后能够修改先前选择的信息。
需要随学生选课的变化,计算相应的总学分。
在全部选定后,打印报表。
系统还需要管理员来查看和修改学生的总体选课情况课程信息和学生信息。
选课系统开发的目标是实现学生选课信息关系的系统化、规范化和自动化
为保证系统安全高效地运行,本系统把用户划分为2类:
管理者和学生。
不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。
1.2管理者和学生在本系统的功能
管理者:
查询学生选课情况、自己任课情况、获取自己所担任课程分班表、录入及修改成绩等。
学生:
查询本人信息、教师任课信息、选课、选课信息查询、成绩查询。
1.3对功能的规定
1).可实现学生选课注册。
2).方便实现学生选课信息查询。
3).可对学生成绩档案进行管理,成绩表单生成简便。
4).安全有效的用户区分,管理。
5).档案数据的高安全性,保密性。
6).有帮助文档
1.4系统开发的意义
学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:
效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
因此,开发这样一套软件成为很有必要的事情
1.5系统开发的背景
目前,我国的高等教育事业蓬勃发展,高校的规模不断扩大,同时,高校的教学改革也在全面推行,学分制在各高校全面启动。
学分制——允许学生在计划的指导下,根据自己的条件、能力、志趣,有选择地支配自己的学习。
因此,学生的选课就成为推行学分制的重要管理任务。
以往的选课均是在计划模式下进行:
每位教师将所开的课程名称,个人简介,课程限选人数,限选专业等信息交给教务处,教务处再将这些信息统一成册,分发给各个班级班长,由班长将本班的选课情况统计并返回教务处。
这是一个相当长的周期,并且耗费大量的人力、物力,对选择结果没有控制。
学生选课系统能够让学生们在网络上自主选择选修课程,教务处的工作人员则通过网络来处理学生的选课信息。
这个系统实现了对信息数据的浏览、查询、编辑和管理等基本数据库操作,采取模块化的编写思想,提高了可读性,同时提高了开发效率,从而实现了校园无纸化办公,提高选课的效率,减轻选课操作的工作量,从而提高教学管理的效率
2总体设计
2.1学生选修课程总体设计模板
描述:
(1)对于后台管理数据库,可以列出以下数据项和数据结构
管理员信息:
管理员名称、管理员密码。
课程信息:
课程号、课程名称、课程类别、开课系。
选课信息:
课程号、学生学号、成绩
(2)在管理员菜单中管理员可以进行对选修课程的输入和删除,从而使得学生可以去进入学生菜单去选择选修的课程
(3)学生可以在学生菜单中先进行对课程的浏览,再进入选择模块进行对课程的选择,当学生想查看自己的选修课程信息时进入查询模块就可以查询到自己所选的课程和课程信息。
若对所选的课程不满意可以进入删除模块进行删除
(4)当输入1到3以外的数字时进入不到任何界面
(5)该程序采用多个main()函数模块分别来实现程序的运行,通过使用数组功能来实现数据的录入,使用strcpy()函数来实现录入信息的复制,整个结构从整体来看使用了选择结构,break..case..的合理利用
)
3详细设计
3.1主函数,头文件及结构体声明
主函数设计地比较简洁,只是提供一个主菜单,switch语句将整个程序分为两个大的功能模块:
进入管理者界面和进入学生界面。
当输入1时进入管理员菜单,当输入2时进入学生菜单,当输入3时退出程序
[程序]
intmain()
{
intn,w=1;
do
{
system("cls");puts("\n\n\t\t*****************MENU******************\n\n");
puts("\t\t\t\t1.以管理员身份登录\n");
puts("\t\t\t\t2.以学生身份登录\n");
puts("\t\t\t\t3.退出");
puts("\n\n\t\t*******************************************\n");
printf("Chioseyournumber(1-3):
[]\b\b");
scanf("%d",&n);
switch(n)
{
case1:
Mangers();break;
case2:
Students();break;
case3:
w=0;break;
default:
;
}
}
while(w==1);
return0;}
3.2管理员功能模块
管理员的功能一共有四个功能:
浏览,查询,添加,删除课程,运用字符串处理函数处理密码的问题,用一个switch语句实现函数的调用。
当进入登陆界面后输入管理员密码1进入管理员菜单,来进行对课程的输入和删除
[程序]
voidMangers()
{
intn,w=1,flag=0,i=3;
chars[8];
charpassword[7]="1";
do
{
printf("\n\nEnterpassword:
");
scanf("%s",s);
if(!
strcmp(s,password))//进行密码匹配验证
{
flag=1;
break;
}
else
{
printf("\n\nError!
Youonlyhave%dtimes!
Enteragain:
\n",i-1);
i--;
}
}
while(i>0);
if(!
flag)
{
printf("youhaveEnter3times!
");//输入密码超过了3次!
!
exit(0);//自动退出
}
do
{
system("cls");
puts("\n\n\t\t*********************管理员菜单***********************\n\n");
puts("\t\t\t\t1---浏览课程\n");
puts("\t\t\t\t2---查询课程\n");
puts("\t\t\t\t3---添加课程\n");
puts("\t\t\t\t4---删除课程\n");
puts("\t\t\t\t5---返回主菜单");
puts("\n\n\t\t******************************************************\n");
printf("Chioseyournumber(1-5):
[]\b\b");
scanf("%d",&n);
switch(n)
{
case1:
prin();break;
case2:
search();break;
case3:
insert();savefile();break;
case4:
del();savefile();break;
case5:
return;
default:
;
}
}
while(w==1);
}
voidStudents()
{
intn,w=1;
do
{
system("cls");
puts("\n\n\t\t*********************学生菜单***********************\n\n");
puts("\t\t\t\t1---浏览所有课程\n");
puts("\t\t\t\t2---查询课程信息\n");
puts("\t\t\t\t3---选择选修课程\n");
puts("\t\t\t\t4---浏览我选修的课程\n");
puts("\t\t\t\t5---删除错选课程\n");
puts("\t\t\t\t6---返回主菜单");
puts("\n\n\t\t****************************************************\n");
printf("Chioseyournumber(1-6):
[]\b\b");
scanf("%d",&n);
switch(n)
{
case1:
prin();break;
case2:
search();break;
case3:
choose();break;
case4:
prin1();break;
case5:
del();savefile1();break;
case6:
return;
default:
;
}
}
while(w==1);
3.3学生功能菜单
学生功能菜单包括六个功能:
浏览课程,查询课程,选修课程,浏览我所选修的课程,添加选修课程,删除错选的课程,也是用到switch语句来调用函数。
[程序]
voidStudents()//学生登录菜单
{
intn,w=1;
do
{
system("cls");
puts("\n\n\t\t************学生菜单**************\n\n");
puts("\t\t\t\t1---浏览所有课程\n");
puts("\t\t\t\t2---查询课程信息\n");
puts("\t\t\t\t3---选择选修课程\n");
puts("\t\t\t\t4---浏览我选修的课程\n");
puts("\t\t\t\t5---删除错选课程\n");
puts("\t\t\t\t6---返回主菜单");
puts("\n\n\t\t***********************************\n");
printf("Chioseyournumber(1-6):
[]\b\b");
scanf("%d",&n);
switch(n)
{
case1:
prin();break;
case2:
search();break;
case3:
choose();break;
case4:
prin1();break;
case5:
del();savefile1();break;
case6:
return;
default:
;
}
}
while(w==1);
3.4创建链表模块
(1)从标准输入文件输入字符串到string字符数组,再用fputs函数把此字符串送入file1.txt文件中。
(2)由于fputs函数不会在输出一个字符串之后加上一个“\n”字符,为了在从磁盘中取出数据时能区分各字符串,要在存入时使用fputs函数输出一个“\n”。
(3)由于输入循环的控制条件是字符串的长度不为0,所以结束输入操作的方法是在最后一行只输入一个Enter键功能说明 ,录入课程信息代码。
创建链表模块
[程序]
SUB*create_form()//创建链表
{
SUB*head,*tail,*p;
intnum,stime,ttime;
intetime,score,term;
charname[20],kind[10];
intsize=sizeof(SUB);
head=tail=NULL;
printf("输入选修课程信息:
\n");
scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);
while(num!
=0)
{
p=(SUB*)malloc(size);
p->num=num;
strcpy(p->name,name);
strcpy(p->kind,kind);
p->stime=stime;
p->ttime=ttime;
p->etime=etime;
p->score=score;
p->term=term;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);
}
tail->next=NULL;
returnhead;
}
3.5浏览模块
浏览模块主要用管理员中的“浏览课程”和学生功能中的“浏览所有所有课程”,将所有的课程信息输出,即将all_sub.txt文件里面的内容全部输出。
在浏览界面中不能进行删除或添加课程,只能够来看课程的信息或选择的课程信息。
[程序]
voidprin()//浏览所有课程
{
SUB*ptr;
head=NULL;
readfile();
if(head==NULL)
{
printf("\n\n\t*********NORECORDS!
************\n");
return;
}
printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");
for(ptr=head;ptr;ptr=ptr->next)
{
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);
}
system("pause");
}
voidprin1()//浏览所有已选修课程
{
SUB*ptr;
FILE*fp;
if((fp=fopen("3.txt","r"))==NULL)
{
printf("Cannotopenfile.\n");
choose();
}
printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");
while(!
feof(fp))
{
ptr=(SUB*)malloc(sizeof(SUB));
fscanf(fp,"%d%s%s%d%d%d%d%d\n",&ptr->num,ptr->name,ptr->kind,&ptr->stime,&ptr->ttime,&ptr->etime,&ptr->score,&ptr->term);
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);
}
system("pause");
}
3.6查询模块
查询模块主要用于管理员功能中的“查询课程”和学生功能模块中的“查询所有课程”,查询模块共分为三个查询方法:
按课程名称查找,按课程性质查找和按学分查找switch语句中,每一个case语句就是一中查询方法:
[程序]
voidsearch()//课程信息查询
{
inta,num;
intt=1;
chartype[10],min[10];
SUB*ptr;
L1:
system("cls");
printf("\n\n\t\t**********请选择查询方式*************\n");
printf("\n\t\t\t1---按课程名称查找\n");
printf("\n\t\t\t2---按课程性质查找\n");
printf("\n\t\t\t3---按学分查找\n");
printf("\n\t\t\t4---退出查找\n");
printf("\n\n\t\t**************************************\n");
printf("\n\nChioseyournumber(1-4):
[]\b\b");
scanf("%d",&a);
switch(a)
{
case1:
printf("请输入要查找的课程的名称:
");
scanf("%s",min);
printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");
for(ptr=head;ptr;ptr=ptr->next)
if(strcmp(min,ptr->name)==0)
{
printf("%5d%1