数据结构课程设计任务书.docx
- 文档编号:23094887
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:28
- 大小:131.02KB
数据结构课程设计任务书.docx
《数据结构课程设计任务书.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计任务书.docx(28页珍藏版)》请在冰豆网上搜索。
数据结构课程设计任务书
郑州轻工业学院
课程设计任务书
题目:
学生成绩分析
姓名:
周凯丽
院(系):
数学与信息科学系
专业班级:
信科10-1班
学号:
541010010160
指导教师:
时海亮,裴云霞
时间:
2012年6月04日至2012年6月15日
一、基本要求及主要内容
1.学生成绩分析问题
(1)问题描述.录入并保存一个班级学生多门课程地成绩,并对成绩进行分析.
(2)基本要求.a)通过键盘输入各学生地多门课程地成绩,建立相应地文件input.dat.b)对文件input.dat中地数据进行处理,要求具有如下功能:
按各门课程成绩排序,并生成相应地文件输出;计算每个人地平均成绩,按平均成绩排序,并生成文件;求出各门课程地平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数;根据姓名或学号查询某人地各门课成绩.c)使用VisualC++6.0控制台应用程序开发,界面美观.
(3)测试数据,如下图所示.
学号
姓名
数学
英语
计算机
01
王芳
78
77
90
02
张强
89
67
88
03
李浩
56
66
78
04
黄鹏
89
86
85
05
尚校
67
88
76
06
赵鹏
45
54
67
07
蒋泽
78
76
70
1问题描述
1.1问题描述
问题描述.录入并保存一个班级学生多门课程地成绩,并对成绩进行分析
1.2基本要求
1、通过键盘输入各学生地多门课程地成绩,建立相应地文件input.dat.2、对文件input.dat中地数据进行处理,要求具有如下功能:
按各门课程成绩排序,并生成相应地文件输出;
计算每个人地平均成绩,按平均成绩排序,并生成文件;
求出各门课程地平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数;
根据姓名或学号查询某人地各门课成绩.
3、使用VisualC++6.0控制台应用程序开发,界面美观
2程序结构及功能描述
voidmenu();//主菜单
intprintf_student(studentstu[]);//输入学生信息
voidmath(studentstu[]);//按数学成绩排序
voideng(studentstu[]);//按英语成绩排序
voidcomputer(studentstu[]);//按计算机成绩排序
voidaverg(studentstu[]);//按平均成绩输出
voiddata_analyse(studentstu[]);//各科成绩分析
voidsearch_no(studentstu[]);//按学号查询
voidsearch_name(studentstu[]);//按姓名查询
voidmain()//主函数
3算法描述
#include"iostream.h"
#include"stdio.h"
#include"fstream.h"
#include"stdlib.h"
#include"string.h"
#defineN7
intdegree(intnum);
structstudent
{
charNO[3];
charname[20];
floatmath;
floateng;
floatcomputer;
floataver;
}stu[N];
voidmenu();
intprintf_student(studentstu[]);
voidmath(studentstu[]);
voideng(studentstu[]);
voidcomputer(studentstu[]);
voidaverg(studentstu[]);
voiddata_analyse(studentstu[]);
intdegree(floatnum);
voidsearch_no(studentstu[]);
voidsearch_name(studentstu[]);
voidmain()
{
printf("输入你需要在功能号");
menu();
inti;
scanf("%d",&i);
switch(i)
{
case1:
math(stu);break;
case2:
eng(stu);break;
case3:
computer(stu);break;
case4:
averg(stu);break;
case5:
data_analyse(stu);break;
case6:
search_name(stu);break;
case7:
search_no(stu);break;
case8:
printf_student(stu);break;
default:
printf("dataerror!
");
}
}
voidmenu()
{
cout<<"**********************************************"< cout<<"*************欢迎进入学生成绩系统***********"< cout<<"可以实现地功能有: "< cout<<"1、按数学成绩排序,并生成相应地文件输出"< cout<<"2、按英语成绩排序,并生成相应地文件输出"< cout<<"3、按计算机成绩排序,生成相应地文件输出"< cout<<"4、查询个人平均成绩"< cout<<"5、各科成绩分布"< cout<<"6、按姓名查询"< cout<<"7、按学号查询"< cout<<"8、输入新学生信息"< cout<<"**********************************************"< } //输入学生情况 intprintf_student(studentstu[]) { FILE*mp; inti; if((mp=fopen("d: \\input.txt","w"))==NULL) { printf("Failedtoopenthisfile.\n"); exit(0); } cout<<"**************************************************"< cout<<"************请输入学生信息,用空格隔开! ***********"< cout<<"**************************************************"< fprintf(mp,"学号\t姓名\t数学\t英语\t计算机\n"); for(i=0;i { scanf("%s%s%f%f%f",&stu[i].NO,&stu[i].name,&stu[i].math,&stu[i].eng,&stu[i].computer); fprintf(mp,"%s\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].math,stu[i].eng,stu[i].computer); } fclose(mp); return0; } //按数学成绩排序 voidmath(studentstu[]) { system("cls"); cout<<"**************************************************"< cout<<"*****************按数学成绩排序*******************"< cout<<"**************************************************"< FILE*mp,*np; np=fopen("d: \\学生信息.txt","r"); if(np==NULL) { printf("Failedtoopenthisfile! \n"); exit(0); } inti=0; while(fscanf(np,"%s%s%f%f%f",&stu[i].NO,&stu[i].name,&stu[i].math,&stu[i].eng,&stu[i].computer)! =EOF) { i++; } mp=fopen("d: \\数学排序.txt","w"); if(mp==NULL) { printf("Failedtoopenthisfile.\n"); exit(0); } intk,j; studentt; for(k=0;k for(j=0;j { if(stu[j].math>stu[j+1].math) { t=stu[j]; stu[j]=stu[j+1]; stu[j+1]=t; } } cout<<"学号\t"<<"姓名\t"<<"数学\t"<<"英语\t"<<"计算机"< fprintf(mp,"学号\t姓名\t数学\t英语\t计算机\n"); for(i=0;i { printf("%s\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].math,stu[i].eng,stu[i].computer); fprintf(mp,"%s\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].math,stu[i].eng,stu[i].computer); } fclose(mp); } //按英语成绩排序 voideng(studentstu[]) { system("cls"); cout<<"**************************************************"< cout<<"*****************按英语成绩排序*******************"< cout<<"**************************************************"< FILE*mp,*np; np=fopen("d: \\学生信息.txt","r"); if(np==NULL) { printf("Failedtoopenthisfile! \n"); exit(0); } inti=0; while(fscanf(np,"%s%s%f%f%f",&stu[i].NO,&stu[i].name,&stu[i].math,&stu[i].eng,&stu[i].computer)! =EOF) { i++; } mp=fopen("d: \\英语排序.txt","w"); if(mp==NULL) { printf("Failedtoopenthisfile.\n"); exit(0); } intk,j; studentt; for(k=0;k for(j=0;j { if(stu[j].eng>stu[j+1].eng) { t=stu[j]; stu[j]=stu[j+1]; stu[j+1]=t; } } cout<<"学号\t"<<"姓名\t"<<"英语\t"<<"数学\t"<<"计算机"< fprintf(mp,"学号\t姓名\t英语\t数学\t计算机\n"); for(i=0;i { printf("%s\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].eng,stu[i].math,stu[i].computer); fprintf(mp,"%s\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].eng,stu[i].math,stu[i].computer); } fclose(mp); } //按计算机成绩排序 voidcomputer(studentstu[]) { system("cls"); cout<<"**************************************************"< cout<<"*****************按计算机成绩排序*****************"< cout<<"**************************************************"< FILE*mp,*np; np=fopen("d: \\学生信息.txt","r"); if(np==NULL) { printf("Failedtoopenthisfile! \n"); exit(0); } inti=0; while(fscanf(np,"%s%s%f%f%f",&stu[i].NO,&stu[i].name,&stu[i].math,&stu[i].eng,&stu[i].computer)! =EOF) { i++; } mp=fopen("d: \\计算机排序.txt","w"); if(mp==NULL) { printf("Failedtoopenthisfile.\n"); exit(0); } intk,j; studentt; for(k=0;k for(j=0;j { if(stu[j].computer>stu[j+1].computer) { t=stu[j]; stu[j]=stu[j+1]; stu[j+1]=t; } } cout<<"学号\t"<<"姓名\t"<<"计算机\t"<<"数学\t"<<"英语"< fprintf(mp,"学号\t姓名\t计算机\t数学\t英语\n"); for(i=0;i { printf("%s\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].computer,stu[i].eng,stu[i].math); fprintf(mp,"%s\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].computer,stu[i].eng,stu[i].math); } fclose(mp); } //求个人平均成绩 voidaverg(studentstu[]) { system("cls"); cout<<"**************************************************"< cout<<"****************按个人平均成绩排序****************"< cout<<"**************************************************"< FILE*mp,*np; np=fopen("d: \\学生信息.txt","r"); if(np==NULL) { printf("Failedtoopenthisfile! \n"); exit(0); } inti=0; while(fscanf(np,"%s%s%f%f%f",&stu[i].NO,&stu[i].name,&stu[i].math,&stu[i].eng,&stu[i].computer)! =EOF) { i++; } mp=fopen("d: \\按个人平均成绩排序.txt","w"); if(mp==NULL) { printf("Failedtoopenthisfile.\n"); exit(0); } intj; for(j=0;j { stu[j].aver=(stu[j].math+stu[j].eng+stu[j].computer)/3; } intm,n; studentt; for(m=0;m for(n=0;n { if(stu[n].computer>stu[n+1].computer) { t=stu[n]; stu[n]=stu[n+1]; stu[n+1]=t; } } cout<<"学号\t"<<"姓名\t"<<"计算机\t"<<"数学\t"<<"英语\t"<<"平均成绩"< fprintf(mp,"学号\t姓名\t计算机\t数学\t英语\t平均成绩\n"); for(i=0;i { printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].computer,stu[i].eng,stu[i].math,stu[i].aver); fprintf(mp,"%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].NO,stu[i].name,stu[i].computer,stu[i].eng,stu[i].math,stu[i].aver); } fclose(mp); } //学科成绩 voiddata_analyse(studentstu[])//各门课程地平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数; { floatma[8],en[8],co[8];//各门课0.平均1.最高2.最低3.不及格.... for(intj=0;j<8;j++) { ma[j]=0; en[j]=0; co[j]=0; } FILE*np; np=fopen("d: \\学生信息.txt","r"); if(np==NULL) { printf("Failedtoopenthisfile! \n"); exit(0); } inti=0; while(fscanf(np,"%s%s%f%f%f",&stu[i].NO,&stu[i].name,&stu[i].math,&stu[i].eng,&stu[i].computer)! =EOF) { //平均 ma[0]+=stu[i].math; en[0]+=stu[i].eng; co[0]+=stu[i].computer; //各门课统计、最高 if(stu[i].math>ma[1]) ma[1]=stu[i].math; if(stu[i].eng>en[1]) en[1]=stu[i].eng; if(stu[i].computer>co[1]) co[1]=stu[i].computer; //各门课统计、最低 if(stu[i].math ma[2]=stu[i].math; if(stu[i].eng en[2]=stu[i].eng; if(stu[i].computer co[2]=stu[i].computer; //分数段统计 switch(degree(stu[i].math)) { case0: ma[3]++;break; case1: ma[4]++;break; case2: ma[5]++;break; case3: ma[6]++;break; case4: ma[7]++;break; } switch(degree(stu[i].eng)) { case0: en[3]++;break; case1: en[4]++;break; case2: en[5]++;break; case3: en[6]++;break; case4: en[7]++;break; } switch(degree(stu[i].computer)) { case0: co[3]++;break; case1: co[4]++;break; case2: co[5]++;break; case3: co[6]++;break; case4: co[7]++;break; } i++; } fclose(np); ma[0]=ma[0]/N; en[0]=en[0]/N; co[0]=co[0]/N; printf("\t平均\t最高\t最低\t不及格\t60~69\t70~79\t80~89\t90~100\n"); printf("数学\t"); for(intk=0;k<8;k++) printf("%0.0f\t",ma[k]); printf("\n英语\t"); for(intn=0;n<8;n++) printf("%0.0f\t",en[n]); printf("\n计算机\t"); for(intm=0;m<8;m++) printf("%0.0f\t",co[m]); printf("\n"); } intdegree(floatnum) { if(num<60) return0; if(num<70&&num>59) return
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 任务书