长江大学机械工程学院Word文档下载推荐.docx

上传人:b****5 文档编号:18331893 上传时间:2022-12-15 格式:DOCX 页数:11 大小:25.26KB
下载 相关 举报
长江大学机械工程学院Word文档下载推荐.docx_第1页
第1页 / 共11页
长江大学机械工程学院Word文档下载推荐.docx_第2页
第2页 / 共11页
长江大学机械工程学院Word文档下载推荐.docx_第3页
第3页 / 共11页
长江大学机械工程学院Word文档下载推荐.docx_第4页
第4页 / 共11页
长江大学机械工程学院Word文档下载推荐.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

长江大学机械工程学院Word文档下载推荐.docx

《长江大学机械工程学院Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《长江大学机械工程学院Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。

长江大学机械工程学院Word文档下载推荐.docx

学生人数M不少于30人,课程门数N不小于5,姓名为本班的真实姓名课程中必须姓名为本班的真实姓名,有一门考查课。

2.录入本班班级学生信息录入本班班级学生信息,内容包含“编号课程名称课程学分”,录入课程学分情况;

读取原始数据文件的内容,,计算每个学生的加权平均分(保留一位小数,4舍5入),按平4均分排名次,平均分相同则名次相同平均分相同则名次相同。

创建一个数据文件(建议为:

文本文件,存放班级文本文件)的成绩表,按下列式形存放按下列式形存放。

计算加权平均分的公式如下

加权平均分=

∑课程学分×

成绩

i=1iN

N

i

∑课程学分

i=1i

3.分别统计全班每门课的平均分计算各分数段(<

60;

60~69;

70~79;

80~89;

90以上)的学生分别统计全班每门课的平均分。

(<

90人数。

创建一个数据文件创建一个数据文件(建议为:

文本文件),存放上述计算结果。

4.分别统计男生和女生每门课的平均分分别统计男生和女生每门课的平均分。

结果存放在一个数据文件中;

5.输出所有存在不及格课程学生的名单输出所有存在不及格课程学生的名单,包括:

学号、姓名、性别、不及格课程名称不及格课程名称、课程学分及成绩。

结果存放在一个数据文件中结果存放在一个数据文件中。

6.输出优秀学生名单,包括包括:

学号、姓名、性别、名门课成绩、平均分和名次平均分和名次。

结果存放在一个数据文件中。

优秀学生的条件为:

1.平均分≥90902.名次在本班前3名3.平均分≥85,并且至少有一门课的成绩为95分并且至少有一门课的成绩为4.平均分≥85,并且至少有二门课的成绩为并且至少有二门课的成绩为≥90分

输出优秀学生干部名单,包括:

学号、姓名、性别、职务、名门课成绩名门课成绩、平均分和名7.输出优秀学生干部名单次。

结果存放在一个数据文件中结果存放在一个数据文件中。

1.平均分≥85852.名次在本班前20%名3.平均分≥80,并且至少有一门课的成绩为并且至少有一门课的成绩为≥95分4.平均分≥80,并且至少有二门课的成绩为并且至少有二门课的成绩为≥90分

题目的分析思路要点:

题目的分析思路要点:

前期准备:

分别建立三前期准备:

分别建立三个数据文件文件1(原始成绩数据file1.txt)用于存放学生成绩;

数据文件2(学生基本信息file2.txt)用于存放学生的基本信息;

学生基本信息文件3(课程及学分设置file3.txt)用于存放N门课程及对应的学分。

课程及学分设置

1)学生成绩管理系统

1.(定义三个结构体数组原始数据file1.txt存放学生成绩;

个结构体数组:

学生基本信息file2.txt;

存放学生基本信息;

课程及学分file3.txt存放课程及其学分)2.读入原始数据并显示((将其读入另外的“成绩”,“基本信息”,”学分学分”中);

运用数组相关的知识点,对汉字信息采用字符串类型的读入,对汉字信息采用字符串类型的读入对数字采用整型数组读入,同时输出相关信息同时输出相关信息,其中设定不同的指针指向文件,便于使用。

程学

3.编写函数用于计算加权加权平均分及。

其(的””中));

4.编写函数计算全班每门课程的平均分及不同分数的数(其编写函数计算全班每门课程的平均分的”的每门课平均”中);

5.编写函数输出男女生课程平均分课程平均分(其的”男女生课程平均分中,用课程平均分中)之前输出的班级同学的平均分的文本,用之前输出的班级同学的平均分的文本及比较函数,别sex与第一个男生做比较与第一个男生做比较,果比较结果相同男生,输出输出,计算男生平均分,女生也相同方式女生也相同方式;

