课程管理系统设计
⑴ 课程管理系统分析报告与设计报告书怎么写
一.需求描述 1、系统设计的背景信息 教务管理是大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,教务日常管理工作日趋繁重、复杂。迫切需要研制开发一款基于Internet网的综合网上教育管理软件。传统的手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范教学管理行为,从而提高了管理效率和水平。教务管理系统以计算机为工具,通过对教务管理所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,使其有更多的精力从事教务管理政策的研究实施,教学计划的制定执行和教学质量的监督检查,从而全面提高教学质量。目前还有一些单位和部门还是使用传统人工的方式公务员之家管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。同时随着学校的规模不断扩大,学生数量急剧增加,有关教务的各种信息量也成倍增长。所以教务信息管理系统的可运行性和功能效用的多少就显得尤为重要了。 2、需求分析 描述对系统的功能需求、信息需求和系统性能要求等。 教务管理系统(Ecati0nal Administrati0n Man— agement System)~ 个学校管理系统的一个重点。从 业务角度来分析.高校的教务管理系统应满足以下需 求: (1)通过智能化资源调配管理优化高校教学资源,高效调配和合理利用教师、教室、实验室、时间等.解决高校资源紧缺、多校区、院系两级管理状况下排课、排实验室、排考场难等问题; (2)随着学分制的教学改革.大部分高校正在由传统的学年制向学分制过渡.系统在设计时考虑了学年制、学年学分制、学分制以及过渡时期等不同阶段教学管理软件衔接的需求.从而解决了学校课程库、 成绩库、学生库等的数据迁移问题 (3)强化基于Intemet/Intranet面向师生的服务和互动管理.使高校教学管理工作效率大大提高.同时 也方便了学生 如通过计算机快速高质的选课管理给学生的课表随机派位.让学生根据自己的意愿在较短的时间内完成课程的选择(4)系统严格遵循教育部的学籍学历规范和有关信息标准,规范课程代码、教师代码、学号等编码,避免代码重复等不合理现象发生
⑵ 课程管理系统moodle是基于什么而设计的
Mood1e是由澳大利亚MartinDougiamas博士主持开发的课程管理系统(CMS),该系统是一套基于“社会建构主义理论”设计开发的开放源代码的软件,能够帮助教师高质量创建和管理的在线课程。魔灯不仅仅是一个技术平台,而是体验了新的教育理念的操作平台,不仅仅是一个先进的“课程管理系统”(CMS),更是一个将教育理论与实践相结合的,支持教师和学生组织实施教学活动的“学习管理系统”(LMS)。Moodle平台主要特点有: 1.理念先进,功能全面 Moodle以“社会建构主义理论”为其设计基础, Moodle特别强调的是其教育哲学理念,它强调程序设计的基本思想是社会建构主义教育,对于其他的CMS系统来说,这是个创新。因为其他的CMS系统仅仅是提供一堆工具而已,却并没有教育法融入其中。所以,我们可以认为,Moodle则是一个以学习中心的系统,而多数CMS只是个商业的工具集合罢了。 Moodle主要功能大致分为网站管理功能、学习管理功能、课程管理三大部分,其中课程管理中有灵活、丰富的课程活动:论坛、测验、资源、投票、问卷调查、作业、聊天室、Blog和Kiwi等。 2.相容性高,技术门槛底,易于使用 Moodle的在线教学模块采用可自由组合的动态模块化设计,教师搭建在线课程时就像搭积木一样简单有趣。支持多种教学模式,可以帮助教师学生在一个积极协作的在线环境中进行交流;在线活动记录能够详细呈现;课程可以被压缩成SCORM包做为备份或者供其他学习内容管理平台安装使用;提供嵌入式的所见即所得的网页编辑器,教师能够很方便地编辑课程内容。 3.开源性和免费性 所谓软件的开源性,指的是,软件源代码是公开的,用户可以了解这个设计功能是如何实现的,修改它的源代码等。Moodle作为一个开放源代码的自由软件它的开发与发布是遵循CPL协议,即允许任何人免费使用和修改源代码,但必须保留原作者的版权许可声明。Moodle的社群中除了开发者,更有大量的教师和学生用户,来自他们的反馈和建议,正是Moodle的开源性促使其不断完善和发展。 其次,与价格昂贵的CMS系统不同的是,Moodle是免费的软件。你可以自由下载,然后安装使用它。你不会被强迫升级,不会被强迫调整一些你不需要的模块功能。开发者不会从用户那里强迫拿走你的代码,但如果有某个人不想在开发Moodle的时候,没关系,一定还会有其他的热衷于Moodle开发的人继续下去。而这就是moodle的开源性和免费带来的好处。 Moodle的主要特点 (1) Moodle充分体现了建构主义的学习理论。社会建构主义强调过程中学习者之间的对话、协作、互动等社会性互动对个人及群体意义建构的作用。Miidle正是一个以社会建构主义为基础的平台,它允许师生或学生彼此间共同思考,合作解决问题,最终实现集体智慧的碰撞与共享。 (2) Moodle是一个开放源代码的自由软件。Moodle遵循GPL协议,在不修改或删除原有许可协议和版权的前提下,用户可以免费拷贝、使用和修改,这吸引了一大批开发者,使其迅速成长、更新。 (3) 模块化的结构设计。Moodle采用模块化面向对象的设计方法,本身具有极好的灵活性和可扩展性,修改和扩充十分方便。系统的管理也是模块化的,大致有系统设置、文件备份、编辑设定、用户管理、课程管理及活动记录。Moodle为就是提供了支持建构主义教学设计理念的十几种课程活动,包括讨论区、聊天室、在线调查等。作为可自行修改和编辑的模块,Moodle为使用者、管理员和开发者提供了极大的选择空间。 (4)快速安装、低技术门槛。Moodle的搭建基于PHP与SQL数据库,教师能够在如何 搭建环境的计算机上建立Moodle,按照说明,快速完成安装。由于Moodle体现了Web2.0核心产品的易用性,因此,教师和学生只要花一定的时间熟悉操作,便能够无障碍使用。
⑶ 选修课程管理系统设计,要求需要有系统分析,背景等等,
选修课程管理系统设计,要求需要有系统分析
一直都在线
你随时找我
⑷ 课程设计管理系统
课程设计进行管理
完全按照你的要求做。
来吧。。
⑸ c++ 课程管理系统设计与实现
这个做过好久了,找不到当时成型的那个了,给你这个看看吧,没运行,你把没用的删掉,改改,自己运行试试
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int savedTag=0;
struct student
{ char name[20];
int num;
char sex[4];
float math,english,history,SQL,C;
float sum;
float avg;
int order;
};
typedef struct Node
{ struct data;
struct Node *next;
}Node,*Link;
void menu()
{printf (“*******************************************************************\n”);
printf (“\t\t\t\t\t\t1增加学生资料\t\t\t\t\t\t\t\t\t\2删除学生资料\n”);
printf (“\t\t\t\t\t\t3查询学生资料\t\t\t\t\t\t\t\t\t\4修改学生资料\n”);
printf (“\t\t\t\t\t\t5保存学生资料\t\t\t\t\t\t\t\t\t\6显示学生资料\n”);
printf (“\t\t\t\t\t\t7对学生资料进行分类\t\t\t\t\t\t\8从记录文件中读取学生资料\n”)
printf (“\t\t\t\t\t\t9新建学生资料文件\t\t\t\t\t\t\t\0推出系统\n”);
printf (“*******************************************************************\n”);
}
void printstart()
{printf("--------------------------------------------------------------------\n");}
void Wrong()
{printf("\n====>提示:输入错误!\n");}
void Nofind()
{printf("\n====>提示:没有找到该学生!\n");}
void printc()
{printf("学号\t姓名\t性别\t数学成绩\t英语成绩\t历史成绩\t专业成绩\tC语言成绩\t总分\t平均分\t名次\n");}
void printe()
{printf("%-12s%\t%s\s%s\s%f\t%f\t%f\t%f\t%f\t%f\t%f\t%d\n",
p->data.num,p->data.name,p->data.sex,p->data.math,p->data.english,p->data.history,p->data.SQL,p->data.C,p->data.sum,p->data.avg,p->data.order);}
Node *Locate(Link1,char findmess[],char nameornum[])
/*该指针函数用于定位链表中符合要求的节点,并返回指针(即从链表的某个当前节点查找跟findmess中名字相同的信息节点)*/
/*第一个参数l表示指向的当前节点*/
{Node *r; /* 指向链表中的某个节点 */
if(strcmp(nameornum,"name")==0) /* 按姓名查询 */ /*核对本函数传入的第三个参数(数组)是否为字符串"name" */
{
r=l->next; /*指向(当前节点的)下一个节点 */
while(r!=NULL) /*如果下个节点不为空*/
{
if(strcmp(r->data.name,findmess)==0) /比较"下个"节点的数据域的"名字"是否为传入的第二个参数指定的名字*/
return r; /*如果找到了匹配的名字则返回该节点*/
r=r->next; /*否则继续查找下个节点,直到链表的结尾*/
}
}
【else if(strcmp(nameornum,"num")==0)]】 【到底是那个语句?? 类型不对能行吗?是要跟“num”比较,还是跟num的数值比较? 】
else if(num==(int)nameornum) /*按学号查询*/
{r=1->next;
while(r!=NULL)
{if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
【if(strcmp(nameornum,"order")==0) 】
else if(order==(int)nameiornum) /*按名次查询*/
{r=1->next;
while(r!=NULL)
{if(strcmp(r->data.order,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
void Add(Link l) /* 增加学生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /*否则继续查找下个节点,直到链表的结尾(将指针置于最末尾 )*/
while(1)
{
printf("请你输入学号(以'0'返回上一级菜单");
scanf("%s",num);
if(num==0) /*学号输入遇0结束*/
break;
while(s)
{
if(s->data.num==num)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next; /*否则继续查找下个节点,直到链表的结尾(将指针置于最末尾 )*/
}
p=(Node *)malloc(sizeof(Node)); /*动态分配内存*/
p->data.num=num
printf("请你输入姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();
printf("请你输入数学成绩:");
scanf("%f",&p->data.math);
getchar();
printf("请你输入英语成绩:");
scanf("%f",&p->data.english);
getchar();
printf("请你输入历史成绩:");
scanf("%f",&p->data.history);
getchar();
printf("请输入资料成绩:");
scanf("%f",&p->data.SQL);
getchar();
printf("请输入专业成绩:");
scanf("%f",&p->data.C);
getchar(); /* 信息输入已经完成 */
s->sum=s->math+s->english+s->SQL+s->C+s->history; /*求总成绩*/
s->avg=s->sum/5; /*求平均值*/
p->next=NULL;
r->next=p;
r=p;
savedTag=1; /*改变存储标志*/
}
}
void Qur(Link l) /* 查询学生 */
{
int sel;
char findmess[20]; 【这里定义的这个findmess跟前面的指针函数没关系吧?】
Node *p;
if(!l->next)
{
printf("\n=====>提示:没有资料可以查询!\n");
return;
}
printf("\n=====>1按学号查找\n=====>2按姓名查找\n====>3按名次查找\n");
scanf("%d",&sel);
if(sel==1) /* 按学号 查找*/
{
printf("请你输入要查找的学号:");
scanf("%d",&(int)findmess); 【学号是int类型的,所以把findmess转换为int类型】
p=Locate(l,findmess,"num"); 【原函数中的第三个参数的类型为char,那么这里写“num”对吗?
加了双引号,代表代表这里是字符串而不是num的int类型的数值,是么?】
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 按姓名查找 */
{
printf("请你输入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==3) /* 按名次查找 */
{
printf("请你输入要查找的名次:");
scanf("%d",&(int)findmess);
p=Locate(l,findmess,"order");
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();
}
void Del(Link l) /* 删除学生信息 */
{
int sel,s;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:没有资料可以删除!\n");
return;
}
printf("\n=====>1按学号删除\n=====>2按姓名删除\n====>3按名次删除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("请你输入要删除的学号:");
scanf("%s",findmess);
printf("\n====>警告:确定删除信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该学生已经成功删除!\n");
savedTag=1;
}
else
Nofind();
}
else exit(0);
}
else if(sel==2)
{
printf("请你输入要删除的姓名:");
scanf("%s",findmess);
printf("\n====>警告:确定删除信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该学生已经成功删除!\n");
savedTag=1;
}
else
Nofind();
}
else exit(0);
}
else if(sel==3)
{
printf("请你输入要删除的名次:");
scanf("%d",&findmess);
printf("\n====>警告:确定删除信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"order");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该学生已经成功删除!\n");
savedTag=1;
}
else
Nofind();
}
else exit(0);
}
else
Wrong();
}
void Modify(Link l)
{ int sel,s;
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:没有资料可以修改!\n");
return;
}
printf("\n=====>1按学号修改\n=====>2按姓名修改\n====>3按名次修改\n");
scanf("%d",&sel);
if(sel==1)
{printf("请你输入要修改的学生学号:");
scanf("%d",&(int)findmess);
printf("\n====>警告:确定修改信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"num");
if(p)
{
printf("请你输入新学号:");
scanf("%d",&p->data.num);
printf("请你输入新姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入新性别:");
scanf("%s",p->data.sex);
printf("请你输入新的数学成绩:");
scanf("%f",&p->data.math);
getchar();
printf("请你输入新的英语成绩:");
scanf("%f",&p->data.english);
getchar();
printf("请你输入新的历史成绩:");
scanf("%f",&p->data.history);
printf("请输入新的资料成绩:");
scanf("%f",&p->data.SQL);
printf("请你输入新的专业成绩:");
scanf("%f",&p->data.C);
printf("\n=====>提示:资料修改成功!\n");
s->sum=s->math+s->english+s->SQL+s->C+s->history;
s->avg=s->sum/5;
savedTag=1;
}
else
Nofind();
}
else exit(0) ;
}
else if(sel==2)
{printf("请你输入要修改的学生姓名:");
scanf("%s",findmess);
printf("\n====>警告:确定修改信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"name");
if(p)
{
printf("请你输入新姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入新学号:");
scanf("%d",&p->data.num);
printf("请你输入新性别:");
scanf("%s",p->data.sex);
printf("请你输入新的数学成绩:");
scanf("%f",&p->data.math);
getchar();
printf("请你输入新的英语成绩:");
scanf("%f",&p->data.english);
getchar();
printf("请你输入新的历史成绩:");
scanf("%f",&p->data.history);
printf("请输入新的资料成绩:");
scanf("%f",&p->data.SQL);
printf("请你输入新的专业成绩:");
scanf("%f",&p->data.C);
printf("\n=====>提示:资料修改成功!\n");
s->sum=s->math+s->english+s->SQL+s->C+s->history;
s->avg=s->sum/5;
savedTag=1;
}
else
Nofind();
}
else exit(0) ;
}
else if(sel==3)
{printf("请你输入要修改的学生名次:");
scanf("%d",&(int)findmess);
printf("\n====>警告:确定修改信息?(y\n):") ;
scanf("%c",&s);
if(s=='y'||s=='Y')
{p=Locate(l,findmess,"order");
if(p)
{
printf("请你输入新学号:");
scanf("%d",&p->data.num);
printf("请你输入新姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入新性别:");
scanf("%s",p->data.sex);
printf("请你输入新的数学成绩:");
scanf("%f",&p->data.math);
getchar();
printf("请你输入新的英语成绩:");
scanf("%f",&p->data.english);
getchar();
printf("请你输入新的历史成绩:");
scanf("%f",&p->data.history);
printf("请输入新的资料成绩:");
scanf("%f",&p->data.SQL);
printf("请你输入新的专业成绩:");
scanf("%f",&p->data.C);
printf("\n=====>提示:资料修改成功!\n");
s->sum=s->math+s->english+s->SQL+s->C+s->history;
s->avg=s->sum/5;
savedTag=1;
}
else
Nofind();
}
else exit(0) ;
}
}
/*************************************************************************************/
void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;
if(!p)
{
printf("\n=====>提示:没有资料可以显示!\n");
return;
}
printf("\t\t\t\t显示结果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}
/*************************************************************************************/
void Tongji(Link l)
{
Node *pm,*pe,*pc; /* 用于指向分数最高的接点 */
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:没有资料可以统计!\n");
return ;
}
pm=pe=pc=r;
while(r!=NULL)
{
if(r->data.age>=pc->data.age)
pc=r;
if(r->data.birth>=pm->data.birth)
pm=r;
if(r->data.tele>=pe->data.tele)
pe=r;
r=r->next;
}
}
/*************************************************************************************/
void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;
ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表 */
ll->next=NULL;
if(l->next==NULL)
{
printf("\n=====>提示:没有资料可以排序!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息 */
s->data=p->data;
s->next=NULL;
rr=ll;
while(rr->next!=NULL )
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>提示:排序已经完成!\n");
}
/*************************************************************************************/
void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打开文件时发生错误!\n");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d条记录已经保存.)\n",count);
shoudsave=0;
}
fclose(fp);
}
/*************************************************************************************/
void main()
{
Link l;/* 连表 */
FILE *fp; /* 文件指针 */
int sel;
char ch;
char jian;
int count=0;
Node *p,*r;
printf("\t\t\t\t学生成绩管理系统\n\t\t\t\t-------信息工程学院通信XXX\n");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;
fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("\n=====>提示:文件已经打开,正在导入记录......\n");
while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中 */
{
p->next=NULL;
r->next=p;
r=p; /* 将该接点挂入连中 */
count++;
}
}
fclose(fp); /* 关闭文件 */
printf("\n=====>提示:记录导入完毕,共导入%d条记录.\n",count);
while(1)
{
menu();
printf("请你选择操作:");
scanf("%d",&sel);
if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已经退出系统,再见!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加学生 */
case 2el(l);break;/* 删除学生 */
case 3ur(l);break;/* 查询学生 */
case 4:Modify(l);break;/* 修改学生 */
case 5:Save(l);break;/* 保存学生 */
case 9:printf("\t\t\t==========帮助信息==========\n");break;
default: Wrong();getchar();break;
}
}
}
⑹ C++课程设计 设计学校课程管理系统
《C++课程设计》
课程设计题目:学生成绩管理系统
学生班级:*****
学生姓名:*****
学生学号:*****
(2)学生成绩管理系统需求与功能分析
学生成绩的录入、统计、查询、修改、删除、输出。 画出功能结构图。
(3)学生成绩管理系统的数据结构表
序号 成员名(字段名) 数据类型 长度 字段含义
1 class_0 char 20 班级
2 num int 学号
3 name char 8 姓名
4 elec flaot 电子技术
5 c_prog float C 程序设计
6 media flaot 多媒体技术
7 eng float 大学英语
8 math float 高等数学
9 sport float 大学体育
10 polity float 马克思主义政治经济学
11 ave float 平均成绩
12 order int 名次
(4)学生成绩管理系统测试数据表
class_0 num name elec c_prog media eng math sport polity ave order
网络30331 3033101 马云飞 80 70 60 70 70 60 80 表中其余数据自己编造。
(5)使用链表编写程序(手写源程序代码,并给出注解)
0)定义链表结点
1)主函数main():定义链表头指针,调用录入、统计等函数对成绩表进行处理;
2)建立链表函数Create():输入班级到政治课成绩信息;
3)统计函数Statistic():计算平均成绩;
4)查询函数Lookup():查询指定学号学生成绩记录;
5)修改函数Modify():修改指定学号学生成绩记录;
6)删除函数Delete():删除指定学号学生记录;
7)输出函数Output():输出班级所有学生成绩记录;
8)插入函数Insert():按平均分顺序插入新结点。
9) 排序函数Sort():按平均分对学生成绩记录项进行降序排序;
程序如下:
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct Node//定义链表结点
{
char* class_0;//班级
int number;
char* name;//姓名
float elec;//电子技术成绩
float c_prog;//C程序设计成绩
float media;//多媒体技术成绩
float eng;//大学英语成绩
float math;//高等数学成绩
float sport;//大学体育成绩
float polity;//马克思主义政治经济学成绩
float ave;//平均成绩
int order;//名次
Node* link;
Node(){link=NULL;}
Node(int _number,char* _class_0,char* _name,float _elec,
float _c_prog,float _media,float _eng,float _math,
float _sport,float _polity,float _ave,int _order,Node* next)
{
number=_number;
class_0=new char[21];
strcpy(class_0,_class_0);
name=new char[9];
strcpy(name,_name);
elec=_elec;
c_prog=_c_prog;
media=_media;
eng=_eng;
math=_math;
sport=_sport;
polity=_polity;
ave=_ave;
order=_order;
link=next;
}
~Node()
{
delete []class_0;
delete []name;
}
};
class StudentScore
{
private:
Node* first;//链表的头指针
int choice;//选择数据的读入方式
int fileNum;//当前文件数减一
int fileLoc;//定位当前文件
string* fileName;
int operChoice;
int RecordLength;
public:
StudentScore();
void Save();
void BuildList();//手工建立成绩链表
void ReadInfo(int k);//从内存中读入学生信息
void ClearList();
void Statistic();
void Sort();
void Add();
void Delete();
void PrintList();
void Menu();
};
StudentScore::StudentScore()
{
RecordLength=0;
operChoice=0;
first=NULL;
choice=0;
fileLoc=0;
fileNum=0;
fileName=new string[10];//最多可以存10个文件
}
int GetOrder(Node* first,float ave);
void StudentScore::BuildList()
{
int _number;//学号
char* _class_0=new char[21];//班级
char* _name=new char[9];//姓名
float _elec;//电子技术成绩
float _c_prog;//C程序设计成绩
float _media;//多媒体技术成绩
float _eng;//大学英语成绩
float _math;//高等数学成绩
float _sport;//大学体育成绩
float _polity;//马克思主义政治经济学成绩
float _ave;//平均成绩
int _order;//名次
char c;
Node *p,*r=NULL;
first=NULL;
cout<<"您要输入学生成绩信息?"<<endl;
while((c=getchar())=='n');
while(tolower(c)!='n')
{
cin>>_class_0;//班级
cin>>_number;
cin>>_name;//姓名
cin>>_elec;
cin>>_c_prog;
cin>>_media;
cin>>_eng;
cin>>_math;
cin>>_sport;
cin>>_polity;
_ave=(_elec+_c_prog+_media+_eng+_math+_sport+_polity)/7;//求得平均成绩
_order=GetOrder(first,_ave);
p=new Node(_number,_class_0,_name,_elec,
_c_prog,_media,_eng,_math,_sport,_polity,
_ave,_order,NULL);//建立一个新的结点储存信息
if(first!=NULL)
r->link=p;
else first=p;
r=p;
RecordLength++;
cout<<"您要输入学生成绩信息?"<<endl;
while((c=getchar())=='n');
}
}
int GetOrder(Node* first,float ave)//名次记录有严重问题
⑺ :设计一个课程管理系统.系统具有查询,输入,保存,排序等功能.系统有一个菜单界面,可供功能选择.
课程管理系统。。俺会做的。