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 "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);scanf("%d",&n);if(n>N) exit(0);printf("依次输入学生信息:学号 姓名 学院代号 班级号 高数成绩 英语成绩 C语言成绩
");for(i=0;i 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!
");exit(0);}fwrite(&n,sizeof(int),1,fp);if((fp=fopen("student","wb"))==NULL){printf("can't open file!
");exit(0);}for(i=0;istu[n-1].num){n=n+1;stu[n-1]=t;}elsefor(i=0;ii-1;j--) stu[j+1]=stu[j];stu[i]=t;break;}}if((fp=fopen("student_number","wb"))==NULL){printf("can't open file!
");exit(0);}fwrite(&n,sizeof(n),1,fp);if((fp=fopen("student","wb"))==NULL){printf("can't open file!
");exit(0);}for(i=0;i<n;i++)fwrite(&stu[i],LEN,1,fp);fclose(fp);begin:printf("@是否继续“添加”操作(y/n)?
");fflush(stdin);ch=getchar();if(ch=='y'||ch=='Y') add();else if(ch=='n'||ch=='N') ;else { printf("输入有误!
"); goto begin;}}/*3.删除学生信息*/void del() {int i,numb,mark=0;char ch;printf("输入要删除学生的学号:
");scanf("%d",&numb);if((fp=fopen("student_number","rb"))==NULL){printf("can't open file!
");exit(0);}fread(&n,sizeof(n),1,fp);if((fp=fopen("student","rb"))==NULL){printf("can't open file!
");exit(0);}for(i=0;i<n;i++){fread(&stu[i],LEN,1,fp);if(stu[i].num==numb){i--;n--;mark=1;}}if(mark==0) printf("没有该生信息
");if((fp=fopen("student_number","wb"))==NULL){printf("can't open file!
");exit(0);}fwrite(&n,sizeof(n),1,fp);if((fp=fopen("student","wb"))==NULL){printf("can't open file!
");exit(0);}for(i=0;i<n;i++)fwrite(&stu[i],LEN,1,fp);fclose(fp);begin:printf("@是否继续“删除”操作(y/n)?
");fflush(stdin);ch=getchar();if(ch=='y'||ch=='Y') del();else if(ch=='n'||ch=='N') ;else { printf("输入有误!
"); goto begin;}}/*4.修改学生信息*/void change() {int i,numb,mark=0;float score1,score2,score3,totall,average;char ch;printf("输入要修改学生的学号 高数成绩 英语成绩 C语言成绩:
");scanf("%d %f %f %f",&numb,&score1,&score2,&score3);if((fp=fopen("student_number","rb"))==NULL){printf("can't open file!
");exit(0);}fread(&n,sizeof(n),1,fp);if((fp=fopen("student","rb"))==NULL){printf("can't open file!
");exit(0);}for(i=0;i<n;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("没有该生信息
");if((fp=fopen("student_number","wb"))==NULL){printf("can't open file!
");exit(0);}fwrite(&n,sizeof(n),1,fp);if((fp=fopen("student","wb"))==NULL){printf("can't open file!
");exit(0);}for(i=0;i<n;i++)fwrite(&stu[i],LEN,1,fp);fclose(fp);begin:printf("@是否继续“修改”操作(y/n)?
");fflush(stdin);ch=getchar();if(ch=='y'||ch=='Y') del();else if(ch=='n'||ch=='N') ;else { printf("输入有误!
"); goto begin;}}/*5.查询操作*///(1)按学号查询,输入一个学号,输出对应的学生信息。void num_search() {int i,num,mark=0;printf("输入学号:
");scanf("%d",&num);for(i=0;i<n;i++)if(stu[i].num==num){printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2哗笭糕蝗蕹豪革通宫坤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].average);mark=1;}if(mark==0) printf("没有找到相关信息。
");}//(2)按全名查询。void name_search(){int i,mark=0;char name[20];printf("输入姓名:
");scanf("%s",name);for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0){printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f
",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("没有找到相关信息。
");}//(3)按姓氏查询。void firstname_search(){int i,mark=0;char name[20];printf("输入姓氏:
");scanf("%s",name);for(i=0;i<n;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
",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("没有找到相关信息。
");}//(4)按学院查询,输入学院名称,输出该学院的全部学生的信息。void x_search(){int i,x_num,mark=0;printf("输入学院代号:
");scanf("%d",&x_num);for(i=0;i<n;i++)if(stu[i].x_num==x_num){printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f
",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("没有找到相关信息。
");}//(5)按班级查询,输入班级名称,输出该班级的全部学生的信息。void classnum_search(){int i,class_num,mark=0;printf("输入学院代号:
");scanf("%d",&class_num);for(i=0;i<n;i++)if(stu[i].class_num==class_num){printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f
",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("没有找到相关信息。
");}//查询模块void search() {char ch;int i;if((fp=fopen("student_number","rb"))==NULL){printf("can't open file!
");exit(0);}fread(&n,sizeof(n),1,fp);if((fp=fopen("student","rb"))==NULL){printf("can't open file!
");exit(0);}for(i=0;i<n;i++)fread(&stu[i],LEN,1,fp);fclose(fp);printf("选择要进行查询的关键字代号:1、学号查询。2、按全名查询。3、按姓氏查询。4、学院查询。5、班级查询。
");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("输入代号有误。
");}begin:printf("@是否继续“查询”操作(y/n)?
");fflush(stdin);ch=getchar();if(ch=='y'||ch=='Y') search();else if(ch=='n'||ch=='N') ;else { printf("输入有误!
"); goto begin;}}/*6.统计*///(1)按总分对学生信息进行排序(由高到低),输出排序后的信息,并将排序后的学生信息存放到一个新的二进制文件中。void totall_score(){int i,j;struct student t;for(j=0;j<n-1;j++)for(i=0;i<n-j-1;i++)if(stu[i].total<stu[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!
");exit(0);}fwrite(&n,sizeof(n),1,fp);if((fp=fopen("student_totalscore","wb"))==NULL) //按总分排序并保存至新的文件夹中。{printf("can't open file!
");exit(0);}for(i=0;i<n;i++){printf("学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f
",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;i<n;i++){if(stu[i].average<60) e++;else if(stu[i].average<70) d++;else if(stu[i].average<80) c++;else if(stu[i].average<90) b++;else a++;}printf("不及格人数为%d
60-69人数为%d
70-79人数为%d
80-89人数为%d
90-100人数为%d
",e,d,c,b,a);}//(3)分别找出3门课程成绩最高的学生,并输出他们的信息。void high_stu(){int max1,max2,max3,i;max1=max2=max3=0;for(i=0;i<n;i++){if(stu[max1].score1<stu[i].score1) max1=i;if(stu[max2].score2<stu[i].score2) max2=i;if(stu[max3].score3<stu[i].score3) max3=i;}printf("高数最高成绩学生信息:
学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f
",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("英语最高成绩学生信息:
学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f总分:%0.2f 平均分:%0.2f
",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语言最高成绩学生信息:
学号:%d 姓名:%s 学院代号:%d 班级号:%d 高数成绩:%0.2f 英语成绩:%0.2f c语言成绩:%0.2f 总分:%0.2f 平均分:%0.2f
",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;i<n;i++){if(stu[i].score1<60) f1++;if(stu[i].score2<60) f2++;if(stu[i].score3<60) f3++;}sf1=f1/n;sf2=f2/n;sf3=f3/n;printf("高数不及格率为%0.2f
",sf1);printf("英语不及格率为%0.2f
",sf2);printf("c语言不及格率为%0.2f
",sf3);}//统计模块void stat() {char ch;int i;if((fp=fopen("student_number","rb"))==NULL){printf("can't open file!
");exit(0);}fread(&n,sizeof(n),1,fp);if((fp=fopen("student","rb"))==NULL){printf("can't open file!
");exit(0);}for(i=0;i<n;i++)fread(&stu[i],LEN,1,fp);printf("选择要进行的统计操作代号:
1、按总分由高到低。
2、按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。
3、找出3门课程成绩最高的学生。
4、统计出3门课程的不及格率。
");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("输入代号有误。
");}begin:printf("@是否继续“统计”操作(y/n)?
");fflush(stdin);ch=getchar();if(ch=='y'||ch=='Y') stat();else if(ch=='n'||ch=='N') ;else { printf("输入有误!
"); goto begin;}}/*主选项*/void action() {char ch;printf("输入想要进行操作的代码:
1、输入学生信息;
2、增加学生信息;
3、删除学生信息;
4、修改学生信息;
5、按不同条件对学生信息进行查询操作;
6、按不同条件对学生成绩进行统计工作。
");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("输入代号有误。
");}begin:printf("#是否继续进行“管理”操作?(y/n)
");fflush(stdin);ch=getchar();if(ch=='y'||ch=='Y') action();else if(ch=='n'||ch=='N') ;else { printf("输入有误!
"); goto begin;}}//主函数void main(){printf("~~~~~~学生成绩管理系统~~~~~~

