C语言课程设计_学生成绩管理系统_奖学金评定

更新时间:2023-04-21 01:38:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言课程设计,可以进行奖学金的评定

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define CH 20 // 最大字符
#define N 100 // 学生的最大个数

typedef struct student
//学生的结构体
{
char name[CH]; // 姓名
char no[CH]; //学号
float Signal_System; //信号
float iEn; //英语
float Digit_circuit; //数字电路
float C_language; //C语言
float fAvage; //平均分数
float S_all; //总分数
}student;

student s[N]; //学生数组
int num; //学生个数

/*程序辅助函数*/
/* 欢迎界面 */
void welcome()
{
printf("\n\n\n\n\n");
printf("\t\t ╭═══════┤成绩管理系统├═══════╮\n");
printf("\t\t║ \t║\n");
printf("\t\t║ \t║\n");
printf("\t\t║ 欢迎使用该成绩管理系统 \t║\n");
printf("\t\t║ \t║\n");
printf("\t\t║ 作者:某某 \t║\n");
printf("\t\t║ \t║\n");
printf("\t\t║ 按任意键继续…… \t║\n");
printf("\t\t║ \t║\n");
printf("\t\t║ \t║\n");
printf("\t\t╰═══════════════════════╯\n");
getchar();
}
/* 菜单 */
void meun()
{
system("cls"); //屏幕清空
printf("\n\n\n\n\n");
printf("\t\t ╭═══════┤成绩管理系统├═══════╮\n"); /*菜单选择*/
printf("\t\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");
printf("\t\t \1选择菜单选项(1-8):");
}
void read_from_file()
//从文件中读取学

C语言课程设计,可以进行奖学金的评定

生的信息
{
FILE *fp;
int i=0;
fp=fopen("data.db","rb");
if(!fp)
{
printf("打开文件data.db失败!\n");
return ;
}

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

fclose(fp);//关闭文件

}


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

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

fclose(fp);//关闭文件

}

void Add()//添加学生信息
{
int i=num;

printf("请输入姓名:");
scanf("%s",s[i].name);

printf("请输入学号:");
scanf("%s",s[i].no);

printf("请输入信号:");
scanf("%f",&s[i].Signal_System);

printf("请输入英语:");
scanf("%f",&s[i].iEn);


printf("请输入数字电路:");
scanf("%f",&s[i].Digit_circuit);

printf("请输入C语言 :");
scanf("%f",&s[i].C_language);

s[i].S_all=s[i].Signal_System+s[i].iEn+s[i].Digit_circuit+s[i].C_language;
//计算出总分数

s[i].fAvage=s[i].S_all/4;
//计算出平均分

num++;

}

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

int i=0,j=0;
char no[CH]; //学号

printf("请输入你要删除的学生学号:");


scanf("%s",no);

for(i=0;i<num;i++)//先找到该学号对应的序号
if(strcmp(s[i].no,no)==0)
{
for(j=i;j<num-1;j++)
s[j]=s[j+1];

num--; //数量减少 1

return;
}

printf("没有这个学号!");

}

void Delete_infor()//修改学生信息
{

int i=0;
char no[CH]; //学号
printf("请输入你要修改的学生学号:");


scanf("%s",no);

for(i=0;i<num;i++)//先找到该学号对应的序号
if(strcmp(s[i].no,no)==0)
{
printf("请输入姓名:");
scanf("%s",s[i].name);

printf("请输入学号:");
scanf("%s",s[i].no);

printf("请输入信号:");
scanf("%f",&s[i].Signal_System);

printf("请输入英语:");
scanf("%f",&s[i].iEn);

printf("请输入数字电路:");
scanf("%f",&s[i].Digit_circuit);

printf("请输入C语言:");
scanf("%f",&s[i].C_language);

s[i].S_all=s[i].Signal_System+s[i].iEn+s[i].Digit_circuit+s[i].C_language;
//计算出总分数

s[i].fAvage=s[i].S_all/4;
//计算出平均分



return;
}

printf("没有这个学号!");

}