6.编写函数统计不及格情况编写函数统计不及格情况,,序及同学出不及格的同学,输出其相关的信息(其输出其相关的信息。

的”不及格”中);

7.编写函数输出优秀学生编写函数输出优秀学生输出优秀学生。

其(的”优秀学生”的中);

编写函数输出优秀学生干部(其的”优秀学生干部.txt”中))8.编写函数输出优秀学生干部9.编写菜单,共有8个菜单项个菜单项,其中7个要求,第8个出函数。

出函数

2)破译密码)

1.求出100-200之间的素数之间的素数,解码的密匙。

2.根据要求编写出对应密匙的解码结果根据要求编写出对应密匙的解码结果。

3.输出解码结果。

(二)程序框图菜单图

函数

组破生译成绩管理码符本题不做密字大成

()

一级菜单结构图

学生成绩管理系统

1.读入原始数据并显示菜单

2.计算加权平均分及名次

3.统计全班每门课程的平均分

4.统计男生和女生每门课平均

5.统计不及格情况

6.输出优秀学生

7.输出优秀学生干部名单

8.返回上级菜单

破译密码流程图

定义文件型数据的指针变量对密码文件进行读取

运用循环语句从101-200200之间找出素数

对找到的整型素数n/100得到百位n%100/10得到十位n%10得到个对找到的整型素数位,把他放入一个新的数组中把他放入一个新的数组中

将所有英文字符按序轮换减去对应的数组元素,原来是大(小)将所有英文字符按序轮换减去对应的数组元素写英文字符超出大(小)写英文字符范围加上26。

写英文字符超出大输出解密结果。

输出解密结果

输出解密结果

源程序清单解析

(三)源程序清单解析

#include"

stdio.h"

#include"

conio.h"

stdlib.h"

#include<

string.h>

math.h>

#defineM36定义一个全局变量M36为班级学生的人数1.定义五个结构体类型变量,学生成绩表”“学生信息”“课程与学分设置”“汇总所有定义五个结构体类型变量,定义五个结构体类型变量“学生成绩表”学生信息”课程与学分设置”、、、信息”平均分”向系统声明这是一个结构体类型,它包括成员列表中不同类型的成员。

信息”“平均分”向系统声明这是一个结构体类型,它包括成员列表中不同类型的成员。

、例如:

例如:

structstudent//学生成绩表学生成绩表{intnum;

charname[30];

intscore[5];

charkaocha[10];

}stud[M];

