C语言课程设计.docx

上传人:b****4 文档编号:3811499 上传时间:2022-11-25 格式:DOCX 页数:20 大小:21.48KB
下载 相关 举报
C语言课程设计.docx_第1页
第1页 / 共20页
C语言课程设计.docx_第2页
第2页 / 共20页
C语言课程设计.docx_第3页
第3页 / 共20页
C语言课程设计.docx_第4页
第4页 / 共20页
C语言课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言课程设计.docx

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

C语言课程设计.docx

C语言课程设计

一、题目的分析和程序说明:

第一个问题是对学生成绩的管理。

关于学生的一些信息和科目的学分应该建成结构体,处理起来方便!

因为其中要处理30个学生,5门科目,所以多次用到FOR的双重循环!

该问题还要求对文件的打开和新建比较熟悉!

在CASE1下面调用SECTION1,再在其内调用FUNCTION1—I分别完成七个不同的功能!

第一小问题很简单,定义文件类型的指针并正确地打开文件是关键,其次是FOR循环的运用,30个同学,5门课都要多次运用FOR循环!

第二个小问题:

平均分易算,关键是排名次。

定义结构件变量中有一项RANK(开始是0)用来存放第I个学生是多少名,算法是把第I个学生的平均成绩与其他所有学生的相比,只要小于,就使RANK+1,这样就使30个学生都有自己的一个名次,而且可以随序号的变动而变动。

第三个小问题:

二重FOR循环分别统计第J科处于各分数段的总人数。

总共5趟,每一趟出现一科5个分数段的总人数。

第四个小问题:

与第二个小问题类似,只是这次是把列加起来,除以总人数!

第五个小问题:

检查每一个人的每一科成绩,只要有〈60分的,就打出来。

本次算法妙用K=0,使得有两门及以上不及格的学生分别打出,保证没有一个漏网之鱼。

第六个小问题:

凡是符合优秀学生条件的都打出,用逻辑或(||)表示,之前还要统计每个学生等于100的科目有几个,〉90的有几个,循环条件要用。

第七个小问题画饼状图,在FUNCTION1-7()里调用函数FENBUTU()。

在这个函数里用SWITCH(……)CASE……,分别选择5门课各自的饼状图。

第二个问题解齐次线性方程组。

本题主要是FOR循环的应用!

运用高斯消元法,大体上分四步,分别对应四列。

第一次处理第一列,把第一元化成1,其他全为0。

第二次处理第二列,把第二元化成1,其他全为0。

第三次处理第三列,把第三元化成1,其他全为0。

第四次处理第四列,把第四元化成1,其他全为0。

这个过程就是矩阵化行最简形的过程,最终得到的一个4行5列的矩阵的第五列就是方程组的解。

算法容易理解,需注意顺序不能乱!

第三个问题是破解密码。

本问题主要用了:

函数的定义和声明,调用函数以及各子函数之间只能嵌套调用,不能嵌套定义!

问题虽然比较麻烦,但是分解成小问题就好办了。

在FUNCTION3-1()内调用函数POJIEMIMA(),再在该函数内调用6个子函数!

分别用来:

打开文件,判别素数,处理密码文件(把字母依次加上素数的个位,十位,百位),存放结果,保证加后在26个字母之内,判别是否在26个字母之内。

其中第三个函数又调用了后面二个函数。

二、源程序清单

#include

#include

structstudent

{

intnum;

charname[10];

intscore[5];

floataverage;

intrank;

}std[30];

structxuefen

{

intnum;

charsubject[20];

floatxuefen;

}xf[5];

structstudnt2

{

charname[10];

intnum[5];

}stud2[5]={{">=90",0,0,0,0,0},{">=80",0,0,0,0,0},{">=70",0,0,0,0,0},{">=60",0,0,0,0,0},{"<60",0,0,0,0,0}};

floataverage[5];

inti,j,sum;

FILE*fp;

charcontent[100];

charresult[100];

intrealLen=0;

voidmain()/*主菜单*/

{charch1;

do

{

printf("\n\n\n\n\n\n");

printf("*****************************C语言程序设计上机实习******************************\n");

printf("--------------------------------------------------------------------------------\n\n");

printf("1.学生成绩管理\n\n");

printf("2.解线性方程组\n\n");

printf("3.破解密码\n\n");

printf("4.退出\n\n");

printf("输入选择序号\n");

while(ch1=getchar(),ch1!

='1'&&ch1!

='2'&&ch1!

='3'&&ch1!

='4');

switch(ch1)

{

case'1':

section1();break;

case'2':

section2();break;

case'3':

section3();break;

case'4':

exit(0);

}

}while

(1);

}

section1()/*第'1'个'''''2'''''级菜单*/