");action();}
评论0 举报
5 0
加载更多

最新回答 (1条回答)

匿名用户 1级
2010-12-22 回答
#include#include#includeusing 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> 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> p->num;cout> p->name;//coutname, buf);while(1){if(head == NULL){head = p;tail = p;}else{tail->link = p;tail = p;}p = (struct lx*)malloc(sizeof(struct lx));// cout> p->num;if(p->num == 0)break;cout> p->name;//strcpy(p->name,buf);}tail->link = NULL;return head;}void listprintf(struct lx *p){struct lx* q = p;while(q!= NULL){ coutnumnamelink;}}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>q->name;q->num = x;q->link = p;p = q;}else{q=(struct lx *)malloc(sizeof(struct lx));cout>q->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>q->name;q->num = x;p->link = q;q->link = p;q->link = NULL;}哗笭糕蝗蕹豪革通宫坤 else{while(1){if((p->num link)->num > x))break;p = p->link;}q=(struct lx *)malloc(sizeof(struct lx));cout>q->name;q->num = x;temp = p->link;p->link = q;q->link = temp;}return p; }void listclear(str

可能有些问题,自己调试一下
qq 1123619072
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 学号 */
char name[20];
char sex[4];
int yuwen;
int shuxue;
int waiyu;
int huaxue;
int wuli;
int totle;
int ave;
char neartime[10];/* 最近更新时间 */
};

typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;

void menu()
{
printf("********************************************************************************");
printf("\t1登记学生资料\t\t\t\t\t2删除学生资料\n");
printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");
printf("\t5保存学生资料\t\t\t\t\t0退出系统\n");
printf("********************************************************************************\n");
}

void printstart()
{
printf("-----------------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>提示:输入错误!\n");
}

void Nofind()
{
printf("\n=====>提示:没有找到该学生!\n");
}

void printc() /* 本函数用于输出中文 */
{
printf(" 学号\t 姓名 性别 语文成绩 数学成绩 英语成绩 物理成绩 化学成绩 总分 平均分\n");
}

void printe(Node *p)/* 本函数用于输出英文 */
{
printf("%-12s%s\t%s\t%d\t%d\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->data.name,p->data.sex,p->data.yuwen,p->data.shuxue,p->data.waiyu,p->data.huaxue,p->data.wuli,p->data.totle,p->data.ave);
}

Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */
{
Node *r;
if(strcmp(nameornum,"num")==0) /* 按学号查询 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查询 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}

void Add(Link l) /* 增加学生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 将指针置于最末尾 */
while(1)
{
printf("请你输入学号(以'0'返回上一级菜单:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);
printstart();
printc();
printe(s);
printstart();
printf("\n");
return;
}
s=s->next;
}

p=(Node *)malloc(sizeof(Node));

strcpy(p->data.num,num);
printf("请你输入姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();
printf("请你输入语文成绩:");
scanf("%d",&p->data.yuwen);
getchar();
printf("请你输入数学成绩:");
scanf("%d",&p->data.shuxue);
getchar();
printf("请你输入英语成绩:");
scanf("%d",&p->data.waiyu);
getchar();
printf("请你输入化学成绩:");
scanf("%d",&p->data.huaxue);
getchar();
printf("请你输入物理成绩:");
scanf("%d",&p->data.wuli);
getchar();

p->data.totle=p->data.waiyu+p->data.yuwen+p->data.shuxue+p->data.huaxue+p->data.wuli;
p->data.ave=p->data.totle / 3;
/* 信息输入已经完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;

}
}

void Qur(Link l) /* 查询学生 */
{
int sel;
char findmess[20];
Node *p;

if(!l->next)
{
printf("\n=====>提示:没有资料可以查询!\n");
return;

}
printf("\n=====>1按学号查找\n=====>2按姓名查找\n");
scanf("%d",&sel);
if(sel==1)/* 学号 */
{
printf("请你输入要查找的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 姓名 */
{
printf("请你输入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("\t\t\t\t查找结果\n");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();

}

void Del(Link l) /* 删除 */
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:没有资料可以删除!\n");
return;
}
printf("\n=====>1按学号删除\n=====>2按姓名删除\n");
scanf("%d",&sel);
if(sel==1)
{
printf("请你输入要删除的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该学生已经成功删除!\n");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("请你输入要删除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("\n=====>提示:该学生已经成功删除!\n");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}

void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("\n=====>提示:没有资料可以修改!\n");
return;
}
printf("请你输入要修改的学生学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("请你输入新学号(原来是%s):",p->data.num);
scanf("%s",p->data.num);
printf("请你输入新姓名(原来是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("请你输入新性别(原来是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("请你输入新的语文成绩(原来是%d分):",p->data.yuwen);
scanf("%d",&p->data.yuwen);
getchar();
printf("请你输入新的数学成绩(原来是%d分):",p->data.shuxue);
scanf("%d",&p->data.shuxue);
getchar();
printf("请你输入新的英语成绩(原来是%d分):",p->data.waiyu);
scanf("%d",&p->data.waiyu);
getchar();
printf("请你输入新的化学成绩(原来是%d分):",p->data.huaxue);
scanf("%d",&p->data.huaxue);
getchar();
printf("请你输入新的物理成绩(原来是%d分):",p->data.wuli);
scanf("%d",&p->data.wuli);

p->data.totle=p->data.waiyu+p->data.yuwen+p->data.shuxue+p->data.huaxue+p->data.wuli;
p->data.ave=p->data.totle/3;
printf("\n=====>提示:资料修改成功!\n");
shoudsave=1;
}
else
Nofind();

}

void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;

if(!p)
{
printf("\n=====>提示:没有资料可以显示!\n");
return;
}
printf("\t\t\t\t显示结果\n");
printstart();
printc();
printf("\n");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("\n");
}

void Tongji(Link l)
{
Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分数最高的接点 */
Node *r=l->next;
if(!r)
{
printf("\n=====>提示:没有资料可以统计!\n");
return ;
}
pm=pe=pc=pt=pa=r;
while(r!=NULL)
{
if(r->data.yuwen>=pc->data.yuwen)
pc=r;
if(r->data.shuxue>=pm->data.shuxue)
pm=r;
if(r->data.waiyu>=pe->data.waiyu)
pe=r;
if(r->data.huaxue>=pt->data.huaxue)
pt=r;
if(r->data.wuli>=pt->data.wuli)
pt=r;
if(r->data.totle>=pt->data.totle)
pt=r;

if(r->data.ave>=pa->data.ave)
pa=r;

r=r->next;
}
printf("------------------------------统计结果--------------------------------\n");
printf("总分最高者:\t%s %d分\n",pt->data.name,pt->data.totle);
printf("平均分最高者:\t%s %d分\n",pa->data.name,pa->data.ave);

printf("英语最高者:\t%s %d分\n",pe->data.name,pe->data.waiyu);
printf("数学最高者:\t%s %d分\n",pm->data.name,pm->data.shuxue);
printf("语文最高者:\t%s %d分\n",pc->data.name,pc->data.yuwen);
printf("化学最高者:\t%s %d分\n",pc->data.name,pc->data.huaxue);
printf("物理最高者:\t%s %d分\n",pc->data.name,pc->data.wuli);
printstart();
}

void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;

ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表 */
ll->next=NULL;

if(l->next==NULL)
{
printf("\n=====>提示:没有资料可以排序!\n");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息 */
s->data=p->data;
s->next=NULL;

rr=ll;
while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("\n=====>提示:排序已经完成!\n");
}

void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("\n=====>提示:重新打开文件时发生错误!\n");
exit(1);
}
p=l->next;

while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("\n=====>提示:文件保存成功.(有%d条记录已经保存.)\n",count);
shoudsave=0;
}
fclose(fp);
}

int main()
{
Link l;/* 连表 */
FILE *fp; /* 文件指针 */
int sel;
char ch;
char jian;

int count=0;
Node *p,*r;
printf("\t\t\t\t学生成绩管理系统\n\t\t\t\t\n");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;

fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("\n=====>提示:文件已经打开,正在导入记录......\n");

while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中 */
{
p->next=NULL;
r->next=p;
r=p; /* 将该接点挂入连中 */
count++;
}
}

fclose(fp); /* 关闭文件 */
printf("\n=====>提示:记录导入完毕,共导入%d条记录.\n",count);

while(1)
{
menu();
printf("请你选择操作:");
scanf("%d",&sel);

if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("\n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("\n=====>提示:你已经退出系统,再见!\n");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加学生 */
case 2:Del(l);break;/* 删除学生 */
case 3:Qur(l);break;/* 查询学生 */
case 4:Modify(l);break;/* 修改学生 */
case 5:Save(l);break;/* 保存学生 */
case 9:printf("\t\t\t==========帮助信息==========\n");break;
default: Wrong();getchar();break;
}
}
}
/* */

问题怎么那么复杂,看了很久还是不知道问题是什么?我看了一下下面的答案,还比楼主你的问题还复杂,我想应该是在网站复制的,你最好不要采纳,不要把你的思路搞砸了

本人手里现有一个信息管理系统,没有楼主的那么复杂,但搂住可以参考一下哈!!!!
/* Note:Your choice is C IDE */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 100

struct student
{
char num[20];
char name[20];
char tel[20];
};

/* 以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分 */
void myprint();
void mycreate();
void mydisplay();
void mysearch();
/* sch_num与sch_name函数被mysearch调用 */
void sch_num(FILE *fp);
void sch_name(FILE *fp);
void mymodify();
void myadd();
void mydelete();
/* del_num与del_name函数被mydelete调用 */
void del_num(FILE *fp);
void del_name(FILE *fp);
void mysort();
/* sort_num与sort_name函数被mysort调用 */
void sort_num();
void sort_name();

void main()
{
char choose,yes_no;

do
{
myprint(); /* 显示主菜单 */
printf(" ");
choose=getch();
switch(choose)
{
case '1': mycreate(); break; /* 创建 */
case '2': mydisplay(); break; /* 显示 */
case '3': mysearch(); break; /* 查询 */
case '4': mymodify(); break; /* 修改 */
case '5': myadd(); break; /* 添加 */
case '6': mydelete(); break; /* 删除 */
case '7': mysort(); break; /* 排序 */
case '0': break;
default:printf("\n %c为非法选项!\n",choose);
}
if(choose=='0')
break;
printf("\n 要继续选择吗(Y/N)?\n");
do
{
yes_no=getch();
}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
//system("cls");
}while(yes_no!='N'||yes_no!='n');
}

void myprint() /* 显示菜单界面 */
{
printf("\n\n\n\n\n\n\n\n");
printf(" |----------------------------|\n");
printf(" | 请输入选项编号(0-7): |\n");
printf(" |----------------------------|\n");
printf(" | 1--创建信息管理系统 |\n");
printf(" | 2--显示信息管理系统 |\n");
printf(" | 3--查询信息管理系统 |\n");
printf(" | 4--修改信息管理系统 |\n");
printf(" | 5--添加信息管理系统 |\n");
printf(" | 6--删除信息管理系统 |\n");
printf(" | 7--排序信息管理系统 |\n");
printf(" | 0--退出 |\n");
printf(" |----------------------------|\n");
}

/* 定义创建信息管理系统的函数 */
void mycreate()
{
int i=1;
struct student temp;
FILE *fp;

fp=fopen("f:\\shuju.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

printf("\n 请输入第1个记录:\n");
printf(" 学号(用#结束输入):");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(temp.name);
printf(" 电话号码(用#结束输入):");
gets(temp.tel);
while(temp.num[0]!='#'&&temp.name[0]!='#'&&temp.tel[0]!='#')
{
fprintf(fp,"%23s%15s%15s\n",temp.num,temp.name,temp.tel);
i++;

printf("\n 请输入第%d个记录:\n",i);
printf(" 学号(用#结束输入):");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(temp.name);
printf(" 电话号码(用#结束输入):");
gets(temp.tel);
}
fclose(fp);
}

/* 定义显示信息管理系统的函数 */
void mydisplay()
{
int n=0;
struct student temp;
FILE *fp;

fp=fopen("f:\\shuju.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

//clrscr();
//system("cls");
printf(" 学号 姓名 电话号码\n");
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
n++;
}
if(n==0)
printf("\n 文件中无记录!\n");
else
printf("\n 文件中共有%d个记录!\n",n);
fclose(fp);
}

/* 定义查询信息管理系统的函数 */
void mysearch()
{
char c;
FILE *fp;

fp=fopen("f:\\shuju.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

printf("\n 按学号查询(h),还是按姓名查询(m)?");
c=getch();
if(c=='h'||c=='H')
sch_num(fp); /* 按学号查询 */
if(c=='m'||c=='M')
sch_name(fp); /* 按姓名查询 */
else
printf("\n 非法字符!\n");
fclose(fp);
}

/* 定义按学号查询信息管理系统的函数 */
void sch_num(FILE *fp)
{
int flag=0,n=0;
char tempnum[10];
struct student temp;

printf("\n 请输入要查询记录的学号:");
gets(tempnum);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempnum,temp.num)==0)
{
if(flag==0)
printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;
}
n++;
}
if(n==0)
printf("\n 文件中无记录!\n");
else
if(flag==0)
printf("\n 文件中无此人!\n");
}

/* 定义按姓名查询信息管理系统的函数 */
void sch_name(FILE *fp)
{
int flag=0,n=0;
char tempname[10];
struct student temp;

printf("\n 请输入要查询记录的姓名:");
gets(tempname);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempname,temp.name)==0)
{
if(flag==0)
printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;
}
n++;
}
if(n==0)
printf("\n 文件中无记录!\n");
else
if(flag==0)
printf("\n 文件中无此人!\n");
}