2.准备读入数据准备读入数据voidfunction1_1(){printf("

***************读入原始数据并显示的程序内容{printf("

***************读入原始数据并显示的程序内容*****************\n"

);

读入原始数据并显示的程序内容*****************inti;

charf1[15],f2[15],f3[15],f4[15],f5[15],f6[15],f7[15],f8[15];

charm1[15],m2[15],m3[15],m4[15],m5[15];

charn1[15],n2[15],n3[15];

文件读入举例如下:

通过文件指针找到与它关联的文件。

(1)定义文件型数据的指针通过文件指针找到与它关联的文件。

)定义文件型数据的指针通过文件指针找到与它关联的文件例如定义:

例如定义:

FILE*fp,*fp1,*fp2;

对应学生成绩表,打开文件时通知编译系统一下三个信息:

(2)fp文件指向file1对应学生成绩表,打开文件时通知编译系统一下三个信息:

①打)开文件的名字②使用文件的方式③开文件的名字②使用文件的方式③哪一个指针变量指向打开的文件运用如下方式:

运用如下方式:

fp=fopen("

G:

\\0000\\file1.txt"

"

r"

//打开文件一,学生成绩表打开文件一,打开文件一if(fp==NULL){printf("

cannotopenthefilefile\n"

exit(0);

}fscanf(fp,"

%s%s%s%s%s%s%s%s\n"

f1,f2,f3,f4,f5,f6,f7,f8);

//运用格式化的方式fscanf(fp,"

%s%s%s%s%s%s%s%s运用格式化的方式读取文件内容for(i=0;

i<

M;

i++)//设立一个循环要求分别读入每个同学每一科的成绩,包括输出设立一个循环要求分别读入每个同学每一科的成绩,设立一个循环要求分别读入每个同学每一科的成绩一颗考查课的成绩fscanf(fp,"

%d%s%d%d%d%d%d%s\n"

&

stud[i].num,stud[i].name,&

stud[i].scofscanf(fp,"

%d%s%d%d%d%d%d%sn"

stud[i].score[0],&

stud[i].score[1],&

stud[i].score[2],&

stud[i].score[3],&

stud[i].score[4],stud[ire[0],&

stud[i].score[4],stud[i].kaocha);

fclose(fp);

文件读取完毕后,关闭文件文件读取完毕后文件读取完毕后,(3)读取完毕后,显示输出读取的内容)读取完毕后,printf("

%2s%5s%8s%8s%8s%9s%9s%10sn"

先输出%10s\n"

先输出表头内容for(i=0;

i++)设立循环,输出所有学生的相关信息。

设立循环,设立循环输出所有学生的相关信息。

printf("

%-5d%-8s%8s%6d%8d%10d%10d%10d%10s\n"

stud[i].num,stud[i].name,stn"

stud[i].num,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].score[4],stud[i].kaocha);

\n"

可以使用同样方式打开“学生信息”学分设置”“学分设置可以使用同样方式打开“学生信息”学分设置”的文件“3.计算加权平均分以及学生名次计算加权平均分以及学生名次voidfunction1_2(){printf("

*************************printf("

*************************计算平均分及名次*************************\n"

*************************inti,j;

floatsum1,sum2;

FILE*fp,*fp1,*fp2,*fp3;

“file3.txt”对里面数据进行

(1)按照上述方式以只读的形式打开“file1.txt”file2.txt”)按照上述方式以只读的形式打开“”“”“”,读取。

读取。

(2)设立循环语句,从第一个学生开始,用课程对应的课程的学分再将得到的值赋给)设立循环语句,从第一个学生开始,用课程*对应的课程的学分再将得到的值赋给sum1;

将总学分的值赋给sum2,用sum1/sum2所得的值就是此同学的加权平均;

,进行第二个学生的加权平均分统计。

分,接着i++,进行第二个学生的加权平均分统计。

进行第二个学生的加权平均分统计主要程序如下:

主要程序如下:

for(i=0;

i++){sum1=0.0;

sum2=0.0;

for(j=0;

j<

5;

j++){sum1=sum1+stud[i].score[j]*st[j].xuefen;

/*求加权平均分,∑课/*求加权平均分用(求加权平均分,*对应学分∑课程学分*/对应学分)程*对应学分)/∑课程学分sum2=sum2+st[j].xuefen;

}str[i].average=sum1/sum2;

}(3)设立名次排名的循环,先将第一个同学的名次定位rank=1,第下一个同学的加权)设立名次排名的循环,,平均分与这一个的同学的进行比较,如果出现他得平均小,str[i].rank=str[i].rank+1,平均分与这一个的同学的进行比较,如果出现他得平均小,则str[i].rank=str[i].rank+1,如str[i].rank=str[i].rank。

接着就开始进行第二个同学的比较同学的比较,果相等则str[i].rank=str[i].rank。

接着就开始进行第二个同学的比较,同样将第二个学生的名次rank赋值为1,如上进行比较,主要程序如下:

i++){str[i].rank=1;

j++)

{if(str[i].average<

str[j].average)if(str[i].average<

str[j].average)str[i].rank=str[i].rank+1;

//通过比//通过比较平均分进行排名if(str[i].average==str[j].average)str[i].rank=str[i].rank;

}(4)将所得名次排名等信息,写到一个新的文件中“w”形式为写到文件中。

)将所得名次排名等信息,写到一个新的文件中“”形式为写到文件中。

方式如下:

if((fp3=fopen("

\\00\\file2.1.txt"

w"

))==NULL)//在新的文本中输if((fp3=fopen("

file2.1.txt"

))==NULL)//在新的文本中输出信息{printf("

}fprintf(fp3,"

%-2sfprintf(fp3,"

%2s%4s%5s%6s%9s%9s%8s%8s%s名次\n"

f1,f2,m3,m5,f3,f4,f5,f6,f7,f8);

平均分名次printf("

%-2s%4sprintf("

%2s%4s%6s%6s%6s%6s%6s%6s%8s平均分名次\n"

f1,f2,m3,m5,f3,f4,f5,n"

f1,f2,m3,m5,f3,f4,f5,f6,f7,f8);

输出表头,输出表头,“名且加入平均分”名“平均分”“的表头。

次”的表头。

i++){fprintf(fp3,"

%-2d%-6s%3s%10s%6d%8d%8d%8d{fprintf(fp3,"

%6s%5d%8.2f%8d\n"

stud[i].num,stud[i].name,stu[i].sex,stu[i].position,stud[i].score[0],studn"

stud[i].num,stud[i].name,stu[i].sex,stu[i].position,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].score[4],str[i].average,str[i].rank);

%-2d%6s%3s%10s%6d%8d%8d%8d%6d%8.2f%8d2d%-6s%6d%8.2f%8d\n"

stud[i].num,stud[i].name,stu[i].sex,stu[i].position,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].score[4],str[i].average,str[i].rank);

}(6)使用完后,关闭文件)使用完后,fclose(fp);