{

charch21;

do

{

printf("\n\n\n\n\n\n\n");

printf("****************************学生成绩管理系统****************************\n");

printf("-------------------------------------------------------------------------------\n\n");

printf("1.读入原始数据并显示2.计算平均分级名次\n\n");

printf("3.计算分数段人数4.输出课程平均分\n\n");

printf("5.统计不及格情况6.输出优秀学生\n\n");

printf("7.作分布图8.返回上级菜单\n\n");

printf("输入选择序号\n\n");

while((ch21=getchar(),ch21!

='1'&&ch21!

='2'&&ch21!

='3'&&ch21!

='4'&&ch21!

='5'&&ch21!

='6'&&ch21!

='7'&&ch21!

='8'));

switch(ch21)

{

case'1':

function1_1();break;

case'2':

function1_2();break;

case'3':

function1_3();break;

case'4':

function1_4();break;

case'5':

function1_5();break;

case'6':

function1_6();break;

case'7':

function1_7();break;

case'8':

return(0);

}

}while

(1);

}

section2()/*第'''''2'''''个'''''2'''''级菜单*/

{

charch22;

do

{

printf("\n\n\n\n\n\n\n\n\n\n");

printf("**********************************解线性方程组*********************************\n");

printf("-------------------------------------------------------------------------------\n\n");

printf("1.解方程组\n\n");

printf("2.返回上级菜单\n\n");

printf("输入选择序号\n");

while((ch22=getchar(),ch22!

='1'&&ch22!

='2'));

switch(ch22)

{

case'1':

function2_1();break;

case'2':

return(0);

}

}while

(1);

}

section3()/*第3个'''''2'''''级菜单*/

{

charch23;

do

{

printf("\n\n\n\n\n\n\n\n\n\n");

printf("***************************************破解密码********************************\n");

printf("-----------------------------------------------------------------------------\n");

printf("1.破解密码\n\n");

printf("2.返回上级菜单\n\n");

printf("输入选择序号\n");

while((ch23=getchar(),ch23!

='1'&&ch23!

='2'));

switch(ch23)

{

case'1':

function3_1();break;

case'2':

return(0);

}

}while

(1);

}

function1_1()