void Show_s()
{
int i=0;
printf("姓名 学号 信号 英语 数字电路 C语言 总分数 平均分\n");
for(i=0;i<
num;i++)
printf("%10s%12s%10.2f%9.2f%9.2f%9.2f%9.2f%9.2f\n",s[i].name,s[i].no,s[i].Signal_System,s[i].iEn,s[i].Digit_circuit,s[i].C_l

C语言课程设计,可以进行奖学金的评定

anguage,s[i].S_all,s[i].fAvage);


}

void Sort_s()
{
int i=0,j=0;
student t;//用于排序交换的临时变量
student s1[N]; //学生数组,用来排序的临时数组

for(i=0;i<num;i++)
s1[i]=s[i];

for(i=0;i<num;i++)
for(j=i+1;j<num;j++)
if(s1[i].fAvage<s1[j].fAvage)
{
t=s1[i];
s1[i]=s1[j];
s1[j]=t;
}

printf("姓名 学号 信号 英语 数字电路 C语言 总分数 平均分\n");
for(i=0;i<num;i++)
printf("%10s%12s%10.2f%9.2f%9.2f%9.2f%9.2f%9.2f\n",s1[i].name,s1[i].no,s1[i].Signal_System,s1[i].iEn,s1[i].Digit_circuit,s1[i].C_language,s1[i].S_all,s1[i].fAvage);



}

int is_scholarship(student *stu)
//判断是否符合讲学金,0表示不符合,1表示符合
{
if(stu->Signal_System<60||stu->iEn<60||stu->Digit_circuit<60||stu->C_language<60)
return 0;

if(stu->fAvage<80)
return 0;

return 1;
}


void Scholarship()//显示符合奖学金学生
//符合奖学金的学生的条件如下
//1)各个科目都及格,2)平均分大于 80分 3)平均分排序输出,一等为1个名额,二等为2个名额,三等为3个名额
{

student s1[N]; //学生数组,用来存放符合奖学金条件的学生
int num1=0; //符合奖学金学生的数目
int i=0,j=0;

student t;//用于排序交换的临时变量

for(i=0;i<num;i++)
if(is_scholarship(&s[i])==1)
{
s1[num1]=s[i];
num1++;
}

//对符合讲学金的同学进行排序
for(i=0;i<num1;i++)
for(j=i+1;j<num1;j++)
if(s1[i].fAvage<s1[j].fAvage)
{
t=s1[i];
s1[i]=s1[j];
s1[j]=t;
}

if(num1==0)
{
printf("没有符合奖学金的学生!\n");
return;

}

printf(" 姓名 等级\n");
for(i=0;i<num1;i++)
{
printf("%10s ",s1[i].name);

if(i==0)
printf("一等\n");

else if(i>=1&&i<=2)
printf("二等\n");

else if(i>=3&&i<=5)
printf("三等\n");

else
break;

}

}

void Search()//查询学生成绩
{

int i=0;
char no[CH]; //学号
printf("请输入你要查询的学生学号:");


scanf("%s",no);

for(i=0;i<num;i++)//先找到该学号对应的序号
if(strcmp(s[i].no,no)==0)
{

printf("姓名 学号 信号 英语 数字电路 C语言 总分数 平均分\n");
printf("%10s%12s%10.2f%9.2f%9.2f%9.2f%9.2f%9.2f\n",s[i].name,s[i].no,s[i].Signal_System,s[i].iEn,s[i].Digit_circuit,s[i].C_language,s[i].S_all,s[i].fAvage);


return;
}

printf("没有这个学号!");

}

void main()
{
int choose=0;
num=0;//初始化学生个数为0
//read_from_file(); //读取文件
welcome();
meun();
scanf("%d"
;,&choose);
printf("\n");
while(choose>0&&choose<8)
{

switch(choose)
{
case 1:Add();system("pause"

C语言课程设计,可以进行奖学金的评定

);break;
case 2:Delete();system("pause");break;
case 3:Delete_infor();system("pause");break;
case 4:Show_s();system("pause");break;
case 5:Sort_s();system("pause");break;
case 6:Scholarship();system("pause");break;
case 7:Search();system("pause");break;
}
printf("\n");
meun();
scanf(&q
uot;%d",&choose);
printf("\n");
}


write_to_file();//写入文件

printf("谢谢使用学生成绩评定系统!再见!\n");

getchar();

}

本文来源:https://www.bwwdw.com/article/46iq.html

Top