本文目录一览:
C语言编写一个简单的学生成绩管理系统
C语言程序:
#include stdio.h
#include string.h
typedef struct student
{
char name[20]; /* 姓名 */
int code; /* 学号 */
int kor, eng, math; /* 3门课程的成绩 */
}STUDENT;
/* 返回输入数据 */
STUDENT Input();
/* 输出所有输入的数据 */
void Output(STUDENT info[], int cnt);
/* 将输入分数转换为A-F */
char grade(int score);
int main()
{
STUDENT S[10];
int cnt = 0, select;
int i, j;
int code;
while(1)
{
printf("\t学生信息管理系统\n\n");
printf("\t\t1\t添加\n");
printf("\t\t2\t删除\n");
printf("\t\t3\t查询\n");
printf("\t\t0\t结束\n");
printf("\t\t您的选择[0-3]:");
scanf("%d", select);
if(select 0 || select 3)
continue;
if(select == 0)
{
printf("退出系统!\n");
break;
}
if(select == 1) /* 添加 */
{
S[cnt++] = Input();
}
else if(select == 2) /* 删除 */
{
printf("\t\t待删除学生的学号:");
scanf("%d", code);
for(i=0; icnt; i++)
if(S[i].code == code)
break;
if(i = cnt)
{
printf("学号不存在,删除失败!\n");
}
else {
for(j=i+1; jcnt; j++)
{
strcpy(S[j-1].name, S[j].name);
S[j-1].code = S[j].code;
S[j-1].kor = S[j].kor;
S[j-1].eng = S[j].eng;
S[j-1].math = S[j].math;
}
cnt--;
printf("删除成功!\n");
}
}
else /* 查询 */
{
printf("\t\t待查找学生的学号:");
scanf("%d", code);
for(i=0; icnt; i++)
if(S[i].code == code)
break;
if(i = cnt)
{
printf("学号不存在,查找失败!\n");
}
else
{
printf("\t查询结果:\n");
Output(S, i);
}
}
}
return 0;
}
/* 返回输入数据 */
STUDENT Input()
{
STUDENT stu;
printf("\t\t新学生信息\n");
printf("\t\t学号:");
scanf("%d", stu.code);
printf("\t\t姓名:");
getchar();
gets(stu.name);
printf("\t\t3门课程成绩(以空格分隔):");
scanf("%d%d%d", stu.kor, stu.eng, stu.math);
return stu;
}
/* 输出所有输入的数据 */
void Output(STUDENT info[], int cnt)
{
printf("学号:%d\n",info[cnt].code);
printf("姓名:");
puts(info[cnt].name);
printf("成绩:%c %c %c\n", grade(info[cnt].kor), grade(info[cnt].eng), grade(info[cnt].math));
}
/* 将输入分数转换为A-F */
char grade(int score)
{
if(score 0 || score 100)
return 'F';
if(score = 90)
return 'A';
if(score = 80)
return 'B';
if(score = 70)
return 'C';
if(score =60)
return 'D';
else
return 'E';
}
运行测试:
用C语言设计一个学生成绩管理系统
#include stdio.h
#include string.h
#include stdlib.h
#define MAX 1000
/*定义学生成绩信息结构*/
struct stu
{
char id[8];
char name[8];
扩展资料:
short:修饰int,短整型数据,可省略被修饰的int。(KR时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(KR时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(KR时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)
复杂类型关键字
struct:结构体声明。(KR时期引入)
union:联合体声明。(KR时期引入)
enum:枚举声明。(C89标准新增)
typedef:声明类型别名。(KR时期引入)
sizeof:得到特定类型或特定类型变量的大小。(KR时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)
参考资料来源:百度百科-c语言
c语言成绩管理系统
代码如下:
#include stdio.h
#include string.h
#define MAX 100 // 学生最大数量
#define COURSE_N 3 // 课程数
struct Student
{
unsigned int id; // 学号
char name[20]; // 姓名
int scores[COURSE_N]; // 课程分数:语文、数学、英语
int sum; // 总分
float average; // 平均分
};
struct StudentList {
struct Student students[MAX]; // 学生列表
int size; // 实际学生人数
};
struct StudentList studentList;
void PrintStudents(struct StudentList *pList)
{
int i;
printf("学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");
for (i = 0; i pList-size; i++) {
printf("%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n",
pList-students[i].id,
pList-students[i].name,
pList-students[i].scores[0],
pList-students[i].scores[1],
pList-students[i].scores[2],
pList-students[i].sum,
pList-students[i].average);
}
printf("\n");
}
void PrintStudent(struct Student *pStu)
{
int i;
printf("学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");
printf("%d\t%s\t%d\t%d\t%d\t%d\t%.2f\n",
pStu-id,
pStu-name,
pStu-scores[0],
pStu-scores[1],
pStu-scores[2],
pStu-sum,
pStu-average);
printf("\n");
}
// 通过学号查找学生
struct Student* FindStudentById(struct StudentList *pList, unsigned int id)
{
int i;
for (i = 0; i pList-size; i++) {
if (pList-students[i].id == id) {
return pList-students[i];
}
}
return NULL;
}
// 通过姓名查找学生
struct Student* FindStudentByName(struct StudentList *pList, const char *name)
{
int i;
for (i = 0; i pList-size; i++) {
if (strcmpi((const char *)pList-students[i].name, name) == 0) {
return pList-students[i];
}
}
return NULL;
}
// 添加学生
void AddStudent(struct StudentList *pList)
{
int ok = 0;
do {
printf("请输入学号:");
scanf("%d", pList-students[pList-size].id);
if (FindStudentById(pList, pList-students[pList-size].id) != NULL) {
printf("学号重复!\n");
}
else {
ok = 1;
}
} while (!ok);
printf("请输入姓名:");
scanf("%s", pList-students[pList-size].name);
printf("请输入语文分数:");
scanf("%d", pList-students[pList-size].scores[0]);
printf("请输入数学分数:");
scanf("%d", pList-students[pList-size].scores[1]);
printf("请输入英语分数:");
scanf("%d", pList-students[pList-size].scores[2]);
pList-students[pList-size].sum = pList-students[pList-size].scores[0];
pList-students[pList-size].sum += pList-students[pList-size].scores[1];
pList-students[pList-size].sum += pList-students[pList-size].scores[2];
pList-students[pList-size].average = (float)pList-students[pList-size].sum / COURSE_N;
pList-size++;
printf("学生添加成功!\n\n");
}
// 修改学生信息
void ModifyStudent(struct StudentList *pList)
{
int id;
struct Student *p = NULL;
printf("请输入学号:");
scanf("%d", id);
p = FindStudentById(pList, id);
if (p != NULL) {
printf("请输入姓名:");
scanf("%s", p-name);
printf("请输入语文分数:");
scanf("%d", p-scores[0]);
printf("请输入数学分数:");
scanf("%d", p-scores[1]);
printf("请输入英语分数:");
scanf("%d", p-scores[2]);
p-sum = p-scores[0];
p-sum += p-scores[1];
p-sum += p-scores[2];
p-average = (float)p-sum / COURSE_N;
printf("修改学生信息成功。\n\n");
}
else {
printf("没有找到学号为[%u]的学生。\n\n", id);
}
}
void DeleteStudent(struct StudentList *pList)
{
int id, index = -1, i;
printf("请输入学号:");
scanf("%d", id);
for (i = 0; i pList-size; i++) {
if (pList-students[i].id == id) {
index = i;
break;
}
}
if (index != -1) {
for (i = index; i pList-size - 1; i++) {
memcpy(pList-students[i], pList-students[i + 1], sizeof(struct Student));
}
pList-size--;
printf("成功删除学号为[%d]的学生。\n\n", id);
}
else {
printf("没有找到学号为[%u]的学生。\n\n", id);
}
}
void FindStudent(struct StudentList *pList)
{
struct Student *p;
char name[20];
printf("请输入学生姓名:");
scanf("%s", name);
p = FindStudentByName(pList, name);
if (p != NULL) {
PrintStudent(p);
}
else {
printf("没有找到姓名为[%s]的学生。\n\n", name);
}
}
// 按平均分排序
void SortByAverage(struct StudentList *pList)
{
int i, j;
struct Student temp;
for (i = 0; i pList-size - 1; i++) {
for (j = i + 1; j pList-size; j++) {
if (pList-students[i].average pList-students[j].average) {
memcpy(temp, pList-students[i], sizeof(struct Student));
memcpy(pList-students[i], pList-students[j], sizeof(struct Student));
memcpy(pList-students[j], temp, sizeof(struct Student));
}
}
}
}
int main()
{
int exit = 0;
int choose = 0;
while (!exit) {
printf("------ 学生成绩管理系统 ------\n");
printf("1. 增加学生记录\n");
printf("2. 修改学生记录\n");
printf("3. 删除学生记录\n");
printf("4. 按姓名查询学生记录\n");
printf("5. 按平均成绩排序\n");
printf("6. 退出\n");
printf("请选择(1 - 6):");
scanf("%d", choose);
switch (choose) {
case 1:
AddStudent(studentList);
break;
case 2:
ModifyStudent(studentList);
break;
case 3:
DeleteStudent(studentList);
break;
case 4:
FindStudent(studentList);
break;
case 5:
SortByAverage(studentList);
PrintStudents(studentList);
break;
case 6:
exit = 1;
break;
default:
printf("无效的选项。\n");
break;
}
}
printf("已退出系统!\n");
return 0;
}
运行结果:
C语言实现 学生成绩管理系统(超详细) 内附源码
#includestdio.h
#includestring.h
#includestdlib.h
#includeconio.h
#define N 50//定义的学生数组的个数
#define M 1//定义的管理员数组的个数
int k;//录入学生的个数
char read_door[20];//读取文件的"门"
void Add_data(int flag);//增加数据
void Count_score(int flag);//求平均成绩和总成绩
void Delete_data(int flag);//根据学号删除对应学生的成绩
int Landing(int key);//登录程序
void Load_data();//载入数据
void Updata_stu(int flag);
void Read_bigdoor(char *b);
void Rank_score(int way, int flag);//按照需求对对应的成绩排序
void Read_data(char read_door);//读取数据
void Read_door();//读取"门"值
void Read_main_flag(int *a);
void Read_k();
void Save_bigdoor(char *b);
void Save_data(int flag);//保存数据
void Save_door();//保存"门"值
void Save_main_flag(int *a);
void Save_k(int k);
void Screen_rank();
void Screen_search();
void Screen_stu();
void Screen_teacher();
void Screen_stu_teach();
void Screen_onlyteach();
void Search_data(int way, int flag);//按学号或姓名查找查找
static struct STUDENT//学生的信息
{
char num[10];
char name[10];
float score[3];
float sum;
float aver;
int rank[4];
}stu[N];
static struct TEACHER//教师的登录账号和密码
{
char num[10];
char code[10];
}teach[M] = { "18061124","991228" };
int main()
{
char bigdoor ='n';//教师可通过bigdoor控制学生的权限
char *c=bigdoor;
int order1, order2, order3;//order为用户登录的指令
int door1, door2, door3;
printf ("请输入管理员登录指令:\n");
gets(read_door);
if (strcmp(read_door,"Lu Chen")==0)
{
printf("欢迎使用,您目前是拥有最高权限的管理员,请输入您的账号和密码:\n\n");
printf("\n\n\n");
Screen_onlyteach();
door1 = Landing(1);
if (door1 == 2)
{
printf("\n账号或密码不正确");
return 0;
}
}
else
{
Screen_stu_teach();
printf("请输入序号即选择登录选项:");
scanf("%d", order1);
printf("\n\n");
door1 = Landing(order1);//door1确定用户的权限
switch (door1)//提示用户输入出错
{
case 1:
case 3: break;
case 2:printf("\n输入的账号或密码有误"); return 0;
case 4:printf("\n输入的号码有误"); return 0;
}
}
if (door1 == 1)//老师界面
{
int flag = 0;
int *p=flag;
char teach_read_key;
printf("\n是否读取数据?(y/n):");
scanf("%*c%c",teach_read_key);
if(teach_read_key=='y')
{
Read_k();
Read_door();
Read_main_flag(p);
Read_data(read_door[20]);
}
printf("\n\n");
for (int count = 1; count 0; count++)//利用死循环来重复使用功能
{
Screen_teacher();
printf("\n请输入序号即选择登录选项:");
scanf("%d", order2);
printf("\n\n");
if (order2 == 10)
break;
switch (order2)
{
case 1:
{
Load_data();
flag=1;
Save_main_flag(p);
Save_k(k);
}break;
case 2:Updata_stu(flag); break;
case 3:
{
Screen_search();
printf("请输入你想查询成绩的方式:");
scanf("%d", door2);
Search_data(door2, flag);
}break;
case 4:Add_data(flag);break;
case 5:Delete_data(flag);break;
case 6:
{
Screen_rank();
printf("请输入成绩序号来选择排序:");
scanf("%d", door2);
Rank_score(door2, flag);
} break;
case 7:
{
Save_data(flag);
Save_door();
Save_k(k);
} break;
case 8:
{
bigdoor ='n';
Save_bigdoor(c);
}break;
case 9:
{
bigdoor ='y';
Save_bigdoor(c);
}break;
default:printf("您输入的序号有误!\n\n");
}
}
}
else//学生界面
{
Read_k();
Read_data('y');
for (int k = 1; k 0; k++)
{
Screen_stu();
printf("请输入下一步操作的序号:");
scanf("%d", order3);
if (order3 == 3)
break;
switch (order3)
{
case 1:
{
Screen_search();
printf("请输入你想查询成绩的方式");
scanf("%d", door3);
Search_data(door3, 1);
}break;
case 2:
{
Screen_rank();
printf("请输入成绩序号来选择排序:");
scanf("%d", door3);
Rank_score(door3, 1);
}break;
default:printf("输入的操作序号有误\n\n");
}
}
}
return 0;
}
int Landing(int key)//登录程序
{
char num[10];
char code[10];
if (key == 1)
{
printf("请输入账号:");
scanf("%s", num);
printf("\n请输入密码:");
scanf("%s", code);
for (int i = 0; i M; i++)
if (strcmp(teach[i].num, num) == 0 strcmp(teach[i].code, code) == 0)//判断登陆账号和密码是否正确
return 1;
else
return 2;
}
else if (key == 2)
{
return 3;
}
else
{
return 4;
}
}
void Search_data(int way, int flag)//按学号或姓名查找查找
{
int Search_flag = 1;
if (flag)
{
char num[10], name[10];
int i;
if (way == 1)
{
printf("\n请输入学号:");
scanf("%s", num);
for (i = 0; i k; i++)
{
if (strcmp(stu[i].num, num) == 0)//判断学号存不存在
{
printf("\n姓名:%s\n学号:%s\nsubject1:%f\nsubject2:%f\nsubject3:%f\nsum:%f\naver:%f\n", stu[i].name, stu[i].num, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].aver);
Search_flag = 0;
break;
}
}
if (Search_flag)
printf("\n您输入的学号有误\n");
}
else if (way == 2)
{
printf("\n请输入姓名:");
scanf("%s", name);
for (i = 0; i N; i++)
{
if (strcmp(stu[i].name, name) == 0)//判断姓名存不存在
{
printf("\n姓名:%s\n学号:%s\nsubject1:%f\nsubject2:%f\nsubject3:%f\nsum:%f\naver:%f\n", stu[i].name, stu[i].num, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].sum, stu[i].aver);
flag = 0;
break;
}
}
if (flag)
printf("\n输入的姓名有误\n");
}
else
printf("\n输入的序号有误\n");
}
else
{
printf("\n您还没有载入数据\n");
}
}
void Count_score(int flag)//求平均成绩和总成绩
{
if (flag)
{
for (int i = 0; i k; i++)
{
stu[i].sum = stu[i].score[0] + stu[i].score[1] + stu[i].score[2];
stu[i].aver = stu[i].sum / 3;
}
}
else
{
printf("\n您还没有载入数据\n");
}
}
void Load_data()//载入数据
{
printf("输入录入学生成绩个数:");
scanf("%d", k);
for (int i = 0; i k; i++)
{
scanf("%s%s%f%f%f", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
Count_score(1);
}
}
void Rank_score(int way, int flag)//按照需求对对应的成绩排序
{
int i, j, n, temp;
if (flag)
{
for (i = 0; i 4; i++)
for (j = 0; j k; j++)
stu[j].rank[i] = j + 1;
if (way == 1)
{
for (i = 0; i 3; i++)
for (j = 0; j k; j++)
for (n = j + 1; n k; n++)
if (stu[j].score[i] stu[n].score[i])
{
temp = stu[j].rank[i];
stu[j].rank[i] = stu[n].rank[i];
stu[n].rank[i] = temp;
}
printf("\n");
for (i = 0; i k; i++)
printf("姓名:%s 学号:%s subject1:%d subject2:%d subject3:%d\n", stu[i].name, stu[i].num, stu[i].rank[0], stu[i].rank[1], stu[i].rank[2]);
}
else if (way == 2)
{
for (j = 0; j k; j++)
for (n = j + 1; n k; n++)
if (stu[j].sum stu[n].sum)
{
temp = stu[j].rank[3];
stu[j].rank[3] = stu[n].rank[3];
stu[n].rank[3] = temp;
}
printf("\n");
for (i = 0; i k; i++)
printf("姓名:%s 学号:%s sum: %d\n", stu[i].name, stu[i].num, stu[i].rank[3]);
}
else
{
printf("\n输入的序号有误\n");
}
}
else
{
printf("\n您还没有载入数据\n");
}
}
void Delete_data(int flag)//根据学号删除对应学生的成绩
{
if (flag)
{
int i, j;
char num[10];
printf("\n请输入您想要删除信息的学号:");
scanf("%s", num);
for (i = 0; i k; i++)
{
if (strcmp(stu[i].num, num) == 0)
for (j = i + 1; j k; j++)
{
stu[i] = stu[j];
Count_score(1);
}
}
k--;
Save_k(k);
}
else
{
printf("\n您还没有载入数据\n");
}
}
void Updata_stu(int flag)//根据学号修改学生的成绩
{
int Updata_flag = 1;
if (flag)
{
char num[10];
float subject1, subject2, subject3;
printf("\n请输入您想要修改学生的学号:");
scanf("%s", num);
printf("\n请输入您想要更改的学生三科的成绩:");
scanf("%f%f%f", subject1, subject2, subject3);
for (int i = 0; i k; i++)
if (strcmp(stu[i].num, num) == 0)
{
stu[i].score[0] = subject1;
stu[i].score[1] = subject2;
stu[i].score[2] = subject3;
Updata_flag = 0;
Count_score(1);
}
if (Updata_flag)
{
printf("\n输入学号有误\n");
}
}
else
{
printf("\n您还没有载入数据\n");
}
}
void Save_data(int flag)//保存数据
{
if(flag)
{
FILE *fp;
if((fp=fopen("load.txt","w"))==NULL)
{
printf("Save_data error!");
exit(0);
}
for(int i=0;ik;i++)
{
fwrite(stu[i],sizeof(STUDENT),1,fp);
}
fclose(fp);
printf("成功保存数据!\n\n");
read_door[20]='y';
}
else
{
printf("\n您还没有载入数据\n");
}
}
void Read_data(char read_door)//读取数据
{
if(read_door=='y')
{
FILE *fp;
if((fp=fopen("load.txt","r"))==NULL)
{
printf("Read_data error!");
exit(0);
}
for(int i=0;ik;i++)
{
fread(stu[i],sizeof(STUDENT),1,fp);
}
fclose(fp);
}
else
{
printf("\n没有保存数据的记录\n");
}
}
void Save_door()//保存"门"值
{
FILE *fp;
if((fp=fopen("door.txt","w"))==NULL)
{
printf("Save_door error!");
exit(0);
}
fputc(read_door[20],fp);
fclose(fp);
}
void Read_door()//读取"门"值
{
FILE *fp;
if((fp=fopen("door.txt","r"))==NULL)
{
printf("Read_door error!");
exit(0);
}
read_door[20]=fgetc(fp);
fclose(fp);
}
void Save_main_flag(int *a)
{
FILE *fp;
if((fp=fopen("flag.txt","w"))==NULL)
{
printf("Save_main_flag error!");
exit(0);
}
fprintf(fp,"%d",*a);
fclose(fp);
}
void Read_main_flag(int *a)
{
FILE *fp;
if((fp=fopen("flag.txt","r"))==NULL)
{
printf("Read_main_flag error!");
exit(0);
}
fscanf(fp,"%d",a);
fclose(fp);
}
void Save_bigdoor(char *b)
{
FILE *fp;
if((fp=fopen("bigdoor.txt","w"))==0)
{
printf("Save_bigdoor error!");
exit(0);
}
fputc(*b,fp);
fclose(fp);
}
void Read_bigdoor(char *b)
{
FILE *fp;
if((fp=fopen("bigdoor.txt","r"))==0)
{
printf("Read_bigdoor error!");
exit(0);
}
*b=fgetc(fp);
fclose(fp);
}
void Save_k(int k)
{
FILE *fp;
if((fp=fopen("k.txt","w"))==0)
{
printf("Save_k error!");
exit(0);
}
fprintf(fp,"%d",k);
fclose(fp);
}
void Read_k()
{
FILE *fp;
if((fp=fopen("k.txt","r"))==0)
{
printf("Read_k error!");
exit(0);
}
fscanf(fp,"%d",k);
fclose(fp);
}
void Add_data(int flag)//增加数据
{
int i, j,count=k;
char num[10], name[10];
float subject1, subject2, subject3;
if (flag)
{
printf("\n输入您想增加的数据条数:");
scanf("%d", i);
for (j = 0; j i; j++)
{
printf("\n输入增加的学生学号,姓名,三门科目成绩");
scanf("%s%s%f%f%f", num, name, subject1, subject2, subject3);
strcpy(stu[count + j].num, num);
strcpy(stu[count+ j].name, name);
stu[count+ j].score[0] = subject1;
stu[count + j].score[1] = subject2;
stu[count+ j].score[2] = subject3;
k++;
Count_score(1);
}
Save_k(k);
}
else
{
printf("\n输入您想增加的数据条数:");
scanf("%d", i);
for (j = 0; j i; j++)
{
printf("\n输入增加的学生学号,姓名,三门科目成绩");
scanf("%s%s%f%f%f", num, name, subject1, subject2, subject3);
strcpy(stu[j].num, num);
strcpy(stu[j].name, name);
stu[j].score[0] = subject1;
stu[j].score[1] = subject2;
stu[j].score[2] = subject3;
k++;
Count_score(1);
}
}
}
void Screen_search()//查询界面
{
printf("*****************学生成绩查询界面*******************\n\n\n");
printf("——————————————————————————\n");
printf("| ① 学生学号查询 |\n");
printf("| ② 学生姓名查询 |\n");
printf("——————————————————————————\n");
}
void Screen_rank()//成绩排名方式界面
{
printf("*****************学生成绩排名界面*******************\n\n\n");
printf("——————————————————————————\n");
printf("| ① subject |\n");
printf("| ② sum |\n");
printf("——————————————————————————\n");
}
void Screen_teacher()
{
printf("*****************教师管理操作界面*******************\n\n\n");
printf("——————————————————————————\n");
printf("| ① 数据载入 |\n");
printf("| ② 修改数据 |\n");
printf("| ③ 查询数据 |\n");
printf("| ④ 添加数据 |\n");
printf("| ⑤ 删除数据 |\n");
printf("| ⑥ 成绩排序 |\n");
printf("| ⑦ 保存数据 |\n");
printf("| ⑧ 学生限制 |\n");
printf("| ⑨ 学生开放 |\n");
printf("| ⑩ 退出 |\n");
printf("——————————————————————————\n");
}
void Screen_stu_teach()
{
printf("*****************学生成绩管理系统*******************\n\n\n");
printf("——————————————————————————\n");
printf("| ① 教师管理员登录 |\n");
printf("| ② 学生端登录 |\n");
printf("——————————————————————————\n");
}
void Screen_onlyteach()
{
printf("*****************教师登陆操作界面*******************\n\n\n");
printf("——————————————————————————\n");
printf("| ① 教师管理员登录 |\n");
printf("——————————————————————————\n");
}
void Screen_stu()
{
printf("*****************学生用户操作界面*******************\n\n\n");
printf("——————————————————————————\n");
printf("| ① 学生成绩查询 |\n");
printf("| ② 成绩排名查询 |\n");
printf("| ③ 退出 |\n");
printf("——————————————————————————\n");
}
以上内容仅是本人通过多方浏览网上资料,自己敲出来的。
如有问题,大家可以在评论区下方留言!!!
本人已亲测,可用
C语言 学生成绩管理系统?
附录* 综合实例——学生成绩查询系统
这是一个用c语言编写的小软件——学生成绩查询系统,同学们可以将其作为一个综合实例,对其进行仔细的阅读和研究,体验编程处理问题的过程,加深对编程语言的理解,提高处理问题的综合能力。
1、程序的功能:
1)可以根据用户输入的输入、输出文件名,读入学生成绩,完成数据的初始化。
2)可以查询指定学生的成绩,可以是指定科目的成绩,也可以是全部科目的成绩。
3)友好退出。
2、使用说明:
1)将输入文件放到指定的目录下(即../student/)
图1
2)启动管理程序student.exe
3)在程序的使用界面,首先输入输入文件名和输出文件名,完成程序的初始化,操作如下图所示
图2
然后,按照按照提示,输入学生姓名和需要程序的成绩(此软件暂时只设置了五成成绩,同学们可以按照需要扩展)科目代码,也可以输入查询所有成绩的代码。程序成绩,如下图所示
图3
4)输入代码“q”退出程序。
3、程序代码
#include
#include
#include
FILE *f1,*f2;
char file1[20],file2[20],name[200][20],name1[15];
int n,m,data[200][10];
void init(){
int i,j;
char ch=' ';
printf("%20c欢迎使用班级成绩管理系统\n\n",ch);
printf("请输入输入和输出文件名(中间用一个空格隔开):\n");
scanf("%s %s",file1,file2);// 1)该条语句的功能是什么?
f1=fopen(file1,"r");
f2=fopen(file2,"w");
fscanf(f1,"%d%d",n,m); // 2)该条语句的功能是什么?
for(i=1;i=n;i++)
{
fscanf(f1,"%s",name[i]); // 3)该条语句的功能是什么?
data[i][0]=0; // 4)该条语句的功能是什么?没有这条语句可不可以?
for(j=1;j=m;j++)
{
fscanf(f1,"%d",data[i][j]);
data[i][0]+=data[i][j]; // 5)该条语句的功能是什么?
}
}
fprintf(f2,"name\tyuwen\tshuxue\tyingyu\twuli\thuaxue\tzongfen\n ");
for(i=1;i=n;i++)
{
fprintf(f2,"%s\t",name[i]);
for(j=1;j=m;j++)
fprintf(f2,"%d\t",data[i][j]);
fprintf(f2,"%d\n",data[i][0]);
}
fclose(f1);// 6)问什么可以在这关闭输入文件?
fclose(f2);
}
void search(char na[],char num){
int i=1,j;
while((i=n)(strcmp(na,name[i])!=0))i++;
if(i=n){
switch(num){
case '1':printf("%s的语文成绩为%d!\n",na,data[i][1]);break;
case '2':printf("%s的数学成绩为%d!\n",na,data[i][2]);break;
case '3':printf("%s的英语成绩为%d!\n",na,data[i][3]);break;
case '4':printf("%s的物理成绩为%d!\n",na,data[i][4]);break;
case '5':printf("%s的化学成绩为%d!\n",na,data[i][5]);break;
case 'a':
printf("%s的各科成绩为:\n",name[i]);
printf("语文\t数学\t英语\t物理\t化学\t总成绩\n");
for(j=1;j=m;j++)
printf("%d\t",data[i][j]);
printf("%d\n",data[i][0]);
break;
default: printf("没有这种查询方式,请确认后再次输入!\n");
}
}
else printf("查无此人,请确认后再次查询!\n");
printf("\n\n");
}
main(){
init();//数据初始化
printf("数据初始化结束!\n\n");
printf("------------------------------------------------\n\n");
char na[20];
char num;
while(1){ // 7)该条语句的功能是什么?
//scanf("%s%c%c",na,num,num); // 8)此处的输入可不可以用这条语句?
printf("请输入学生的姓名和要查询成绩的科目代码(中间用一个空格隔开):\n(1 语文 2 数学 3 英语 4 物理 5 化学 a 所有科目成绩 q 退出)\n");
scanf("%s",na);
if(strcmp(na,"q")==0)break; // 9)问什么要用这条语句strcmp(na,"q")==0?
scanf("%c%c",num,num); // 10)为什么用了两次num?
search(na,num);
printf("------------------------------------------------\n\n");
printf("\n请输入新的查询:\n\n");
}
system("pause");
}
这是我以前的一个程序,你改改吧,应该很好改