【学生管理系统C语言】没有用数据库,正在学习C语言的看看吧

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

# define SIZE1 33

# define SIZE2 7

# define PI 3.14159

struct student_grade //学生成绩

{

intnum; //学号

charname[10]; //姓名

floatgrd[7]; //成绩

floatave; //加权平均分

intmc; //名次

}gd[SIZE1],k; //结构体数组长度为全班人数

struct student_info //学生信息

{

intnum; //学号

charname[10]; //姓名

charsex[4]; //性别

intage; //年龄

charduty[10]; //职务

}info[SIZE1],l;

struct credits //课程学分

{

intnum; //编号

charsbj[10]; //课程名称

floatpnt; //学分

}pts[SIZE2];

int main()

{

intsection1();

intsection3();

char ch1;

do{

printf("\n\n\n\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'3':section3(); break;

case'4':return(0);

}

}while(1);

}

int section1()

{

void function1_1();

void function1_2();

void function1_3();

void function1_4();

void function1_5();

void function1_6();

void function1_7(); /*第1个2级菜单*/

char ch21;

do{

system("cls"); /*清屏*/

printf("\n\n\n\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");

FILE*fp1,*fp2,*fp3;

int i,j;char str[100];

if((fp1=fopen("E:\\grade.txt","r"))==NULL)

{printf("cannot open file\n");

exit(0);}

fgets(str,100,fp1);

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

{

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

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

fscanf(fp1,"%f",&gd[i].grd[j]);

}

fclose(fp1);

if((fp2=fopen("E:\\info.txt","r"))==NULL)

{printf("cannot open file\n");

exit(0);}

fgets(str,100,fp2);

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

fscanf(fp2,"%d%s%s%d%s",&info[i].num,info[i].name,info[i].sex,&info[i].age,info[i].duty);

fclose(fp2);

if((fp3=fopen("E:\\credits.txt","r"))==NULL)

{printf("cannot open file\n");

exit(0);}

fgets(str,100,fp3);

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

fscanf(fp3,"%d%s%f",&pts[i].num,pts[i].sbj,&pts[i].pnt);

fclose(fp3);

printf(" 输入选择序号\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);

}

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

{

voidfunction3_1();

char ch23;

do{

system("cls");

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

}

void function1_1() // 读入原始数据并显示

{

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

int i,j;

printf(" 学号 姓名 高数 听力 英语 毛概 近代 体育 形式\n");

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

{

printf("%10d %12s",gd[i].num,gd[i].name);

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

printf("%6.2f ",gd[i].grd[j]);

printf("\n");

}

printf("\n\n");

printf(" 学号 姓名 性别 年龄 职务\n");

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

printf("%10d %12s %s %4d%12s\n",info[i].num,info[i].name,info[i].sex,info[i].age,info[i].duty);

printf("\n\n");

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

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

printf("%d %s %f\n",pts[i].num,pts[i].sbj,pts[i].pnt);

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

getchar();getchar();

}

void function1_2() //计算平均分及名次

{

printf("加入计算平均分及名次的程序内容\n");

int i,j;FILE *fp;

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

{

floatsum=0,n=0;

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

{

sum=sum+gd[i].grd[j]*pts[j].pnt;

n=n+pts[j].pnt;

}

gd[i].ave=sum/n;

}

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

for(i=0;i<SIZE1-j;i++)

if(gd[i].ave<gd[i+1].ave)

{

k=gd[i];

gd[i]=gd[i+1];

gd[i+1]=k;}

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

gd[i].mc=i+1;

if((fp=fopen("E:\\mc.txt","w"))==NULL)

{

printf("cannot open file\n");

exit(0);

}

fprintf(fp,"学号 姓名 高数 听力 英语 毛概 近代 体育 形式 平均分名次\n");

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

{

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

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

fprintf(fp,"%6.2f ",gd[i].grd[j]);

fprintf(fp,"%6.2f %d\n",gd[i].ave,gd[i].mc);

}

fclose(fp);

printf("学号 姓名 高数 听力 英语 毛概 近代 体育 形式 平均分 名次\n");

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

{

printf("%10d %6s",gd[i].num,gd[i].name);

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

printf("%6.2f ",gd[i].grd[j]);

printf("%6.2f %d\n",gd[i].ave,gd[i].mc);

}

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

getchar(); getchar();

}

void function1_3()

{

printf("加入计算课程平均分和分数段人数程序内容\n");

inti,j,k=0,rs[SIZE2][5]={0};

floatve[SIZE2]={0};

FILE*fp;

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

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

if(gd[j].grd[i]>=90)

rs[i][0]++;

else if(gd[j].grd[i]>=80)

rs[i][1]++;

else if(gd[j].grd[i]>=70)

rs[i][2]++;

else if(gd[j].grd[i]>=60)

rs[i][3]++;

else

rs[i][4]++;

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

{

{

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

ve[k]+=gd[j].grd[i];

}

ve[k]/=SIZE1;k++;

}

if((fp=fopen("E:\\chengji.txt","w"))==NULL)

{

printf("cannot open file\n");

exit(0);

}

fprintf(fp,"分数段 高数 听力 英语 毛概 近代 体育 形式\n");

fprintf(fp,">=90 ");

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

fprintf(fp,"%8d",rs[i][0]);

fprintf(fp,"\n");

fprintf(fp,"80~90 ");

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

fprintf(fp,"%8d",rs[i][1]);

fprintf(fp,"\n");

fprintf(fp,"70~80 ");

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

fprintf(fp,"%8d",rs[i][2]);

fprintf(fp,"\n");

fprintf(fp,"60~70 ");

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

fprintf(fp,"%8d",rs[i][3]);

fprintf(fp,"\n");

fprintf(fp,"<60 ");

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

fprintf(fp,"%8d",rs[i][4]);

fprintf(fp,"\n");

fprintf(fp,"课程平均分 ");

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

fprintf(fp,"%.2f ",ve[i]);

fclose(fp);

printf("分数段 高数 听力 英语 毛概 近代 体育 形式\n");

printf(">=90 ");

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

printf("%8d",rs[i][0]);

printf("\n");

printf("80~90 ");

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

printf("%8d",rs[i][1]);

printf("\n");

printf("70~80 ");

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

printf("%8d",rs[i][2]);

printf("\n");

printf("60~70 ");

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

printf("%8d",rs[i][3]);

printf("\n");

printf("<60 ");

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

printf("%8d",rs[i][4]);

printf("\n");

printf("课程平均分 ");

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

printf("%.1f ",ve[i]);

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

getchar();getchar();

}

void function1_4()

{

printf("加入计算男生和女生课程平均成绩程序内容\n ");

inti,j,k=0,l=0;

double m,sum;

double v1[7]={0},v2[7]={0};

FILE *fp3;

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

{

m=0;sum=0;

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

if(strcmp (info[j].sex,"男")==0)

{

sum+=gd[j].grd[i];

m++;

}

sum/=m;

v1[k]=sum;

k++;

}

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

{

m=0,sum=0;

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

if(strcmp(info[j].sex,"男")!=0)

{

sum+=gd[j].grd[i];

m++;

}

sum/=m;

v2[l]=sum;

l++;

}

if((fp3=fopen("E:\\nannv.txt","w"))==NULL)

{

printf("cannotopen file\n");

exit(0);

}

fprintf(fp3,"性别 高数 听力 英语 毛概 近代 体育 形式\n");

fprintf(fp3,"男 ");

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

fprintf(fp3,"%.2f ",v1[i]);

fprintf(fp3,"\n");

fprintf(fp3,"女 ");

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

fprintf(fp3,"%.2f ",v2[i]);

fprintf(fp3,"\n");

fclose(fp3);

printf("性别 高数 听力 英语 毛概 近代 体育 形式\n");

printf("男 ");

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

printf("%.2f ",v1[i]);

printf("\n");

printf("女 ");

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

printf("%.2f ",v2[i]);

printf("\n");

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

getchar();getchar();

}

void function1_5()

{

printf("加入统计不及格情况程序内容\n");

inti,j;

FILE *lp;

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

if((lp=fopen("E:\\bujige.txt","w"))==NULL)

{

printf("can not open file\n");

exit(0);

}

fprintf(lp,"不及格科目 学号 姓名 分数\n");

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

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

if(gd[i].grd[j]<60)

fprintf(lp," %4s %8d%10s%6.2f\n",pts[j].sbj,gd[i].num,gd[i].name,gd[i].grd[j]);

fclose(lp);

printf("不及格科目 学号 姓名 分数\n");

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

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

if(gd[i].grd[j]<60)

printf(" %4s %8d%10s%6.2f\n",pts[j].sbj,gd[i].num,gd[i].name,gd[i].grd[j]);

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

getchar();getchar();

}

void function1_6()

{

printf("加入输出优秀学生程序内容\n");

inti,j,m=0;

inta[]={0},b[]={0};

floatnum;

FILE*fp4;

if((fp4=fopen("E:\\yxxs.txt","w"))==NULL)

{

printf("cannot open file\n");

exit(0);

}

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

{

num=0;

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

num+=gd[i].grd[j];

gd[i].ave=num/SIZE2;

}

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

for(i=0;i<SIZE1-j;i++)

if(gd[i].ave<gd[i+1].ave)

{

k=gd[i];

gd[i]=gd[i+1];

gd[i+1]=k;

l=info[i];

info[i]=info[i+1];

info[i+1]=l;

}

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

gd[i].mc=i+1;

fprintf(fp4,"学号 姓名性别 职务 高数 听力 英语 毛概 近代 体育 形式 平均名次\n");

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

{

inta=0,b=0;

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

{

if(gd[i].grd[j]>=95)a++;

if(gd[i].grd[j]>=90) b++;

}

if(gd[i].ave>=90||gd[i].mc<=3||(gd[i].ave>=85&&(a>=0||b>=0)))

{

fprintf(fp4,"%10d%6s%4s%6s",gd[i].num,gd[i].name,info[i].sex,info[i].duty);

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

fprintf(fp4,"%6.2f",gd[i].grd[j]);

fprintf(fp4,"%6.2f%4d\n",gd[i].ave,gd[i].mc);

}

}

fclose(fp4);

printf("学号 姓名性别 职务 高数 听力 英语 毛概 近代 体育 形式 平均名次\n");

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

{

inta=0,b=0;

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

{

if(gd[i].grd[j]>=95)a++;

if(gd[i].grd[j]>=90) b++;

}

if(gd[i].ave>=90||gd[i].mc<=3||(gd[i].ave>=85&&(a>=1||b>=2)))

{

printf("%10d%6s%4s%6s",gd[i].num,gd[i].name,info[i].sex,info[i].duty);

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

printf("%6.2f",gd[i].grd[j]);

printf("%6.2f%4d\n",gd[i].ave,gd[i].mc);

}

}

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

getchar();getchar();

}

void function1_7()

{

printf("加入输出优秀学生干部程序内容\n");

int i,j,m=0;

floatnum;

char str[100];

FILE *fp4;

if((fp4=fopen("E:\\yxgb.txt","w"))==NULL)

{printf("cannot open file\n");

exit(0);}

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

{num=0;

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

num+=gd[i].grd[j];

gd[i].ave=num/7.0;

}

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

for(i=0;i<SIZE1-j;i++)

if(gd[i].ave<gd[i+1].ave)

{

k=gd[i];

gd[i]=gd[i+1];

gd[i+1]=k;

l=info[i];

info[i]=info[i+1];

info[i+1]=l;

}

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

gd[i].mc=i+1;

fprintf(fp4," 优秀学生干部名单 \n");

fprintf(fp4,"学号 姓名 性别 职务 高数 听力 英语 毛概 近代 体育 形式 平均名次\n");

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

{

inta=0,b=0;

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

{

if(gd[i].grd[j]>=95)a++;

if(gd[i].grd[j]>=90) b++;

}

if(((strcmp(info[i].duty,"无")!=0)&&(gd[i].ave>=85||gd[i].mc<=SIZE1*0.2||(gd[i].ave>=80&&(a>=1||b>=2)))))

{

fprintf(fp4,"%9d%7s%3s%9s",gd[i].num,gd[i].name,info[i].sex,info[i].duty);

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

fprintf(fp4,"%6.2f",gd[i].grd[j]);

fprintf(fp4,"%6.2f%3d\n",gd[i].ave,gd[i].mc);

}

}

fclose(fp4);

printf(" 优秀学生干部名单 \n");

printf("学号 姓名 性别 职务 高数 听力 英语 毛概 近代 体育 形式 平均名次\n");

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

{

inta=0,b=0;

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

{

if(gd[i].grd[j]>=95)a++;

if(gd[i].grd[j]>=90) b++;

}

if(((strcmp(info[i].duty,"无")!=0)&&(gd[i].ave>=85||gd[i].mc<=SIZE1*0.2||(gd[i].ave>=80&&(a>=1||b>=2)))))

{

printf("%9d%7s%3s%9s",gd[i].num,gd[i].name,info[i].sex,info[i].duty);

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

printf("%6.2f",gd[i].grd[j]);

printf("%6.2f%3d\n",gd[i].ave,gd[i].mc);

}

}

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

getchar();getchar();

}

void function3_1()

{

printf("加入显示心形的程序内容\n");

inti,j,q,x,y;

doubles,r;

char cs[52][50];

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

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

cs[i][j]=' ';

for(q=0;q<=360;q++)

{

s=q*PI/180;

r=20*(1-sin(s));

y=r*cos(s)+26;

x=5-r*sin(s);

cs[x][y]='\H';

}

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

{

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

printf("%c",cs[i][j]);

printf("\n");

}

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

getchar();getchar();

}

原文发布于微信公众号 - 数据库SQL(SQLdba)

原文发表时间:2015-06-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据的力量

一大波常用函数公式,值得收藏!

1334
来自专栏GopherCoder

『Go 语言学习专栏』-- 第十二期

1823
来自专栏智能算法

身份证号码验证算法

来自:旭东的博客 - 博客园 链接:http://www.cnblogs.com/xudong-bupt/p/3293838.html(点击尾部阅读原文前往) ...

3345
来自专栏机器学习和数学

[编程经验] Tensorflow中的共享变量机制小结

今天说一下tensorflow的变量共享机制,首先为什么会有变量共享机制? 这个还是要扯一下生成对抗网络GAN,我们知道GAN由两个网络组成,一个是生成器网络G...

6773
来自专栏Spark学习技巧

CountVectorizer

CountVectorizer 关于文本特征提取,前面一篇文章TF-IDF介绍了HashingTF,本文将再介绍一种Spark MLlib的API CountV...

2707
来自专栏小狼的世界

利用JS实现的根据经纬度计算地球上两点之间的距离

第一种是默认地球是一个光滑的球面,然后计算任意两点间的距离,这个距离叫做大圆距离(The Great Circle Distance)。

652
来自专栏人工智能LeadAI

tensorflow的数据输入

tensorflow有两种数据输入方法,比较简单的一种是使用feed_dict,这种方法在画graph的时候使用placeholder来站位,在真正run的时候...

1065
来自专栏数据科学与人工智能

【Python环境】Python数据分析入门

本文来分享一下如何通过Python来开始数据分析。 具体内容如下: 数据导入 导入本地的或者web端的CSV文件; 数据变换; 数据统计描述; 假设检验 单样本...

22110
来自专栏数据结构与算法

群论入门

这东西一时半会儿写不完。。。 群 定义集合 ,*为集合G上的二元运算 当集合G在运算*之下满足一下性质时,我们称集合G在运算*之下是一个群,简称G是群 封闭性...

3185
来自专栏温安适的blog

union/find--不相交集合

3357

扫描关注云+社区