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

上传人:b****8 文档编号:11020257 上传时间:2023-02-24 格式:DOCX 页数:21 大小:40.11KB
下载 相关 举报
C语言课程设计 学生成绩管理系统.docx_第1页
第1页 / 共21页
C语言课程设计 学生成绩管理系统.docx_第2页
第2页 / 共21页
C语言课程设计 学生成绩管理系统.docx_第3页
第3页 / 共21页
C语言课程设计 学生成绩管理系统.docx_第4页
第4页 / 共21页
C语言课程设计 学生成绩管理系统.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

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

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

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

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

青岛农业大学

课程设计报告

题目:

学生成绩管理系统

姓名:

田世强元成张斌

学院:

工程系

专业:

电子信息工程技术

班级:

2班

学号:

200806013200806015200806023

指导教师:

曹红波

 

2010年9月16日

 

一设计目的…………………………………………………………….1

二课程设计的内容........................................2

三课程设计的要求与数据..................................3

四课程设计应完成的工作..................................4

五总体设计(包含几大功能模块)...........................5

六详细设计(各功能模块的具体实现算法——流程图)………….6

七调试分析(包含各模块的测试用例,及测试结果)…………….7

八总结………………………………………………………………...8

十参考资料…………………………………………………………….9

一设计目的

进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。

掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能。

二课程设计的内容

对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:

(1)学生的学号

(2)学生的姓名(3)学生的成绩。

假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。

学习相关开发工具和应用软件,熟悉系统建设过程。

三课程设计的要求与数据

1、用C语言实现系统;

2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.

3、学生信息包括:

其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:

(1)每一条记录包括一个学生的学号、姓名、3门课成绩

(2)、成绩信息录入功能:

(成绩信息用文件保存,可以一次完成若干条记录的输入。

(3)、成绩信息显示浏览功能:

完成全部学生记录的显示。

(4)、查询功能:

完成按姓名查找学生记录,并显示。

(5)成绩信息的删除:

按学号进行删除某学生的成绩.

(6)、排序功能:

按学生平均成绩进行排序。

(7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

四课程设计应完成的工作

(1)编写算法;

(2)算法测试,并有具体的测试结果和结果分析;

(3)撰写课程设计报告。

内容包括:

1)封面扉页

2)设计任务书

3)目录

4)总体设计方案(包括流程图)

5)使用说明及运行实例(包括界面)

6)成员设计内容简介

7)项目源程序代码(注意注释的使用)

8)指导教师评语

五总体设计(包含几大功能模块)

1、成绩录入功能

2、成绩输出功能

3、成绩查询功能

4、删除模块

5、排序功能

6、统计功能

7、退出系统

六详细设计(各功能模块的具体实现算法——流程图)

6.1各函数的功能和实现

1、输入初始的学生信息:

输入信息包括学生的姓名、学号以及学生的成绩等相关信息;可用函数voidinput(STUDENT*data,int*len)来实现此操作。

2、成绩输出模块:

输出学生的信息以及成绩voidoutput(STUDENT*data,intlen):

通过学生的姓名来查看学生的相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出成绩的平均分数、最高和最低分数。

3、成绩查询模块:

可用voidfind(STUDENT*data,intlen) 来实现。

找到就输出此学生全部信息。

4、删除模块:

用函数voiddelete_item(STUDENT*data,int*len)来实现

5、排序模块:

用函数voidsort(STUDENT*data,intlen)来实现

6、统计功能能:

用函数voidstat(STUDENT*data,intlen)来实现

7、退出系统:

可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

如图6.1

图6.1

七调试分析(包含各模块的测试用例,及测试结果)

7.1源程序

#include

#include

#include

#defineMAXN35

#defineMAX_NAME256

typedefstructstudent//学生信息

{

intno;

charname[MAX_NAME];

doubleChinese;

doublemath;

doubleEnglish;

doublemark_ave;

doublemark_tot;

}STUDENT;

/*-----------输入信息子程序---------*/

voidinput(STUDENT*data,int*len)

