first commit

master
杨兰仕 6 years ago
commit 7554b84594

@ -0,0 +1,6 @@
1 li 89.0
2 wang 65.0
3 chen 63.0
4 song 81.0
5 hu 100.0
6 lan 59.0

@ -0,0 +1,7 @@
typedef struct //½á¹¹Ìå
{
int no;
char name[30];
float cscore;
}Student;

Binary file not shown.

@ -0,0 +1,311 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct //
{
double no;
char name[30];
float cscore;
}Student;
FILE *fp;
int i=0;
Student s[50];
void input(); /*输入记录*/
void output(); /*输出记录*/
void modify(); /*修改记录*/
void lookat(); /*学生信息查询*/
void section(); /*学生成绩分段*/
void rank(); /*成绩的排序*/
int fun(); /*目录函数*/
void choose(int n); /*目录的选项*/
int main(void) /*主函数*/
{
int n;
system("cls");
n=fun();
choose(n);
}
int fun() //目录函数
{
int n;
system("cls");
printf("\n\n\t\t\t\t 成绩记录薄");
printf("\n\n\t\t\t");
for(int i=0;i<33;i++)
printf("*");
printf("\n");
printf("\t\t\t ************菜单*************\n");
printf("\t\t\t* 1、创建学生的信息 \t*\n");
printf("\t\t\t* 2、输出所有学生的信息 \t*\n");
printf("\t\t\t* 3、修改成绩 \t*\n");
printf("\t\t\t* 4、查询 \t*\n");
printf("\t\t\t* 5、显示成绩分段的学生信息\t*\n");
printf("\t\t\t* 6、学生成绩排名 \t*\n");
printf("\t\t\t* 7、退出成绩记录薄 \t*\n");
printf("\t\t\t ****设计者:杨兰仕 胡玉凤****\n");
printf("\t\t\t");
for(int i=0;i<33;i++)
printf("*");
printf("\n\n");
printf("\n\t\t\t 请输入选项:");
scanf("%d",&n);
return n;
}
void input() //成绩输入
{
Student s[50];
system("cls");
int i=0;
FILE *fp;
fp=fopen("a.txt","a");
printf("请以0作为输入学生学号信息的结束\n");
do
{
printf("输入学生的学号:");
scanf("%lf",&s[i].no);
printf("输入学生的姓名:");
scanf("%s",s[i].name);
printf("输入学生的C语言成绩");
scanf("%f",&s[i].cscore);
if(s[i].no!=0)
fprintf(fp,"%.0lf %-4s %.1f\n",s[i].no,s[i].name,s[i].cscore);
}while(s[i].no!=0);
fclose(fp);
}
void output() //成绩输出
{
if((fp=fopen("a.txt","r"))==NULL)
{
printf("Cannot open the file!\n");
}
printf("\t\t\t全部的学生信息:\n");
int k=0;
while(fscanf(fp,"%lf%s%f",&s[k].no,s[k].name,&s[k].cscore)!=EOF)
{
printf("\t\t\t%.0lf\t%s\t%.1f\n",s[k].no,s[k].name,s[k].cscore);
k++;
}
fclose(fp);
}
void modify() //成绩修改
{
char st[30];
double x,num;
float nu;
int k=0;
system("cls");
if((fp=fopen("a.txt","r"))==NULL)
{
printf("Cannot open the file!\n");
return;
}
while(fscanf(fp,"%lf%s%f",&s[k].no,s[k].name,&s[k].cscore)!=EOF)
{
k++;
}
fclose(fp);
printf("输入1表示用学号修改输入2表示用姓名修改请选择\n");
scanf("%lf",&x);
if(x==1)
{
printf("请输入修改成绩人的学号:");
scanf("%lf",&num);
for(int i=0;i<k;i++)
if(num==s[i].no)
{
printf("请输入修改的成绩:\n");
scanf("%f",&nu);
s[i].cscore=nu;
fp=fopen("a.txt","w");
for(i=0;i<k;i++)
fprintf(fp,"%.0lf %s %.1f\n",s[i].no,s[i].name,s[i].cscore);
fclose(fp);
printf("修改成功\n");
return;
}
printf("没有找到该生的信息!\n");
return;
}
if(x==2)
{
printf("请输入修改成绩人的姓名:");
scanf("%s",st);
for(int i=0;i<k;i++)
if(strcmp(s[i].name,st)==0)
{
printf("请输入修改的成绩:\n");
scanf("%f",&nu);
s[i].cscore=nu;
fp=fopen("a.txt","w");
for(i=0;i<k;i++)
fprintf(fp,"%.0lf %s %.1f\n",s[i].no,s[i].name,s[i].cscore);
fclose(fp);
printf("修改成功\n");
return;
}
printf("没有找到该生的信息!\n");
return;
}
}
void lookat() //成绩查询
{
char st[30];
double x,num;
int k=0;
system("cls");
if((fp=fopen("a.txt","r"))==NULL)
{
printf("Cannot open the file!\n");
return;
}
while(fscanf(fp,"%lf%s%fd",&s[k].no,s[k].name,&s[k].cscore)!=EOF)
{
k++;
}
printf("输入1表示用学号查询输入2表示用姓名查询请选择\n");
scanf("%lf",&x);
if(x==1)
{
printf("请输入查询的学号:");
scanf("%lf",&num);
for(i=0;i<k;i++)
if(num==s[i].no)
{
printf("%.0lf %s %.1f\n",s[i].no,s[i].name,s[i].cscore);
return;
}
printf("对不起,找不到该生!\n");
return;
}
if(x==2)
{printf("请输入查询的姓名:");
scanf("%s",st);
for(i=0;i<k;i++)
if(strcmp(s[i].name,st)==0)
{
printf("%.0lf %s %.1f\n",s[i].no,s[i].name,s[i].cscore);
return;
}
printf("对不起,找不到该生!\n");
}
}
void section() //学生成绩分段
{
system("cls");
int k=0;
double c;
if((fp=fopen("a.txt","r"))==NULL)
{
printf("Cannot open the file!\n");
}
while(fscanf(fp,"%lf%s%f",&s[k].no,s[k].name,&s[k].cscore)!=EOF)
{
k++;
}
printf("\t\t\t 90分以上学生的信息!\n");
for(i=0;i<k;i++)
if(s[i].cscore>=90)
printf("\t\t\t%.0lf %s %.1f\n",s[i].no,s[i].name,s[i].cscore);
printf("\n\n");
printf("\t\t\t 80到89分学生的信息!\n");
for(i=0;i<k;i++)
if(s[i].cscore<90&&s[i].cscore>=80)
printf("\t\t\t%.0lf %s %.1f\n",s[i].no,s[i].name,s[i].cscore);
printf("\n\n");
printf("\t\t\t 60到79分学生的信息!\n");
for(i=0;i<k;i++)
if(s[i].cscore>=60&&s[i].cscore<80)
printf("\t\t\t%.0lf %s %.1f\n",s[i].no,s[i].name,s[i].cscore);
printf("\n\n");
printf("\t\t\t 60分以下学生的信息!\n");
for(i=0;i<k;i++)
if(s[i].cscore<60)
printf("\t\t\t%.0lf %s %.1f\n",s[i].no,s[i].name,s[i].cscore);
printf("\n\n");
}
void rank() //成绩的排序
{
Student t;
int k=0;
double sum=0,j=0;
system("cls");
if((fp=fopen("a.txt","r"))==NULL)
{
printf("Cannot open the file!\n");
}
while(fscanf(fp,"%lf%s%f",&s[k].no,s[k].name,&s[k].cscore)!=EOF)
{
k++;
}
for(i=0;i<k;i++)
for(int j=i+1;j<k+1;j++)
if(s[i].cscore<s[j].cscore)
{t=s[i];s[i]=s[j];s[j]=t;}
for(i=0;i<k;i++)
{
if(s[i].cscore>=60)
j++;
}
for(i=0;i<k;i++)
sum=sum+s[i].cscore;
for(i=0;i<k;i++)
printf("\t\t\t第%d名:%.0lf %-4s %.1f\n",i+1,s[i].no,s[i].name,s[i].cscore);
printf("\t\t\t最高分:%.1lf\n",s[0].cscore);
printf("\t\t\t最低分:%.1lf\n",s[k-1].cscore);
printf("\t\t\t及格率:%.2lf\n",j/k);
printf("\t\t\t平均分:%.2lf\n",sum/k);
}
void choose(int n) //目录的选项
{
system("cls");
int y;
switch(n)
{
case 1:input();
printf("\n\n\n\n\t\t\t是否返回输入1表返回输入2表退出\n");
scanf("%d",&y);
if(y==1)
choose(fun());break;
case 2:output();
printf("\n\n\n\n\t\t\t是否返回输入1表返回输入2表退出\n");
scanf("%d",&y);
if(y==1)
choose(fun());break;
case 3:modify();
printf("\n\n\n\n\t\t\t是否返回输入1表返回输入2表退出\n");
scanf("%d",&y);
if(y==1)
choose(fun());break;
case 4:lookat();
printf("\n\n\n\n\t\t\t是否返回输入1表返回输入2表退出\n");
scanf("%d",&y);
if(y==1)
choose(fun());break;
case 5:section();
printf("\n\n\n\n\t\t\t是否返回输入1表返回输入2表退出\n");
scanf("%d",&y);
if(y==1)
choose(fun());break;
case 6:rank();
printf("\n\n\n\n\t\t\t是否返回输入1表返回输入2表退出\n");
scanf("%d",&y);
if(y==1)
choose(fun());break;
case 7:exit(0);break;
default:printf("\n\n\t\t\t 输入没有的选项,请重新输入!\n");
choose(fun());
}
}

Binary file not shown.
Loading…
Cancel
Save