c语言简单成绩管理系统代码(简易成绩管理系统C语言)

http://www.itjxue.com  2023-01-26 01:26  来源:未知  点击次数: 

C语言实现 学生成绩管理系统(超详细) 内附源码

#includestdio.h

#includestring.h

#includestdlib.h

#includeconio.h

#define N 50//定义的学生数组的个数

#define M 1//定义的管理员数组的个数

int k;//录入学生的个数

char read_door[20];//读取文件的"门"

void Add_data(int flag);//增加数据

void Count_score(int flag);//求平均成绩和总成绩

void Delete_data(int flag);//根据学号删除对应学生的成绩

int Landing(int key);//登录程序

void Load_data();//载入数据

void Updata_stu(int flag);

void Read_bigdoor(char *b);

void Rank_score(int way, int flag);//按照需求对对应的成绩排序

void Read_data(char read_door);//读取数据

void Read_door();//读取"门"值

void Read_main_flag(int *a);

void Read_k();

void Save_bigdoor(char *b);

void Save_data(int flag);//保存数据

void Save_door();//保存"门"值

void Save_main_flag(int *a);

void Save_k(int k);

void Screen_rank();

void Screen_search();

void Screen_stu();

void Screen_teacher();

void Screen_stu_teach();

void Screen_onlyteach();

void Search_data(int way, int flag);//按学号或姓名查找查找

static struct STUDENT//学生的信息

{

char num[10];

char name[10];

float score[3];

float sum;

float aver;

int rank[4];

}stu[N];

static struct TEACHER//教师的登录账号和密码

{

char num[10];

char code[10];

}teach[M] = { "18061124","991228" };

int main()

{

char bigdoor ='n';//教师可通过bigdoor控制学生的权限

char *c=bigdoor;

int order1, order2, order3;//order为用户登录的指令

int door1, door2, door3;

printf ("请输入管理员登录指令:\n");

gets(read_door);

if (strcmp(read_door,"Lu Chen")==0)

{

printf("欢迎使用,您目前是拥有最高权限的管理员,请输入您的账号和密码:\n\n");

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

Screen_onlyteach();

door1 = Landing(1);

if (door1 == 2)

{

printf("\n账号或密码不正确");

return 0;

}

}

else

{

Screen_stu_teach();

printf("请输入序号即选择登录选项:");

scanf("%d", order1);

printf("\n\n");

door1 = Landing(order1);//door1确定用户的权限

switch (door1)//提示用户输入出错

{

case 1:

case 3: break;

case 2:printf("\n输入的账号或密码有误"); return 0;

case 4:printf("\n输入的号码有误"); return 0;

}

}

if (door1 == 1)//老师界面

{

int flag = 0;

int *p=flag;

char teach_read_key;

printf("\n是否读取数据?(y/n):");

scanf("%*c%c",teach_read_key);

if(teach_read_key=='y')

{

Read_k();

? ? Read_door();

Read_main_flag(p);

Read_data(read_door[20]);

}

printf("\n\n");

for (int count = 1; count 0; count++)//利用死循环来重复使用功能

{

Screen_teacher();

printf("\n请输入序号即选择登录选项:");

scanf("%d", order2);

printf("\n\n");

if (order2 == 10)

break;

switch (order2)

{

case 1:

{

Load_data();

flag=1;

Save_main_flag(p);

Save_k(k);

}break;

case 2:Updata_stu(flag); break;

case 3:

{

Screen_search();

printf("请输入你想查询成绩的方式:");

scanf("%d", door2);

Search_data(door2, flag);

}break;

case 4:Add_data(flag);break;

case 5:Delete_data(flag);break;

case 6:

{

Screen_rank();

printf("请输入成绩序号来选择排序:");

scanf("%d", door2);

Rank_score(door2, flag);

} break;

case 7:

{

Save_data(flag);

Save_door();

Save_k(k);

} break;

case 8:

{

bigdoor ='n';

Save_bigdoor(c);

}break;

case 9:

{

bigdoor ='y';

Save_bigdoor(c);

? }break;

default:printf("您输入的序号有误!\n\n");

}

}

}

else//学生界面

{

Read_k();

Read_data('y');

for (int k = 1; k 0; k++)

{

Screen_stu();

printf("请输入下一步操作的序号:");

scanf("%d", order3);

if (order3 == 3)

break;

switch (order3)

{

case 1:

{

Screen_search();

printf("请输入你想查询成绩的方式");

scanf("%d", door3);

Search_data(door3, 1);

}break;

case 2:

{

Screen_rank();

printf("请输入成绩序号来选择排序:");

scanf("%d", door3);

Rank_score(door3, 1);

}break;

default:printf("输入的操作序号有误\n\n");

}

}

}

return 0;

}

int Landing(int key)//登录程序

