学生信息管理c语言代码,学生信息管理系统源代码-C语言

#include

#include

#include

#include

struct stu_type{

char num[15];

char name[10];

int age;

int c;

int math;

int en;

int sum;

float ave;

};

struct stu_type stu[100];

int stu_num=0;

void add();

int display(char str[]);

void modify();

void del();

void find();

void compute();

void sort();

void save_txt();

void load_txt();

void save_bin();

void load_bin();

void main()

{

while(1)

{

int choice;

printf("\n欢迎使用学生信息管理系统\n");

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

printf("1.添加学生信息2.显示学生信息\n");

printf("3.修改学生信息4.删除学生信息\n");

printf("5.查找学生信息6.统计不及格人数、最高分和平均分\n");

printf("7.按总分排序 8.保存至文件(文本方式)\n");

printf("9.从文件读入10.保存至文件(二进制方式)\n");

printf("11.从文件读入(二进制方式)12.退出程序\n");

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

printf("请选择功能模块,输入数字1-12");

while(1)

{

scanf("%d",&choice);

if(choice>=1 && choice<=12)

break;

else

printf("输入数字不正确,请重输入1-12:");

}

switch(choice)

{

case 1:add();break;

case 2:display("");break;

case 3: modify();break;

case 4: del();break;

case 5: find();break;

case 6:compute();break;

case 7:sort();break;

case 8:save_txt();break;

case 9:load_txt();break;

case 10:save_bin();break;

case 11:load_bin(); break;

case 12:exit(0);

}

}

}

void add()

{

int i=stu_num;

printf("说明:依次输入学生信息,当输入的学号为0时表示输入结束\n");

while(1)

{

printf("请输入第%d个学生的信息\n",i+1);

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

scanf("%s",stu[i].num);

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

break;

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

scanf("%s",stu[i].name);

printf("请输入年龄:");

scanf("%d",&stu[i].age);

printf("请输入c语言成绩:");

scanf("%d",&stu[i].c);

printf("请输入数学成绩:");

scanf("%d",&stu[i].math);

printf("请输入英语成绩:");

scanf("%d",&stu[i].en);

stu[i].sum = stu[i].c + stu[i].math + stu[i].en;

stu[i].ave = (float)stu[i].sum/3;

i++;

}

stu_num = i;

printf("总共已输入%d个学生的信息\n",stu_num);

}

void compute()

