如何用C语言编写学生信息管理系统

作者&投稿:寇爸 (若有异议请与网页底部的电邮联系)
用C语言编写一个学生管理系统。~

概述单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。
运行结果如下:
输入数据:

根据总成绩排序:

根据学号删除学生信息:

贴上代码(有点多)
#include
#include //exit函数头文件
#include //字符串相关操作头文件
#define MAX_STUDENT 30 //最大学生数
//函数声明,本程序共10个子函数,每个函数对应一个操作
void student_scanf(int n);
void student_printf(int n);
int student_find_name(int n);
int student_find_num(int n);
void student_sort_num(int n);
void student_sort_sum(int n);
int student_alter_num(int n);
int student_alter_name(int n);
int student_delete_num(int n);
int student_delete_name(int n);
//全局数组变量,用于存储学生信息
char names[MAX_STUDENT][50];
int math[MAX_STUDENT];
int english[MAX_STUDENT];
int computer[MAX_STUDENT];
int sum[MAX_STUDENT];
int num[MAX_STUDENT];
//以下变量用于学生信息数组排序,作为临时数组
int temp_num[MAX_STUDENT];
char temp_names[MAX_STUDENT][50];
int temp_math[MAX_STUDENT];
int temp_english[MAX_STUDENT];
int temp_computer[MAX_STUDENT];
int temp_sum[MAX_STUDENT];
//sort数组存储排好序的学号或姓名下标
int sort[MAX_STUDENT];
//循环全局变量
int i, j;
//main主函数
int main(void)
{
int choice,n;
while (1)
{
printf("*************************************
");
printf("欢迎使用学生成绩管理系统
");
printf("[1] 输入所有学生信息
");
printf("[2] 输出所有学生成绩
");
printf("[3] 按学号查找某个学生信息
");
printf("[4] 按姓名查找某个学生信息
");
printf("[5] 按学号对学生排序
");
printf("[6] 按总成绩对学生排序
");
printf("[7] 按学号修改某个学生信息
");
printf("[8] 按姓名修改某个学生信息
");
printf("[9] 按学号删除某个学生信息
");
printf("[10] 按姓名删除某个学生信息
");
printf("[0] 退出程序
");
printf("请输入您的选择(0 - 9):");
scanf("%d",&choice);
printf("**************************************)
");
switch (choice)
{
case 1://录入;
printf("请输入录入的学生信息数: ");
scanf("%d",&n);
student_scanf(n);
break;
case 2://输出;
student_printf(n);
break;
case 3://根据学号查找
student_find_num(n);
break;
case 4://根据姓名查找
student_find_name(n);
break;
case 5://按学号排序
student_sort_num(n);
break;
case 6://按姓名排序
student_sort_sum(n);
break;
case 7://按学号修改
student_alter_num(n);
break;
case 8://按姓名修改
student_alter_name(n);
break;
case 9://按学号删除
student_delete_num(n);
n--;
break;
case 10://按姓名删除
student_delete_name(n);
n--;
break;
case 0://退出程序
printf("退出程序
");
printf("程序结束,谢谢使用!
");
exit(0);
default:
printf("您输入的菜单有误。请重新输入!
");
}
}
return 0;
}
//1.输入信息
void student_scanf(int n)
{
for (i = 0; i<n; ++i)
{
printf("
请输入第%d个学生的信息:
", i + 1);
printf("
学号:");
scanf("%d", &num[i]);
printf("
姓名:");
scanf("%s", names[i]);
printf("
数学成绩:");
scanf("%d", &math[i]);
printf("
英语成绩:");
scanf("%d", &english[i]);
printf("
计算机成绩:");
scanf("%d", &computer[i]);
//计算总成绩
sum[i] = math[i] + english[i] + computer[i];
}
}
//2.打印信息
void student_printf(int n)
{
printf("
学号姓名数学成绩英语成绩计算机成绩总成绩
");
printf("----------------------------------------------------------
");
for (i = 0; i<n; ++i)
{
printf("%d%s%d%d%d%d
", num[i], names[i], math[i], english[i], computer[i], sum[i]);
}
printf("-------------------------------------------------------
");
}
//3.按学号查找
int student_find_num(int n)
{
int nums;
int result;
printf("请输入待查找的学生学号:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!
");
return 0;
}
else
{
//先打印表头
printf("
学号姓名数学成绩英语成绩计算机成绩总成绩
");
//再打印数据
printf("%d%s%d%d%d%d
", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("打印出查找结果!
");
}
return 1;
}
//4.用姓名查找成绩
int student_find_name(int n)
{
char name[200];
int result;
printf("请输入待查找的学生姓名:");
scanf("%s", name);
result = -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name, names[i]) == 0)
{
result = i;
break;
}
}
if (result == -1)
{//未找到结果
printf("没有该学生信息!
");
return 0;
}
else//找到结果
{
printf("
学号姓名数学成绩英语成绩计算机成绩总成绩
");
printf("%d%s%d%d%d%d
", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("已完成查找!
");
}
return 1;
}
//5.按学号排序
void student_sort_num(int n)
{
int min,max;
for(i=0; i<n; ++i) //复制临时数组
{
temp_num[i] = num[i];
}
max = 0; //查找学号最大值,将其下标存至sort数组的最后一个值中
for(j=1; j<n; j++)
{
if(temp_num[max]<temp_num[j])
max = j;
}
sort[n-1] = max; //sort数组的最后一个数
for(i=0; i<n-1; ++i)
{
min = i; //查找学号最小值
for(j=0; j<n; ++j)
{
if(temp_num[min]>temp_num[j])
min = j;
}
//sort数组记录排序的学生信息的下标
sort[i] = min;
temp_num[min] = temp_num[max]; //利用临时数组将查找过的学生信息的学号设为最大值,排除查找干扰
}
for(i=0; i<n; ++i) //再复制一次临时数组
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; i<n; i++) //按照下标对原数组进行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完毕,请按菜单键2查看排序结果!
");
return ;
}
//6.按总成绩排序
void student_sort_sum(int n)
{
int min,max;
for(i=0; i<n; ++i) //复制临时数组
{
temp_sum[i] = sum[i];
}
max = 0; //查找总成绩最大值,将其下标存至sort数组的最后一个值中
for(j=1; j<n; j++)
{
if(temp_sum[max]<temp_sum[j])
max = j;
}
sort[n-1] = max; //sort数组的最后一个数
for(i=0; i<n-1; ++i)
{
min = i; //查找总成绩最小值
for(j=0; j<n; ++j)
{
if(temp_sum[min]>temp_sum[j])
min = j;
}
//sort数组记录排序的学生信息的下标
sort[i] = min;
temp_sum[min] = temp_sum[max]; //利用临时数组将查找过的学生信息的总成绩设为最大值,排除查找干扰
}
for(i=0; i<n; ++i) //再复制一次临时数组
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; i<n; i++) //按照下标对原数组进行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完毕,请按菜单键2查看排序结果!
");
return ;
}
//7.按学号修改学生信息
int student_alter_num(int n)
{
int nums;
int result;
printf("请输入待修改的学生学号:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!
");
return 0;
}
else //修改信息值
{
printf("请重新输入该学生信息:
");
printf("学号:
");
scanf("%d",&num[result]);
printf("姓名:
");
scanf("%s",names[result]);
printf("数学成绩:
");
scanf("%d",&math[result]);
printf("英语成绩:
");
scanf("%d",&english[result]);
printf("计算机成绩:
");
scanf("%d",&computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//8.按姓名修改学生信息
int student_alter_name(int n)
{
char name[50];
int result;
printf("请输入待修改的学生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!
");
return 0;
}
else //修改信息值
{
printf("请重新输入该学生信息:
");
printf("学号:
");
scanf("%d",&num[result]);
printf("姓名:
");
scanf("%s",names[result]);
printf("数学成绩:
");
scanf("%d",&math[result]);
printf("英语成绩:
");
scanf("%d",&english[result]);
printf("计算机成绩:
");
scanf("%d",&computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//9.按学号删除学生信息
int student_delete_num(int n)
{
int nums;
int result;
printf("请输入待删除的学生学号:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!
");
return 0;
}
else //删除当前学生信息即为将数组从result的位置依次前挪一个位置
{
for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
//10.按姓名删除学生信息
int student_delete_name(int n)
{
char name[50];
int result;
printf("请输入待删除的学生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!
");
return 0;
}
else //删除当前学生信息即为将数组从result的位置依次前挪一个位置
{
for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}

我这有个差不多的,要吗?是我写的实训作业
程序:
#include
#include
#include
int man=0;
int j;
char str[20];
struct student
{
char id[11];
char name[10];
int n1;
int n2;
int n3;
int n4;
int n5;
int n6;
int n7;
int n8;
int n9;
int zong;
int ping;
}student[100],temp;
void read(void)
{
FILE *cj;
int i,k;
man=0;
while(1)
{
printf("请输入要读取的文件:
");
scanf("%s",&str);
if((cj=fopen(str,"r"))==NULL)
{
printf("打开失败
");
}
else
{
break;
}
}
for(i=0;i<500;i++)
{
if(fscanf(cj,"%s %s %d %d %d %d %d %d %d %d %d",&student[i].id,&student[i].name,&student[i].n1,&student[i].n2,&student[i].n3,&student[i].n4,&student[i].n5,&student[i].n6,&student[i].n7,&student[i].n8,&student[i].n9)==-1)
{
break;
}
man=man+1;
}
printf("从%s读取去了“%d”条记录
",str,man);
for(k=0;k<man;k++)
{
student[k].zong=student[k].n1+student[k].n2+student[k].n3+student[k].n4+student[k].n5+student[k].n6+student[k].n7+student[k].n8+student[k].n9;
}
for(i=0;i<man;i++)
{
student[i].ping=student[i].zong/9;
}
fclose(cj);
}
void write(void)
{
FILE *cj;
int i;
char me;
printf("请确认是否保存(是:y,否:任意键):
");
scanf("%s",&me);
if(me=='y')
{
if((cj=fopen(str,"w"))==NULL)
{
printf("保存失败
");
}
for(i=0;i<man;i++)
{
fprintf(cj,"%s %s %d %d %d %d %d %d %d %d %d
",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9);
}
printf("存了“%d”条记录到%s
",man,str);
fclose(cj);
}
else
return;
}
void save(void)
{
FILE *cj;
int i;
char me;
printf("请输入新的文件名:
");
scanf("%s",&str);
printf("请确认是否保存(是:y,否:任意键):
");
scanf("%s",&me);
if(me=='y')
{
if((cj=fopen(str,"w"))==NULL)
{
printf("保存失败
");
}
for(i=0;i<man;i++)
{
fprintf(cj,"%s %s %d %d %d %d %d %d %d %d %d
",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9);
}
printf("存了“%d”条记录到%s
",man,str);
fclose(cj);
}
else
return;
}
void print(void)
{
int i;
for(i=0;i<72;i++)
printf("*");
printf("
");
printf(" | 学号 姓名 1 2 3 4 5 6 7 8 9 平均分 总分 |
");
for(i=0;i<man;i++)
{
printf(" | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d |
",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9,student[i].ping,student[i].zong);
}
for(i=0;i<72;i++)
printf("*");
printf("
");
}
void inquiry(void)
{
int i;
char id[10];
while(1)
{
printf("请输入要查人的学号或名字(输入-1即返回上一级):
");
scanf("%s",&id);
if(id[0]=='-'&&id[1]=='1')
{
printf("exit
");
break;
}
else
{
for(i=0;i<man;i++)
{
if(strcmp(student[i].id,id)==0)
{
j=i;
break;
}
if(strcmp(student[i].name,id)==0)
{
j=i;
break;
}

j=-1;

}
if(j==-1)
{
printf("无此人
");
}
else
{
printf(" | 学号 姓名 1 2 3 4 5 6 7 8 9 总分 平均分 |
");
printf(" | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d |
",student[j].id,student[j].name,student[j].n1,student[j].n2,student[j].n3,student[j].n4,student[j].n5,student[j].n6,student[j].n7,student[j].n8,student[j].n9,student[i].ping,student[i].zong);
}
}
}
}
void fail(void)
{
int i;
printf("有不及格成绩的学生为:
");
for(i=0;i<man;i++)
{
if(student[i].n1<60||student[i].n2<60||student[i].n3<60||student[i].n4<60||student[i].n5<60||student[i].n6<60||student[i].n7<60||student[i].n8<60||student[i].n9<60)
{
printf(" | %10s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d |
",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9,student[i].ping,student[i].zong);
}
}
}
void compositor(void)
{
int i,k;
char m;
printf("请选择干什么排序:
");
printf("1.成绩1
");
printf("2.成绩2
");
printf("3.成绩3
");
printf("4.成绩4
");
printf("5.成绩5
");
printf("6.成绩6
");
printf("7.成绩7
");
printf("8.成绩8
");
printf("9.成绩9
");
printf("0.总成绩或平均成绩
");
scanf("%s",&m);
if(m=='0')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].zong<student[i+1].zong)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='1')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n1<student[i+1].n1)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='2')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n2<student[i+1].n2)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='3')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n3<student[i+1].n3)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='4')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n4<student[i+1].n4)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='5')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n5<student[i+1].n5)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='6')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n6<student[i+1].n6)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='7')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n7<student[i+1].n7)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='8')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n8<student[i+1].n8)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else if(m=='9')
{
for(k=man;k>0;k--)
{
for(i=0;i<k;i++)
{
if(student[i].n9<student[i+1].n9)
{
temp=student[i];
student[i]=student[i+1];
student[i+1]=temp;
}
}
}
}
else
printf("无此功能
");
}
void raise(void)
{
printf("请输入添加人的学号:
");
scanf("%s",&student[man].id);
printf("请输入添加人的姓名:
");
scanf("%s",&student[man].name);
printf("请输入添加人的成绩1:
");
scanf("%d",&student[man].n1);
printf("请输入添加人的成绩2:
");
scanf("%d",&student[man].n2);
printf("请输入添加人的成绩3:
");
scanf("%d",&student[man].n3);
printf("请输入添加人的成绩4:
");
scanf("%d",&student[man].n4);
printf("请输入添加人的成绩5:
");
scanf("%d",&student[man].n5);
printf("请输入添加人的成绩6:
");
scanf("%d",&student[man].n6);
printf("请输入添加人的成绩7:
");
scanf("%d",&student[man].n7);
printf("请输入添加人的成绩8:
");
scanf("%d",&student[man].n8);
printf("请输入添加人的成绩9:
");
scanf("%d",&student[man].n9);
student[man].zong=student[man].n1+student[man].n2+student[man].n3+student[man].n4+student[man].n5+student[man].n6+student[man].n7+student[man].n8+student[man].n9;
student[man].ping=student[man].zong/9;
man=man+1;
}
void alter(void)
{
int i;
char id[10];
printf("请输入要修改人的学号:
");
scanf("%s",&id);
for(i=0;i<man;i++)
{
if(strcmp(student[i].id,id)==0)
{
j=i;
break;
}

j=-1;

}
if(j==-1)
{
printf("无此人
");
}
else
{
printf("请输入要修改为的学号:
");
scanf("%s",&student[j].id);
printf("请输入要修改为的姓名:
");
scanf("%s",&student[j].name);
printf("请输入要修改为的成绩1:
");
scanf("%d",&student[j].n1);
printf("请输入要修改为的成绩2:
");
scanf("%d",&student[j].n2);
printf("请输入要修改为的成绩3:
");
scanf("%d",&student[j].n3);
printf("请输入要修改为的成绩4:
");
scanf("%d",&student[j].n4);
printf("请输入要修改为的成绩5:
");
scanf("%d",&student[j].n5);
printf("请输入要修改为的成绩6:
");
scanf("%d",&student[j].n6);
printf("请输入要修改为的成绩7:
");
scanf("%d",&student[j].n7);
printf("请输入要修改为的成绩8:
");
scanf("%d",&student[j].n8);
printf("请输入要修改为的成绩9:
");
scanf("%d",&student[j].n9);
student[j].zong=student[j].n1+student[j].n2+student[j].n3+student[j].n4+student[j].n5+student[j].n6+student[j].n7+student[j].n8+student[j].n9;
student[j].ping=student[j].zong/9;
}
}
void deletes()
{
int i,k;
char id[10];
printf("请输入要删除人的学号:
");
scanf("%s",&id);
for(i=0;i<man;i++)
{
if(strcmp(student[i].id,id)==0)
{
j=i;
break;
}

j=-1;

}
if(j==-1)
{
printf("无此人
");
}
else
{
for(k=j;k<man;k++)
{
student[j]=student[j+1];
j=j+1;
}
man=man-1;
}
}
void menu(void)
{
int i;
printf("
");
for(i=0;i<10;i++)
printf(" ");
for(i=0;i<60;i++)
printf("*");
for(i=0;i<9;i++)
printf(" ");
printf("
");
for(i=0;i<10;i++)
printf(" ");
printf("# 1.显示学生成绩信息 6.查询不及格学生信息 #
");
for(i=0;i<10;i++)
printf(" ");
printf("# 2.按成绩由高到低排序 7.修改学生成绩信息 #
");
for(i=0;i<10;i++)
printf(" ");
printf("# 3.添加学生成绩信息 8.读取文件 #
");
for(i=0;i<10;i++)
printf(" ");
printf("# 4.删除学生成绩信息 9.保存文件 #
");
for(i=0;i<10;i++)
printf(" ");
printf("# 5.查询学生成绩信息 -. 另存为 #
");
for(i=0;i<10;i++)
printf(" ");
printf("# +.退出 #
");
for(i=0;i<10;i++)
printf(" ");
for(i=0;i<60;i++)
printf("*");
for(i=0;i<9;i++)
printf(" ");
printf("
");
}
int main(void)
{
char i;
read();
menu();
while(1)
{
printf("请输入要选择的需要功能的序列号(输入0显示菜单):
");
scanf("%s",&i);
if(i=='1')
{
print();
}
else if(i=='2')
{
compositor();
print();
}
else if(i=='3')
{
raise();
print();
}
else if(i=='4')
{
deletes();
print();
}
else if(i=='5')
{
inquiry();
}
else if(i=='6')
{
fail();
}
else if(i=='7')
{
alter();
print();
}
else if(i=='8')
{
read();
}
else if(i=='9')
{
write();
}
else if(i=='0')
{
menu();
}
else if(i=='+')
{
break;
}
else if(i=='-')
{
save();
}
else
{
printf("无此功能,请重新输入序列号
");
}
}
return 0;
}
记事本文件:你可以随意起名,但要放在和程序同目录
0615438101 顾佳 44 67 72 60 66 65 93 82 67
0615438103 金一宇 60 77 75 75 78 77 97 74 76
0615438104 李阳涛 50 76 66 73 74 80 92 89 74
0615438105 马凯 66 76 77 66 75 72 95 82 75
0615438106 史超 47 71 65 61 85 72 89 83 70
0615438108 徐磊 60 75 66 80 76 80 92 68 74
0615438109 杨浩 60 81 70 91 83 72 93 72 78
0615438110 于泽 61 75 78 70 87 73 84 92 77
0615438111 张昊 60 71 57 82 72 63 86 38 67
0615438112 张政 60 67 69 80 66 61 87 88 73
0615438114 周艨 61 69 71 38 74 77 76 89 67
0615438131 张楠 86 74 72 90 80 81 97 80 84
0615438132 王凡 29 68 48 35 46 76 88 62 54

参考如下学生信息管理系统的C源代码吧。

#include <stdio.h>
#include <string.h>
/*定义学生结构体*/
struct Student
{
     char ID[20];
     char Name[20];
     float Mark1;
     float Mark2;
     float Mark3;
     float Average;
};
/*声明学生数组及学生数量*/
struct Student students[1000];
int num=0;
/*求平均值*/
float Avg(struct Student stu)
{
     return (stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通过学号返回数组下标*/
int Student_SearchByIndex(char id[])
{
     int i;
     for (i=0;i<num;i++)
     {
         if (strcmp(students[i].ID,id)==0)
         {
              return i;
         }
     }
     return -1;
}
/*通过姓名返回数组下标*/
int Student_SearchByName(char name[])
{
     int i;
     for (i=0;i<num;i++)
     {
         if (strcmp(students[i].Name,name)==0)
         {
              return i;
         }
     }
     return -1;
}
/*显示单条学生记录*/
void Student_DisplaySingle(int index)
{
     printf("%10s%10s%8s%8s%8s%10s
","学号","姓名","成绩","成绩","成绩","平均成绩");
     printf("-------------------------------------------------------------
");
     printf("%10s%10s%8.2f%8.2f%8.2f%10.2f
",students[index].ID,students[index].Name,
              students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入学生信息*/
void Student_Insert()
{
     while(1)
     {
         printf("请输入学号:");
         scanf("%s",&students[num].ID);
         getchar();
         printf("请输入姓名:");
         scanf("%s",&students[num].Name);
         getchar();
         printf("请输入成绩:");
         scanf("%f",&students[num].Mark1);
         getchar();
         printf("请输入成绩:");
         scanf("%f",&students[num].Mark2);
         getchar();
         printf("请输入成绩:");
         scanf("%f",&students[num].Mark3);
         getchar();
         students[num].Average=Avg(students[num]);
         num++;
         printf("是否继续?(y/n)");
         if (getchar()=='n')
         {
              break;
         }
     }
}
/*修改学生信息*/
void Student_Modify()
{
     //float mark1,mark2,mark3;
     while(1)
     {
         char id[20];
         int index;
         printf("请输入要修改的学生的学号:");
         scanf("%s",&id);
         getchar();
         index=Student_SearchByIndex(id);
         if (index==-1)
         {
              printf("学生不存在!
");
         }
         else
         {
              printf("你要修改的学生信息为:
");
              Student_DisplaySingle(index);
              printf("-- 请输入新值--
");
              printf("请输入学号:");
              scanf("%s",&students[index].ID);
              getchar();
              printf("请输入姓名:");
              scanf("%s",&students[index].Name);
              getchar();
              printf("请输入成绩:");
              scanf("%f",&students[index].Mark1);
              getchar();
              printf("请输入成绩:");
              scanf("%f",&students[index].Mark2);
              getchar();
              printf("请输入成绩:");
              scanf("%f",&students[index].Mark3);
              getchar();
              students[index].Average=Avg(students[index]);
         }
         printf("是否继续?(y/n)");
         if (getchar()=='n')
         {
              break;
         }
     }
}
/*删除学生信息*/
void Student_Delete()
{
     int i;
     while(1)
     {
         char id[20];
         int index;
         printf("请输入要删除的学生的学号:");
         scanf("%s",&id);
         getchar();
         index=Student_SearchByIndex(id);
         if (index==-1)
         {
              printf("学生不存在!
");
         }
         else
         {
              printf("你要删除的学生信息为:
");
              Student_DisplaySingle(index);
              printf("是否真的要删除?(y/n)");
              if (getchar()=='y')
              {
                   for (i=index;i<num-1;i++)
                   {
                       students[i]=students[i+1];//把后边的对象都向前移动
                   }
                   num--;
              }
              getchar();
         }
         printf("是否继续?(y/n)");
         if (getchar()=='n')
         {
              break;
         }
     }
}
/*按姓名查询*/
void Student_Select()
{
     while(1)
     {
         char name[20];
         int index;
         printf("请输入要查询的学生的姓名:");
         scanf("%s",&name);
         getchar();
         index=Student_SearchByName(name);
         if (index==-1)
         {
              printf("学生不存在!
");
         }
         else
         {
              printf("你要查询的学生信息为:
");
              Student_DisplaySingle(index);
         }
         printf("是否继续?(y/n)");
         if (getchar()=='n')
         {
              break;
         }
     }
}
/*按平均值排序*/
void Student_SortByAverage()
{
     int i,j;
     struct Student tmp;
     for (i=0;i<num;i++)
     {
         for (j=1;j<num-i;j++)
         {
              if (students[j-1].Average<students[j].Average)
              {
                   tmp=students[j-1];
                   students[j-1]=students[j];
                   students[j]=tmp;
              }
         }
     }
}
/*显示学生信息*/
void Student_Display()
{
     int i;
     printf("%10s%10s%8s%8s%8s%10s
","学号","姓名","成绩","成绩","成绩","平均成绩");
     printf("-------------------------------------------------------------
");
     for (i=0;i<num;i++)
     {
         printf("%10s%10s%8.2f%8.2f%8.2f%10.2f
",students[i].ID,students[i].Name,
              students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
     }
}
/*将学生信息从文件读出*/
void IO_ReadInfo()
{
     FILE *fp;
     int i;
     if ((fp=fopen("Database.txt","rb"))==NULL)
     {
         printf("不能打开文件!
");
         return;
     }
     if (fread(&num,sizeof(int),1,fp)!=1)
     {
         num=-1;
     }
     else
     {
         for(i=0;i<num;i++)
         {
              fread(&students[i],sizeof(struct Student),1,fp);
         }
     }
     fclose(fp);
}
/*将学生信息写入文件*/
void IO_WriteInfo()
{
     FILE *fp;
     int i;
     if ((fp=fopen("Database.txt","wb"))==NULL)
     {
         printf("不能打开文件!
");
         return;
     }
     if (fwrite(&num,sizeof(int),1,fp)!=1)
     {
         printf("写入文件错误!
");
     }
     for (i=0;i<num;i++)
     {
         if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)
         {
              printf("写入文件错误!
");
         }
     }    
     fclose(fp);
}
/*主程序*/
void main()
{
     int choice;
     IO_ReadInfo();
     while(1)
     {
         /*主菜单*/
         printf("
------ 学生成绩管理系统------
");
         printf("1. 增加学生记录
");
         printf("2. 修改学生记录
");
         printf("3. 删除学生记录
");
         printf("4. 按姓名查询学生记录
");
         printf("5. 按平均成绩排序
");
         printf("6. 退出
");
         printf("请选择(1-6):");
         scanf("%d",&choice);
         getchar();
         switch(choice)
         {
         case 1:
              Student_Insert();
              break;
         case 2:
              Student_Modify();
              break;
         case 3:
              Student_Delete();
              break;
         case 4:
              Student_Select();
              break;
         case 5:
              Student_SortByAverage();
              Student_Display();
              break;
         case 6:
              exit(0);
              break;
         }
         IO_WriteInfo();
     }
}



在电脑上怎么编写c语言输入我是一个学生?
void main() { char s[80];printf("请输入一句话:"); scanf("%s",s);printf("你输入的是:%s\\n",s);} 程序运行后提示“请输入一句话:”你可以在冒号后面输入:我是一个学生 输入完成后回车,程序在下一行输出“你输入的是:xxxx”并换行,其中xxxx就是刚才你输入的内容,然后程序运行结...

用C语言数组写一个学生基本信息表,包括学号,姓名,年龄,成绩。有5个...
"张三",18,85.5},{10002,"李四",19,88.5},{10003,"王五",20,90.8},{10004,"小明",21,60.0},{10005,"小红",18,75.5}};for(i=0;

用c语言写:定义一个学生结构体(包含姓名,学号,语文,数学,外语,总分...
int n){ int i; struct student * high = s; for(i = 0; i < n; i++) { (s+i)->total = (s+i)->score[0] + (s+i)->score[1] + (s+i)->score[2]; if(

编写一个c语言程序,实现录入学生学号和姓名信息的功能
intmain(void){ chars[10];\/\/姓名 intnum;\/\/学号 printf("请输入姓名:\\n");gets(s);printf("请输学号:\\n");scanf("%d",&num);printf("姓名是:%s\\n学号是:%d\\n",s,num);system("pause");return0;}

如何用C语言中switch语句编写学生成绩问题?
(int)score\/10)出现严重错误,switch(((int)score)\/10)出现严重错误,\\x0d\\x0a{\\x0d\\x0acase 10:\\x0d\\x0acase 9:printf("A(最好)\\n");break;\\x0d\\x0acase 8:printf("B(优秀)\\n");break;\\x0d\\x0acase 7:printf("C(良好)\\n");break;\\x0d\\x0acase 6:printf(...

编写一个c语言程序,实现录入学生学号和姓名信息的功能
1、首先创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。2、然后编写头文件的代码。再将数据结构的增删改查和结构体写入头文件。3、然后在源文件中创建main源文件和Stu源文件。再main文件中写入int mian()代码。4、然后在mian主函数中,写入while语句无限循环。再写入Init函数。5、然后在...

用c语言编写一个学生管理系统要求按特定条件查找学生
printf("\\n请输入该学生所在的年级");scanf("%s",s->grade);ptr=head;head=s;\/\/将新结点插入队头 s->next=ptr;fflush(stdin);printf("\\n请问是否继续注册?(Y\/N)");scanf("%c",&ch);}while(ch=='Y'||ch=='y');return;} void ElePrint(char str[]) \/\/输出单个元素 { if(...

用C语言编写录入学生信息(学号、性别、年龄、院系 )
void show_stu(student *show, int serial);\/\/显示指定学生信息void start();\/\/程序开始界面void change(student *former, student *latter, student *temp);\/\/交换两个节点的数据域void main(){ int choice=0; init(); while(1) { system("cls"); start(); printf("请选择:"); scanf("%d",&...

用C语言编写一个通过键盘或文件输入学生信息,并将学生信息输出到文件...
用C语言编写一个通过键盘或文件输入学生信息,并将学生信息输出到文件和屏幕的程序 100 七、对编程的具体说明如下:1)定义一个student结构体如下:structstudent{charname[20];\/\/姓名floatscore[4];\/\/四门功课的成绩floataverage;\/\/四门功课的平均成绩intorder;\/\/根据平均... 七、 对编程的具体说明如下:1) 定义...

怎么用C语言编一个学生成绩记录簿?
include<stdlib.h> include<string.h> typedef struct { char id[15];char name[10];int score;} StudentInfo;typedef struct { StudentInfo arr[100];int length;} SeqList;FILE *fp;char *filePath = "C:\/StudentInfo.txt";void initSeqList(SeqList *L){ L->length = 0;} void ...

蕉城区15254397468: 如何用C语言编写学生信息管理系统 -
笃汤莱美: 参考如下学生信息管理系统的C源代码吧.#include <stdio.h>#include <string.h>/*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Average; };/*声明学生数组及学生数量*/ struct Student ...

蕉城区15254397468: 用C语言编写一个学生信息管理系统
笃汤莱美: #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" jiemian();struct student { char name[50]; char sex[5]; int age; char num[50]; float score1; float score2; float score3; float sum; float ave;}stu[50],del; void gn1() {int...

蕉城区15254397468: 用C语言编写学生信息管理系统(带说明,每句说明) -
笃汤莱美: #include"stdio.h"#define SIZE 100000#include"string.h"#include"stdlib.h"#include"conio.h" struct student {int n; int num; char name[10]; int C; int Maths; int En; float ave; }stu[SIZE];/*录入数据*/ void finput() { FILE *fp; int i,p; fp=fopen("...

蕉城区15254397468: 怎样用c语言编写一个学生信息管理系统 -
笃汤莱美: 不知道你要做这个用来干什么,如果是只是练习,你最好不要用C做,因为C更适合做系统级开发,像这种应用软件的开发最好还是使用JAVA,.NET等等,

蕉城区15254397468: C语言编写学员信息管理系统
笃汤莱美: #include <stdio.h> #include <stdlib.h> #include <conio.h> struct student { int no; char name[20]; float score[2]; float avg; }; struct student input(); //单个学员信息录入 void display(struct student [],int); //显示所有学员信息 void sort(struct student [],int...

蕉城区15254397468: 用C语言编写一个学生管理系统
笃汤莱美: 我有源程序,你能给多少分? 题目: 1、用C语言实现基于Dos操作系统的“学生成绩管理系统”. 2、系统启动进入后,弹出“学生成绩管理系统”的用户界面,用户通过界面选择成绩管理系统的各种功能,包括“退出”功能.(5分) 3、用户...

蕉城区15254397468: 学生信息管理系统C语言编程 -
笃汤莱美: 原发布者:xuekunlun666 用C语言实现线性表的基本操作,能创建一个基于学生信息管理的链表,至少包含数据输入、数据输出、数据处理等操作.在主函数里能实现以下功能.运行后出现一个选择提示.可选择的功能有1)创建新的学生信息...

蕉城区15254397468: c语言程序设计:学生信息管理系统设
笃汤莱美: 1.录入2.显示3.排序4.查询5.修改6.删除7.退出 学号","姓名","成绩一","成绩二","平均成绩

蕉城区15254397468: 学生信息管理系统C语言怎么做 -
笃汤莱美: 跟别人问重复了,你们难道是一个老师教的啊? 网上很多类似的,你参考下:#include <stdio.h>#include <string.h> struct student { char name[30]; float math; float chinese; float english; float average; }; int MenuChoice(void); int EnterAccount(void);...

蕉城区15254397468: 用C语言编写一个学生管理系统怎么做???求助~谢谢 -
笃汤莱美: 主要就是插入,删除,查询,保存和读取我知道 然后学生信息由struct来定义储存,但是能否具体一些?比如: 要保存学生的那些功能?

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网