{

char num[10];

char code[10];

if (key == 1)

{

printf("请输入账号:");

scanf("%s", num);

printf("\n请输入密码:");

scanf("%s", code);

for (int i = 0; i M; i++)

if (strcmp(teach[i].num, num) == 0 strcmp(teach[i].code, code) == 0)//判断登陆账号和密码是否正确

return 1;

else

return 2;

}

else if (key == 2)

{

return 3;

}

else

{

return 4;

}

}

void Search_data(int way, int flag)//按学号或姓名查找查找

{

int Search_flag = 1;

if (flag)

{

char num[10], name[10];

int i;

if (way == 1)

{

printf("\n请输入学号:");

scanf("%s", num);

for (i = 0; i k; i++)

{

if (strcmp(stu[i].num, num) == 0)//判断学号存不存在

{

printf("\n姓名:%s\n学号:%s\nsubject1:%f\nsubject2:%f\nsubject3:%f\nsum:%f\naver:%f\n", stu[i].name, stu[i].num, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].aver);

Search_flag = 0;

break;

}

}

if (Search_flag)

printf("\n您输入的学号有误\n");

}

else if (way == 2)

{

printf("\n请输入姓名:");

scanf("%s", name);

for (i = 0; i N; i++)

{

if (strcmp(stu[i].name, name) == 0)//判断姓名存不存在

{

printf("\n姓名:%s\n学号:%s\nsubject1:%f\nsubject2:%f\nsubject3:%f\nsum:%f\naver:%f\n", stu[i].name, stu[i].num, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].aver);

flag = 0;

break;

}

}

if (flag)

printf("\n输入的姓名有误\n");

}

else

printf("\n输入的序号有误\n");

}

else

{

printf("\n您还没有载入数据\n");

}

}

void Count_score(int flag)//求平均成绩和总成绩

{

if (flag)

{

for (int i = 0; i k; i++)

{

stu[i].sum = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];

stu[i].aver = stu[i].sum / 3;

}

}

else

{

printf("\n您还没有载入数据\n");

}

}

void Load_data()//载入数据

{

printf("输入录入学生成绩个数:");

scanf("%d", k);

for (int i = 0; i k; i++)

{

scanf("%s%s%f%f%f", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);

Count_score(1);

}

}

void Rank_score(int way, int flag)//按照需求对对应的成绩排序

{

int i, j, n, temp;

if (flag)

{

for (i = 0; i 4; i++)

for (j = 0; j k; j++)

stu[j].rank[i] = j + 1;

if (way == 1)

{

for (i = 0; i 3; i++)

for (j = 0; j k; j++)

for (n = j + 1; n k; n++)

if (stu[j].score[i] stu[n].score[i])

{

temp = stu[j].rank[i];

stu[j].rank[i] = stu[n].rank[i];

stu[n].rank[i] = temp;

}

printf("\n");

for (i = 0; i k; i++)

printf("姓名:%s 学号:%s subject1:%d subject2:%d subject3:%d\n", stu[i].name, stu[i].num, stu[i].rank[0], stu[i].rank[1], stu[i].rank[2]);

}

else if (way == 2)

{

for (j = 0; j k; j++)

for (n = j + 1; n k; n++)

if (stu[j].sum stu[n].sum)

{

temp = stu[j].rank[3];

stu[j].rank[3] = stu[n].rank[3];

stu[n].rank[3] = temp;

}

printf("\n");

for (i = 0; i k; i++)

printf("姓名:%s 学号:%s sum: %d\n", stu[i].name, stu[i].num, stu[i].rank[3]);

}

else

{

printf("\n输入的序号有误\n");

}

}

else

{

printf("\n您还没有载入数据\n");

}

}

void Delete_data(int flag)//根据学号删除对应学生的成绩

{

if (flag)

{

int i, j;

char num[10];

printf("\n请输入您想要删除信息的学号:");

scanf("%s", num);

for (i = 0; i k; i++)

{

if (strcmp(stu[i].num, num) == 0)

for (j = i + 1; j k; j++)

{

stu[i] = stu[j];

Count_score(1);

}

}

k--;

Save_k(k);

}

else

{

printf("\n您还没有载入数据\n");

}

}

void Updata_stu(int flag)//根据学号修改学生的成绩

{

int Updata_flag = 1;

if (flag)

{

char num[10];

float subject1, subject2, subject3;

printf("\n请输入您想要修改学生的学号:");

scanf("%s", num);

printf("\n请输入您想要更改的学生三科的成绩:");

scanf("%f%f%f", subject1, subject2, subject3);

for (int i = 0; i k; i++)

if (strcmp(stu[i].num, num) == 0)

{

stu[i].score[0] = subject1;

stu[i].score[1] = subject2;

stu[i].score[2] = subject3;

Updata_flag = 0;

Count_score(1);

}

if (Updata_flag)

{

printf("\n输入学号有误\n");

}

}

else

{

printf("\n您还没有载入数据\n");

}

}

void Save_data(int flag)//保存数据

