这篇文章主要为大家详细介绍了C语言实现简单班级成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
前言:
有朋友最近在做c语言课设,要求写一个班级成绩管理系统,便写份简单的代码来玩。代码原创,未参考任何其他人的代码
程序要求
说明
本程序主要采用结构体数组本文件采用多文件编写,由于程序规模小,故未采用编写头文件的方式使用#杂注一次来防止头文件重复包含
代码
怎么使用本程序看看注释应该就知道了运行主网站就行。其他各文件作用:
定义c定义了一些常量和全局变量,结构体myIO.c实现了成绩录入和成绩打印输出file.c实现了将成绩保存为文件菜单。c实现了菜单功能功能。c包含其他一些要用的函数
主网站
#include 'menu.c '
int main()
{
select();
返回0;
}
定义c
//相同头文件只包含一次,后不赘述
#杂注一次
#包含标准视频
#包含标准库
#包含字符串。h
#定义确定一
#定义错误0
#定义正确一
#定义假0
#定义状态(同Internationalorganizations)国际组织
//课程
typedef结构课程
{
char name[30];
(同Internationalorganizations)国际组织分数;
}当然,* p课程
//学生
typedef结构学生
{
字符数[30];
char name[30];
pCourse pC
}学生,* p学生
//n是学生数,m是课程数
int n,m;
char courseName[30],studentName[30],course[20][30];
p学生pS=空
myIO.c
#杂注一次
#包括'定义c '
p学生输入studentinfo(void);
void printStudentInfo(p学生pS);
//录入学生信息
p学生输入学生信息(无效)
{
int i,j;
printf('请输入学生人数和课程:');
scanf('%d %d ',n,m);
printf('请输入课程名称:');
for(I=0;我是m;我)
{
scanf('%s ',course[I]);
}
p Student pS=(p Student)malloc(sizeof(Student)* n);
如果(!pS)
返回空
printf('请输入信息:\ n’);
for(I=0;I n;我)
{
pS[我]。pC=(pCourse)malloc(sizeof(Course)* m);
如果(!pS[我]。pC)
返回空
scanf('%s %s ',pS[i]).名字,pS[i].号);
for(j=0;j m;j)
{
strcpy(pS[i].pC[j].姓名,课程[j]);
scanf('%d ',pS[i].pC[j].分数);
}
}
返回pS;
}
//打印所有学生信息
void printStudentInfo(p学生pS)
{
int i,j;
//打印标题
printf(' Name \ t number \ t ');
for(I=0;我m-1;我)
printf('%s\t ',course[I]);
printf('%s\n ',course[I]);
//显示信息
for(I=0;I n;我)
{
printf('%s\t%s\t ',pS[i]).名字,pS[i].号);
for(j=0;j m-1;j)
printf('%d\t ',pS[i].pC[j].分数);
printf('%d\n ',pS[i].pC[j].分数);
}
}
file.c
#杂注一次
#包括'定义c '
status saveStudentInfo(p学生pS);
状态保存学生信息(p学生pS)
{
文件* fp
int i,j;
字符文件名[30],字符串[100]='学号;
printf('请输入文件名:');
scanf('%s ',文件名);
fp=fopen(文件名,‘w’);
如果(!fp)
返回错误;
for(I=0;我是m;我)
{
strcat(str,' ');
strcat(str,course[I]);
}
strcat(str,' \ n ');
for(I=0;I n;我)
{
strcat(str,pS[i].姓名);
strcat(str,' ');
strcat(str,pS[i].号);
for(j=0;j m;j)
{
茶评分[30];
itoa(pS[i].pC[j].得分,得分,10);
strcat(str,' ');
strcat(str,score);
}
strcat(str,' \ n ');
}
fputs(str,FP);
fclose(FP);
退货OK;
}
菜单。c
#杂注一次
#包括'定义c '
#包含" myIO.c "
#include 'file.c '
#include 'function.c '
void menu();
void select();
//菜单
无效菜单()
{
printf('-\ n ');
printf(' | Menu | \ n ');
printf('| 1 .input | \ n ');
printf('| 2 .show | \ n ');
printf('| 3 .save | \ n ');
printf('| 4 .sort | \ n ');
printf('| 5 .modify | \ n ');
printf('| 6 .count | \ n ');
printf("| 0 .exit | \ n ');
printf('-\ n ');
}
无效选择()
{
(同Internationalorganizations)国际组织分支;
而(真)
{
系统(“cls”);
menu();
printf('[Input]:');
scanf('%d ',分支);
如果(!分支)
打破;
开关(分支)
{
案例1:
{
pS=inputStudentInfo();
if (pS==NULL)
printf('输入错误!请重新输入\ n’);
其他
printf('输入成功!\ n’);
系统("暂停");
打破;
}
案例二:
{
printStudentInfo(pS);
系统("暂停");
打破;
}
案例三:
{
if (OK==saveStudentInfo(pS))
printf('保存成功!\ n’);
其他
printf('保存失败!\ n’);
系统("暂停");
打破;
}
案例4:
{
排序(pS);
printf('排序成功\ n’);
系统("暂停");
打破;
}
案例5:
{
int RES=modify(pS);
中频(分辨率)
{
printf('更改成功!\ n’);
}
其他
{
printf('更改失败!\ n’);
}
系统("暂停");
打破;
}
案例6:
{
int选择
//输入一显示每门课程最高成绩信息
//输入2显示每门课程平均成绩信息
printf('最高分选1:\ n’);
printf('平均分选2:\ n’);
printf('[Input]:');
scanf('%d ',choose);
if (choose==1)
{
秀max(pS);
}
else if (choose==2)
{
显示平均值(pS);
}
其他
{
//输入非法提示信息
printf('输入错误!\ n’);
}
系统("暂停");
打破;
}
}
}
}
功能。c
#包括'定义c '
空的排序(p学生pS);
作废互换(p学生s1,p学生S2);
void秀平均分(p学生pS);
void show max(p学生pS);
状态修改(学生pS);
//按课程成绩排序
空排序(p学生pS)
{
int courseNumber,I,j,k;
char courseName[30];
printf('请输入您要排序的课程名称:');
scanf('%s ',课程名称);
for(课程编号=0;课程编号m;课程编号)
if (strcmp(course[courseNumber],courseName)==0)
打破;
//如果找不到课程,则认为是按总分排序
如果(课程编号==m)
{
printf('按总分排序:\ n’);
//选择排序
for(I=0;I n-1;我)
{
int flag=I;
for(j=I ^ 1;j n;j)
{
int totalScore_1=0,total score _ 2=0;
for(k=0;k m;k)
{
totalScore_1=pS[j].pC[k].分数;
totalScore_2=pS[flag].pC[k].分数;
}
if (totalScore_1 totalScore_2)
{
flag=j;
}
}
Swap(pS[i],pS[flag]);
}
}
其他
{
//选择排序
for(I=0;I n-1;我)
{
int flag=I;
for(j=I ^ 1;j n;j)
{
if (pS[j].pC[课程编号]。分数pS[flag].pC[课程编号]。分数)
{
flag=j;
}
}
Swap(pS[i],pS[flag]);
}
}
}
//修改学生信息
状态修改(学生pS)
{
//密码是1314
char password[30]='1314 ',PSD[30];
字符数[30];
(同Internationalorganizations)国际组织得分,I,j;
printf('请输入密码:');
scanf('%s ',PSD);
//密码正确才继续,否则返回错误
if (strcmp(密码psd)==0)
{
printf('请输入学号:');
scanf('%s ',编号);
for(I=0;I n;我)
{
//找到学生则继续,否则返回错误
if (strcmp(pS[i]).数字,数字)==0)
{
printf('请输入课程并逐一评分:\ n’);
scanf('%s %d ',courseName,score);
for(j=0;j m;j)
{
//找到课程才继续,否则返回错误
if (strcmp(pS[i]).pC[j].name,courseName)==0)
{
//修改课程成绩
pS[我]。pC[j].分数=分数;
退货OK;
}
}
返回错误;
}
}
返回错误;
}
其他
返回错误;
}
//输出各课程最高分的学生
void showMax(pStudent pS)
{
int i,j,max
for(I=0;我是m;我)
{
max=0;
for(j=0;j n;j)
{
if (pS[j].pC[i].分数pS[max].pC[i].分数)
max=j;
}
printf('%s\t%s\t%s\t%d\n ',课程[i],pS[max].名称,pS[max].数量,pS[最大值]。pC[i].分数);
}
}
//显示各课程的平均成绩
无效显示平均值(学生版pS)
{
int i,j;
双欢迎
for(I=0;我是m;我)
{
ave=0;
for(j=0;j n;j)
{
ave=pS[j].pC[i].分数;
}
printf('%s\t%.2lf\n ',course[i],ave/n);
}
}
无效交换(学生s1,学生s2)
{
int I;
char studentName[30],number[30];
//交换姓名
strcpy(学生名,S1-姓名);
strcpy(S1-名字,S2-名字);
strcpy(S2-姓名,学生姓名);
//交换学号
strcpy(数字,S1-数字);
strcopy(S1-数字,S2-数字);
strcpy(s2-number,number);
//交换成绩
for(I=0;我是m;我)
{
int temp=s1-pC[i].分数;
s1-pC[i].得分=s2-pC[i].分数;
s2-pC[i].分数=温度
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。