课程设计报告-学生成绩管理系统.doc
《课程设计报告-学生成绩管理系统.doc》由会员分享,可在线阅读,更多相关《课程设计报告-学生成绩管理系统.doc(15页珍藏版)》请在冰豆网上搜索。
东莞理工学院课程设计
课程设计
课程程序设计基础
题目
院系名称计算机学院
班级
学生姓名学号
组员
指导教师
时间2012-5-25
1问题要求及任务描述
1.1题目要求
学生成绩管理
问题描述:
设学生信息包括:
学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的),对学生的成绩信息进行管理。
实现要求:
实现:
学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。
⑴输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩
⑵显示全部学生各科成绩信息;
⑶对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等);
⑷统计各科各分数段人数;
⑸按学号或姓名查找并显示某个学生的各科成绩;
⑹按课程成绩或总分由高到低排序显示;
⑺更新某个学生的基本信息或课程成绩;
⑻设计一个菜单,具有上述规定的操作要求、退出系统等最基本的功能。
1.
2解决问题的主要思路和方法
2.1关键问题
关键问题描述
2.2拟采用解决问题的方法
在此陈述解决问题的思路,准备使用的算法和数据结构等等
2.3主要算法和处理流程图
关键的数据流程图
3程序实现
3.2主要源代码及说明
#include
#include
#include
intsave=0;
structstudent/*构建结构体*/
{
charnum[12];
charname[20];
charsex[4];
intCYuYan;
intMath;
intEnglish;
intsum;
intave;
};
typedefstructnode
{
structstudentdata;
structnode*next;
}Node,*Link;
voidMenu()/*界面主菜单*/
{
printf("********************************************************************************");
printf("\t1输入学生资料\t\t\t\t\t2删除学生资料\n");
printf("\t3查询学生成绩\t\t\t\t\t4修改学生成绩\n");
printf("\t5显示学生资料\t\t\t\t\t6统计学生资料\n");
printf("\t7排序学生成绩\t\t\t\t\t8保存学生成绩\n");
printf("\t9退出系统\n");
printf("********************************************************************************");
}
voidPrint()
{
printf("--------------------------------------------------------------------------------");
}
voidWrong()/*错误警告*/
{
printf("\n警告:
输入错误!
!
!
\n");
}
voidNofind()
{
printf("\n警告:
没有找到该学生!
!
!
\n");
}
voidPrint1()
{
printf("学号\t姓名性别C语言成绩英语成绩数学成绩总分平均分\n");
}
voidPrint2(Node*p)/*打印学生成绩*/
{
printf("%-9s%s\t%3s\t%d\t%d\t%d\t%d\t%d\n",p->data.num,p->data.name,p->data.sex,p->data.CYuYan,p->data.Math,p->data.English,p->data.sum,p->data.ave);
}
Node*Locate(Linkh,charfindmess[],charnameornum[])/*定位链表中符合要求的接点*/
{
Node*r;
if(strcmp(nameornum,"num")==0)/*按学号查询*/
{
r=h->next;
while(r!
=NULL)
{
if(strcmp(r->data.num,findmess)==0)
returnr;
r=r->next;
}
}
elseif(strcmp(nameornum,"name")==0)/*按姓名查询*/
{
r=h->next;
while(r!
=NULL)
{
if(strcmp(r->data.name,findmess)==0)
returnr;
r=r->next;
}
}
return0;
}
voidAdd(Linkh)/*功能1:
输入学生资料*/
{
Node*p,*r,*s;
charnum[12];
r=h;
s=h->next;
while(r->next!
=NULL)
r=r->next;
while
(1)
{
printf("请输入学号(按'0'返回上菜单):
");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
p=(Node*)malloc(sizeof(Node));/*申请一个结构体内存*/
strcpy(p->data.num,num);
printf("请输入姓名:
");
scanf("%s",p->data.name);
getchar();
printf("请输入性别:
");
scanf("%s",p->data.sex);
getchar();
printf("请你输入c语言成绩:
");
scanf("%d",&p->data.CYuYan);
getchar();
printf("请输入数学成绩:
");
scanf("%d",&p->data.Math);
getchar();
printf("请输入英语成绩:
");
scanf("%d",&p->data.English);
getchar();
p->data.sum=p->data.English+p->data.CYuYan+p->data.Math;
p->data.ave=p->data.sum/3;
p->next=NULL;
r->next=p;
r=p;
save=1;
}
}
voidDel(Linkh)/*功能2:
删除学生资料*/
{
Node*p,*r;
charfindmess[20];
printf("请输入要删除的学号:
");
scanf("%s",findmess);
p=Locate(h,findmess,"num");
if(p)
{
r=h;
while(r->next!
=p)
r=r->next;
r->next=p->next;
free(p);/*释放内存空间*/
printf("\n提示:
该学生已经成功删除!
\n");
save=1;
}
else
Nofind();
}
voidCha(Linkh)/*功能3:
查询学生资料*/
{
intsel;
charfindmess[20];
Node*p;
printf("\n1按学号查找\n2按姓名查找\n");
scanf("%d",&sel);
if(sel==1)/*按学号查找*/
{
printf("请输入要查找的学号:
");
scanf("%s",findmess);
p=Locate(h,findmess,"num");
if(p)
{
printf("\t\t\t\t查找结果\n");
Print();
Print1();
Print2(p);
Print();
}
else
Nofind();
}
elseif(sel==2)/*按姓名查找*/
{
printf("请输入要查找的姓名:
");
scanf("%s",findmess);
p=Locate(h,findmess,"name");
if(p)
{
printf("\t\t\t\t查找结果\n");
Print();
Print1();
Print2(p);
Print();
}
else
Nofind();
}
else
Wrong();
}
voidChange(Linkh)/*功能4:
修改学生资料*/
{
Node*p;
charfindmess[20];
if(!
h->next)
{
printf("\n提示:
没有资料可以修改!
\n");
return;
}
printf("请输入要修改的学生学号:
");
scanf("%s",findmess);
p=Locate(h,findmess,"num");
if(p)
{
printf("请输入新学号(原来是%s):
",p->data.num);
scanf("%s",p->data.num);
printf("请输入新姓名(原来是%s):
",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("请输入新性别(原来是%s):
",p->data.sex);
scanf(