fclose(fp1);

fclose(fp2);

fclose(fp3);

*********按Enter键继续键继续**********\n"

按getchar();

getchar();

}4.课程平均分和分数段人数课程平均分和分数段人数voidfunction1_3(){printf("

*****************课程平均分和分数段人数printf("

*****************课程平均分和分数段人数*****************\n"

课程平均分和分数段人数*****************inti,j,sum;

charf1[10],f2[10],f3[10],f4[10],f5[10],f6[10],f7[10],f8[15];

FILE*fp,*fp5;

(1)按照上面介绍的方式打开学生信息的文件file1.txt。

)。

个科目;

在大循环中建立学生的循环,

(2)设立一个大循环,除去考查课的5个科目;

在大循环中建立学生的循环,统计第)设立一个大循环,可以得到此课程的平均分;

一个学科所有学生的成绩赋值到sum中,sum/36.0可以得到此课程的平均分;

进行第二个课程平均分的统计。

接着i++进行第二个课程平均分的统计。

进行第二个课程平均分的统计程序要点如下:

程序要点如下:

i++)0;

i++){sum=0;

j++){sum=sum+stud[j].score[i];

}per[i].ping=sum/36.0;

}(3)设立科目的大循环并在循环中加入学生的循环,从第一个科目开始,对第一个学生的)设立科目的大循环并在循环中加入学生的循环,从第一个科目开始,成绩进行判断各分数段各分数段(<

90以上如果在相应的那个分数段,以上)如果在相应的那个分数段就如果在相应的那个分数段,成绩进行判断各分数段在那分数段的计数器count上+1,知道最后一个学生信息读完。

接着进行第二个科目,知道最后一个学生信息读完。

的统计。

统计结束后设立新的文本存放统计结束后的信息。

i++)for(j=0;

j++){if(stud[j].score[i]>

=90)per[0].count[i]++;

/*对不同分数段/*对不同分数段的人进行统计*/的人进行统计*/elseif(stud[j].score[i]>

=80)per[1].count[i]++;

elseif(stud[j].score[i]>

=70)per[2].count[i]++;

=60)per[3].count[i]++;

elseper[4].count[i]++;

}fp5=fopen("

\\00\\\file3.1.txt"

//建立新的文本对不同分数段的记录建立新的文本对不同分数段的记录if(fp5==NULL){printf("

}fprintf(fp5,"

%8s%8s%8s%8s%8s\n"

f3,f4,f5,f6,f7);

n"

范围printf("

范围fprintf(fp5,"

>

=90(优%5d%8d%8d%9d%8d\n"

per[0].count[0],per[0].count[1],per[0].coun%5d%8d%8d%9d%8dn"

per[0].count[0],per[0].count[1],per[0].coun秀)t[2],per[0].count[3],per[0].count[4]);

per[0].count[0],per[0].count[1]%5d%8d%8d%9d%8dn"

per[0].count[0],per[0].count[1],per[0].count秀)[2],per[0].count[3],per[0].count[4]);

fprintf(fp5,"

80~90(良%5d%8d%8d%9d%8d\n"

per[1].count[0],per[1].count[1],per[1].count[2],好)%5d%8d%8d%9d%8dn"

per[1].count[0],per[1].count[1],per[1].count[2],per[1].count[3],per[1].count[4]);

80~90(良

%5d%8d%8d%9d%8d\n"

per[1].count[0],per[1].count[1],per[1].count[2],nt[1],per[1].count[2],好)%5d%8d%8d%9d%8dper[1].count[3],per[1].count[4]);

70~80(中%5d%8d%8d%9d%8d\n"

per[2].count[0],per[2].count[1],per[2].count[2],等)%5d%8d%8d%9d%8dn"

per

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

当前位置:首页 > 人文社科 > 设计艺术

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

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