C语言学生成绩管理系统

作者&投稿:笃货 (若有异议请与网页底部的电邮联系)
用C语言设计一个学生成绩管理系统~

#include #include
#include #define MAX 1000/*定义学生成绩信息结构*/struct stu{
char id[8];char name[8];


扩展资料:
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)
复杂类型关键字
struct:结构体声明。(K&R时期引入)
union:联合体声明。(K&R时期引入)
enum:枚举声明。(C89标准新增)
typedef:声明类型别名。(K&R时期引入)
sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)
参考资料来源:百度百科-c语言

以前帮别人写的 你可以看看 呵呵 不是很符合条件
********************************学生管理系统****************************/
#include
#include
#include
typedef struct stu1
{
int num;
char name[20];
char sex[5];
char age[3];
char phone[20];
}stu1;
typedef struct stu2
{
//char num[20];
//char name[20];
int proj1;
int proj2;
int proj3;
int proj4;
int proj5;
int proj6;
}stu2;


void welcome();
int check_key(char key[]);
int m_can_do();
int m_class_can_do();
void manage_class();
void add_class();
void del_class();
void change_proj();
int m_stu_can_do();
void manage_stu();
void log_stu();
void change_stu();
void read_stu1(char clas[], stu1 stu[]);
int find_stu(stu1 stu[], int num);
void del_stu();
void read_stu2(char clas1[], stu2 stud[]);
void log_score();
void change_score();
void del_clas_stu();
int m_find_can_do();
void find();
void find_clas_basic();
void find_clas_score();
void find_stu_basic();
void find_stu_all();
//void chane_stu();