{

if(flag)

{

FILE *fp;

if((fp=fopen("load.txt","w"))==NULL)

{

printf("Save_data error!");

exit(0);

}

for(int i=0;ik;i++)

{

fwrite(stu[i],sizeof(STUDENT),1,fp);

}

fclose(fp);

printf("成功保存数据!\n\n");

read_door[20]='y';

}

else

{

printf("\n您还没有载入数据\n");

}

}

void Read_data(char read_door)//读取数据

{

if(read_door=='y')

{

FILE *fp;

if((fp=fopen("load.txt","r"))==NULL)

{

printf("Read_data error!");

exit(0);

}

for(int i=0;ik;i++)

{

fread(stu[i],sizeof(STUDENT),1,fp);

}

fclose(fp);

}

else

{

printf("\n没有保存数据的记录\n");

}

}

void Save_door()//保存"门"值

{

FILE *fp;

if((fp=fopen("door.txt","w"))==NULL)

{

printf("Save_door error!");

exit(0);

}

fputc(read_door[20],fp);

fclose(fp);

}

void Read_door()//读取"门"值

{

FILE *fp;

if((fp=fopen("door.txt","r"))==NULL)

{

printf("Read_door error!");

exit(0);

}

read_door[20]=fgetc(fp);

fclose(fp);

}

void Save_main_flag(int *a)

{

FILE *fp;

if((fp=fopen("flag.txt","w"))==NULL)

{

printf("Save_main_flag error!");

exit(0);

}

fprintf(fp,"%d",*a);

fclose(fp);

}

void Read_main_flag(int *a)

{

FILE *fp;

if((fp=fopen("flag.txt","r"))==NULL)

{

printf("Read_main_flag error!");

exit(0);

}

fscanf(fp,"%d",a);

fclose(fp);

}

void Save_bigdoor(char *b)

{

FILE *fp;

if((fp=fopen("bigdoor.txt","w"))==0)

{

printf("Save_bigdoor error!");

exit(0);

}

fputc(*b,fp);

fclose(fp);

}

void Read_bigdoor(char *b)

{

FILE *fp;

if((fp=fopen("bigdoor.txt","r"))==0)

{

printf("Read_bigdoor error!");

exit(0);

}

*b=fgetc(fp);

fclose(fp);

}

void Save_k(int k)

{

FILE *fp;

if((fp=fopen("k.txt","w"))==0)

{

printf("Save_k error!");

exit(0);

}

fprintf(fp,"%d",k);

fclose(fp);

}

void Read_k()

{

FILE *fp;

if((fp=fopen("k.txt","r"))==0)

{

printf("Read_k error!");

exit(0);

}

fscanf(fp,"%d",k);

fclose(fp);

}

void Add_data(int flag)//增加数据

{

int i, j,count=k;

char num[10], name[10];

float subject1, subject2, subject3;

if (flag)

{

printf("\n输入您想增加的数据条数:");

scanf("%d", i);

for (j = 0; j i; j++)

{

printf("\n输入增加的学生学号,姓名,三门科目成绩");

scanf("%s%s%f%f%f", num, name, subject1, subject2, subject3);

strcpy(stu[count + j].num, num);

strcpy(stu[count+ j].name, name);

stu[count+ j].score[0] = subject1;

stu[count + j].score[1] = subject2;

stu[count+ j].score[2] = subject3;

k++;

Count_score(1);

}

Save_k(k);

}

else

{

printf("\n输入您想增加的数据条数:");

scanf("%d", i);

for (j = 0; j i; j++)

{

printf("\n输入增加的学生学号,姓名,三门科目成绩");

scanf("%s%s%f%f%f", num, name, subject1, subject2, subject3);

strcpy(stu[j].num, num);

strcpy(stu[j].name, name);

stu[j].score[0] = subject1;

stu[j].score[1] = subject2;

stu[j].score[2] = subject3;

k++;

Count_score(1);

}

}

}

void Screen_search()//查询界面

{

printf("*****************学生成绩查询界面*******************\n\n\n");

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

printf("|? ? ? ? ? ? ? ①? 学生学号查询? ? ? ? ? ? ? ? ? ? |\n");

printf("|? ? ? ? ? ? ? ②? 学生姓名查询? ? ? ? ? ? ? ? ? ? |\n");

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

}

void Screen_rank()//成绩排名方式界面

{

printf("*****************学生成绩排名界面*******************\n\n\n");

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

printf("|? ? ? ? ? ? ? ①? ? subject? ? ? ? ? ? ? ? ? ? ? |\n");

printf("|? ? ? ? ? ? ? ②? ? ? sum? ? ? ? ? ? ? ? ? ? ? ? |\n");

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

}

void Screen_teacher()

{

printf("*****************教师管理操作界面*******************\n\n\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");

}

void Screen_stu_teach()

{

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

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

printf("|? ? ? ? ? ? ? ① 教师管理员登录? ? ? ? ? ? ? ? ? |\n");

printf("|? ? ? ? ? ? ? ②? 学生端登录? ? ? ? ? ? ? ? ? ? |\n");

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

}

