当前位置:文档之家› C语言编程-奖学金评定系统-太原理工大学

C语言编程-奖学金评定系统-太原理工大学

#include "stdafx.h"
#include <stdio.h>
#include"stdafx.h"
#include <string.h>
#include <stdlib.h>
#define SIZE 10 // 学生的最大个数
#define CH 20 // 最大字符
int num=0;//初始化学生个数为0
struct student
//建立学生结构体
{
char name[10];//姓名
int No;//学号

int English;//英语
int physics;//大物
int sports;//体育
int datastructure;//数据结构
int discrect;//离散

float study_avg;//课程学习测评分数(由各科均分计算所得)
int health;//身心测评分数
int morality;//道德素养测评分数

int technology;//科技实践加分
int culture;//校园文化加分
int welfare;//社会公益加分

float comprehensive;//综合测评分数(由公式计算所得:课程学习测评分*50%+身心测评分*30%+身心测评分*20%)
}stud[SIZE];
student stud_L[SIZE]; //学生数组,用来存放符合学习类奖学金条件的学生
int num_L=0;//符合学习类奖学金学生的数目,初始化
void welcome(){
//欢迎界面
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("**************************************$$$$*************************************\n");
printf("************************太原理工大学计算机科学与技术学院************************\n");
printf("*********************** $$$$ 奖学金评定系统 $$$$ *************************\n");
printf("\n");

printf(" $ $ $ $ $ $ $ $ $ \n");
printf(" $ $ $ $ $ $ $ \n");
printf(" $ $ $ $ $ \n");
printf(" $ $ $ \n");
printf(" $ \n");
printf(" 欢 迎 使 用 ! \n");
printf("\n");
printf("\t\t\t\t按回车键继续哦~-~ \t\n");
getchar();
}
void goodbye(){
//关闭界面
system("cls");
printf("\n");
printf("信息以保存!");
printf("\n");
printf("\n");
printf("\n");
printf("**************************************$$$$*************************************\n");
printf("*********************** ¥作者:阿狸 ¥时间:2015.1************************\n");
printf("*********************** $$$$ 奖学金评定系统 $$$$ *************************\n");
printf("\n");

printf(" $ $ $ $ $ $ $ $ $ \n");
pr

intf(" $ $ $ $ $ $ $ \n");
printf(" $ $ $ $ $ \n");
printf(" $ $ $ \n");
printf("
$ \n\n\n");
printf(" 谢 谢 使 用 ! \n");
printf("\n");
printf("\t\t\t\t按回车键关闭哦~-~ \t\n");
getchar();
}
void menu(){
//选项菜单

system("cls");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("*******************************************************************************\n");
printf(" ********************* $$$$ 太原理工大学 $$$$ *************************\n\n\n");
printf("\t\t $ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ $\n");
printf("\t\t║ 奖 学 金 评 定 系 统 \t║\n");
printf("\t\t║ 主菜单 \t║\n");
printf("\t\t║ 1. 评定标准 \t║\n");
printf("\t\t║ 2. 录入学生信息 \t║\n");
printf("\t\t║ 3. 删除学生信息 \t║\n");
printf("\t\t║ 4. 修改学生信息 \t║\n");
printf("\t\t║ 5. 查看学生信息 \t║\n");
printf("\t\t║ 6. 查看单项排名及获奖学生\t║\n");
printf("\t\t║ 7. 综合测评排名 \t║\n");
printf("\t\t║ 8. 退出/保存信息 \t║\n");
printf("\t\t║ \t║\n");
printf("\t\t $ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ ~_~ $\n");

}
void standard(){ //奖学金评定标准
system("cls");
printf("**************************************$$$$*************************************\n");
printf("*******************************************************************************\n");
printf("*********************** $$$$ 奖学金评定标准 $$$$ *************************\n");
printf("\n\n");
printf("学习类奖学金要求:1.不能出现挂科成绩(即低于60分成绩)\n");
printf("\t\t 2.综合素质测评在80分以上\n");
printf("\t\t 3.课程学习测评取出前几名\n");
printf("\n\n");
printf("科技实践奖学金要求:1.至多挂一门(即至多出现一次低于60分成绩)\n");
printf("\t\t 2.综合素质测评在80分以上\n");
printf("\t\t 3.科技实践加分取出前几名\n");
printf(&qu

ot;\n\n");
printf("校园文化奖学金要求:1.至多挂一门(即至多出现一次低于60分成绩)\n");
printf("\t\t 2.综合素质测评在80分以上\n");
printf("\t\t 3.校园文化加分取出前几名\n");
printf("\n\n");
printf("社会公益奖学金要求:1.至多挂一门(即至多出现一次低于60分成绩)\n");
printf("\t\t 2.综合素质测评在80分以上\n");
printf("\t\t 3.社会公益加分取出前几名\n");
}

void prize(){ //四类奖学金的查看菜单
system("cls");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("*********************************
*****$$$$*************************************\n");
printf("*******************************************************************************\n");
printf("*********************** $$$$ 奖学金*获奖名单查看 $$$$ *************************\n");
printf("1.查看专业学习类奖学金\n");
printf("2.查看科技实践类奖学金\n");
printf("3.查看校园文化类奖学金\n");
printf("4.查看社会公益类奖学金\n");
printf("5.退出\n");
printf("\n");
printf("\n");
}

void read_from_file()
//从文件中读取学生的信息
{
FILE *fp;
int i=0;
fp=fopen("123.txt","rb+");
if(!fp)
{
printf("打开文件123.txt失败!\n");
return ;
}

fread(&num,1,sizeof(num),fp); //先读取学生的个数
for(i=0;i<num;i++)
fread(&stud[i],1,sizeof(student),fp); //读取每个学生的信息存放到结构体

fclose(fp);//关闭文件

}


void write_to_file()
//向文件中输入学生的信息
{
FILE *fp;
int i=0;

if((fp=fopen("123.txt","wb+"))==NULL)
{
printf("打开文件123.txt失败!\n");
return ;
}

fwrite(&num,1,sizeof(num),fp); //先写入学生的个数
for(i=0;i<num;i++)
fwrite(&stud[i],1,sizeof(student),fp); //写入每个学生的信息

fclose(fp);//关闭文件

}
void Add() //录入学生信息
{
system("cls");
int i=0;
int m;
printf("\n\n 请输入此次录入学生信息个数");
scanf("%d",&m);
do{
printf("学生%d:\n\n",i+1);
printf("请输入姓名:");
scanf("%s",stud[num].name);

printf("请输入学号:");
scanf("%d",&stud[num].No);

printf("请输入英语:");
scanf("%d",&stud[num].English);

printf("请输入大物:");
scanf("%d",&stud[num].physics);

printf("请输入体育:");
scanf("%d",&stud[num].sports);

printf("请输入结构数据:");
scanf("%d",&stud[num].

datastructure);

printf("请输入离散:");
scanf("%d",&stud[num].discrect);

printf("请输入身心测评分数:");
scanf("%d",&stud[num].health);

printf("请输入道德素养测评分:");
scanf("%d",&stud[num].morality);

printf("请输入科技实践加分:");
scanf("%d",&stud[num].technology);

printf("请输入校园文化加分:");
scanf("%d",&stud[num].culture);

printf("请输入社会公益加分:");
scanf("%d",&stud[num].welfare);
printf("\n");

//计算各科平均分(即课程学习测评分数)
stud[num].study_avg=(stud[num].English+stud[num].datastructure+stud[num].discrect+stud[num].physics+stud[num].sports)/5;
//计算综合测评分数
stud[num].comprehensive=(stud[num].morality*0.2)+(stud[num].health*0.3)+(stud[num].study_avg*0.5);
i++;
num++;
}while(i<m);
printf(" 信息录入完毕!");
printf("\n 按任意键返回主菜单!");
}

void Delete()//删除学生信息
{

system("cls");
int choose=0;
printf("\
n");
printf("\n *********************************学生信息删除********************************");
printf("\n ****************************¥¥主菜单¥¥*****************************\n\n");
printf("\t1.删除全部学生信息\n");
printf("\t2.按学号删除学生信息\n");
printf("\t3.退出\n");
printf("请选择序号:\n");
scanf("%d",&choose);
while(choose>0 && choose<3)
{
switch(choose)
{
case 1: num=0;break;
case 2:
{
int i=0,j=0;
int no; //学号
printf("请输入你要删除的学生学号:");
scanf("%d",&no);
for(i=0;i<num;i++) //先找到该学号对应的序号
if(stud[i].No==no)
{
for(j=i;j<num-1;j++) stud[j]=stud[j+1];
num--; //数量减少 1
printf("此学生已成功删除\n");
getchar();
return;
}
printf("\n\n没有这个学号!\n");
}break;
}
system("cls");

printf("\n *********************************学生信息删除********************************");
printf("\n ****************************¥¥主菜单¥¥*****************************\n\n");
printf("\t1.删除全部学生信息\n");
printf("\t2.按学号删除学生信息\n");
printf("\t3.退出\n\n\n");

printf("全部删除完毕!\n");
printf("请选择序号:\n\n\n");
scanf("%d",&choose);

}
}
change_menu()
{
system("cls");
printf("\n *****************************学生信息修改********************************");
printf("\n ****************************¥¥主菜单¥¥*****************************\n\n");
p

rintf("\n 您要修改哪一项?\n");//选择需要修改的项目
printf("\n 1.姓名");
printf("\n 2.学号");
printf("\n 3.英语");
printf("\n 4.大物");
printf("\n 5.体育");
printf("\n 6.数据结构");
printf("\n 7.离散");
printf("\n 8.身心测评");
printf("\n 9.道德素养测评");
printf("\n 10.科技实践");
printf("\n 11.校园文化");
printf("\n 12.社会公益哦");
printf("\n 13.退出\n");
printf("\n 请选择(1-13)按Enter确定:");
}
void change()
//修改学生信息
{
system("cls");
int i=0;
int no; //学号
int choose=0;
printf("\n *****************************学生信息修改********************************\n\n");
printf("请输入你要修改的学生学号:");
scanf("%d",&no);

for(i=0;i<num;i++)//先找到该学号对应的序号
if(stud[i].No==no)
{
change_menu();
scanf("%d",&choose);
system("cls");
printf("\n *****************************学生信息修改********************************");
printf("\n ****************************¥¥单项修改¥¥*****************************\n\n");
print
f("\n");
while(choose>0 && choose<13)//逐项进行修改
{
switch(choose)
{

case 1 : printf("\n 输入修改后的姓名:");
scanf("%s",&stud[i].name);break;
case 2 : printf("\n 输入修改后的学号:");
scanf("%d",&stud[i].No);break;
case 3 : printf("\n 输入修改后的英语:");
scanf("%d",&stud[i].English);break;
case 4 : printf("\n 输入修改后的大物:");
scanf("%d",&stud[i].physics);break;
case 5 : printf("\n 输入修改后的体育:");
scanf("%d",&stud[i].sports);break;
case 6 : printf("\n 输入修改后的数据结构:");
scanf("%d",&stud[i].datastructure);break;
case 7 : printf("\n 输入修改后的离散:");
scanf("%d",&stud[i].discrect);break;
case 8 : printf("\n 输入修改后的身心测评分数:");
scanf("%d",&stud[i].health);break;
case 9 : printf("\n 输入修改后的道德素养测评分数:");
scanf("%d",&stud[i].morality);break;
case 10 : printf("\n 输入修改后的科技实践加分:");
scanf("%d",&stud[i].technology);break;
case 11 : printf("\n 输入修改后的校园文化加分:");
scanf("%d&quo

t;,&stud[i].culture);break;
case 12 : printf("\n 输入修改后的社会公益加分:");
scanf("%d",&stud[i].welfare);break;

//计算各科平均分(即课程学习测评分数)
stud[i].study_avg=(stud[i].English+stud[i].datastructure+stud[i].discrect+stud[i].physics+stud[i].sports)/5;
//计算综合测评分数
stud[i].comprehensive=(stud[i].morality*0.2)+(stud[i].health*0.3)+(stud[i].study_avg*0.5);
}
getchar();
printf("\t\t信息修改成功!\n");
getchar();
change_menu();
scanf("%d",&choose);
printf("\n");
return;
}
}
printf("没有这个学号!");

//计算各科平均分(即课程学习测评分数)
stud[i].study_avg=(stud[i].English+stud[i].datastructure+stud[i].discrect+stud[i].physics+stud[i].sports)/5;
//计算综合测评分数
stud[i].comprehensive=(stud[i].morality*0.2)+(stud[i].health*0.3)+(stud[i].study_avg*0.5);
}
void check()//查询学生信息
{
system("cls");
int i;
int no; //学号
printf("请输入你要查询的学生学号:");
scanf("%d",&no);
for(i=0;i<num;i++)//先找到该学号对应的序号
{
if(stud[i].No==no)
{
printf("姓名:%s\n",stud[i].name);
printf("学号:%d\n",stud[i].No);
printf("英语:%d\n",stud[i].English);
printf("大物:%d\n",stud[i].physics);
printf("体育:%d\n",stud[i].sports);
printf("结构数据:%d\n",stud[i].datastructure);
printf("离散:%d\n",stud[i].discrect);
printf("课程学习测评分数:%.1f\n",stud[i].study_avg);
printf("身心测评分数:%d\n",stud[i].health);
printf("道德素养测评分
:%d\n",stud[i].morality);
printf("科技实践加分:%d\n",stud[i].technology);
printf("校园文化加分:%d\n",stud[i].culture);
printf("社会公益加分:%d\n",stud[i].welfare);
}

}
printf("\n\n没有这个学号!\n");
}
void study_Calculate()//学习类奖学金评定
{
system("cls");
student stud_L[SIZE]; //学生数组,用来存放符合学习类奖学金条件的学生
int num_L=0;//符合学习类奖学金学生的数目,初始化
int i,j=0;
student t;//用于排序交换的临时变量
for(i=0;i<num;i++)//筛选出符合学习类奖学金要求的学生
{
//学习类奖学金要求:1.不能出现挂科成绩(即低于60分成绩)
// 2.综合素质测评在80分以上
// 3.按照课程学习测评分数取出前三名
if(stud[i].datastructure>=60 && stud[i].discrect>=60 && stud[i].English>=60 && stud[i].physics>=60 && stud[i].sports>=60 && stud[i].comprehensive>=80)
{
stud_L[j]=stud[i];
j++;
num_L++;
}
}
if(num_L==0)
{
printf("没有符合学习类奖学金要求的同学");

}
else
{
//按照课程学

习测评分数排序
for(i=0;i<num_L;i++)
{
for(j=i+1;j<num_L;j++)
{
if(stud_L[j].study_avg>stud_L[i].study_avg)
{
t=stud_L[i];
stud_L[i]=stud_L[j];
stud_L[j]=t;
}
}
}
printf("**************************************$$$$*************************************\n");
printf("*******************************************************************************\n");
printf("******************** $$$$ 学习类奖学金*获奖名单查看 $$$$ *********************\n");
printf("\t 名次 姓名 学号 课程学习测评分\n");
for(i=0;i<num_L;i++)
{
printf("\t % -d%10s%9d%16.1f",i+1,stud_L[i].name,stud_L[i].No,stud_L[i].study_avg);
if(i+1<=3) printf(" (获得学习类奖学金)");
printf("\n");
}
printf("以上均为达到评比标准的同学,取前三名获奖");
}

}
void technology_Calculate()//科技实践类奖学金评定
{
system("cls");
int index=1;
student stud_T[SIZE]; //学生数组,用来存放符合科技实践类奖学金条件的学生
int num_T=0;//符合科技实践类奖学金学生的数目,初始化
int j=0;
for(int i=0;i<num;i++)//筛选科技实践类奖学金人数(最多只能有一科成绩小于60分)
{ //在学习成绩中最多只能挂一科(最多只能有一科低于60分)
//综合测评在80分以上
//不在学习类奖学金人员里面
int k=0;
if(stud[i].datastructure<60) k++;
if(stud[i].discrect<60) k++;
if(stud[i].English<60) k++;
if(stud[i].physics<60) k++;
if(stud[i].sports<60) k++;
if(k<=1)
{
for(int n=0;n<num_L;n++)//判断是否在学习类奖学金里
{
if(stud[i].No==stud_L[n].No) index=0;
}
if(index)
{
if(stud[i].comprehensive>=80)//综合测评学分>=80
{
stud_T[j]=stud[i];
j++;

num_T++;
}
}
}
}
//
student t;//用于排序交换的临时变量
if(num_T==0)
{
printf("没有符合科技实践奖学金要求的同学");
}
else
{
//按照学生科技实践成绩排序(冒泡排序)
for(i=0;i<num_T;i++)
{
for(j=i+1;j<num_T;j++)
{
if(stud_T[j].technology>stud_T[i].technology)
{
t=stud_T[i];

stud_T[i]=stud_T[j];
stud_T[j]=t;
}
}
}
printf("**************************************$$$$*************************************\n");
printf("*******************************************************************************\n");
printf("**************** $$$$ 科技实践类奖学金*获奖名单查看 $$$$ ********************\n\n\n");
printf("\t 名次 姓名 学号 科技实践加分\n");
for(int i=0;i<num_T;i++)
{
printf("\t % -d%10s%9d%15d",i+1,stud_T[i].name,stud_T[i].No,stud_T[i].technology);
if(i+1<=1) printf(" (获得科技实践类奖学金)\n\n");
printf("\n");
}
printf("以上均为达到评比标

准的同学,取前一名获奖");
}
}
void culture_Calculate()//校园文化类奖学金评定
{
system("cls");
int index=1;
student stud_C[SIZE]; //学生数组,用来存放符合科技实践类奖学金条件的学生
int num_C=0;//符合科技实践类奖学金学生的数目,初始化
int j=0;
for(int i=0;i<num;i++)//筛选科技实践类奖学金人数(最多只能有一科成绩小于60分)
{ //在学习成绩中最多只能挂一科(最多只能有一科低于60分)
//综合测评在80分以上
//不在学习类奖学金人员里面
int k=0;
if(stud[i].datastructure<60) k++;
if(stud[i].discrect<60) k++;
if(stud[i].English<60) k++;
if(stud[i].physics<60) k++;
if(stud[i].sports<60) k++;
if(k<=1)
{
for(int n=0;n<num_L;n++)//判断是否在学习类奖学金里
{
if(stud[i].No==stud_L[n].No) index=0;
}
if(index)
{
if(stud[i].comprehensive>=80)//综合测评学分>=80
{
stud_C[j]=stud[i];
j++;
num_C++;
}
}
}
}
//
student t;//用于排序交换的临时变量
if(num_C==0)
{
printf("没有符合科技实践奖学金要求的同学");
}
else
{
//按照学生科技实践成绩排序(冒泡排序)
for(i=0;i<num_C;i++)
{
for(j=i+1;j<num_C;j++)
{
if(stud_C[j].culture>stud_C[i].culture)
{
t=stud_C[i];
stud_C[i]=stud_C[j];
stud_C[j]=t;
}
}
}
printf("**************************************$$$$*************************************\n");
printf("*******************************************************************************\n");
printf("**************** $$$$ 校园文化类奖学金*获奖名单查看 $$$$ ********************\n\n\n");
printf("\t 名次 姓名 学号 校园文化加分\n");
for(int i=0;i<num_C;i++)
{
printf("\t % -d%10s%9d%15d",i+
1,stud_C[i].name,stud_C[i].No,stud_C[i].culture);
if(i+1<=1) printf(" (校园文化类奖学金)\n\n");
printf("\n");
}
printf("以上均为达到评比标准的同学,取前一名获奖");
}
}
void welfare_Calculate()//社会公益类奖学金评定
{
system("cls");
int index=1;
student stud_W[SIZE]; //学生数组,用来存放符合社会公益类奖学金条件的学生
int num_W=0;//符合社会公益类奖学金学生的数目,初始化
int j=0;
for(int i=0;i<num;i++)//筛选社会公益类奖学金人数(最多只能有一科成绩小于60分)
{ //在学习成绩中最多只能挂一科(最多只能有一科低于60分)
//综合测评在80分以上
//不在学习类奖学金人员里面
int k=0;
if(stud[i].datastructure<60) k++;
if(stud[i].discrect<60) k++;
if(stud[i].English<60) k++;
if(stud[i].physics<60) k++;
if(stud[i].sports<60) k++;
if(k<=1)
{
for(int n=0;n<num_L;n++)//判断是否在学习类奖学金里
{
if(stud[i].No==stud_L[n

].No) index=0;
}
if(index)
{
if(stud[i].comprehensive>=80)//综合测评学分>=80
{
stud_W[j]=stud[i];
j++;
num_W++;
}
}
}
}
//
student t;//用于排序交换的临时变量
if(num_W==0)
{
printf("没有符合社会实践奖学金要求的同学");
}
else
{
//按照学生社会公益成绩排序(冒泡排序)
for(i=0;i<num_W;i++)
{
for(j=i+1;j<num_W;j++)
{
if(stud_W[j].welfare>stud_W[i].welfare)
{
t=stud_W[i];
stud_W[i]=stud_W[j];
stud_W[j]=t;
}
}
}
printf("**************************************$$$$*************************************\n");
printf("*******************************************************************************\n");
printf("**************** $$$$ 社会公益类奖学金*获奖名单查看 $$$$ ********************\n\n\n");
printf("\t 名次 姓名 学号 社会公益类加分\n");
for(int i=0;i<num_W;i++)
{
printf("\t % -d%10s%9d%15d",i+1,stud_W[i].name,stud_W[i].No,stud_W[i].welfare);
if(i+1<=1) printf(" (获得社会公益类奖学金)\n\n");
printf("\n");
}

printf("\n以上均为达到评比标准的同学,取前一名获奖");
}
}
void ranking(){
system("cls");
int j=0;
student t;//用于排序交换的临时变量
if(num==0)
{
printf("没有学生\n\n");
return;
}
else
{
//按照学生综合测评成绩排序(冒泡排序)
for(int i=0;i<num;i++)
{
for(j=i+1;j<num;j++)
{
if(stud[j].comprehensive>stud[i].comprehensive)
{
t=stud[i];
stud[i]=stud[j];
stud[j]=t;
}
}
}
}
printf("**************************************$$$$*************************************\n");
printf("*******************************************************************************\n");
printf("******************** $$$$ 综合
测评排名名单查看 $$$$ ************************\n\n\n");
printf("\t 名次 姓名 学号 综合测评分数\n");
for(int i=0;i<num;i++)
{
printf("\t % -d%10s%9d%16.1f",i+1,stud[i].name,stud[i].No,stud[i].comprehensive);
printf("\n");

}
}


void Award()
{
int choose;
prize();
scanf("%d",&choose);
printf("\n");
while(choose>0 && choose<5)
{
switch(choose)
{
case 1:study_Calculate();system("pause");break;
case 2:;technology_Calculate();system("pause");break;
case 3:;culture_Calculate();system("pause");break;
case 4:;welfare_Calculate();system("pause");break;
}
printf("\n");
prize();
scanf("%d",&choose);
printf("\n");
}
}

void main()
{
FILE *fp;
if((fp=fopen("123.txt","a+"))==NULL)
{
printf("打开文件123.txt失败!\n");
return ;
}
int choose=0;
read_from_file(); //读取文件
welcome();


menu();
scanf("%d",&choose);
printf("\n");
while(choose>0 && choose<8)
{
switch(choose)
{
case 1:standard();system("pause");break;
case 2:Add();system("pause");break;
case 3:Delete();system("pause");break;
case 4:change();system("pause");break;
case 5:check();system("pause");break;
case 6:Award();system("pause");break;
case 7:ranking();system("pause");break;

}
// printf("\n");
menu();
scanf("%d",&choose);
printf("\n");
}
write_to_file();//写入文件
goodbye();
getchar();
}


相关主题
文本预览
相关文档 最新文档