int main(){
int does;
char key[20];
int result;
welcome();
printf("请输入密码:");
scanf("%s", key);
printf("

");
result = check_key(key);
while(result)
{
printf("您输入的密码有误,请重新输入:");
scanf("%s", key);
result = check_key(key);
printf("

");

}
does = m_can_do();
while(true)
{
if(1 == does)
{
manage_class();
does = m_can_do();
}
if(2 == does)
{
manage_stu();
does = m_can_do();
}
if(3 == does)
{
find();
does = m_can_do();
}
if(4 == does)
{
exit(0);
}
}

return 0;
}



/****************************************************函数***********************************/
void welcome()
{
printf("欢迎使用本学生管理系统。

");
}


int check_key(char key[])
{
FILE * fp;
char right_key[20];
int result;
fp = fopen("key", "r");
fscanf(fp, "%s", right_key);
result = strcmp(key, right_key);
return result;
}

int m_can_do()
{
int d;
printf("您可以进行的操作为:

");
printf("1 班级管理 2 学生管理 3 查询 4 退出

请输入:");
scanf("%d", &d);
printf("

");
while(1 != d && 2 != d && 3 != d && 4 != d)
{
printf("您的书有误,请重新输入:");
scanf("%d", &d);
printf("

");
}
return d;
}

/************************************班级办理部分***************************/
int m_class_can_do()
{
int d;
printf("请输入您想要进行的操作:

");
printf("1 添加班级 2 删除班级 3 更改科目

4 返回上一层 5 退出

");
printf("请输入:");
scanf("%d", &d);
printf("

");
while(1 != d && 2 != d && 3 != d && 4 != d && 5 != d)
{
printf("您的输入有误,请重新输入:");
scanf("%d", & d);
printf("

");
}
return d;

}


void manage_class()
{
int does;
does = m_class_can_do();
while(true)
{
if(1 == does)
{
add_class();
does = m_class_can_do();
}
if(2 == does)
{
del_class();
does = m_class_can_do();
}
if(3 == does)
{
change_proj();
does = m_class_can_do();
}
if(4 == does)
{
return;
}
if(5 == does)
{
exit(0);
}
}
}


void add_class()
{
FILE * fp;
char name[20], name1[20];
printf("请输入您想要添加的班级的名字:");
scanf("%s", name);
printf("

");
while((fp = fopen(name, "r")))
{
fclose(fp);
printf("您输入的班级已经存在,请重新输入:");
scanf("%s", name);
printf("

");
}
// fclose(fp);
sprintf(name1, "%s_score", name);
fp = fopen(name, "w");
fclose(fp);
fp = fopen(name1, "w");
fclose(fp);
printf("

");
printf("*************************************************************
");
printf(" 班级添加成功。
");
printf("**************************************************************
");
}



void del_class()
{
FILE * fp;
char name[20], name1[20];
printf("请输入您想删除的班级名:");
scanf("%s", name);
printf("

");
while(!(fp = fopen(name, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", name);
printf("

");
}
fclose(fp);
sprintf(name1, "%s_score", name);
remove(name);
remove(name1);
printf("**************************************************************
");
printf(" 班级删除成功。
");
printf("**************************************************************

");
}


void change_proj()
{
FILE * fp;
char proj[6][20];
printf("现在的科目信息为:

");
fp = fopen("proj", "r");
fscanf(fp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
//fclose(fp);
// fclose(fp);
printf("%s %s %s %s %s %s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);

printf("

");
printf("请输入您修改后的科目:

");
//getchar();
scanf( "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
printf("

");
fp = fopen("proj", "w");
fprintf(fp, "%s %s %s %s %s %s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(fp);
printf("**************************************************************
");
printf(" 科目修改成功。
");
printf("**************************************************************

");

}

/**************************************************************************学生管理***********************************/
int m_stu_can_do()
{
int d;
printf("您可以进行的操作有:

");
printf("1 登记 2 修改 3 删除某个学生 4 删除某班学生

5 登记分数 6 修改分数 7 返回上一层

8 退出

");
printf("请您输入:");
scanf("%d", &d);
printf("

");
while(1 != d && 2 != d && 3 != d && 4 != d && 5 != d && 6 != d && 7 != d)
{
printf("您的输入有误,请重新输入:");
scanf("%d", &d);
printf("

");

}
return d;
}



void manage_stu()
{
int does;
does = m_stu_can_do();
while(true)
{
if(1 == does)
{
log_stu();
does = m_stu_can_do();
}
if(2 == does)
{
change_stu();
does = m_stu_can_do();
}
if(3 == does)
{
del_stu();
does = m_stu_can_do();
}
if(4 == does)
{
del_clas_stu();
does = m_stu_can_do();
}
if(5 == does)
{
log_score();
does = m_stu_can_do();
}
if(6 == does)
{
change_score();
does = m_stu_can_do();
}
if(7 == does)
{
return;
}
if(8 == does)
{
exit(0);
}
}
}



void log_stu()
{
FILE * fp, * p;
char clas[20], clas1[20];
stu1 add[200];
int i = 0;
printf("请输入您所要添加学生所在班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("

");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
printf("请按下面提示输入(输入0结束):

");
printf("学号 姓名 性别 年龄 电话

");
scanf("%d", & add[i]. num);
while(add[i]. num != 0)
{
scanf("%s%s%s%s", add[i]. name, add[i]. sex, add[i]. age, add[i]. phone);
i ++;
printf("
");
scanf("%d", & add[i]. num);
}
i = 0;
fp = fopen(clas, "a");
p = fopen(clas1, "a");
while(add[i]. num != 0)
{
fprintf(fp, "%d %s %s %s %s

", add[i]. num, add[i]. name, add[i]. sex, add[i]. age, add[i]. phone);
fprintf(p, "0 0 0 0 0 0

");
i++;
}
fclose(fp);
fclose(p);
printf("**************************************************************
");
printf(" 添加成功。
");
printf("**************************************************************

");
}



void change_stu()
{
FILE * fp;
char clas[20];
int num, result, i;
stu1 stu[200];
//sstu2 stud[200];
printf("请输入他所在班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("

");
}
fclose(fp);
// sprintf(clas1"%s_score", clas);
read_stu1(clas, stu);
//read_stud(cls1, stud);
printf("请输入该学生学号:");
scanf("%d", &num);
printf("

");
result = find_stu(stu, num);
if(-1 == result)
{
printf("您输入的学生不存在,请重新输入:");
scanf("%d", & num);
printf("

");
result = find_stu(stu, num);
}
printf("请按下面格式重新输入该学生信息:

");
printf("学号 姓名 性别 年龄 电话

");
scanf("%d%s%s%s%s", & stu[result]. num, stu[result]. name, stu[result]. sex, stu[result]. age, stu[result]. phone);
i = 0;
fp = fopen(clas, "w");
while(0 != stu[i]. num)
{
fprintf(fp, "%d %s %s %s %s

", stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
i++;
}
fclose(fp);
printf("**************************************************************
");
printf(" 修改成功。
");
printf("**************************************************************

");
}

void read_stu1(char clas[], stu1 stu[])
{
int i = 0;
FILE * fp;
fp = fopen(clas, "r");
while(!feof(fp))
{
fscanf(fp, "%d%s%s%s%s", &stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
i++;
}
fclose(fp);
stu[i-1]. num = 0;
}


int find_stu(stu1 stu[], int num)
{
int i = 0;
while(stu[i]. num != 0)
{
if(stu[i]. num == num)
{
break;
}
i++;
}
if(stu[i]. num == num)
{
return i;
}
else
{
return -1;
}
}





void del_stu()
{
FILE * fp, * p;
char clas[20], clas1[20];
int num, result, i = 0;
stu1 stu[200];
stu2 stud[200];
printf("请输入他所在班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("

");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
read_stu2(clas1, stud);
printf("请输入该学生学号:");
scanf("%d",& num);
printf("

");
result = find_stu(stu, num);
if(-1 == result)
{
printf("您输入的学生不存在,请重新输入:");
scanf("%d", & num);
printf("

");
result = find_stu(stu, num);
}
fp = fopen(clas, "w");
p = fopen(clas1, "w");
while(stu[i]. num != 0)
{
if(stu[i]. num == num)
{
i++;
}
if(stu[i]. num != 0)
{
fprintf(fp, "%d %s %s %s %s

", stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
fprintf(p, "%d %d %d %d %d %d

", stud[i]. proj1, stud[i]. proj2, stud[i]. proj3, stud[i]. proj4, stud[i]. proj5, stud[i]. proj6);
i++;
}
}
fclose(fp);
fclose(p);
printf("**************************************************************
");
printf(" 删除成功。
");
printf("**************************************************************

");
}

void read_stu2(char clas1[], stu2 stud[])
{
int i = 0;
FILE * fp;
fp = fopen(clas1, "r");
while(!feof(fp))
{
fscanf(fp, "%d%d%d%d%d%d",&stud[i]. proj1, &stud[i]. proj2, &stud[i]. proj3, &stud[i]. proj4, &stud[i]. proj5, &stud[i]. proj6);
i++;
}
stud[i-1]. proj1 = -1;
fclose(fp);
}





void log_score()
{
FILE * fp, * p, * tp;
stu1 stu[200];
stu2 stud;
char clas[20], clas1[20], proj[6][20];
int i = 0;
printf("请输入要登分的班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("

");
}
fclose(fp);
tp = fopen("proj", "r");
fscanf(tp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(tp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
fp = fopen(clas, "r");
p = fopen(clas1, "w");

printf("请输入:

");
printf("学号 姓名 %s %s %s %s %s %s

", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
while(0 != stu[i]. num)
{
printf("%d %s ", stu[i]. num, stu[i]. name);
scanf("%d%d%d%d%d%d", &stud. proj1, &stud. proj2, &stud. proj3, &stud. proj4, &stud. proj5, &stud. proj6);
fprintf(p, "%d %d %d %d %d %d

", stud.proj1 ,stud.proj2 ,stud.proj3 ,stud.proj4 ,stud.proj5 ,stud.proj6);
i++;
}
fclose(fp);
fclose(p);
printf("**************************************************************
");
printf(" 该班所有学生成绩已登记完毕。
");
printf("**************************************************************

");
}

void change_score()
{
FILE * fp, * temp;
char clas[20], clas1[20], proj[6][20];
int num, result, i = 0;
stu1 stu[200];
stu2 stud[200];
printf("请输入他所在班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("

");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
//read_stu2(cls1, stud);
printf("请输入该学生学号:");
scanf("%d",& num);
printf("

");
result = find_stu(stu, num);
if(-1 == result)
{
printf("您输入的学生不存在,请重新输入:");
scanf("%d", & num);
printf("

");
result = find_stu(stu, num);
}
temp = fopen("proj", "r");
fscanf(temp, "%s%s%s%s%s%s", proj[1], proj[2], proj[3], proj[4], proj[5], proj[6]);
fclose(temp);
fp = fopen(clas1, "w");
printf("请输入:

");
printf("学号 姓名 %s %s %s %s %s %s", proj[1], proj[2], proj[3], proj[4], proj[5], proj[6]);
printf("%d %s ", stu[result]. num, stu[result]. name);
scanf("%d%d%d%d%d%d", &stud[result]. proj1, &stud[result]. proj2, &stud[result]. proj3, &stud[result]. proj4, &stud[result]. proj5, &stud[result]. proj6);
while(0 != stud[i]. proj1)
{
fprintf(fp,"%d %d %d %d %d %d

", stud[i]. proj1, stud[i]. proj2, stud[i]. proj3, stud[i]. proj4, stud[i]. proj5, stud[i]. proj6);
i++;
}
printf("**************************************************************
");
printf(" 成绩修改成功。
");
printf("**************************************************************

");
}




void del_clas_stu()
{
FILE * fp;
char clas[20], clas1[20];
printf("请输入您想要操作的班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("不存在%s班,请重新输入:");
scanf("%s", clas);
printf("

");
}
sprintf(clas1, "%s_score", clas);
fp = fopen(clas, "w");
fclose(fp);
fp = fopen(clas1, "w");
fclose(fp);
printf("*************************************************************
");
printf(" 删除成功。
");
printf("*************************************************************

");
}




/**********************************************查询**********************************************************/
int m_find_can_do()
{
int d;
printf("您可以进行的操作为:

1 查看某班基本信息 2 查看某班成绩 3 查看学生基本信息

4 查看学生全部信息 5 返回上一层 6 退出

请您输入:");
scanf("%d", &d);
printf("

");
while(1 != d && 1 != d && 2 != d && 3 != d && 4 != d && 5 != d && 6 != d)
{
printf("您的输入有误,请重新输入:");
scanf("%d", &d);
printf("

");

}
return d;
}

void find()
{
int does;
does = m_find_can_do();
while(true)
{
if(1 == does)
{
find_clas_basic();
does = m_find_can_do();
}
if(2 == does)
{
find_clas_score();
does = m_find_can_do();
}
if(3 == does)
{
find_stu_basic();
does = m_find_can_do();
}
if(4 == does)
{
find_stu_all();
does = m_find_can_do();
}
if(5 == does)
{
return ;
}
if(6 == does)
{
exit(0);
}

}
}



void find_clas_basic()
{
FILE * fp;
stu1 stu[200];
char clas[20];
int i = 0, d;
printf("请输入您想要查看的班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("

");
}
fscanf(fp, "%d", &d);

if(feof(fp))
{
printf("**************************************************************
");
printf(" 您查看的班级没有学生。
");
printf("**************************************************************
");
fclose(fp);
return ;
}
read_stu1(clas, stu);
printf("学号 姓名 性别 年龄 电话

");
while(0 != stu[i]. num)
{
printf("%d %s %s %s %s

", stu[i]. num, stu[i]. name, stu[i]. sex, stu[i]. age, stu[i]. phone);
i++;
}
}




void find_clas_score()
{
FILE * fp, * temp;
stu1 stu[200];
stu2 stud[200];
char clas[20], clas1[20], proj[6][20];
int i = 0, d;
printf("请输入您想要查看的班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("

");
}
fscanf(fp, "%d", &d);
if(feof(fp))
{
printf("**************************************************************
");
printf(" 您查看的班级没有学生。
");
printf("**************************************************************

");
fclose(fp);
return ;
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
read_stu2(clas1, stud);
temp = fopen("proj", "r");
fscanf(temp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(temp);
printf("学号 姓名 %s %s %s %s %s %s

", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
while(0 != stu[i]. num)
{
printf("%d %s ", stu[i]. num, stu[i]. name);
printf("%d %d %d %d %d %d

", stud[i].proj1, stud[i].proj2, stud[i].proj3, stud[i].proj4, stud[i].proj5, stud[i].proj6);
i++;
}
}





void find_stu_basic()
{
stu1 stu[200];
int result, num;
char clas[20];
FILE * fp;
printf("请输入他所在班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("

");
}
fclose(fp);
read_stu1(clas, stu);
printf("请输入该学生学号:");
scanf("%d", & num);
printf("

");
result = find_stu(stu, num);
while(-1 == result)
{
printf("该学生不存在,请重新输入:");
scanf("%d", &num);
printf("

");
}
printf("该学生信息为:

学号 姓名 性别 年龄 电话

");
printf("%d %s %s %s %s

", stu[result]. num, stu[result]. name, stu[result]. sex, stu[result]. age, stu[result]. phone);
}

void find_stu_all()
{
stu1 stu[200];
stu2 stud[200];
int result, num;
char clas[20], clas1[20], proj[6][20];
FILE * fp, * temp;
printf("请输入他所在班级:");
scanf("%s", clas);
printf("

");
while(!(fp = fopen(clas, "r")))
{
printf("您输入的班级不存在,请重新输入:");
scanf("%s", clas);
printf("

");
}
fclose(fp);
sprintf(clas1, "%s_score", clas);
read_stu1(clas, stu);
read_stu2(clas1, stud);
printf("请输入该学生学号:");
scanf("%d", & num);
printf("

");
result = find_stu(stu, num);
while(-1 == result)
{
printf("该学生不存在,请重新输入:");
scanf("%d", &num);
printf("

");
}
temp = fopen("proj", "r");
fscanf(temp, "%s%s%s%s%s%s", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
fclose(temp);
printf("该学生全部信息如下:

");
printf("该学生信息为:

学号 姓名 性别 年龄 电话

");
printf("%d %s %s %s %s

", stu[result]. num, stu[result]. name, stu[result]. sex, stu[result]. age, stu[result]. phone);
printf("成绩:

");
printf("%s %s %s %s %s %s

", proj[0], proj[1], proj[2], proj[3], proj[4], proj[5]);
printf("%d %d %d %d %d %d

", stud[result]. proj1, stud[result]. proj2, stud[result]. proj3, stud[result]. proj4, stud[result]. proj5, stud[result]. proj6);
}

学生成绩管理系统C代码
/*头文件*/
#include <stdio.h>
#include<dos.h>
#include<stdlib.h> /*其它说明*/
#include<string.h> /*字符串函数*/
#include<mem.h> /*内存操作函数*/
#include<ctype.h> /*字符操作函数*/
#include<alloc.h> /*动态地址分配函数*/
#define LEN sizeof(STUDENT)
typedef struct stu /*定义结构体数组用于缓存数据*/
{char num[6];
char name[5];
int score[3];
int sum;
float average;
int order;
struct stu *next;
}STUDENT;

/*函数原型*/
STUDENT *init(); /*初始化函数*/
int menu_select(); /*菜单函数*/
STUDENT *create(); /*创建链表*/
void print(STUDENT *head); /* 显示全部记录*/
void search(STUDENT *head); /*查找记录*/
STUDENT *delete(STUDENT *head); /*删除记录*/
STUDENT *sort(STUDENT *head); /*排序*/
STUDENT *insert(STUDENT *head,STUDENT *new); /*插入记录*/
void save(STUDENT *head); /*保存文件*/
STUDENT *load(); /*读文件*/

/*主函数界面*/
main()
{STUDENT *head,new;
head=init(); /*链表初始化,使head的值为NULL*/
for(;;) /*循环无限次*/
{switch(menu_select())
{
case 1:head=create();break;
case 2:print(head);break;
case 3:search(head);break;
case 4:head=delete(head);break;
case 5:head=sort(head);break;
case 6:head=insert(head,&new);break; /*&new表示返回地址*/
case 7:save(head);break;
case 8:head=load(); break;
case 9:exit(0); /*如菜单返回值为9则程序结束*/
}
}
}

/*初始化函数*/
STUDENT *init()
{
return NULL; /*返回空指针*/
}

/*菜单选择函数*/
menu_select()
{int n;
struct date d; /*定义时间结构体*/
getdate(&d); /*读取系统日期并把它放到结构体d中*/
printf("press any key to enter the menu......"); /*按任一键进入主菜单*/
getch(); /*从键盘读取一个字符,但不显示于屏幕*/
clrscr(); /*清屏*/
printf("********************************************************************************\n");
printf("\t\t Welcome to\n");
printf("\n\t\t The student score manage system\n");
printf("*************************************MENU***************************************\n");
printf("\t\t\t1. Enter the record\n"); /*输入学生成绩记录*/
printf("\t\t\t2. Print the record\n"); /*显示*/
printf("\t\t\t3. Search record on name\n"); /*寻找*/
printf("\t\t\t4. Delete a record\n"); /*删除*/
printf("\t\t\t5. Sort to make new a file\n"); /*排序*/
printf("\t\t\t6. Insert record to list\n"); /*插入*/
printf("\t\t\t7. Save the file\n"); /*保存*/
printf("\t\t\t8. Load the file\n"); /*读取*/
printf("\t\t\t9. Quit\n"); /*退出*/
printf("\n\t\t Made by Hu Haihong.\n");
printf("********************************************************************************\n");
printf("\t\t\t\t%d\\%d\\%d\n",d.da_year,d.da_mon,d.da_day); /*显示当前系统日期*/
do{
printf("\n\t\t\tEnter your choice(1~9):");
scanf("%d",&n);
}while(n<1||n>9); /*如果选择项不在1~9之间则重输*/
return(n); /*返回选择项,主函数根据该数调用相应的函数*/
}

/*输入函数*/
STUDENT *create()
{int i,s;
STUDENT *head=NULL,*p; /* 定义函数.此函数带回一个指向链表头的指针*/
clrscr();
for(;;)
{p=(STUDENT *)malloc(LEN); /*开辟一个新的单元*/
if(!p) /*如果指针p为空*/
{printf("\nOut of memory."); /*输出内存溢出*/
return (head); /*返回头指针,下同*/
}
printf("Enter the num(0:list end):");
scanf("%s",p->num);
if(p->num[0]=='0') break; /*如果学号首字符为0则结束输入*/
printf("Enter the name:");
scanf("%s",p->name);
printf("Please enter the %d scores\n",3); /*提示开始输入成绩*/
s=0; /*计算每个学生的总分,初值为0*/
for(i=0;i<3;i++) /*3门课程循环3次*/
{
do{
printf("score%d:",i+1);
scanf("%d",&p->score[i]);
if(p->score[i]<0 || p->score[i]>100) /*确保成绩在0~100之间*/
printf("Data error,please enter again.\n");
}while(p->score[i]<0 || p->score[i]>100);
s=s+p->score[i]; /*累加各门成绩*/
}
p->sum=s; /*将总分保存*/
p->average=(float)s/3; /*先用强制类型转换将s转换成float型,再求平均值*/
p->order=0; /*未排序前此值为0*/
p->next=head; /*将头结点做为新输入结点的后继结点*/
head=p; /*新输入结点为新的头结点*/
}
return(head);
}

/* 显示全部记录函数*/
void print(STUDENT *head)
{int i=0; /* 统计记录条数*/
STUDENT *p; /*移动指针*/
clrscr();
p=head; /*初值为头指针*/
printf("\n************************************STUDENT************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Rec | Num | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
while(p!=NULL)
{
i++;
printf("| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
i, p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
p=p->next;
}
printf("-------------------------------------------------------------------------------\n");
printf("**************************************END**************************************\n");
}

/*查找记录函数*/
void search(STUDENT *head)
{STUDENT *p; /* 移动指针*/
char s[5]; /*存放姓名用的字符数组*/
clrscr();
printf("Please enter name for searching.\n");
scanf("%s",s);
p=head; /*将头指针赋给p*/
while(strcmp(p->name,s) && p != NULL) /*当记录的姓名不是要找的,或指针不为空时*/
p=p->next; /*移动指针,指向下一结点*/
if(p!=NULL) /*如果指针不为空*/
{printf("\n*************************************FOUND************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
p->num,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
printf("-------------------------------------------------------------------------------\n");
printf("***************************************END**************************************\n");
}
else
printf("\nThere is no num %s student on the list.\n",s); /*显示没有该学生*/
}

/*删除记录函数*/
STUDENT *delete(STUDENT *head)
{int n;
STUDENT *p1,*p2; /*p1为查找到要删除的结点指针,p2为其前驱指针*/
char c,s[6]; /*s[6]用来存放学号,c用来输入字母*/
clrscr();
printf("Please enter the deleted num: ");
scanf("%s",s);
p1=p2=head; /*给p1和p2赋初值头指针*/
while(strcmp(p1->num,s) && p1 != NULL) /*当记录的学号不是要找的,或指针不为空时*/
{p2=p1; /*将p1指针值赋给p2作为p1的前驱指针*/
p1=p1->next; /*将p1指针指向下一条记录*/
}
if(strcmp(p1->num,s)==0) /*学号找到了*/
{printf("**************************************FOUND************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("| Num | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");
printf("-------------------------------------------------------------------------------\n");
printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d|\n",
p1->num,p1->name,p1->score[0],p1->score[1],p1->score[2],p1->sum,p1->average,p1->order);
printf("-------------------------------------------------------------------------------\n");
printf("***************************************END**************************************\n");
printf("Are you sure to delete the student Y/N ?"); /*提示是否要删除,输入Y删除,N则退出*/
for(;;)
{scanf("%c",&c);
if(c=='n'||c=='N') break; /*如果不删除,则跳出本循环*/
if(c=='y'||c=='Y')
{
if(p1==head) /*若p1==head,说明被删结点是首结点*/
head=p1->next; /*把第二个结点地址赋予head*/
else
p2->next=p1->next; /*否则将一下结点地址赋给前一结点地址*/
n=n-1;
printf("\nNum %s student have been deleted.\n",s);
printf("Don't forget to save.\n");break; /*删除后就跳出循环*/
}
}
}
else
printf("\nThere is no num %s student on the list.\n",s); /*找不到该结点*/
return(head);
}

/*排序函数*/
STUDENT *sort(STUDENT *head)
{int i=0; /*保存名次*/
STUDENT *p1,*p2,*t,*temp; /*定义临时指针*/
temp=head->next; /*将原表的头指针所指的下一个结点作头指针*/
head->next=NULL; /*第一个结点为新表的头结点*/
while(temp!=NULL) /*当原表不为空时,进行排序*/
{
t=temp; /*取原表的头结点*/
temp=temp->next; /*原表头结点指针后移*/
p1=head; /*设定移动指针p1,从头指针开始*/
p2=head; /*设定移动指针p2做为p1的前驱,初值为头指针*/
while(t->average<p1->average&&p1!=NULL) /*作成绩平均分比较*/
{
p2=p1; /*待排序点值小,则新表指针后移*/
p1=p1->next;
}
if(p1==p2) /*p1==p2,说明待排序点值大,应排在首位*/
{
t->next=p1; /*待排序点的后继为p*/
head=t; /*新头结点为待排序点*/
}
else /*待排序点应插入在中间某个位置p2和p1之间,如p为空则是尾部*/
{
t->next=p1; /*t的后继是p1*/
p2->next=t; /*p2的后继是t*/
}
}
p1=head; /*已排好序的头指针赋给p1,准备填写名次*/
while(p1!=NULL) /*当p1不为空时,进行下列操作*/
{
i++; /*结点序号*/
p1->order=i; /*将结点序号赋值给名次*/
p1=p1->next; /*指针后移*/
}
printf("Sorting is sucessful.\n"); /*排序成功*/
return (head);
}

/*插入记录函数*/
STUDENT *insert(STUDENT *head,STUDENT *new)
{STUDENT *p0,*p1,*p2;
int n,sum1,i;
p1=head; /*使p1指向第一个结点*/
p0=new; /*p0指向要插入的结点*/
printf("\nPlease enter a new record.\n"); /*提示输入记录信息*/
printf("Enter the num:");
scanf("%s",new->num);
printf("Enter the name:");
scanf("%s",new->name);
printf("Please enter the %d scores.\n",3);
sum1=0; /*保存新记录的总分,初值为0*/
for(i=0;i<3;i++)
{
do{
printf("score%d:",i+1);
scanf("%d",&new->score[i]);
if(new->score[i]>100||new->score[i]<0)
printf("Data error,please enter again.\n");
}while(new->score[i]>100||new->score[i]<0);
sum1=sum1+new->score[i]; /*累加各门成绩*/
}
new->sum=sum1; /*将总分存入新记录中*/
new->average=(float)sum1/3;
new->order=0;
if(head==NULL) /*原来的链表是空表*/
{head=p0;p0->next=NULL;} /*使p0指向的结点作为头结点*/
else
{while((p0->average<p1->average)&&(p1->next!=NULL))
{p2=p1; /*使p2指向刚才p1指向的结点*/
p1=p1->next; /*p1后移一个结点*/
}
if(p0->average>=p1->average)
{if(head==p1)head=p0; /*插到原来第一个结点之前*/
else p2->next=p0; /*插到p2指向的结点之后*/
p0->next=p1;}
else
{p1->next=p0;p0->next=NULL;} /*插到最后的结点之后*/
}
n=n+1; /*结点数加1*/
head=sort(head); /*调用排序的函数,将学生成绩重新排序*/
printf("\nStudent %s have been inserted.\n",new->name);
printf("Don't forget to save the new file.\n");
return(head);
}

/*保存数据到文件函数*/
void save(STUDENT *head)
{FILE *fp; /*定义指向文件的指针*/
STUDENT *p; /* 定义移动指针*/
char outfile[10];
printf("Enter outfile name,for example c:\\score\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL) /*为输出打开一个二进制文件,为只写方式*/
{
printf("Cannot open the file\n");
return; /*若打不开则返回菜单*/
}
printf("\nSaving the file......\n");
p=head; /*移动指针从头指针开始*/
while(p!=NULL) /*如p不为空*/
{
fwrite(p,LEN,1,fp); /*写入一条记录*/
p=p->next; /*指针后移*/
}
fclose(fp); /*关闭文件*/
printf("Save the file successfully!\n");
}

/* 从文件读数据函数*/
STUDENT *load()
{STUDENT *p1,*p2,*head=NULL; /*定义记录指针变量*/
FILE *fp; /* 定义指向文件的指针*/
char infile[10];
printf("Enter infile name,for example c:\\score\n");
scanf("%s",infile);
if((fp=fopen(infile,"rb"))==NULL) /*打开一个二进制文件,为只读方式*/
{
printf("Can not open the file.\n");
return(head);
}
printf("\nLoading the file!\n");
p1=(STUDENT *)malloc(LEN); /*开辟一个新单元*/
if(!p1)
{
printf("Out of memory!\n");
return(head);
}
head=p1; /*申请到空间,将其作为头指针*/
while(!feof(fp)) /*循环读数据直到文件尾结束*/
{
if(fread(p1,LEN,1,fp)!=1) break; /*如果没读到数据,跳出循环*/
p1->next=(STUDENT *)malloc(LEN); /*为下一个结点开辟空间*/
if(!p1->next)
{
printf("Out of memory!\n");
return (head);
}
p2=p1; /*使p2指向刚才p1指向的结点*/
p1=p1->next; /*指针后移,新读入数据链到当前表尾*/
}
p2->next=NULL; /*最后一个结点的后继指针为空*/
fclose(fp);
printf("You have success to read data from the file!\n");
return (head);
}

我自己写的,VC中运行良好。这些东西吧,学学也是有用的。

#include <stdio.h>

#include <stdlib.h>

struct student_type 

 { char num[11];

  char name[8];

  char class[20];

  float score[3];

  float ave;

 }stud[4];

void save()

{

 FILE * fp;

 int i;

 if((fp = fopen("score.txt","wb")) == NULL)

 {

  printf("File open error!");

  exit(1);

 }

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

 {

 fwrite(&stud[i],sizeof(struct student_type),1,fp);

 }

 fclose(fp);

}

void display()

{

 int i;

 FILE * fp;

 struct student_type temp;

 if((fp = fopen("score.txt","rb")) == NULL)

 {

  printf("File open error!");

  exit(1);

 }

 printf("学生信息为:

");

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

 {

  fread(&temp,sizeof(struct student_type),1,fp);

  printf("第%d名学生信息:

",i+1);

  printf("学号: %s
",temp.num);

  printf("姓名: %s
",temp.name);

  printf("班级: %s
",temp.class);

  printf("成绩: %.2f %.2f %.2f
",temp.score[0],temp.score[1],temp.score[2]);

  printf("平均分: %.2f
",temp.ave);

  printf("**********************************

");

 }

 fclose(fp);

}

void main()

{

 int i,j;

 printf("请输入4名学生信息:");

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

 {

  float ave = 0;

  printf("

第%d名学生信息:

",i+1);

  printf("学号:");

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

  printf("姓名:");

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

  printf("班级:");

  scanf("%s",stud[i].class);

  printf("成绩:");

  for(j=0;j<3;j++)

  {

   scanf("%f",&stud[i].score[j]);

   ave += stud[i].score[j];

  }

  stud[i].ave = ave/3;

 }

 save();

 display();

 system("pause");

}




C语言编程:学生成绩管理系统设计 学生成绩信息包括:学号,姓名,语文成绩...
printf(" ***欢迎进入电子科技大学成都学院学生管理系统***\\n");printf("\\n"); printf("\\n"); printf(" 1.学生成绩新建\\n"); printf(" 2.学生成绩查询\\n");printf(" 3.学生成绩插入\\n");printf(" 4.学生成绩修改\\n");printf(" 5.学生成绩删除\\n"); printf(" 6.学生成绩排名\\n"); pr...

c语言成绩管理系统
include <stdio.h> const int MAXNAMELENGTH=64; \/\/名称最大长度 const int MAXITEMNUM=5; \/\/科目最大数目 struct Index \/\/结构体 索引 { int ID;double Record;};struct Item \/\/结构体 科目 { int ID;char name[MAXNAMELENGTH];};struct Student \/\/结构体 学生 { int ID;ch...

c语言编写一个成绩管理系统
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\\t\\t\\t...

求c语言程序成绩管理系统代码。各路大哥大姐帮帮忙。谢谢
需求说明:用C语言设计并编写一个学生信息管理系统,要求至少存放10名学生的信息。每个学生必须有的信息有:序号、姓名、成绩1、成绩2。按照下面的要求完成程序,其中函数名已经给定,... 需求说明:用C语言设计并编写一个学生信息管理系统,要求至少存放10名学生的信息。每个学生必须有的信息有:序号、姓名、成绩1、成绩2...

设计学生C语言成绩管理系统
cout<<"※ 欢迎进入学生成绩统计管理 ※"<<endl;cout<<"※※※ "<<endl;cout<<"※ ※ "<<endl;cout<<"※ 1:学生数据输入 ※ "<<endl;cout<<"※ 2:成绩排名 ※ "<<endl;cout<<"※ 3:学生数据的添加 ※ "<<endl;cout<<"※ 4:统计C语言全班平均分 ※ "<<endl;cout<<"※...

强人请写个C语言 学生成绩综合管理系统
include<stdio.h> \/*引用库函数*\/ include<stdlib.h> include<ctype.h> include<string.h> typedef struct \/*定义结构体数组*\/ { char num[10]; \/*学号*\/ char name[20]; \/*姓名*\/ int score; \/*成绩*\/ }Student;Student stu[80]; \/*结构体数组变量*\/ int menu_select() \/*菜单...

c语言学生管理系统用文件保存
编写一个菜单驱动的学生成绩管理程序。实现如下管理功能:?能输入并显示n个学生的m门考试科目的成绩、总分和平均分。?按总分进行排序。?按学号进行排序。?任意输入一个学号,能显示该... 编写一个菜单驱动的学生成绩管理程序。实现如下管理功能: ? 能输入并显示 n 个学生的 m 门考试科目的成绩、总分和平均分。

c语写学生成绩管理系统
假设某班级有20名学生,每个学生的信息包括学号、姓名及语文、数学、英语、物理、化学五门课程的成绩,试设计一学生成绩管理系统,使之能提供以下功能:学生信息录入功能=... 假设某班级有20名学生,每个学生的信息包括学号、姓名及语文、数学、英语、物理、化学五门课程的成绩,试设计一学生成绩管理系统,使之能提供...

C语言的高手请进来下用传统的C语言编个成绩管理系统
成绩管理系统主要功能包括:1成绩信息的输入(成绩信息包括科目,学号,成绩)2成绩信息的修改3成绩信息的删除4成绩信息的查询5成绩信息的统计和排序(排序为选做),统计单科成绩的平均成绩,... 成绩管理系统主要功能包括:1成绩信息的输入(成绩信息包括科目,学号,成绩)2成绩信息的修改3成绩信息的删除4成绩信息的查询5成绩信...

成绩管理系统C语言
(3) 成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。(4) 排序:能对用户指(5) 定的任意课程名,(6) 按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,(7) 加分)前面两位3Q了,但不行,不行啊,...

象山县17680803660: c语言 学生成绩管理系统设计学生成绩信息包括:学号,姓名,三门课程成绩(数学、英语和计算机)等.主要功能:(1) 计算各个学生的总分及平均分,... -
傅富凡慕:[答案] 希望对你有所帮助.#include"stdio.h"#include"stdlib.h"#include"string.h"#define N 3typedef struct z1{ char no[11]; char name[15]; int score[N]; float sum; float average; int order; ...

象山县17680803660: 编程如何用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*/ ...

象山县17680803660: C语言建立一个“学生管理成绩系统” -
傅富凡慕: #include<stdio.h>#include<malloc.h>#include<string.h>#include<conio.h>#include<windows.h> struct student//初始化结构体 包括学生学号和成绩 { char num[20]; float chengji; struct student*next; }; float p; struct student* luru()//建立链表 录入学生...

象山县17680803660: 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 ...

象山县17680803660: 用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 ...

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

象山县17680803660: 如何用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 { ...

象山县17680803660: 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]...

象山县17680803660: C语言:学生成绩管理系统 -
傅富凡慕: /*该源码包括11个函数(包含main函数)①student_new②student_del③student_edit④score_input⑤score_edit⑥browser⑦page_title(main函数调用)⑧return_confirm(前五个函数调用)⑨search_id(第2/3/5个函数调用)⑩sort_it(browser函数调...

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