C语言编写的学生成绩管理程序
来源:互联网 发布:淘宝销量最多的产品 编辑:程序博客网 时间:2024/04/27 10:49
分享一下自己用C语言写的成绩管理的程序,刚学C语言一个学期,很多东西用的还不是太好,写的也不是特别的完美!
成绩管理程序头文件“cj.h”:
#include"stdio.h"
#include"stdlib.h"
struct Student
{ char name[20];
int no;
int math;
int c;
int english;
}stu[130];
#define N sizeof(struct Student)
void save(int n) //写入学生信息到stud.dat文件中的函数
{
int i;
FILE *fp;
if((fp=fopen("D:\\11\\stud.dat","ab+"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
for(i=0;i<n;i++)
{
if(fwrite(&stu[i],N,1,fp)!=1)
printf("输入有误\n");
}
fclose(fp);
}
void readcj(int m,char *stuname[130],int stuno[],int stumath[],
int stuenglish[],int stuc[]) //读stud.dat文件中学生信息的函数
{
int i;
FILE *fp;
if((fp=fopen("D:\\11\\stud.dat","ab+"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
for(i=0;i<m;i++)
{
fread(&stu[i],N,1,fp);
stuname[i]=stu[i].name;
stuno[i]=stu[i].no;
stumath[i]=stu[i].math;
stuenglish[i]=stu[i].english;
stuc[i]=stu[i].c;
}
fclose(fp);
}
void genggai(int n)
{
printf("请重新输入该学生的全部信息\n");
printf("姓名 学号 高数 C语言 英语\n");
scanf("%s%d%d%d%d",stu[n].name,&stu[n].no,&stu[n].math,
&stu[n].c,&stu[n].english);
FILE *fp;
if((fp=fopen("D:\\11\\stud.dat","rb+"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
fseek(fp,n*N,0);
if(fwrite(&stu[n],N,1,fp)!=1)
printf("输入有误\n");
fclose(fp);
}
int rsj() //读stud.dat文件中包含学生信息个数
{
int m;
FILE *fp;
if((fp=fopen("D:\\11\\sj.dat","rb"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
fread(&m,sizeof(int),1,fp);
fclose(fp);
return m;
}
int mi() //读密码是多少
{
int mima;
FILE *fp;
if((fp=fopen("D:\\11\\mima.dat","rb"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
fread(&mima,sizeof(int),1,fp);
fclose(fp);
return mima;
}
void wsj(int n,int m) //写学生信息个数
{
int sum;
sum=n+m;
FILE* fp;
if((fp=fopen("D:\\11\\sj.dat","wb"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
if(fwrite(&sum,sizeof(int),1,fp)!=1)
printf("数据有误\n");
fclose(fp);
}
void mi(int mima) // 写入新密码
{
FILE *fp;
if((fp=fopen("D:\\11\\mima.dat","wb"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
if(fwrite(&mima,sizeof(int),1,fp)!=1)
printf("数据有误\n");
fclose(fp);
}
void abc(int m,int a[]) //学生abcde个数统计和求及格率的函数
{
int i,n,num1=0,num2=0,num3=0,num4=0,num5=0;
char zf=37;
float jg,sum;
for(i=0;i<m;i++)
{
if(a[i]>100&&a[i]<0)
{
printf("数据有误");
exit(0);
}
else
{
n=a[i]/10;
if(n==9) num1++;
else if(n==10) num1++;
else if(n==8) num2++;
else if(n==7) num3++;
else if(n==6) num4++;
else num5++;
}
}
sum=num1+num2+num3+num4;
jg=(sum/m)*100;
printf("得A的总人数为%d\n",num1);
printf("得B的总人数为%d\n",num2);
printf("得C的总人数为%d\n",num3);
printf("得D的总人数为%d\n",num4);
printf("得E的总人数为%d\n",num5);
printf("及格率为%4.2f%c\n",jg,zf);
}
void px(int m,int n,char *a[],int b[],int c[],int k)
{
int i,j,temp;
char *d;
for(i=0;i<m;i++)
for(j=0;j<m-i;j++)
{
if(c[j]<c[j+1])
{
temp=c[j];
c[j]=c[j+1];
c[j+1]=temp;
d=a[j];
a[j]=a[j+1];
a[j+1]=d;
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
}
if(k==1)
{
printf("________________________________________________________\n");
printf("姓名 学号 高数\n");
for(i=0;i<n;i++)
printf("%-20s%-10d%-10d%\n",a[i],b[i],c[i]);
}
if(k==2)
{
printf("________________________________________________________\n");
printf("姓名 学号 C语言\n");
for(i=0;i<n;i++)
printf("%-20s%-10d%-10d%\n",a[i],b[i],c[i]);
}
if(k==3)
{
printf("________________________________________________________\n");
printf("姓名 学号 英语\n");
for(i=0;i<n;i++)
printf("%-20s%-10d%-10d%\n",a[i],b[i],c[i]);
}
if(k==4)
{
printf("________________________________________________________\n");
printf("姓名 学号 总分\n");
for(i=0;i<n;i++)
printf("%-20s%-10d%-10d%\n",a[i],b[i],c[i]);
}
printf("________________________________________________________\n");
}
成绩管理的主函数:
#include"cj.h"
void main()
{
int n,i,k,mima,stuno[130],stumath[130],
stuenglish[130],stuc[130];
char *stuname[130];
mima=mi();
aa:{
printf(" ***********************************\n");
printf(" * 1.教师版 *\n");
printf(" * 2.学生版 *\n");
printf(" ***********************************\n");
}
scanf("%d",&k);
//******************************************************************************教师版
if(k==1)
{
k=0;
bb: printf("请输入密码\n");
scanf("%d",&k);
if(mima==k)
{
k=0;
cc: { system("cls");
printf(" **************************教师版************************* \n");
printf(" * 1.查看 * \n");
printf(" * 2.编辑 * \n");
printf(" * 3.修改密码 * \n");
printf(" ********************************************************* \n");
}
scanf("%d",&k);
if(k==1) //教师查看区
{
int m;
m=rsj();
readcj(m,stuname,stuno,stumath,stuenglish,stuc);
hh: {
system("cls");
printf(" **************************教师版查看区************************* \n");
printf(" * 1.查看每个人的成绩 * \n");
printf(" * 2.查看abcde各阶段人数 * \n");
printf(" * 3.查看排名情况 * \n");
printf(" *************************************************************** \n");
}
scanf("%d",&k);
if(k==1)
{
system("cls");
printf("_________________________________教师版查看区_______________________________\n");
printf("________________________________________________________\n");
printf("姓名 学号 高数 C语言 英语\n");
for(i=0;i<m;i++)
{
printf("________________________________________________________\n");
printf("%-20s%-10d%-10d%-10d%-10d\n",stuname[i],stuno[i],stumath[i],stuc[i],stuenglish[i]);
}
printf("________________________________________________________\n");
}
else if(k==2)
{
system("cls");
printf("__________________________________教师版查看区________________________________\n");
printf("________________________________________________________\n");
printf("高数成绩状况\n");
printf("________________________________________________________\n");
abc(m,stumath);
printf("________________________________________________________\n");
printf("C语言成绩状况\n");
printf("________________________________________________________\n");
abc(m,stuc);
printf("________________________________________________________\n");
printf("英语成绩状况\n");
printf("________________________________________________________\n");
abc(m,stuenglish);
}
else if(k==3)
{
system("cls");
printf("________________________________教师版排名区____________________________\n");
int m;
m=rsj();
readcj(m,stuname,stuno,stumath,stuenglish,stuc);
k=0;
kk: { system("cls");
printf(" **************************教师版排名区********************** \n");
printf(" * 1.高数排名 * \n");
printf(" * 2.C语言排名 * \n");
printf(" * 3.英语排名 * \n");
printf(" * 4.总分排名 * \n");
printf(" ************************************************************ \n");
}
scanf("%d",&k);
printf("请输入查看前几名的成绩\n");
scanf("%d",&n);
if(n>m)
printf("文件中只有%d个人的成绩\n",m);
else
{
if(k==1)
px(m,n,stuname,stuno,stumath,k);
else if(k==2)
px(m,n,stuname,stuno,stuc,k);
else if(k==3)
px(m,n,stuname,stuno,stuenglish,k);
else if(k==4)
{
int stuzf[130];
for(i=0;i<m;i++)
stuzf[i]=stumath[i]+stuenglish[i]+stuc[i];
px(m,n,stuname,stuno,stuzf,k);
}
else
{
printf("选择有误,请重新选择\n");
goto kk;
}
}
}
else
{
printf("选择错误,请重新选择\n");
goto hh;
}
ff: {
printf(" ****************************************\n");
printf(" * 1.返回上一级 *\n");
printf(" * 2.返回主菜单 *\n");
printf(" * 关闭请点右上方的“X” *\n");
printf(" ****************************************\n");
}
k=0;
scanf("%d",&k);
if(k==1) //返回教师版主菜单
goto hh;
else if(k==2)
goto cc;
else
{
printf("选择错误,请重新选择\n");
goto ff;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
else if(k==2) //教师编辑区
{
system("cls");
printf(" ************************教师版编辑区************************** \n");
printf(" * 1.增加学生信息 * \n");
printf(" * 2.更改某同学的信息 * \n");
printf(" ************************************************************** \n");
scanf("%d",&k);
if(k==1)
{
int m;
printf("请输入需要输入学生的人数\n");
scanf("%d",&n);
m=rsj();
wsj(n,m);
printf("请输入学生信息\n");
printf("姓名 学号 高数 C语言 英语\n");
for(i=0;i<n;i++)
scanf("%s%d%d%d%d",stu[i].name,&stu[i].no,&stu[i].math,
&stu[i].c,&stu[i].english);
save(n);
}
if(k==2)
{
int xh,m,temp;
ii:printf("请输入修改学生的学号\n");
scanf("%d",&xh);
m=rsj();
temp=xh-1001;
if((temp+1)>m)
{
printf("学号输入有误,请重新输入\n");
goto ii;
}
else
{
readcj(m,stuname,stuno,stumath,stuenglish,stuc);
printf("你确定对以下人的信息进行修改吗?确定请选1,取消请选2\n");
printf("________________________________________________________\n");
printf("姓名 学号 高数 C语言 英语\n");
printf("%-20s%-10d%-10d%-10d%-10d\n",stuname[temp],stuno[temp],stumath[temp],stuc[temp],stuenglish[temp]);
printf("________________________________________________________\n");
printf("你确定对以上人的信息进行修改吗?确定请选1,取消请选2\n");
scanf("%d",&k);
if(k==1)
genggai(temp);
}
/////////////////////////////////////////////////////////////////////////////////////////////////
}
dd: {
printf(" ***********************************\n");
printf(" * 1.返回上一级 *\n");
printf(" * 关闭请点右上方的“X” *\n");
printf(" ***********************************\n");
}
k=0;
scanf("%d",&k);
if(k==1) //返回主菜单
goto cc;
else
{
printf("选择错误,请重新选择\n");
goto dd;
}
}
else if(k==3) //教师密码修改区
{
system("cls");
printf("_______________________________教师版修改密码区_____________________________\n");
k=0;
printf("请输入原密码\n");
scanf("%d",&k);
if(k==mima)
{
int mima1,mima2;
gg: printf("请输入新密码\n");
scanf("%d",&mima1);
printf("请再次输入密码\n");
scanf("%d",&mima2);
if(mima1==mima2)
{
mi(mima1);
printf("设置完成");
}
else
{
printf("两个密码不一致,请重新设置");
goto gg;
}
}
}
else
{
printf("抱歉没有这一选项,请重新选择\n");
goto cc;
}
}
else
{
printf("密码错误,请重新输入");
goto bb;
}
}
//*****************************************************************************学生查看区
else if(k==2) //学生查看区
{
system("cls");
printf("______________________________学生版查看区____________________________\n");
int xh,m;
printf("请输入你的学号\n");
scanf("%d",&xh);
m=rsj();
readcj(m,stuname,stuno,stumath,stuenglish,stuc);
for(i=0;i<m;i++)
{
if(xh==stuno[i])
{
printf("________________________________________________________\n");
printf("姓名 学号 高数 C语言 英语\n");
printf("%-20s%-10d%-10d%-10d%-10d\n",stuname[i],stuno[i],stumath[i],stuc[i],stuenglish[i]);
printf("________________________________________________________\n");
}
}
}
else
{
printf("抱歉,没有这一选项,请重新选择");
goto aa;
}
}
- C语言编写的学生成绩管理程序
- C语言完成一个学生成绩管理程序
- C语言课程设计报告-------学生成绩简单管理程序
- 基于C语言单链表的成绩管理程序
- 小的库存管理程序 C语言编写
- 一个简单的学生成绩管理程序
- 一个学生成绩管理程序
- 学生成绩管理程序
- 学生成绩管理程序
- 基于C语言的学生成绩处理
- 一个简单的学生成绩管理程序(二叉树实现)
- [C语言]学生成绩管理
- C语言习题5.21--学生成绩的处理
- 【C语言】学生成绩链表的录入
- C语言OJ项目参考(2969)学生成绩的处理
- C语言 链表 求某班20名学生的最高成绩
- 【c语言】条形图星号打印学生成绩的方法
- java IO 集合 学生成绩管理程序
- HDU4706
- 2014 阅读书籍
- HDU4708
- hdu 1160(最小生成树)
- 程序员没有天才:暴风影音首席架构师鲍金龙访谈
- C语言编写的学生成绩管理程序
- HDU4716
- js 与或运算符 || && 妙用
- 浅谈SEO网站优化用户体验的提升
- Linux Qt下Qstring转string 中文路径文件乱码
- htonl,htons 和 ntohs相关问题
- HDU4727
- ActionsTest框架 阅读笔记
- HDU4772