void Screen_onlyteach()

{

printf("*****************教师登陆操作界面*******************\n\n\n");

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

printf("|? ? ? ? ? ? ? ① 教师管理员登录? ? ? ? ? ? ? ? ? |\n");

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

}

void Screen_stu()

{

printf("*****************学生用户操作界面*******************\n\n\n");

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

printf("|? ? ? ? ? ? ? ①? 学生成绩查询? ? ? ? ? ? ? ? ? ? |\n");

printf("|? ? ? ? ? ? ? ②? 成绩排名查询? ? ? ? ? ? ? ? ? ? |\n");

printf("|? ? ? ? ? ? ? ③? ? ? 退出? ? ? ? ? ? ? ? ? ? ? ? |\n");

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

}

以上内容仅是本人通过多方浏览网上资料,自己敲出来的。

如有问题,大家可以在评论区下方留言!!!

本人已亲测,可用

用C语言设计一个学生成绩管理系统

#include stdio.h

#include string.h

#include stdlib.h

#define?MAX?1000

/*定义学生成绩信息结构*/

struct stu

{

char id[8];

char name[8];

扩展资料:

short:修饰int,短整型数据,可省略被修饰的int。(KR时期引入)

long:修饰int,长整型数据,可省略被修饰的int。(KR时期引入)

long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)

signed:修饰整型数据,有符号数据类型。(C89标准新增)

unsigned:修饰整型数据,无符号数据类型。(KR时期引入)

restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)

复杂类型关键字

struct:结构体声明。(KR时期引入)

union:联合体声明。(KR时期引入)

enum:枚举声明。(C89标准新增)

typedef:声明类型别名。(KR时期引入)

sizeof:得到特定类型或特定类型变量的大小。(KR时期引入)

inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)

参考资料来源:百度百科-c语言

C语言编写一个学生成绩管理系统

以下是我做过的成品

#include "stdio.h"

#include "stdlib.h"

#include "string.h"#define N 100 ? //最大学生数量

#define LEN sizeof(struct student)

FILE *fp;

int n=0; ? ? ? ? ?//学生数量

struct student

{

int num;

char name[20];

int x_num;

int class_num;

float score1;

float score2;

float score3;

float total;

float average;

}stu[N]; ? ? ? //学生信息结构体/*1.学生信息存入文件*/

void creat() ?

