C语言课程设计学生成绩管理管理系统.docx
- 文档编号:30077760
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:33
- 大小:258.17KB
C语言课程设计学生成绩管理管理系统.docx
《C语言课程设计学生成绩管理管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
C语言课程设计学生成绩管理管理系统
沈阳航空航天大学
课程设计报告
课程设计名称:
C语言课程设计
课程设计题目:
学生成绩管理
院(系):
计算机学院
专业:
计算机科学与技术
班级:
学号:
姓名:
指导教师:
完成日期:
2013年3月5日
目录
第1章需求分析2
1.1需求概述2
1.2系统功能需求分析2
第2章总体设计3
第3章详细设计3
第4章程序源代码14
参考文献22
第1章需求分析
1.1需求概述
Ø录入的每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩;
Ø输入功能:
可以一次完成若干记录的输入;
Ø显示功能:
完成全部学生记录的显示;
Ø查找功能:
完成按姓名查找学生记录,并显示;
Ø排序功能:
按学生平均成绩进行排序;
Ø插入功能:
按平均成绩插入一条学生记录;
Ø删除功能:
如果输入错误,可以删除学生记录;
Ø退出;
Ø系统的各个功能模块要求用函数的形式实现。
1.2系统功能需求分析
主要包含以下多种功能:
Ø输入功能:
可以一次完成若干记录的输入;
Ø显示功能:
完成全部学生记录的显示;
Ø查找功能:
完成按姓名查找学生记录,并显示;
Ø排序功能:
按学生平均成绩进行排序;
Ø插入功能:
按平均成绩插入一条学生记录;
Ø删除功能:
如果输入错误,可以删除学生记录;
Ø退出;
第2章总体设计
整个系统可以设计为主菜单模块、数据输入模块、数据显示模块、数据查找模块、数据排序模块、数据插入模块、数据删除模块、文件保存模块。
structstudent*luru();/*输入成绩信息*/
intxianshi();/*显示数据*/
structstudent*chazhao();/*按姓名查找*/
structstudent*paixu();/*按平均成绩排序*/
structstudent*charu();/*按平均成绩插入*/
structstudent*shanchu();/*按学号删除*/
structstudent*duqu();/*读取文件*/
voidmain()/*主函数*/
总体模块流图:
程序框图:
、
第3章详细设计
采用结构体数组。
structstudent{
intnum;//学生学号//
charname[10];//学生姓名//
floatmath;//数学成绩//
floatenglish;//英语成绩//
floatchinese;//语文成绩//
floatave;//平均成绩//
structstudent*next;//节点//
}
(1)主菜单模块
采用switch()函数从键盘选择相应菜单的对应功能。
switch(flag)
{
case'1':
luru();//输入学生成绩信息
gotobegin;
case'2':
xianshi();//显示学生成绩信息
gotobegin;
case'3':
chazhao();//查找成绩信息
gotobegin;
case'4':
paixu();//将成绩排序
gotobegin;
case'5':
charu();//插入成绩信息
gotobegin;
case'6':
shanchu();//删除通讯录信息
gotobegin
case'7':
q=duqu();
for(b=q->next;b!
=NULL;b=b->next)
{printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("学号:
%d\n",b->num);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("姓名:
%s\n",b->name);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("数学:
%f\n",b->math);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("英语:
%f\n",b->english);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("语文:
%f\n",b->chinese);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("平均:
%f\n",b->ave);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
}//读取文件//
gotobegin;
case'0':
end;//退出
(2)输入功能模块
建立链表,输入成绩信息
structstudent*s,*t;
intflag=1;
t=(structstudent*)malloc(sizeof(structstudent));
t->next=NULL;
q=t;
while(flag)
{
n++;
s=(structstudent*)malloc(sizeof(structstudent));
if(s==NULL)
{
printf("节点申请失败!
");
returnNULL;
}
printf("请输入学生信息\n");
scanf("%d%s%f%f%f",&s->num,s->name,&s->math,&s->english,&s->chinese);
s->ave=(s->math+s->english+s->chinese)/3;
s->next=t->next;
t->next=s;
printf("是否继续录入?
(1/0):
");
scanf("%d",&flag);
}
(3)显示功能模块
显示已经录入的学生成绩
intx=1;
t=q->next;
while(t!
=NULL)
{
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("学号:
%d\n",t->num);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("姓名:
%s\n",t->name);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("数学:
%f\n",t->math);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("英语:
%f\n",t->english);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("语文:
%f\n",t->chinese);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("平均:
%f\n",t->ave);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
t=t->next;
}
(4)查找功能模块
根据输入的学生姓名查找学生信息
charxingming[10];
structstudent*t;
t=q->next;
printf("请输入学生姓名:
");
scanf("%s",xingming);
while(t!
=NULL)
{
if(strcmp(t->name,xingming)==0)
{
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("学号:
%d\n",t->num);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("姓名:
%s\n",t->name);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("数学:
%f\n",t->math);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("英语:
%f\n",t->english);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("语文:
%f\n",t->chinese);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("平均:
%f\n",t->ave);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
return(t);
}
t=t->next;
}
(5)排序功能模块
根据学生的平均成绩从大到小排名
structstudent*a,*b,*t;
floatm,e,c,ave;
charname[10];
intn;
t=q;
for(a=q->next;a!
=NULL;a=a->next)
for(b=a->next;b!
=NULL;b=b->next)
if(b->ave>a->ave)
{
n=b->num;
b->num=a->num;
a->num=n;
m=b->math;
b->math=a->math;
a->math=m;
e=b->english;
b->english=a->english;
a->english=e;
c=b->chinese;
b->chinese=a->chinese;
a->chinese=c;
ave=b->ave;
b->ave=a->ave;
a->ave=ave;
strcpy(name,b->name);
strcpy(b->name,a->name);
strcpy(a->name,name);
}
(6)插入功能模块
申请一个节点,输入学生信息,根据平均成绩插入已经排序的成绩表内
intx=1;
structstudent*t,*a,*b;
while(x)
{
n++;
t=(structstudent*)malloc(sizeof(structstudent));
printf("请输入学生信息:
");
scanf("%d%s%f%f%f",&t->num,t->name,&t->math,&t->english,&t->chinese);
t->ave=(t->math+t->english+t->chinese)/3;
a=q;
for(b=q->next;b->next!
=NULL;b=b->next)
{
if(b->ave
{
a->next=t;
t->next=b;
break;
}
a=a->next;
}
if(b->next==NULL)
{
if(b->ave
{
a->next=t;
t->next=b;
break;
}
else
{
b->next=t;
t->next=NULL;
}
}
printf("是否继续插入信息?
(0/1):
");
scanf("%d",&x);
}
(7)删除功能模块
输入想要删除的学生学号,删除该节点
structstudent*a,*b,*c;
intx=1,num;
while(x)
{
n--;
printf("请输入错误信息的学生学号:
");
scanf("%d",&num);
a=q;
for(b=q->next;b->next!
=NULL;b=b->next)
{
if(b->num==num)
{
c=b->next;
a->next=c;
free(b);
break;
}
a=a->next;
}
if(b->next==NULL)
{
if(b->num==num)
{
a->next=NULL;
free(b);
}
}
printf("是否继续删除信息?
(0/1):
");
scanf("%d",&x);
}
第4章程序源代码
#include
#include
#include
structstudent{
intnum;
charname[10];
floatmath;
floatenglish;
floatchinese;
floatave;
structstudent*next;
};
intn;
structstudent*luru(structstudent*q)
{
structstudent*s,*t;
intflag=1,n=0;
t=(structstudent*)malloc(sizeof(structstudent));
t->next=NULL;
q=t;
while(flag)
{
s=(structstudent*)malloc(sizeof(structstudent));
n++;
if(s==NULL)
{
printf("节点申请失败!
");
returnNULL;
}
printf("请输入学生信息\n");
scanf("%d%s%f%f%f",&s->num,s->name,&s->math,&s->english,&s->chinese);
s->ave=(s->math+s->english+s->chinese)/3;
s->next=t->next;
t->next=s;
printf("是否继续录入?
(1/0):
");
scanf("%d",&flag);
}
returnq;
}
intxianshi(structstudent*q)
{
structstudent*t;
intx=1;
t=q->next;
while(t!
=NULL)
{
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("学号:
%d\n",t->num);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("姓名:
%s\n",t->name);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("数学:
%f\n",t->math);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("英语:
%f\n",t->english);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("语文:
%f\n",t->chinese);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("平均:
%f\n",t->ave);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
t=t->next;
}
return(x);
}
structstudent*chazhao(structstudent*q)
{
charxingming[10];
structstudent*t;
t=q->next;
printf("请输入学生姓名:
");
scanf("%s",xingming);
while(t!
=NULL)
{
if(strcmp(t->name,xingming)==0)
{
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("学号:
%d\n",t->num);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("姓名:
%s\n",t->name);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("数学:
%f\n",t->math);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("英语:
%f\n",t->english);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("语文:
%f\n",t->chinese);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("平均:
%f\n",t->ave);
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
return(t);
}
t=t->next;
}
return(NULL);
}
structstudent*paixu(structstudent*q)
{
structstudent*a,*b,*t;
floatm,e,c,ave;
charname[10];
intn;
t=q;
for(a=q->next;a!
=NULL;a=a->next)
for(b=a->next;b!
=NULL;b=b->next)
if(b->ave>a->ave)
{
n=b->num;
b->num=a->num;
a->num=n;
m=b->math;
b->math=a->math;
a->math=m;
e=b->english;
b->english=a->english;
a->english=e;
c=b->chinese;
b->chinese=a->chinese;
a->chinese=c;
ave=b->ave;
b->ave=a->ave;
a->ave=ave;
strcpy(name,b->name);
strcpy(b->name,a->name);
strcpy(a->name,name);
}
return(t);
}
structstudent*charu(structstudent*q)
{
intx=1;
structstudent*t,*a,*b;
while(x)
{
t=(structstudent*)malloc(sizeof(structstudent));
n++;
printf("请输入学生信息:
");
scanf("%d%s%f%f%f",&t->num,t->name,&t->math,&t->english,&t->chinese);
t->ave=(t->math+t->english+t->chinese)/3;
a=q;
for(b=q->next;b->next!
=NULL;b=b->next)
{
if(b->ave
{
a->next=t;
t->next=b;
break;
}
a=a->next;
}
if(b->next==NULL)
{
if(b->ave
{
a->next=t;
t->next=b;
break;
}
else
{
b->next=t;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 成绩 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)