C语言学生成绩管理系统是用C语言设计制作的成绩管理系统。是朋友在我的爱情论坛分享提供的。旨在帮助学C语言的朋友学习实际应用。感兴趣的朋友不要错过。欢迎下载使用。
系统显示,很多朋友都要求一个很难的程序。今天,我将与大家分享一个在C语言环境下开发的学生成绩管理系统
这个系统的原理很简单:输入、输出、修改、排序、删除等等。
主要目的是帮助大家复习C语言的使用。
系统功能1。实现所有学生成绩的录入(使用结构数组),当输入字符为end时结束成绩的录入;
2.实现所有学生信息的输出
3.输入指定学生的姓名,并输出学生的信息
4.根据学生的语文和数学成绩对他们的成绩进行排名
系统源代码# includesdio.h
# includestdlib.h
# includeconio.h
#includedos.h
#includestring.h
#定义LEN大小(学生结构)
#定义FORMAT“%-8d %-15s %-12.1 lf %-12.1 lf %-12.1 lf %-12.1 lf \ n”
#定义DATA stu.num,stu.name,stu.elec,stu.expe,stu.requ,stu.sum
//仅供学习,不得用于商业用途!
float Felec、Fexpe、Frequ
结构学生/*定义学生成绩结构*/
{
int num/*学生证*/
字符名称[15];/*姓名*/
双电子的;/*选修课*/
双倍支出;/*实验班*/
双热区;/*必修课*/
双倍和;/*总分*/
};
指导学生学习[50];/*定义结构数组*/
在()中无效;/*输入学生成绩信息*/
void show();/*显示学生信息*/
作废订单();/*按总分排序*/
void del();/*删除学生成绩信息*/
void modify();/*修改学生成绩信息*/
void menu();/*主菜单*/
void insert();/*插入学生信息*/
void total();/*计算总人数*/
无效搜索();/*查找学生信息*/
Int main()/* main函数*/
{
int n;
menu();
scanf('%d ',n);/*输入所选功能的号码*/
while(n)
{
开关(n)
{
案例1:
in();
打破;
案例2:
search();
打破;
案例3:
del();
打破;
案例4:
modify();
打破;
案例5:
insert();
打破;
案例6:
order();
打破;
案例7:
total();
打破;
default:break
}
getch();
menu();/*执行该功能后,菜单界面将再次显示*/
scanf('%d ',n);
}
}
作废于()/*输入学生信息*/
{
int i,m=0;/*m是记录数*/
char ch[2];
FILE * fp/*定义文件指针*/
If ((FP=fopen ('data ',' ab ')==null)/*打开指定的文件*/
{
printf('无法打开\ n ');
返回;
}
while(!feof(fp))
{
if(fread(stu[m],LEN,1,FP)=1)
m;/*计算当前记录的数量*/
}
fc lose(FP);
if(m==0)
printf('无记录!\ n ');
其他
{
系统(' cls ');
show();/*调用show函数显示原始信息*/
}
if((fp=fopen('data ',' WB ')==NULL)
{
printf('无法打开\ n ');
返回;
}
for(I=0;im;(一)
fwrite(stu,LEN,1,FP);/*将信息写入指定的磁盘文件*/
printf('请输入(y/n): ');
scanf(“% s”,ch);
if(strcmp(ch,' Y')==0||strcmp(ch,' Y')==0)
{
printf('请输入百分号m : ');
printf(' \ ne lective : ');
scanf('%f ',Felec);
printf(' \ nexperiment: ');
scanf('%f ',Fexpe);
printf(' \ n必需课程: ');
scanf('%f ',Frequ);
}
While (strcmp (ch,y')==0 | | strcmp (ch,y')==0)/*判断是否输入新信息*/
{
printf(' number : ');
scanf('%d ',stu[m]。num);/*输入学生证*/
for(I=0;im;(一)
if(stu.num==stu[m])。数量)
{
printf('号码已存在,请按任意键继续!');
getch();
fc lose(FP);
返回;
}
printf(' name : ');
scanf(“% s”,stu[m]).姓名);/*输入学生姓名*/
printf(' electro ve : ');
scanf(“% lf”,stu[m]).elec);/*输入选修课成绩*/
printf('实验: ');
scanf(“% lf”,stu[m]).expe);/*输入实验课成绩*/
printf('必选课程: ');
scanf(“% lf”,stu[m]).热区);/*输入必修课成绩*/
斯图[m].总和=学生.电子*Felec stu[m].expe*Fexpe stu[m].requ * Frequ/*计算出总成绩*/
if(fwrite(stu[m],LEN,1,fp)!=1)/*将新录入的信息写入指定的磁盘文件*/
{
printf('无法保存!');
getch();
}
其他
{
printf("% s "已保存!\ n ,[ m]学生.姓名);
m;
}
printf('是否继续?(y/n): ';/*询问是否继续*/
scanf("% s ",ch);
}
fc输(FP);
printf('OK!\ n ');
}
无效显示()
{
文件* fp
int i,m=0;
fp=fopen('data ',' ab ');
while(!feof(fp))
{
if(fread(stu[m],LEN,1,FP)=1)
m;
}
fc输(FP);
printf('数字名称选修实验所需的总和\ t \ n ');
for(I=0;im;(一)
{
格式,数据;/*将信息按指定格式打印*/
}
}
空的菜单()/*自定义函数实现菜单功能*/
{
系统(“cls”);
printf(' \ n \ n \ n \ n \ n ');
printf(' \ t \ t |-STUDENT-| \ n ');
printf('\t\t|\t 0 .退出| \ n ');
printf('\t\t|\t 1 .输入记录| \ n ');
printf('\t\t|\t 2 .搜索记录| \ n ');
printf('\t\t|\t 3 .删除记录| \ n ');
printf('\t\t|\t 4 .修改记录| \ n ');
printf('\t\t|\t 5 .插入记录| \ n ');
printf('\t\t|\t 6 .order | \ n ');
printf('\t\t|\t 7 .数字| \ n ');
printf('\t\t| -该程序由吾爱破解bfgjjt提供-| \ n \ n ');
printf(' \ t \ t \ t选择(0-7): ');
}
无效订单()/*自定义排序函数*/
{
文件* fp
结构学生t;
int i=0,j=0,m=0;
if((fp=fopen('data ',' ab '==NULL)
{
printf('无法打开!\ n ');
返回;
}
while(!feof(fp))
if(fread(stu[m],LEN,1,FP)=1)
m;
fc输(FP);
if(m==0)
{
printf('没有记录!\ n ');
返回;
}
for(I=0;im-1;(一)
对于(j=1 ^ 1;JM;j )/*双重循环实现成绩比较并交换*/
if(stu.sumstu[j]).总和)
{
t=stu
斯图=斯图[j];
stu[j]=t;
}
if((fp=fopen('data ',' WB ')==NULL)
{
printf('无法打开\ n ');
返回;
}
for(I=0;im;i )/*将重新排好序的内容重新写入指定的磁盘文件中*/
if(fwrite(stu,LEN,1,fp)!=1)
{
printf("% s "无法保存!\ n ');
getch();
}
fc输(FP);
printf('保存成功\ n ');
}
void del()/*自定义删除函数*/
{
文件* fp
int snum,I,j,m=0;
char ch[2];
if((fp=fopen('data ',' ab '==NULL)
{
printf('无法打开\ n ');
返回;
}
while(!feof(fp))
if(fread(stu[m],LEN,1,FP)=1)
m;
fc输(FP);
if(m==0)
{
printf('没有记录!\ n ');
返回;
}
printf('请输入数字: ');
scanf("% d ",snum);
for(I=0;im;(一)
if(snum==stu.num)
打破;
if(i==m)
{
printf('找不到');
getchar();
返回;
}
printf('找到学生,删除?(y/n)');
scanf("% s ",ch);
if(strcmp(ch,Y')==0||strcmp(ch,Y '==0)/*判断是否要进行删除*/
{
for(j=I;JM;j)
斯图[j]=斯图[j 1];/*将后一个记录移到前一个记录的位置*/
m-;/*记录的总个数减1*/
printf('删除成功!\ n ');
}
if((fp=fopen('data ',' WB ')==NULL)
{
printf('无法打开\ n ');
返回;
}
for(j=0;JM;j )/*将更改后的记录重新写入指定的磁盘文件中*/
if(fwrite(stu[j],LEN,1,fp)!=1)
{
printf('无法保存!\ n ');
getch();
}
fc输(FP);
}
无效搜索()/*自定义查找函数*/
{
文件* fp
int snum,I,m=0;
char ch[2];
if((fp=fopen('data ',' ab '==NULL)
{
printf('无法打开\ n ');
返回;
}
while(!feof(fp))
if(fread(stu[m],LEN,1,FP)=1)
m;
fc输(FP);
if(m==0)
{
printf('没有记录!\ n ');
返回;
}
printf('请输入数字: ');
scanf("% d ",snum);
for(I=0;im;(一)
if(snum==stu.num)/*查找输入的学号是否在记录中*/
{
找到学生,展示?(y/n)');
scanf("% s ",ch);
if(strcmp(ch,' Y')==0||strcmp(ch,' Y')==0)
{
printf('数字名称选修实验所需的总和\ t \ n ');
格式,数据;/*将查找出的结果按指定格式输出*/
打破;
}
其他
返回;
}
if(i==m)
printf('找不到学生!\ n ');/*未找到要查找的信息*/
}
作废修改()/*自定义修改函数*/
{
文件* fp
int i,j,m=0,snum
if((fp=fopen('data ',' ab '==NULL)
{
printf('无法打开\ n ');
返回;
}
while(!feof(fp))
if(fread(stu[m],LEN,1,FP)=1)
m;
if(m==0)
{
printf('没有记录!\ n ');
fc输(FP);
返回;
}
printf('请输入要修改的学生编号!\ n ');
scanf("% d ",snum);
for(I=0;im;(一)
if(snum==stu.num)/*检索记录中是否有要修改的信息*/
打破;
if(im)
{
printf('找到学生!可以修改!\ n ');
printf('请输入百分号m :’);
printf(' \ n选择: ');
scanf('%f ',Felec);
printf(' \ nexperiment: ');
scanf('%f ',Fexpe);
printf(' \ n必需课程: ');
scanf('%f ',Frequ);
printf(' name : \ n ');
scanf("% s ",stu。姓名);/*输入名字*/
printf(' \ n选择: ');
scanf(“% lf”,stu。elec);/*输入选修课成绩*/
printf(' \ nexperiment: ');
scanf(“% lf”,stu。exp);/*输入实验课成绩*/
printf(' \ n必需课程: ');
scanf(“% lf”,stu。热区);/*输入必修课成绩*/
斯图。sum=斯图。电子* Felec stu。expe * Fexpe stu。requ * Frequ
}
其他
{
printf('找不到!');
getchar();
返回;
}
if((fp=fopen('data ',' WB ')==NULL)
{
printf('无法打开\ n ');
返回;
}
for(j=0;JM;j )/*将新修改的信息写入指定的磁盘文件中*/
if(fwrite(stu[j],LEN,1,fp)!=1)
{
printf('无法保存!');
getch();
}
fc输(FP);
}
void insert()/*自定义插入函数*/
{
文件* fp
int i,j,k,m=0,snum
if((fp=fopen('data ',' ab '==NULL)
{
printf('无法打开\ n ');
返回;
}
while(!feof(fp))
if(fread(stu[m],LEN,1,FP)=1)
m;
if(m==0)
{
printf('没有记录!\ n ');
fc输(FP);
返回;
}
printf('请输入要插入的位置!(输入数字)\ n ';
scanf("% d ",snum);/*输入要插入的位置*/
for(I=0;im;(一)
if(snum==stu.num)
打破;
for(j=m-1;冀;j -)
斯图[j 1]=斯图[j];/*从最后一条记录开始均向后移一位*/
printf('现在请输入新信息\\ n ');
printf('编号: ');
scanf('%d ',斯图[I ^ 1].num);
for(k=0;公里;k)
if(stu[k]).num==stu[i 1].努克1)
{
printf('号码已存在,请按任意键继续!');
getch();
fc输(FP);
返回;
}
printf('请输入百分号m :’);
printf(' \ n选择: ');
scanf('%f ',Felec);
printf(' \ nexperiment: ');
scanf('%f ',Fexpe);
printf(' \ n必需课程: ');
scanf('%f ',Frequ);
printf(' name : \ n ');
scanf(“% s”,斯图[I ^ 1].姓名);
printf(' \ n选择: ');
scanf(“% lf”,斯图[I ^ 1].elec);
printf(' \ nexperiment: ');
scanf(“% lf”,斯图[I ^ 1].expe);
printf(' \ n必需课程: ');
scanf(“% lf”,斯图[I ^ 1].热区);
斯图1 .sum=stu[I ^ 1].elec*Felec stu[i 1].expe*Fexpe stu[i 1].requ * Frequ
if((fp=fopen('data ',' WB ')==NULL)
{
printf('无法打开\ n ');
返回;
}
for(k=0;k=m;k)
if(fwrite(stu[k],LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
{
printf('无法保存!');
getch();
}
fc输(FP);
}
无效总数()
{
文件* fp
int m=0;
if((fp=fopen('data ',' ab '==NULL)
{
printf('无法打开\ n ');
返回;
}
while(!feof(fp))
if(fread(stu[m],LEN,1,FP)=1)
m;/*统计记录个数即学生个数*/
if(m==0)
{
printf('没有记录!\ n ');
fc输(FP);
返回;
}
printf('该班有%d名学生!\n ',m);/*将统计的个数输出*/
fc输(FP);
}