{

int i,j;

struct student t;

printf("输入学生的数量。(不超过%d)\n",N);

scanf("%d",n);

if(nN) exit(0);

printf("依次输入学生信息:学号 姓名 学院代号 班级号 高数成绩 英语成绩 C语言成绩\n");

for(i=0;in;i++)

{

scanf("%d %s %d %d %f %f %f",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3);

stu[i].total=stu[i].score1+stu[i].score2+stu[i].score3;

stu[i].average=stu[i].total/3;

}

for(j=0;jn-1;j++)

for(i=j;in-j-1;i++)

{

if(stu[i].num stu[i+1].num)

{

t=stu[i];

stu[i]=stu[i+1];

stu[i+1]=t;

}

}

if((fp=fopen("student_number","wb"))==NULL) ?//保存学生数量n

{

printf("can't open file!\n");

exit(0);

}

fwrite(n,sizeof(int),1,fp);

if((fp=fopen("student","wb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

fwrite(stu[i],LEN,1,fp);

fclose(fp);

}

/*2.增加一个学生信息*/

void add()

{

int i,j;

char ch;

struct student t;

if((fp=fopen("student_number","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

fread(n,sizeof(n),1,fp);

if((fp=fopen("student","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

fread(stu[i],LEN,1,fp);

printf("依次输入学生信息:学号 姓名 学院代号 班级号 高数成绩 英语成绩 C语言成绩\n");

scanf("%d %s %d %d %f %f %f",t.num,t.name,t.x_num,t.class_num,t.score1,t.score2,t.score3);

t.total=t.score1+t.score2+t.score3;

t.average=t.total/3;

if(t.numstu[n-1].num)

{

n=n+1;

stu[n-1]=t;

}

else

for(i=0;in;i++)

{

printf("aw\n");

if(t.numstu[i].num)

{

n=n+1;

for(j=n-2;ji-1;j--) stu[j+1]=stu[j];

stu[i]=t;

break;

}

}

if((fp=fopen("student_number","wb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

fwrite(n,sizeof(n),1,fp);

if((fp=fopen("student","wb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

fwrite(stu[i],LEN,1,fp);

fclose(fp);

begin:

printf("@是否继续“添加”操作(y/n)?\n");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y') add();

else if(ch=='n'||ch=='N') ;

else { printf("输入有误!\n"); goto begin;}

}

/*3.删除学生信息*/

void del() ?

{

int i,numb,mark=0;

char ch;

printf("输入要删除学生的学号:\n");

scanf("%d",numb);

if((fp=fopen("student_number","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

fread(n,sizeof(n),1,fp);

if((fp=fopen("student","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

{

fread(stu[i],LEN,1,fp);

if(stu[i].num==numb)

{

i--;

n--;

mark=1;

}

}

if(mark==0) printf("没有该生信息\n");

if((fp=fopen("student_number","wb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

fwrite(n,sizeof(n),1,fp);

if((fp=fopen("student","wb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

fwrite(stu[i],LEN,1,fp);

fclose(fp);

begin:

printf("@是否继续“删除”操作(y/n)?\n");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y') del();

else if(ch=='n'||ch=='N') ;

else { printf("输入有误!\n"); goto begin;}

}

/*4.修改学生信息*/

void change() ?

{

int i,numb,mark=0;

float score1,score2,score3,totall,average;

char ch;

printf("输入要修改学生的学号 高数成绩 英语成绩 C语言成绩:\n");

scanf("%d %f %f %f",numb,score1,score2,score3);

if((fp=fopen("student_number","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

fread(n,sizeof(n),1,fp);

if((fp=fopen("student","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

{

fread(stu[i],LEN,1,fp);

if(stu[i].num==numb)

{

totall=score1+score2+score3;

average=totall/3;

stu[i].score1=score1;

stu[i].score2=score2;

stu[i].score3=score3;

stu[i].total=totall;

stu[i].average=average;

mark=1;

}

}

if(mark==0) printf("没有该生信息\n");

if((fp=fopen("student_number","wb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

fwrite(n,sizeof(n),1,fp);

if((fp=fopen("student","wb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

fwrite(stu[i],LEN,1,fp);

fclose(fp);

begin:

printf("@是否继续“修改”操作(y/n)?\n");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y') del();

else if(ch=='n'||ch=='N') ;

else { printf("输入有误!\n"); goto begin;}

}

/*5.查询操作*/

//(1)按学号查询,输入一个学号,输出对应的学生信息。

void num_search() ?

{

int i,num,mark=0;

printf("输入学号:\n");

scanf("%d",num);

for(i=0;in;i++)

if(stu[i].num==num)

{

printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2哗笭糕蝗蕹豪革通宫坤f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average);

mark=1;

}

if(mark==0) printf("没有找到相关信息。\n");

}

//(2)按全名查询。

void name_search()

{

int i,mark=0;

char name[20];

printf("输入姓名:\n");

scanf("%s",name);

for(i=0;in;i++)

if(strcmp(stu[i].name,name)==0)

{

printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average);

mark=1;

}

if(mark==0) printf("没有找到相关信息。\n");

}

//(3)按姓氏查询。

void firstname_search()

{

int i,mark=0;

char name[20];

printf("输入姓氏:\n");

scanf("%s",name);

for(i=0;in;i++)

if(stu[i].name[0]==name[0] stu[i].name[1]==name[1])

{

printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average);

mark=1;

}

if(mark==0) printf("没有找到相关信息。\n");

}

//(4)按学院查询,输入学院名称,输出该学院的全部学生的信息。

void x_search()

{

int i,x_num,mark=0;

printf("输入学院代号:\n");

scanf("%d",x_num);

for(i=0;in;i++)

if(stu[i].x_num==x_num)

{

printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average);

mark=1;

}

if(mark==0) printf("没有找到相关信息。\n");

}

//(5)按班级查询,输入班级名称,输出该班级的全部学生的信息。

void classnum_search()

{

int i,class_num,mark=0;

printf("输入学院代号:\n");

scanf("%d",class_num);

for(i=0;in;i++)

if(stu[i].class_num==class_num)

{

printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average);

mark=1;

}

if(mark==0) printf("没有找到相关信息。\n");

}

//查询模块

void search() ? ?

{

char ch;

int i;

if((fp=fopen("student_number","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

fread(n,sizeof(n),1,fp);

if((fp=fopen("student","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

fread(stu[i],LEN,1,fp);

fclose(fp);

printf("选择要进行查询的关键字代号:1、学号查询。2、按全名查询。3、按姓氏查询。4、学院查询。5、班级查询。\n");

fflush(stdin);

ch=getchar();

switch(ch)

{

case '1': ?num_search(); ?break;

case '2': ?name_search(); ?break;

case '3': ?firstname_search(); ?break;

case '4': ?x_search(); ?break;

case '5': ?classnum_search(); ?break;

default :printf("输入代号有误。\n");

}

begin:

printf("@是否继续“查询”操作(y/n)?\n");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y') search();

else if(ch=='n'||ch=='N') ;

else { printf("输入有误!\n"); goto begin;}

}

/*6.统计*/

//(1)按总分对学生信息进行排序(由高到低),输出排序后的信息,并将排序后的学生信息存放到一个新的二进制文件中。

void totall_score()

{

int i,j;

struct student t;

for(j=0;jn-1;j++)

for(i=0;in-j-1;i++)

if(stu[i].totalstu[i+1].total)

{

t=stu[i];

stu[i]=stu[i+1];

stu[i+1]=t;

}

if((fp=fopen("student_number","wb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

fwrite(n,sizeof(n),1,fp);

if((fp=fopen("student_totalscore","wb"))==NULL) ?//按总分排序并保存至新的文件夹中。

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

{

printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f\n",stu[i].num,stu[i].name,stu[i].x_num,stu[i].class_num,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].total,stu[i].average);

fwrite(stu[i],LEN,1,fp);

}

fclose(fp);

}

//(2)按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。

void each_score()

{

int e,d,c,b,a,i;

a=b=c=d=e=0;

for(i=0;in;i++)

{

if(stu[i].average60) e++;

else if(stu[i].average70) d++;

else if(stu[i].average80) c++;

else if(stu[i].average90) b++;

else a++;

}

printf("不及格人数为%d\n 60-69人数为%d\n 70-79人数为%d\n 80-89人数为%d\n 90-100人数为%d\n",e,d,c,b,a);

}

//(3)分别找出3门课程成绩最高的学生,并输出他们的信息。

void high_stu()

{

int max1,max2,max3,i;

max1=max2=max3=0;

for(i=0;in;i++)

{

if(stu[max1].score1stu[i].score1) max1=i;

if(stu[max2].score2stu[i].score2) max2=i;

if(stu[max3].score3stu[i].score3) max3=i;

}

printf("高数最高成绩学生信息:\n学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f\n",stu[max1].num,stu[max1].name,stu[max1].x_num,stu[max1].class_num,stu[max1].score1,stu[max1].score2,stu[max1].score3,stu[max1].total,stu[max1].average);

printf("英语最高成绩学生信息:\n学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f总分:%0.2f 平均分:%0.2f\n",stu[max2].num,stu[max2].name,stu[max2].x_num,stu[max2].class_num,stu[max2].score1,stu[max2].score2,stu[max2].score3,stu[max2].total,stu[max2].average);

printf("c语言最高成绩学生信息:\n学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f\n",stu[max3].num,stu[max3].name,stu[max3].x_num,stu[max3].class_num,stu[max3].score1,stu[max3].score2,stu[max3].score3,stu[max3].total,stu[max3].average);

}

//(4)分别统计出3门课程的不及格率,并输出。

void filled()

{

int i;

float f1,f2,f3,sf1,sf2,sf3;

f1=f2=f3=0;

for(i=0;in;i++)

{

if(stu[i].score160) f1++;

if(stu[i].score260) f2++;

if(stu[i].score360) f3++;

}

sf1=f1/n;

sf2=f2/n;

sf3=f3/n;

printf("高数不及格率为%0.2f\n",sf1);

printf("英语不及格率为%0.2f\n",sf2);

printf("c语言不及格率为%0.2f\n",sf3);

}

//统计模块

void stat() ?

{

char ch;

int i;

if((fp=fopen("student_number","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

fread(n,sizeof(n),1,fp);

if((fp=fopen("student","rb"))==NULL)

{

printf("can't open file!\n");

exit(0);

}

for(i=0;in;i++)

fread(stu[i],LEN,1,fp);

printf("选择要进行的统计操作代号:\n1、按总分由高到低。\n2、按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。\n3、找出3门课程成绩最高的学生。\n4、统计出3门课程的不及格率。\n");

fflush(stdin);

ch=getchar();

switch(ch)

{

case '1': ?totall_score(); ?break;

case '2': ?each_score(); ?break;

case '3': ?high_stu(); ?break;

case '4': ?filled(); ?break;

default :printf("输入代号有误。\n");

}

begin:

printf("@是否继续“统计”操作(y/n)?\n");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y') stat();

else if(ch=='n'||ch=='N') ;

else { printf("输入有误!\n"); goto begin;}

}

/*主选项*/

void action() ?

{

char ch;

printf("输入想要进行操作的代码:\n1、输入学生信息;\n2、增加学生信息;\n3、删除学生信息;\n4、修改学生信息;\n5、按不同条件对学生信息进行查询操作;\n6、按不同条件对学生成绩进行统计工作。\n");

fflush(stdin);

ch=getchar();

switch(ch)

{

case '1':creat();break; ?//输入学生信息

case '2':add();break; ? ?//增加学生信息

case '3':del();break; ? ?//删除学生信息

case '4':change();break; //修改学生信息

case '5':search();break; //按不同条件对学生信息进行查询操作

case '6':stat();break; ? //按不同条件对学生成绩进行统计工作

default:printf("输入代号有误。\n");

}

begin:

printf("#是否继续进行“管理”操作?(y/n)\n");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y') action();

else if(ch=='n'||ch=='N') ;

else { printf("输入有误!\n"); goto begin;}

}

//主函数

void main()

{

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

action();

}

评论0 ? ? ? ? ? ? ? ? ? ? 举报 ? ? ? ? ?

5 ? ? ? ? 0 ?

加载更多

最新回答 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1条回答) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

匿名用户 ? ? ? ? ? ? ? ? 1级 ?

2010-12-22 回答

#includeiostream

#includecstring

#includemalloc.h

using namespace std;

struct lx

{

long num;

char name[20];

struct lx *link;

};

struct lx *addlist(struct lx *head,long x);//添加节点;

void listclear(struct lx *head);

struct lx *createlist(void );

void listprintf(struct lx *p);

int main(int argc,char **argv)

{

long x;

struct lx *p = createlist();

listprintf(p);

cout"输入学号"endl;

cin x;

struct lx *head = addlist(p,x);

listprintf(head);

listclear(head);

//listprintf(temp);

return 0;

}

struct lx *createlist(void )

{

struct lx *head ;

struct lx *tail ;

struct lx *p;

char buf[20];

head = NULL;

p = (struct lx *)malloc(sizeof (struct lx));

// cout "内存分配失败!!!!" endl;

cout "请输入学号:";

cin p-num;

cout "请输入姓名:";

cin p-name;

//coutbufendl;

//strcpy(p-name, buf);

while(1)

{

if(head == NULL)

{

head = p;

tail = p;

}

else

{

tail-link = p;

tail = p;

}

p = (struct lx*)malloc(sizeof(struct lx));

// cout"内存分配失败!!!!!" endl;

cout "请输入学号:";

cin p-num;

if(p-num == 0)

break;

cout "请输入姓名:";

cin p-name;

//strcpy(p-name,buf);

}

tail-link = NULL;

return head;

}

void listprintf(struct lx *p)

{

struct lx* q = p;

while(q!= NULL)

{

cout q-numendl;

cout q-nameendl;

q = q-link;

}

}

struct lx *addlist(struct lx *head,long x)//添加节点

{

struct lx *p = head;

struct lx *q,*temp,*temp1;

q = NULL;

if(p-link == NULL )

{

if((p-num ) x )

{

q=(struct lx *)malloc(sizeof(struct lx));

cout"输入姓名:"endl;

cinq-name;

q-num = x;

q-link = p;

p = q;

}

else

{

q=(struct lx *)malloc(sizeof(struct lx));

cout"输入姓名:"endl;

cinq-name;

q-num = x;

temp1 = p-link;

p-link = q;

q-link = temp1;

temp1-link = NULL;

}

}

else if(((p-num) x)((p-link)-link == NULL))

{

q=(struct lx *)malloc(sizeof(struct lx));

cout"输入姓名:"endl;

cinq-name;

q-num = x;

p-link = q;

q-link = p;

q-link = NULL;

}

哗笭糕蝗蕹豪革通宫坤 ? ? ? else

{

while(1)

{

if((p-num x)((p-link)-num x))

break;

p = p-link;

}

q=(struct lx *)malloc(sizeof(struct lx));

cout"输入姓名:"endl;

cinq-name;

q-num = x;

temp = p-link;

p-link = q;

q-link = temp;

}

return p;

}

void listclear(str

怎样用C语言写学生成绩管理系统?

程序如下: #include\x0d\x0avoid main()\x0d\x0a{\x0d\x0a float student[100][7];\x0d\x0a//student[][0]存放学号,student[][1]到student[][4]存放四门成绩,\x0d\x0a//student[][5]存放总分,student[][6]存放平均分,student[][7]存放排名\x0d\x0a int n,i,j,k,p,t,count,flag;\x0d\x0a int a[100],b[100],c[100];\x0d\x0a//a[]存放排序后的下标,b[]存放总分(备份),c[]存放排名的数据\x0d\x0a printf("输入学生的个数:\n");\x0d\x0a scanf("%d",n);\x0d\x0a for(i=0;ib[i+1])\x0d\x0a {\x0d\x0a c[i]=count;\x0d\x0a count++;\x0d\x0a }\x0d\x0a }\x0d\x0a printf("\n以下是统计结果:\n");\x0d\x0a printf("学号 s[1] s[2] s[3] s[4] 总分 平均分 排名\n");\x0d\x0a for(i=0;i

回答于?2022-11-16

C语言编写一个简单的学生成绩管理系统

C语言程序:

#include?stdio.h

#include?string.h

typedef?struct?student

{

char?name[20]; /*?姓名?*/

int?code; /*?学号?*/

int?kor,?eng,?math; /*?3门课程的成绩?*/

}STUDENT;

/*?返回输入数据?*/

STUDENT?Input();

/*?输出所有输入的数据?*/

void?Output(STUDENT?info[],?int?cnt);

/*?将输入分数转换为A-F?*/

char?grade(int?score);

int?main()

{

STUDENT?S[10];

int?cnt?=?0,?select;

int?i,?j;

int?code;

while(1)

{

printf("\t学生信息管理系统\n\n");

printf("\t\t1\t添加\n");

printf("\t\t2\t删除\n");

printf("\t\t3\t查询\n");

printf("\t\t0\t结束\n");

printf("\t\t您的选择[0-3]:");

scanf("%d",?select);

if(select??0?||?select??3)

continue;

if(select?==?0)

{

printf("退出系统!\n");

break;

}

if(select?==?1) /*?添加?*/

{

S[cnt++]?=?Input();

}

else?if(select?==?2) /*?删除?*/

{

printf("\t\t待删除学生的学号:");

scanf("%d",?code);

for(i=0;?icnt;?i++)

if(S[i].code?==?code)

break;

if(i?=?cnt)

{

printf("学号不存在,删除失败!\n");

}

else?{

for(j=i+1;?jcnt;?j++)

{

strcpy(S[j-1].name,?S[j].name);

S[j-1].code?=?S[j].code;

S[j-1].kor?=?S[j].kor;

S[j-1].eng?=?S[j].eng;

S[j-1].math?=?S[j].math;

}

cnt--;

printf("删除成功!\n");

}

}

else /*?查询?*/

{

printf("\t\t待查找学生的学号:");

scanf("%d",?code);

for(i=0;?icnt;?i++)

if(S[i].code?==?code)

break;

if(i?=?cnt)

{

printf("学号不存在,查找失败!\n");

}

else

{

printf("\t查询结果:\n");

Output(S,?i);

}

}

}

return?0;

}

/*?返回输入数据?*/

STUDENT?Input()

{

STUDENT?stu;

printf("\t\t新学生信息\n");

printf("\t\t学号:");

scanf("%d",?stu.code);

printf("\t\t姓名:");

getchar();

gets(stu.name);

printf("\t\t3门课程成绩(以空格分隔):");

scanf("%d%d%d",?stu.kor,?stu.eng,?stu.math);

return?stu;

}

/*?输出所有输入的数据?*/

void?Output(STUDENT?info[],?int?cnt)

{

printf("学号:%d\n",info[cnt].code);

printf("姓名:");

puts(info[cnt].name);

printf("成绩:%c?%c?%c\n",?grade(info[cnt].kor),?grade(info[cnt].eng),?grade(info[cnt].math));

}

/*?将输入分数转换为A-F?*/

char?grade(int?score)

{

if(score??0?||?score??100)

return?'F';

if(score?=?90)

return?'A';

if(score?=?80)

return?'B';

if(score?=?70)

return?'C';

if(score?=60)

return?'D';

else

return?'E';

}

运行测试:

用C语言编写一个简单的成绩管理系统

(ps:没有自己编译过)

//我写 C++比较多

#include stdio.h

#include stdlib.h

#include string.h

#include conio.h

#define TOTAL_STUD 1000

typedef struct stud {

char name[20];

int score;

} students[TOTAL_STUD],sorted[TOTAL_STUD];

void delstud (int i) {

students[i].name = "无效学生";

students[i].score = -999;

return;

}

#define show(listname,i)?printf("%04d????%s????%d\n",i,listname[i].name,listname[i].score);

int cmpfunc (const void * a, const void * b)

{

return ( *(stud*)a.score - *(stud*)b.score );

} // 本段代码修改自此处

void run(int menu) {

switch (menu) {

case 1:

char uname[20];

int uid,uscore;

printf("请输入学生姓名:");

scanf("%s",uname);

printf("\n 请输入学生学号:");

scanf("%d",uid);

printf("\n 请输入学生成绩:");

scanf("%d",uscore);

students[uid].name = uname;

students[uid].score = uscore;

printf("\n\n插入成功!\n\n");

break;

case 2:

int delid;

printf("要删除谁?学号?");

scanf("%d",delid);

delstud(delid);

break;

case 3:

for (int i = 0; i TOTAL_STUD; i++) {

strcpy(sorted[i].name,students[i].name);

sorted[i].score=students[i].score;

}

qsort(sorted,TOTAL_STUD,sizeof(stud),cmpfunc);

printf("学号 姓名 分数\n");

for (int i = 0; i TOTAL_STUD; i++) {

if (sorted[i].score -900) show(sorted,i);

}

break;

case 4:

for (int i = 0; i TOTAL_STUD; i++) {

if (students[i].score -900) show(students,i);

}

break;

case 5:

int delid;

printf("要查询谁?学号?");

scanf("%d",delid);

show(students,delid);

break;

default:

printf("-- %d 无此功能。请重试。--",menu);

}

return;

}

int main() {

int key = -1;

for (int i = 0; i TOTAL_STUD; i++) {

delstud(i);

}

while (key != 0) {

printf("---成绩管理系统 V0.9 ---\n 请选择:\n1 -- 录入\n2 -- 删除\n3 -- 排序输出\n4 -- 不排序输出\n5 -- 查询\n0 -- 退出");

key=getch()-48;

if (key0) run(key);

else {

printf("谢谢使用!再见!");

return 0;

}

}

return 0;

}

(责任编辑:IT教学网)

更多

推荐Flash actionscript文章