{inti,j;

FILE*fp1,*fp2,*fp3;

chartitle[100],title1[100];

printf("加入读原始数据并显示的程序内容\n");

clrscr();

fp=fopen("C:

\\cjd.txt","r");

fp1=fopen("C:

\\xfd.txt","r");

fp2=fopen("成绩.txt","w");

fp3=fopen("学分.txt","w");

fgets(title,130,fp);

fgets(title1,130,fp1);

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

{

fscanf(fp,"%d%s",&std[i].num,std[i].name);

for(j=0;j<5;j++)

fscanf(fp,"%d",&std[i].score[j]);

}

for(j=0;j<5;j++)

fscanf(fp1,"%d%s%f",&xf[j].num,&xf[j].subject,&xf[j].xuefen);

printf("序号姓名英语数学大学物理机械制图C语言设计\n");

fprintf(fp2,"序号姓名英语数学大学物理机械制图C语言设计\n");

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

{

printf("%-2d%-8s",std[i].num,std[i].name);

fprintf(fp2,"%2d%-8s",std[i].num,std[i].name);

for(j=0;j<5;j++)

{printf("%-8d",std[i].score[j]);

fprintf(fp2,"%8d",std[i].score[j]);}

printf("\n");

fprintf(fp2,"\n");

}

printf("\n\n");

printf("编号课程名称课程学分\n");

fprintf(fp3,"编号课程名称课程学分\n");

for(j=0;j<5;j++)

{printf("%-6d%-8s%-.2f",xf[j].num,xf[j].subject,xf[j].xuefen);

fprintf(fp3,"%-6d%-8s%-.2f",xf[j].num,xf[j].subject,xf[j].xuefen);

printf("\n");

fprintf(fp3,"\n");}

fclose(fp);

fclose(fp1);

fclose(fp2);

fclose(fp3);

getch();

printf("**************按Enter键继续**************\n");

getchar();getchar();}

function1_2()

{floatsum1,sum2;

clrscr();

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

{

for(j=0,sum1=0,sum2=0;j<5;j++)

{

sum1+=std[i].score[j]*xf[j].xuefen;

sum2+=xf[j].xuefen;

}

std[i].average=sum1/sum2;

std[i].average=(int)(std[i].average*10+0.5)/10.0;

}

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

{

std[i].rank=1;

for(j=0;j<30;j++)

{

if(std[i].average

std[i].rank++;

}

}

fp=fopen("名次表.txt","w+");

fprintf(fp,"序号姓名英语数学大学物理机械制图C语言设计平均分名次\n");

printf("序号姓名英语数学大学物理机械制图C语言设计平均分名次\n");

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

{

fprintf(fp,"%6s%12d",std[i].name,std[i].num);

printf("%11d%7s",std[i].num,std[i].name);

for(j=0;j<5;j++)

{

fprintf(fp,"%12d",std[i].score[j]);

printf("%8d",std[i].score[j]);

}

fprintf(fp,"%8.1f%8d\n",std[i].average,std[i].rank);

printf("%12.1f%6d\n",std[i].average,std[i].rank);

}

fclose(fp);

printf("*********************************按Enter键继续********************************\n");

getchar();

getchar();

}

function1_3()

{clrscr();

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

for(j=0;j<5;j++)

if(std[i].score[j]>=90)

stud2[0].num[j]++;

elseif(std[i].score[j]>=80)

stud2[1].num[j]++;

elseif(std[i].score[j]>=70)

stud2[2].num[j]++;

elseif(std[i].score[j]>=60)

stud2[3].num[j]++;

elsestud2[4].num[j]++;

fp=fopen("成绩分布表.txt","w+");

fputs("范围英语数学大学物理机械制图C语言设计\n",fp);

printf("范围英语数学大学物理机械制图C语言设计\n");

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

{fprintf(fp,"%4s",stud2[i].name);

printf("%4s",stud2[i].name);

for(j=0;j<5;j++)

{

fprintf(fp,"%10d",stud2[i].num[j]);

printf("%12d",stud2[i].num[j]);

}

fputs("\n",fp);

printf("\n");

}

fclose(fp);

printf("*********************************按Enter键继续********************************\n");

getchar();

getchar();}

function1_4()

{intt;clrscr();

fp=fopen("课程平均分.txt","w+");

fputs("课程英语数学大学物理机械制图C语言设计\n平均分",fp);

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

printf("课程英语数学大学物理机械制图C语言设计\n平均分");

for(j=0;j<5;j++)

{

sum=0;

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

{t=std[i].score[j];

sum+=t;

average[j]=sum/(30*1.0);

average[j]=(int)(average[j]*10+0.5)/10.0;}

fprintf(fp,"%10.1f",average[j]);

printf("%10.1f",average[j]);}

fclose(fp);

printf("\n*********************************按Enter键继续*********************************\n");

getchar();

getchar();}

function1_5()

{intk;clrscr();

fp=fopen("不及格表单.txt","w+");

fputs("序号姓名不及格课程名称课程学分成绩\n",fp);

printf("序号姓名不及格课程名称课程学分成绩\n");

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

{

k=0;

for(j=0;j<5;j++)

if(std[i].score[j]<60)

{if(k==0)

{fprintf(fp,"%d%s%s%10.1f%d\n",std[i].num,std[i].name,xf[j].subject,xf[j].xuefen,std[i].score[j]);

printf("%d%s%s%10.1f%d\n",std[i].num,std[i].name,xf[j].subject,xf[j].xuefen,std[i].score[j]);

k++;}

else

{fprintf(fp,"%d%s%s%10.1f%d\n",std[i].num,std[i].name,xf[j].subject,xf[j].xuefen,std[i].score[j]);

printf("%d%s%s%10.1f%d\n",std[i].num,std[i].name,xf[j].subject,xf[j].xuefen,std[i].score[j]);}

}

}

fclose(fp);

printf("*********************************按Enter键继续********************************\n");

getchar();getchar();}

function1_6()

{intm=0,n=0;clrscr();

fp=fopen("优秀学生表单.txt","w+");

fprintf(fp,"序号姓名英语数学大学物理机械制图C语言设计平均分名次\n");

printf("序号姓名英语数学大学物理机械制图C语言设计平均分名次\n");

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

{m=0;n=0;

for(j=0;j<5;j++)

{

if(std[i].score[j]==100)m++;

if(std[i].score[j]>=90)n++;

}

if(std[i].average>=90||std[i].rank<=3||(std[i].average>=85&&(m>=1||n>=2)))

{

fprintf(fp,"%d%s",std[i].num,std[i].name);

printf("%d%s",std[i].num,std[i].name);

for(j=0;j<5;j++)

{

fprintf(fp,"%d",std[i].score[j]);

printf("%d",std[i].score[j]);

}

fprintf(fp,"%8.1f%d\n",std[i].average,std[i].rank);

printf("%12.1f%d\n",std[i].average,std[i].rank);

}

}

fclose(fp);

printf("*********************************按Enter键继续********************************\n");

getchar();getchar();}

#include

#include

#definepi3.1415926

#definem2

#definen150

#definer160

voidfenbutu(intb,intc,intd,inte,intf)

{chara[5][10]={">=90",">=80",">=70",">=60","<60"};

floatstangle=0;

inti,j,gdriver=DETECT,gmode=0;

intaverage[5];

average[0]=b;

average[1]=c;

average[2]=d;

average[3]=e;

average[4]=f;

initgraph(&gdriver,&gmode,"C:

\\Win-TC");

setbkcolor(15);

cleardevice();

for(j=0;j<5;j++)

setcolor(4);

circle(290,240,r);

line(290,240,290+r,240);

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

{stangle+=average[i]*360.0/30;

line(290,240,(int)(290+r*cos(-stangle*pi/180)),(int)(240+r*sin(-stangle*pi/180)));

setfillstyle(1,i+1);

rectangle(500,80+60*i,540,100+60*i);

floodfill(501,81+60*i,4);

outtextxy(560,90+60*i,a[i]);

floodfill((int)(290+n*cos(-(sta

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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