{

intno;

putchar('\n');

printf("%s\n","请输入新的记录,如果需要退出当前菜单请输入-1.");

printf("%s\n","格式:

\n学号\n");

printf("%s\n","姓名语文数学英语");

putchar('\n');

printf("如:

\n");

printf("1\n");

printf("杨江彬939589\n");

scanf("%d",&no);

while(no!

=-1){

data[*len].no=no;

scanf("%s%lf%lf%lf",data[*len].name,&data[*len].Chinese,&data[*len].math,&data[*len].English);data[*len].mark_ave=(data[*len].Chinese+data[*len].math+data[*len].English)/3.0;data[*len].mark_tot=data[*len].Chinese+data[*len].math+data[*len].English;

(*len)++;

scanf("%d",&no);

}

/*---------------输出信息子程序---------------*/

voidoutput(STUDENT*data,intlen)

{

inti;

system("cls");

printf("%8s","学号");

printf("%8s","姓名");

printf("%8s","语文");

printf("%8s","数学");

printf("%10s","英语");

printf("%12s","平均分");

printf("%10s","总分");

putchar('\n');

for(i=0;i<80;i++)

putchar('=');

putchar('\n');

for(i=0;i

{

printf("%8d",data[i].no);

printf("%8s",data[i].name);

printf("%8.1lf",data[i].Chinese);

printf("%8.1lf",data[i].math);

printf("%10.1lf",data[i].English);

printf("%12.1lf",data[i].mark_ave);

printf("%10.1lf",data[i].mark_tot);

putchar('\n');

}

for(i=0;i<80;i++)

putchar('=');

putchar('\n');

printf("按回车键继续.");

getchar();

getchar();

}

/*--------------排序子程序------------*/

voidsort(STUDENT*data,intlen)

{

inti,j,k;

STUDENTtemp;

for(i=0;i

for(k=i,j=i+1;j

if(data[k].mark_ave>data[j].mark_ave)k=j;

if(k!

=i){

temp=data[i];

data[i]=data[k];

data[k]=temp;

}

}

}

/*--------------------搜索子程序-----------------------*/

voidfind(STUDENT*data,intlen)

{

intfind_no,result;

inti;

lab:

result=0;

printf("%s\n","请输入需要查找的学生的学号,退出当前菜单请输入-1.");

scanf("%d",&find_no);

if(find_no==-1)return;/*exitthefinesubprogram*/

while(data[result].no!

=find_no&&result

if(result>=len){

printf("%s\n","未查询到相关信息");

gotolab;

}

else{

system("cls");

printf("%s\n","查询信息如下:

");

for(i=0;i<80;i++)

putchar('=');

putchar('\n');

printf("%8s","学号");

printf("%8s","姓名");

printf("%8s","语文");

printf("%8s","数学");

printf("%10s","英语");

printf("%12s","平均分");

printf("%10s","总分");

putchar('\n');

printf("%8d",data[result].no);

printf("%8s",data[result].name);

printf("%8.1lf",data[result].Chinese);

printf("%8.1lf",data[result].math);

printf("%10.1lf",data[result].English);

printf("%12.1lf",data[result].mark_ave);

printf("%10.1lf",data[result].mark_tot);

putchar('\n');

for(i=0;i<80;i++)

putchar('=');

putchar('\n');

gotolab;

}

}

/*-----------------插入子程序-------------*/

voidinsert(STUDENT*data,int*len)

{

intno,pos;

doubleChinese,math,English,mark_ave,mark_tot;

inti;

charname[MAX_NAME];

lab:

printf("%s\n","输入新的记录,退出当前菜单请输入-1.");

printf("%s\n","格式:

学号");

printf("%s\n","姓名语文数学英语");

scanf("%d",&no);

if(no==-1)return;

data[*len].no=no;

scanf("%s%lf%lf%lf",name,&Chinese,&math,&English);

mark_ave=(Chinese+math+English)/3.0;

mark_tot=Chinese+math+English;

pos=0;

while((data[pos].mark_ave

pos++;

for(i=*len-1;i>=pos;i--)

data[i+1]=data[i];

data[pos].no=no;

strcpy(data[pos].name,name);

data[pos].Chinese=Chinese;

data[pos].math=math;

data[pos].English=English;

data[pos].mark_ave=mark_ave;

data[pos].mark_tot=mark_tot;

(*len)++;

gotolab;

}

/*-------------删除子程序--------------*/

voiddelete_item(STUDENT*data,int*len)

{

intno,i,pos;

lab:

pos=0;

printf("%s\n","输入需要删除的学生的学号,退出当前菜单请输入-1.")

scanf("%d",&no);

if(no==-1)return;

while((data[pos].no!

=no)&&(pos<*len))pos=pos+1;

if(pos>=*len){

printf("%s\n","未找到需要删除的学生");

gotolab;

}

else{

for(i=pos+1;i<*len;i++)

data[i-1]=data[i];

*len=*len-1;

if(*len==0){

printf("%s\n","没有任何记录,请按回车键返回.");

getchar();

getchar();

return;

}

gotolab;

}

}

/*---------------统计子程序------------*/

voidstat(STUDENT*data,intlen)

{

intno_59=0,no_69=0,no_79=0,no_89=0,no_100=0;

inti;

for(i=0;i

if(data[i].mark_ave<=59)no_59++;

elseif(data[i].mark_ave<=69)no_69++;

elseif(data[i].mark_ave<=79)no_79++;

elseif(data[i].mark_ave<=89)no_89++;

elseno_100++;

}

system("cls");

for(i=0;i<80;i++)

putchar('=');

putchar('\n');

printf("%10s","分数");

printf("%10s","0--59");

printf("%10s","60--69");

printf("%10s","70--79");

printf("%10s","80--89");

printf("%10s","90--100");

putchar('\n');

putchar('\n');

printf("%10s","学生");

printf("%10d",no_59);

printf("%10d",no_69);

printf("%10d",no_79);

printf("%10d",no_89);

printf("%10d",no_100);

putchar('\n');

for(i=0;i<80;i++)

putchar('=');

putchar('\n');

printf("按回车键返回");

getchar();

getchar();

}

/*---------------显示信息子程序------------*/

voidpaint()

{

inti;

system("cls");

printf("%55s\n","海都学院学生成绩管理系统\n");

printf("制作者:

\n");

for(i=0;i<80;i++)

putchar('=');

putchar('\n');

printf("1输入信息2输出信息\n");

printf("3按平均分排序4按学号查找\n");

printf("5插入6按学号删除\n");

printf("7按平均分输出统计信息8保存到文件\n");

printf("0退出\n");

for(i=0;i<=79;i++)

putchar('=');

putchar('\n');

printf("%s\n","请输入各操作对应的序号:

");

}

voidsave(STUDENT*data,intlen)//将数据保存到文件

{

inti;

FILE*fp;

fp=fopen("成绩统计表.txt","w");

fprintf(fp,"%8s","学号");

fprintf(fp,"%8s","姓名");

fprintf(fp,"%8s","语文");

fprintf(fp,"%8s","数学");

fprintf(fp,"%10s","英语");

fprintf(fp,"%12s","平均分");

fprintf(fp,"%10s\n","总分");

fprintf(fp,"========================================================================\n");

putchar('\n');

for(i=0;i

{

fprintf(fp,"%8d",data[i].no);

fprintf(fp,"%8s",data[i].name);

fprintf(fp,"%8.1lf",data[i].Chinese);

fprintf(fp,"%8.1lf",data[i].math);

fprintf(fp,"%10.1lf",data[i].English);

fprintf(fp,"%12.1lf",data[i].mark_ave);

fprintf(fp,"%10.1lf\n",data[i].mark_tot);

}

fprintf(fp,"========================================================================\n");

fclose(fp);

printf("文件已保存到\"成绩统计表.txt\"");

getchar();getchar();

}

/*-----------主程序--------------*/

voidmain()

{

STUDENTdata[MAXN];

intlen=0;

charctrl_ch;

paint();

scanf("%c",&ctrl_ch);

while(ctrl_ch!

='0'){

;case'1':

input(data,&len);

break;

case'2':

output(data,len);

break;

case'3':

sort(data,len);

break;

case'4':

find(data,len);

break;

case'5':

insert(data,&len);

break;

case'6':

delete_item(data,&len);

break;

case'7':

stat(data,len);

break;

case'8':

save(data,len);

break;

default:

if(ctrl_ch!

='\n')printf("%s\n","输入错误!

");

break;

}

if(ctrl_ch!

='\n')paint();

scanf("%c",&ctrl_ch);

}

}

 

7.2调试与测试

7.2.1算法调试过程中出现的问题及解决方法(以下为其中一例)

--------------------Configuration:

Cpp1-Win32Debug--------------------

Compiling...

Cpp1.cpp

C:

\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(9):

errorC2065:

'MAX_MAME':

undeclaredidentifier

C:

\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(9):

errorC2057:

expectedconstantexpression

C:

\DocumentsandSettings\Administrator\桌面\Cpp1.cpp(10):

e

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

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1