/* 定义修改信息管理系统的函数 */
void mymodify()
{
char c;
int n=0;
struct student *find,temp,record[100],*p; /* 最多100个记录 */
FILE *fp;

fp=fopen("f:\\shuju.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

if(n==0)
{
printf("\n 文件中无记录!\n");
return;
}
printf("\n 请输入要修改记录的学号:");
gets(temp.num);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)
{
find=p; /* find记住修改记录的位置 */
break;
}
if(p==record+n)
{
printf("\n 无此人!\n");
return;
}
do
{
printf("\n 请输入正确的学号:");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 请输入正确的姓名:");
gets(temp.name);
printf(" 请输入正确的电话号码:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if((strcmp(temp.num,p->num)==0)&&(p!=find))
{
printf("\n 学号重复,要重新输入吗(Y/N)?");
do
{
c=getch();
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;
}
if(p==record+n)
{
*find=temp; /* find指向需要修改记录的位置 */
break;
}
}while(c=='Y'||c=='y');

fp=fopen("f:\\shuju.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}

/* 定义添加信息管理系统的函数 */
void myadd()
{
char c;
int n=0;
struct student temp,record[N],*p;
FILE *fp;

fp=fopen("f:\\shuju.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

do
{
printf("\n 请输入新记录的学号:");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 请输入新记录的姓名:");
gets(temp.name);
printf(" 请输入新记录的电话号码:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)
{
printf("\n 学号重复,要重新输入吗(Y/N)?");
do
{
c=getch();
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;
}
if(p==record+n)
{
*p=temp;
break;
}
}while(c=='Y'||c=='y');

fp=fopen("f:\\shuju.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n+1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}

/* 定义删除信息管理系统的函数 */
void mydelete()
{
char c;
FILE *fp;

fp=fopen("f:\\shuju.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

printf("\n 按学号删除(h),还是按姓名删除(m)?");
c=getch();
if(c=='h'||c=='H')
del_num(fp); /* 按学号删除 */
if(c=='m'||c=='M')
del_name(fp); /* 按姓名删 */
else
printf("\n 非法字符!\n");
fclose(fp);
}

/* 定义按学号删除信息管理系统的函数 */
void del_num(FILE *fp)
{
int n=0;
char tempnum[10];
struct student record[N],*p,*k;

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

printf("\n 请输入要删除记录的学号:");
gets(tempnum);

for(k=record;k<record+n;k++)
if(strcmp(tempnum,k->num)==0)
break; /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1);
else
printf("\n 无此人!\n");

fp=fopen("f:\\shuju.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
}

/* 定义按姓名删除信息管理系统的函数 */
void del_name(FILE *fp)
{
int n=0;
char tempname[10];
struct student record[N],*p,*k;

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

printf("\n 请输入要删除记录的姓名:");
gets(tempname);

for(k=record;k<record+n;k++)
if(strcmp(tempname,k->name)==0)
break; /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1);
else
printf("\n 无此人!\n");

fp=fopen("f:\\shuju.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
}

/* 定义排序信息管理系统的函数 */
void mysort()
{
char c;
FILE *fp;

fp=fopen("f:\\shuju.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
fclose(fp);

printf("\n 按学号排序(h),还是按姓名排序(m)?");
c=getch();
if(c=='h'||c=='H')
sort_num(); /* 按学号排序 */
if(c=='m'||c=='M')
sort_name(); /* 按姓名排序 */
else
printf("\n 非法字符!\n");
}

/* 定义按学号排序信息管理系统的函数 */
void sort_num()
{
int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;

fp=fopen("f:\\shuju.dat","r");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

printf("\n 按升序(s),还是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按学号的升序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
if(c=='j'||c=='J') /* 按学号的降序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
{
printf("\n 非法字符!\n");
return;
}

fp=fopen("f:\\shuju.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

for(p=record;p<record+n;p++)
{
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
printf("%23s%15s%15s\n",p->num,p->name,p->tel);
}
fclose(fp);
}

/* 定义按姓名排序信息管理系统的函数 */
void sort_name()
{
int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;

fp=fopen("f:\\shuju.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);

printf("\n 按升序(s),还是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按姓名的升序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
if(c=='j'||c=='J') /* 按姓名的降序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
{
printf("\n 非法字符!\n");
return;
}

fp=fopen("f:\\shuju.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}

for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}

问题搞的太大了


用C++语言编写一个简单的“学生成绩管理系统”
double chi(语文成绩)、double math(数学成绩)、double eng(英语成绩)、double sum(总分)、double avg(平均分),公有的构造函数、input函数(用于输入私有数据成员)、output函数(用于输出私有数据成员)、GetNum函数(用于返回学号)。

用C语言编写一个学生成绩管理系统。
printf("欢迎使用学生成绩管理系统\\n"); printf("[1] 输入所有学生信息\\n"); printf("[2] 输出所有学生成绩\\n"); printf("[3] 按学号查找某个学生信息\\n"); printf("[4] 按姓名查找某个学生信息\\n"); printf("[5] 按学号对学生排序\\n"); printf("[6] 按总成绩对学生排序\\n"); printf("[...

如何用C语言编写"学生成绩管理系统"
printf("\\n请输入想查找的学生姓名:");fflush(stdin);gets(name);for(m=0;m

用c语言编写的学生成绩管理系统。 学生成绩管理系统要求实现如下功能...
int as;start: printf("\\n\\t\\t\\t欢迎使用学生成绩管理系统\\n");\/*一下为功能选择模块*\/ do { printf("\\n\\t\\t\\t\\t1.录入学员信息\\n\\t\\t\\t\\t2.显示学员信息\\n\\t\\t\\t\\t3.成绩排序信息\\n\\t\\t\\t\\t4.添加学员信息\\n\\t\\t\\t\\t5.删除学员信息\\n\\t\\t\\t\\t6.修改学员信息\\n\\t...

用C语言设计一个学生成绩管理系统
include <stdio.h>#include <string.h> include <stdlib.h>#define MAX 1000\/*定义学生成绩信息结构*\/struct stu{ char id[8];char name[8];

学生成绩管理系统C语言编程
C语言课程设计报告---学生成绩简单管理程序一、系统菜单的主要功能(1)输入若干条记录(2)显示所有记录(3)按学号排序(4)插入一条记录(5)按姓名查找,删除一条记录(6)查找并显示一条记录(7)输出统计信息 (新增)(8)从正文中添加数据到结构体数组中(9)将所有数据写入文件中(0)退出程序二、题目分析该题主要考察...

一个《学生成绩管理系统》用c语言怎么写!急救!请各位帮忙!
include "string.h"\/*字符串函数*\/ include "ctype.h" \/*字符操作函数*\/ define M 200 \/*定义常数表示记录数*\/ typedef struct \/*定义数据结构*\/ { char name[20]; \/*姓名*\/ char units[30]; \/*单位*\/ char tele[10]; \/*电话*\/ char product_company[30];\/* 生产厂家 *\/ char ...

C语言编写成绩管理系统
C语言编写成绩管理系统 20 编写要求:学生基本信息(学号、姓名、系别、班级和所选科目及各科成绩)及成绩所选科目成绩的录入。基本信息的查询(分系、班级;分科目)与修改。对每系或每班各科成绩进行分析(即... 编写要求:学生基本信息(学号、姓名、系别、班级和所选科目及各科成绩)及成绩所选科目成绩的录入。基本...

用标准C语言编写学生信息管理系统
printf("1.输入学生信息 \\n");printf("2.按总分进行排榜 \\n");printf("3.查找相应的学生信息 \\n");printf("4.退出学生成绩管理系统 \\n\\n");printf("请输入功能选择编号:");fflush(stdin); \/\/清空输入缓冲区 scanf("%c",&selmenu); \/\/接受用户选择的功能编号 switch(...

C语言写的学生管理系统的代码,要求用到单链表和文件
语言编写的学生成绩管理系统源代码 \/***xuesheng.c***\/ \/***头文件(.h)***\/ #include "stdio.h" \/*I\/O函数*\/ #include "stdlib.h" \/*其它说明*\/ #include "string.h" \/*字符串函数*\/ #include "conio.h" \/*屏幕操作函数*\/ #include "mem.h" \/*内存操作函数*\/ #include "ctype.h" \/*...

颍泉区19523693318: 编程如何用C语言编写一个学生成绩管理系统程序 -
终呼因力: 我们才做了这个作业... #include <malloc.h> #include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct scorenode) #define DEBUG #include <string.h> struct scorenode { int number;/*学号*/ char name[8];/*姓名*/ float cj1;/*成绩1*/ ...

颍泉区19523693318: c语言编写学生成绩管理系统 -
终呼因力: #include <stdio.h> void main() { /*输入资料*/ int student[5][4],i; for (i=0; i<=4; i++); scanf("%d,%d,%d \n",student[i][0],student[i][1],student[i][2],student[i][3]) /*平均分*/ for (i=0; i<=4; i++); printf("%f",(float)((student[i][1]+student[i][2]+student[i][3]...

颍泉区19523693318: 学生成绩管理系统 用C语言写
终呼因力: #include #include #define LEN sizeof(struct stu) //#define NULL 0 struct score { char work1[64]; int score1; char work2[64]; int score2; char work3[64]; int score3; }; struct stu { char name[100]; int age; int classes; char address[500]; char telephone[14...

颍泉区19523693318: 如何用C语言编一个学生成绩管理系统 -
终呼因力: #include "stdio.h"#include "stdlib.h"#include "string.h"#define NULL 0 int shoudsave=0; struct student { char num[10]; char name[20]; char sex[4]; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime[10]; }; typedef struct node { ...

颍泉区19523693318: 怎么用c语言编写一个学生成绩管理系统啊?急…… -
终呼因力: C语言课程设计报告-------学生成绩简单管理程序 一、系统菜单的主要功能 (1)输入若干条记录 (2)显示所有记录 (3)按学号排序 (4)插入一条记录 (5)按姓名查找,删除一条记录 (6)查找并显示一条记录 (7)输出统计信息 (新增)...

颍泉区19523693318: C语言编写学生成绩管理系统
终呼因力: #include "stdio.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 ...

颍泉区19523693318: 用C语言完成学生成绩管理系统 -
终呼因力: #include<stdio.h> #include<conio.h> #include <stdlib.h> #include<string.h> #define MAX 100void input(); void sort(); void show(); void del(); void quit(); int i=0; int k,j; char ch;struct student {int no;char name[20];float score1;float score2;float ...

颍泉区19523693318: c语言设计学生成绩管理系统 -
终呼因力: #include<iostream> #include<cstdio> #include<cmath> #include<vector> #include<list> #include<cstring> #include<map> #include<set> #include<algorithm> #include<queue> using namespace std; int n; struct birth {int year,month,day; };struct ...

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