C语言课程设计学生成绩管理管理系统.docx

上传人:b****0 文档编号:17900523 上传时间:2023-08-04 格式:DOCX 页数:33 大小:258.17KB
下载 相关 举报
C语言课程设计学生成绩管理管理系统.docx_第1页
第1页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第2页
第2页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第3页
第3页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第4页
第4页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第5页
第5页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第6页
第6页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第7页
第7页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第8页
第8页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第9页
第9页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第10页
第10页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第11页
第11页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第12页
第12页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第13页
第13页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第14页
第14页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第15页
第15页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第16页
第16页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第17页
第17页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第18页
第18页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第19页
第19页 / 共33页
C语言课程设计学生成绩管理管理系统.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言课程设计学生成绩管理管理系统.docx

《C语言课程设计学生成绩管理管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生成绩管理管理系统.docx(33页珍藏版)》请在冰点文库上搜索。

C语言课程设计学生成绩管理管理系统.docx

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->aveave)

{

a->next=t;

t->next=b;

break;

}

a=a->next;

}

if(b->next==NULL)

{

if(b->aveave)

{

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->aveave)

{

a->next=t;

t->next=b;

break;

}

a=a->next;

}

if(b->next==NULL)

{

if(b->aveave)

{

a->next=t;

t->next=b;

break;

}

else

{

b->next=t;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2