【学生管理系统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 条评论
登录 后参与评论

相关文章

来自专栏工科狗和生物喵

【计算机本科补全计划】Mysql 学习小计(2)

正文之前 昨天下午写了篇 Mysql学习小计,结果出乎意料的受欢迎?变相刺激了我多写点 Mysql?好吧,如尔所愿。我晚上反正还不知道学点啥,就把今天看的那个菜...

34511
来自专栏Django Scrapy

day3 sql语句

sqlplus / as sysdba startup sqlplus scott/tiger vi .bash_profile 容宽不够 set lines ...

2879
来自专栏转载gongluck的CSDN博客

判断是否为回文

//判断是否为回文——判断用户输入的字符串是否为回文。回文是指正反拼写形式都是一样的词,譬如“racecar”。 #define _CRT_SECURE_NO_...

2565
来自专栏程序员互动联盟

【C语言系列】基础语法案例分析(初级篇)

下面这些C语言基础算法案例都是经过测试和验证过了的,欢迎各位使用。 本文是该系列的第一篇,都是一些相对初级的算法,很适合刚开始学C语言的同学。 1、C语言打印一...

30613
来自专栏北京马哥教育

SQL函数汇总【精选篇】

1.绝对值 SQL:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) ...

2689
来自专栏Python

在mysql中使用group by和order by取每个分组中日期最大一行数据,亲测有效

在mysql中使用group by进行分组后取某一列的最大值,我们可以直接使用MAX()函数来实现,但是如果我们要取最大值对应的ID,那么我们需要取得整行的数据...

633
来自专栏ml

HDUOJ-------The Hardest Problem Ever

The Hardest Problem Ever Time Limit: 2000/1000 MS (Java/Others)    Memory Limit:...

34710
来自专栏PPV课数据科学社区

【学习】七天搞定SAS(二):基本操作(判断、运算、基本函数)

? 今天开始注重变量操作。 SAS生成新变量 SAS支持基本的加减乘除,值得一提的是它的**代表指数,而不是^。* Modify homegarden dat...

2994
来自专栏ml

HDUOJ----(4706)Children's Day

Children's Day Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/327...

3638
来自专栏ml

POJ--Strange Way to Express Integers

Strange Way to Express Integers Time Limit: 1000MS Memory Limit: 131072K ...

2657

扫码关注云+社区