{

int i, n=0, max=0, sum=0;

for(i=0; i

{

if(stu[i].c<60)

n++;

if(max

max=stu[i].c;

sum = sum + stu[i].c;

}

printf("C语言统计结果如下:\n");

printf("不及格人数\t最高分\t平均分\n");

printf("%d\t%d\t%5.2f\n",n,max,(float)sum/stu_num);

}

void del()

{

char str[15], m;

int i, j;

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

scanf("%s",str);

i = display(str);

if(i!=-1)

{

printf("确认要删除该学生的信息吗?(y/n)");

m = getche();

if(m=='y' || m=='Y')

{

stu_num--;

for(j=i; j

stu[j] = stu[j+1];

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

}

}

}

int display(char str[])

{

int i, k=-1;

if(strlen(str) == 0)

{

if(stu_num>0)

{

printf("学生学号\t姓名\t年龄\tC语言\t数学\t英语\t总分\t平均分\n");

for(i=0; i

printf("%-16s%s\t%d\t%d\t%d\t%d\t%d\t%5.1f\n",stu[i].num,stu[i].name,

stu[i].age, stu[i].c, stu[i].math, stu[i].en, stu[i].sum, stu[i].ave);

}

else

printf("学生信息为空!");

}

else

{

for(i=0; i

{

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

{

printf("学生学号\t姓名\t年龄\tC语言\t数学\t英语\t总分\t平均分\n");

printf("%-16s%s\t%d\t%d\t%d\t%d\t%d\t%5.1f\n",stu[i].num,stu[i].name,

stu[i].age, stu[i].c, stu[i].math, stu[i].en, stu[i].sum, stu[i].ave);

k = i;

}

}

if(k==-1)

printf("没有找到符合条件的学生\n");

}

return k;

}

void find()

{

char str[15];

printf("请输入要查找的学生学号:");

scanf("%s",str);

display(str);

}

void load_bin()

{

FILE * fp;

char fname[20];

int i=0, flag;

printf("请输入文件名(如:stu.dat):");

scanf("%s",fname);

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

{

printf("不能打开文件,文件读取失败!\n");

return;

}

while(1)

{

flag = fread(&stu[i], sizeof(struct stu_type), 1, fp);

if(flag == 0)

break;

i++;

}

stu_num = i;

printf("从文件中成功读取%d条记录!\n",i);

fclose(fp);

}

void load_txt()

{

FILE * fp;

char fname[20];

int i=0, flag;

printf("请输入文件名(如:stu.txt):");

scanf("%s",fname);

if((fp=fopen(fname,"r"))==NULL)

{

printf("不能打开文件,文件读取失败!\n");

return;

}

while(1)

{

flag=fscanf(fp, "%s %s %d %d %d %d %d %f",stu[i].num,

stu[i].name, &stu[i].age, &stu[i].c, &stu[i].math, &stu[i].en,

&stu[i].sum, &stu[i].ave);

if(flag == EOF)

break;

i++;

}

stu_num = i;

printf("从文件中成功读取%d条记录!\n",i);

fclose(fp);

}

void modify()

{

char str[15], m;

int i;

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

scanf("%s",str);

i = display(str);

if(i!=-1)

{

printf("\n确认修改该学生的信息吗?(y/n)\n");

m = getche();

if(m=='y' || m=='Y')

{

printf("\n请重新输入该学生的信息\n");

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

scanf("%s",stu[i].num);

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

scanf("%s",stu[i].name);

printf("请输入年龄:");

scanf("%d",&stu[i].age);

printf("请输入C语言成绩:");

scanf("%d",&stu[i].c);

printf("请输入数学成绩:");

scanf("%d",&stu[i].math);

printf("请输入英语成绩:");

scanf("%d",&stu[i].en);

stu[i].sum = stu[i].c + stu[i].math + stu[i].en;

stu[i].ave = (float)stu[i].sum/3;

}

}

}

void save_txt()

{

FILE * fp;

char fname[20];

int i;

printf("请输入文件名(如:stu.txt):");

scanf("%s",fname);

if((fp=fopen(fname,"w"))==NULL)

{

printf("不能打开文件,文件保存失败!\n");

return;

}

for(i=0; i

fprintf(fp, "%s %s %d %d %d %d %d %5.2f\n",stu[i].num, stu[i].name,

stu[i].age, stu[i].c, stu[i].math, stu[i].en, stu[i].sum, stu[i].ave);

printf("文件保存成功!\n");

fclose(fp);

}

void sort()

{

int i,j;

struct stu_type temp;

for(i=1; i<=stu_num; i++)

for(j=0; j

if(stu[j].sum

{

temp = stu[j];

stu[j] = stu[j+1];

stu[j+1] = temp;

}

printf("排序结果如下:\n");

printf("名次\t学生学号\t姓名\t年龄\tC语言\t数学\t英语\t总分\t平均分\n");

for(i=0; i

printf("%d\t%-16s%s\t%d\t%d\t%d\t%d\t%d\t%5.1f\n",i+1,stu[i].num,

stu[i].name, stu[i].age, stu[i].c, stu[i].math, stu[i].en,

stu[i].sum, stu[i].ave);

}

void save_bin()

{

FILE * fp;

char fname[20];

printf("请输入文件名(如:stu.dat):");

scanf("%s",fname);

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

{

printf("不能打开文件,文件保存失败!\n");

return;

}

fwrite(stu,sizeof(struct stu_type), stu_num,fp);

printf("文件保存成功!\n");

fclose(fp);

}

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值