学生成绩程序流程图
㈠ 急求学生成绩统计程序的流程图,代码如下
save和display的没有看。
不知道是不是这样。
㈡ 跪求面向对象程序设计c++大作业:完成一个学生成绩管理系统。内容包括1问题描述2类体系设计和程序流程图3
这是我电脑里的一个程序
可能跟你的不是完全符合,但是毕竟很相似了,因为解决问题的方法是一致的
你自己修改一下,如果还有任何问题,m我
#include<iostream>
#include<string> //控制字符串的头文件
using namespace std;
class tong //建立同学录的一个类
{
public:
tong(); //构造函数
tong(char n[20],char se,int ag,int te,int qq);
~tong();
void Set();//添加
void Delete();//删除
void Alter();//修改
void List();//显示
void RearchN();
void RearchT();
void RearchQ();
private:
char name[20];
int age,telphone,QQ;
char sex;
};
tong::tong()//构造函数
{
strcpy(name, "");
sex='M';
age=0;
telphone=0;
QQ=0;
}
tong::tong(char n[20],char se,int ag,int te,int qq)
{
strcpy(name, n);
sex=se;
age=ag;
telphone=te;
QQ=qq;
}
tong::~tong(){}
tong*s[50];int i=0;int j=0;
char name[20];int age,telphone,QQ;char sex;
void tong::Set()
{
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入性别:"<<endl;
cin>>sex;
cout<<"请输入年龄:"<<endl;
cin>>age;
cout<<"电话号码:"<<endl;
cin>>telphone;
cout<<"QQ号码:"<<endl;
cin>>QQ;
j++;
s[i]=new tong(name,sex,age,telphone,QQ);
i++;
}
void tong:: Delete() //(2)删除人员(Delete)
{
cout<<"请输入您要删除的学生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
i--;
s[h]=s[h+1];
h++;
}
else cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
}
}
void tong::Alter() //(3)修改数据(Alter)
{
cout<<"请输入您要修改的学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
char se;int ag,qq,te;
cout<<"请输入性别:"<<endl;
cin>>se;
cout<<"请输入年龄:"<<endl;
cin>>ag;
cout<<"电话号码:"<<endl;
cin>>te;
cout<<"QQ号码:"<<endl;
cin>>qq;
s[h]->sex=se;
s[h]->age=ag;
s[h]->telphone=te;
s[h]->QQ=qq;
cout<<"数据修改成功!";
break;
}
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
//else cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl;
}
}
void tong::List() //(4)显示记录(List)
{
cout<<"本系统所有通讯录的数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
cout<<"姓名:"<<s[k]->name<<" "<<
"性别:"<<s[k]->sex<<" "<<"年龄:"<<s[k]->age
<<" "<<"电话号码:"<<s[k]->telphone<<" "<<"QQ号码:"
<<s[k]->QQ<<endl;
}
}
void tong::RearchN()
{
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>name;
for(int j=0;j<i;j++)
{
if(strcmp(name,s[j]->name)==0)
{
cout<<"您要查询的学生是:"<<s[j]->name<<endl;
cout<<"性别: "<<s[j]->sex<<" "<<"年龄: "<<s[j]->age<<" "<<"电话号码:"<<s[j]->telphone
<<" "<<"QQ号码:"<<s[j]->QQ<<endl;
break;
}
// else
// cout<<"对不起!您要查询的学生不存在!"<<endl;
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
}
}
void tong::RearchT()
{
int n;
if(i==0)
cout<<"管理系统中没有输入数据!"<<endl;
cout<<"请输入你要查询的学生的电话"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(s[j]->telphone==n)
{
cout<<"您要查询的学生是:"<<s[j]->name<<endl;
cout<<" 性别: "<<s[j]->sex<<" "<<"年龄: "<<s[j]->age<<" "<<"电话号码:"<<s[j]->telphone
<<" "<<"QQ号码:"<<s[j]->QQ<<endl;
break;
}
//else cout<<"对不起!您要查询的学生不存在!"<<endl;
}
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
}
void tong::RearchQ()
{
int n;
if(i==0)
cout<<"管理系统中没有输入数据!"<<endl;
cout<<"请输入你要查询的学生的QQ"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(s[j]->QQ==n)
{
cout<<"您要查询的学生是:"<<s[j]->name<<endl;
cout<<" 性别: "<<s[j]->sex<<" "<<"年龄: "<<s[j]->age<<" "<<"电话号码:"<<s[j]->telphone<<" "<<"QQ号码:"<<s[j]->QQ<<endl;
break;
}
// else
// cout<<"对不起!您要查询的学生不存在!"<<endl;
}
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
}
void caozuo(int p)
{
tong t;
switch(p)
{
case 0:t.Set();break;
case 1:t.Set();break;
case 2:t.Delete();break;
case 3:t.Alter();break;
case 4:t.List();break;
case 5:t.RearchN();break;
case 6:t.RearchT();break;
case 7:t.RearchQ();break;
case 8:exit(0);break;
}
}
int main()
{
char w;
do
{
cout<<"请输入操作代码(0 通讯录录入/1 增加人员/2 删除人员/3 修改数据/4 显示记录/ 5 按姓名查询/6 按电话查询/7 按QQ查询/8 退出)"<<endl;
int a;
cin>>a;
caozuo(a);
cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
cin>>w;
}while(w=='y');
return 0;
} //利用while语句又回到了前面的循环
㈢ C++编程学生成绩管理程序最重要的是流程图
我大一的课程设计是C语言的 学生学籍管理系统 显示格式不太好 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
int i,j,k,h,N;
char id,password;
FILE *fp;
struct student
{
char name[6];
int number;
char institute[10];
int birthday;
char classes[10];
int tel;
char sex[5];
char address[10];
float score0;
float score1;
float score2;
}student[30],temp,temp1;
void readin();//初始化
void pass();//身份验证
void newpass();
void delwork();//删除
void putin();//添加
void rework();//修改
void compositor();//排序
void compositor0();
void compositor1();
void compositor2();
void average();//平均值
//void star();//分数统计
void sortbycmark();
void sortbygmark();
void sortbyymark();
void read();//打印数据
void search();//数据查询
void search1();//按学号查询
void search2();//按姓名查询
void main()
{
pass();
int a;
do
{
printf(" **************************************************************\n");
printf(" * 学生学籍管理系统 *\n");
printf(" * *\n");
printf(" * 1-----------数据初始化 2-----------数据修改 *\n");
printf(" * *\n");
printf(" * 3-----------数据删除 4-----------添加数据 *\n");
printf(" * *\n");
printf(" * 5-----------计算平均值 6-----------打印数据 *\n");
printf(" * *\n");
printf(" * 7-----------数据排序 8-----------数据查询 *\n");
printf(" * *\n");
printf(" * ☆★☆★☆★☆★☆★ 0-----------保存退出 *\n");
printf(" * *\n");
printf(" * *\n");
printf(" * 按数字键选择相应程序 *\n");
printf(" **************************************************************\n");
printf("Choose a number please:\n");
scanf("%d",&a);
switch(a)
{
case 1:readin();break;
case 2:rework();break;
case 3:delwork();break;
case 4:putin();break;
case 5:average();break;
case 6:read();break;
case 7:compositor();break;
case 8:search();break;
case 0:printf("您可以安全的退出了!\n");exit(0);break;
};
}while(1);
}
void pass()
{
int a,b;
id=123,password=123;
printf("Input your id please:\n");
scanf("%d",&a);
if(a==id)
{
printf("Input your password please:\n");
scanf("%d",&b);
if(b==password)
printf("Welcome!\n");
else
{
printf("You have input a wrong password!\n");
printf("Input your password please:\n");
scanf("%d",&b);
if(b==password)printf("Welcome\n");
else exit(0);
}
}
else
{
printf("You have input a wrong id!\n");
printf("Input your id please:\n");
scanf("%d",&a);
if(a==id)
{
printf("Input your password please:\n");
scanf("%d",&b);
if(b==password)printf("Welcome!\n");
else
{
printf("You have input a wrong password!\n");
printf("Input your password please:\n");
scanf("%d",&b);
if(b==password)printf("Welcome\n");
else exit(0);
}
}
else exit(0);
}
}
void readin()
{
FILE *fp;
char a;
printf("初始化将会使您丢失原有数据,是(y)否(n)继续?");
scanf("%s",&a);
while(a!='n')
{
if((fp=fopen("c://work.txt","w"))==NULL)
{
printf("Can't open this fill!");
exit(0);
}
printf("请输入您要初始化的学生总数:\n");
scanf("%d",&h);
fprintf(fp,"%d",h);
fprintf(fp,"\n");
printf("请输入姓名 学号 学院 班级 生日 性别 电话 住址 c语言成绩 高数成绩 英语成绩:\n");
for(i=0;i<h;i++)
{
fscanf(stdin,"%s%d%s%s%d%s%d%s%f%f%f",student[i].name,&student[i].number,student[i].institute,student[i].classes,&student[i].birthday,student[i].sex,&student[i].tel,student[i].address,&student[i].score0,&student[i].score1,&student[i].score2);
fprintf(fp,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
}
fclose(fp);
break;
}
}
void search()
{
int a;
printf("1----按学号查询 2----按姓名查询\n");
scanf("%d",&a);
switch(a)
{
case 1:search1();break;
case 2:search2();break;
}
}
void search1()//按学号查询
{
int a,b=0;
printf("请输入学生学号:\n");
scanf("%d",&a);
if((fp=fopen("c://work.txt","r"))==NULL)
{
printf("Can't open this fill!");
exit(0);
}
fscanf(fp,"%d",&N);
for(i=0;i<N;i++)
fscanf(fp,"%s%d%s%s%d%s%d%s%f%f%f",student[i].name,&student[i].number,student[i].institute,student[i].classes,&student[i].birthday,student[i].sex,&student[i].tel,student[i].address,&student[i].score0,&student[i].score1,&student[i].score2);
for(i=0;i<N;i++)
if(a==student[i].number)
{
b=1;
fprintf(stdout,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
fclose(fp);
break;
}
if(b=0)
{
printf("输入学号错误,请重新输入。");
printf("请输入学生学号:");
scanf("%d",&a);
for(i=0;i<N;i++)
if(a==student[i].number)
{
fprintf(stdout,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
fclose(fp);
}
}
}
void search2()//按姓名查询
{
int b=0;
char a[4];
printf("请输入学生姓名:\n");
scanf("%s",&a);
if((fp=fopen("c://work.txt","r"))==NULL)
{
printf("Can't open this fill!");
exit(0);
}
fscanf(fp,"%d",&N);
for(i=0;i<N;i++)
fscanf(fp,"%s%d%s%s%d%s%d%s%f%f%f",student[i].name,&student[i].number,student[i].institute,student[i].classes,&student[i].birthday,student[i].sex,&student[i].tel,student[i].address,&student[i].score0,&student[i].score1,&student[i].score2);
for(i=0;i<N;i++)
if(strcmp(a,student[i].name)==0)
{
fprintf(stdout,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
fclose(fp);
b=1;
break;
}
if(b=0)
{
printf("查无此人,请重新输入。");
printf("请输入学生姓名:");
scanf("%d",&a);
for(i=0;i<N;i++)
if(strcmp(a,student[i].name)==0)
{
fprintf(stdout,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
fclose(fp);
}
}
}
void read()
{
char ch;
if((fp=fopen("c://work.txt","r"))==NULL)
{
printf("Can't open this file!\n");
exit(0);
}
fscanf(fp,"%d",&N);
printf("学生总数为%d\n",N);
while((ch=fgetc(fp))!=EOF)
{
fputc(ch,stdout);
}
putchar('\n');
fclose(fp);
}
void putin()
{
FILE *fp;
if((fp=fopen("c://work.txt","r+"))==NULL)
{
printf("Can't open this fill!");
exit(0);
}
fscanf(fp,"%d",&N);
printf("请输入您要添加的学生总数:\n");
scanf("%d",&k);
N+=k;
rewind(fp);
fprintf(fp,"%d",N);
fclose(fp);
if((fp=fopen("c://work.txt","a"))==NULL)
{
printf("Can't open this fill!");
exit(0);
}
printf("请输入姓名 学号 学院 班级 生日 性别 电话 住址 英语成绩 高数成绩 c语言成绩:\n");
for(i=0;i<k;i++)
{
fscanf(stdin,"%s%d%s%s%d%s%d%s%f%f%f",student[i].name,&student[i].number,student[i].institute,student[i].classes,&student[i].birthday,student[i].sex,&student[i].tel,student[i].address,&student[i].score0,&student[i].score1,&student[i].score2);
fprintf(fp,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
}
fclose(fp);
}
void rework()
{
int a;
printf("请输入您要修改的学生学号:\n");
scanf("%d",&a);
if((fp=fopen("c://work.txt","r"))==NULL)
{
printf("Can't open this fill!");
exit(0);
}
fscanf(fp,"%d",&N);
for(i=0;i<N;i++)
fscanf(fp,"%s%d%s%s%d%s%d%s%f%f%f",student[i].name,&student[i].number,student[i].institute,student[i].classes,&student[i].birthday,student[i].sex,&student[i].tel,student[i].address,&student[i].score0,&student[i].score1,&student[i].score2);
fclose(fp);
for(i=0;i<N;i++)
{
if(a==student[i].number)
{
j=i;
printf("该生的信息为:\n");
fprintf(stdout,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
printf("输入新的姓名 学号 学院 班级 生日 性别 电话 住址 c语言成绩 高数成绩 英语成绩:\n");
fscanf(stdin,"%s%d%s%s%d%s%d%s%f%f%f",temp.name,&temp.number,temp.institute,temp.classes,&temp.birthday,temp.sex,&temp.tel,temp.address,&temp.score0,&temp.score1,&temp.score2);
break;
}
}
student[j]=temp;
fp=fopen("c://work.txt","w");
fprintf(fp,"%d",N);
fprintf(fp,"\n");
for(i=0;i<N;i++)
fprintf(fp,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
fclose(fp);
}
void delwork()
{
int a;
char b;
printf("请输入您要删除的学生学号:\n");
scanf("%d",&a);
if((fp=fopen("c://work.txt","r"))==NULL)
{
printf("Can't open this fill!");
exit(0);
}
fscanf(fp,"%d",&N);
for(i=0;i<N;i++)
fscanf(fp,"%s%d%s%s%d%s%d%s%f%f%f",student[i].name,&student[i].number,student[i].institute,student[i].classes,&student[i].birthday,student[i].sex,&student[i].tel,student[i].address,&student[i].score0,&student[i].score1,&student[i].score2);
fclose(fp);
for(i=0;i<N;i++)
{
if(a==student[i].number)
{
j=i;
printf("该生的信息为:\n");
fprintf(stdout,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
printf("删除数据将无法找回,是(y)否(n)继续?");
scanf("%s",&b);
while(b!='n')
{
for(;j<N;j++)
student[j]=student[j+1];
N--;
fp=fopen("c://work.txt","w");
fprintf(fp,"%d",N);
fprintf(fp,"\n");
for(i=0;i<N;i++)
fprintf(fp,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
fclose(fp);
printf("删除成功!\n");
break;
}
}
}
}
void average()
{
float s;
printf("请输入要计算平均值的学生学号:");
scanf("%d",&j);
if((fp=fopen("c://work.txt","r"))==NULL)
{
printf("Can't open this fill!");
exit(0);
}
fscanf(fp,"%d",&N);
for(i=0;i<N;i++)
fscanf(fp,"%s%d%s%s%d%s%d%s%f%f%f",student[i].name,&student[i].number,student[i].institute,student[i].classes,&student[i].birthday,student[i].sex,&student[i].tel,student[i].address,&student[i].score0,&student[i].score1,&student[i].score2);
for(i=0;i<N;i++)
{
if(j==student[i].number)
s=student[i].score0+student[i].score1+student[i].score2;
s/=3;
printf("%s同学三科的平均成绩为%3.1f\n",student[i].name,s);
break;
}
}
void compositor0()
{
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
if(student[i].score0<student[j].score0)
{
temp=student[i];
student[i]=student[j];
student[j]=temp;
}
for(i=0;i<N;i++)
fprintf(stdout,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
break;
}
}
void compositor1()
{
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
if(student[i].score1<student[j].score1)
{
temp=student[i];
student[i]=student[j];
student[j]=temp;
}
for(i=0;i<N;i++)
fprintf(stdout,"%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
break;
}
}
void compositor2()
{
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
if(student[i].score2<student[j].score2)
{
temp=student[i];
student[i]=student[j];
student[j]=temp;
}
for(i=0;i<N;i++)
printf("%s%7d%7s%8s%8d%7s%8d%7s%7.1f%7.1f%7.1f\n",student[i].name,student[i].number,student[i].institute,student[i].classes,student[i].birthday,student[i].sex,student[i].tel,student[i].address,student[i].score0,student[i].score1,student[i].score2);
break;
}
}
void compositor()
{
int b;
printf("请输入---1按C成绩排序;---2按数学成绩排序---3按英语成绩排序");
scanf("%d",&b);
if((fp=fopen("c://work.txt","r+"))==NULL)
{
printf("Can't open this fill!");
exit(0);
}
fscanf(fp,"%d",&N);
for(i=0;i<N;i++)
fscanf(fp,"%s%d%s%s%d%s%d%s%f%f%f",student[i].name,&student[i].number,student[i].institute,student[i].classes,&student[i].birthday,student[i].sex,&student[i].tel,student[i].address,&student[i].score0,&student[i].score1,&student[i].score2);
switch(b)
{
case 1:compositor0();break;
case 2:compositor1();break;
case 3:compositor2();break;
}
fclose(fp);
}
㈣ 急求C语言 学生成绩管理系统 程序及流程图(要简单的)
要最简抄单,学生成绩袭定义一个int数组,姓名或学号定义一个char数组。定义一个变量n记录当前数组保存的学生个数,初值0。
添加学生信息就给这两个数组赋值就好了。同时n++。
要删除那你循环遍历数组,通过学生名或学号找到数组对应下标。然后把之后的数组元素往前移动一位。同时n--。
修改信息就更简单,循环遍历到对应下标直接重新赋值。
如果想复杂点,可以用结构定义学生相关信息,然后写链表创建删除和修改。这方面我之前给别人写过好几个,你可以去我回答记录里先。
㈤ 学生成绩统计程序的流程图
图显IP:
用visio画就行了
㈥ c语言学生成绩系统流程图 救命 ~~
用软件帮你分析的
你的代码咋没有头文件哦
我帮你加的哈
#include<stdio.h>
㈦ 求大神解答,急。添加程序“将学生成绩分段输出”,画出程序流程图
你这个软件已经写好了呀,还有什么需要做的呢?
㈧ C语言程序设计(学生成绩管理系统)包括流程图,
我有一个教学收费系统·和你要求的差不多·改一下就可以用了·开源的`我可以传给你·但你要先加分给分我
`
㈨ c语言帮帮忙 学生成绩管理 要用流程图描述实现算法,根据算法进行代码的编写
//biaobiao.cpp:.
//
#include"stdafx.h"
#include<stdio.h>
#include<math.h>
#include<string.h>
#defineMaxSize100
typedefstructstud
{
charname[10];
intnum;
floatc;
floatmath;
floatenglish;
floatzf;
intpnum;
intpzf;
}Stud;
voidReadFile(Studstud[],int&n)
{
FILE*fp;
longlength;
inti;
if((fp=fopen("stud.dat","rb"))==NULL){
n=0;
return;
}
fseek(fp,0,2);
length=ftell(fp);
rewind(fp);
n=length/sizeof(Stud);
if(n!=0)
n--;
else
stud[0].pnum=stud[0].pzf=-1;
for(i=0;i<=n;i++)
fread(&stud[i],sizeof(Stud),1,fp);
fclose(fp);
}
voidClearup(Studstud[],int&n)
{
FILE*fp;
if((fp=fopen("stud.dat","wb"))==NULL){
printf(">>文件不能打开 ");
return;
}
stud[0].pnum=stud[0].pzf=-1;
n=0;
fclose(fp);
printf("============================================================================ ");
}
voidSaveFile(Studstud[],int&n)
{
inti;
FILE*fp;
if((fp=fopen("stud.dat","wb"))==NULL){
printf(">>文件不能打开 ");
return;
}
if(n>1)
for(i=0;i<=n;i++)
fwrite(&stud[i],sizeof(Stud),1,fp);
fclose(fp);
printf("============================================================================ ");
}
voidInput(Studstud[],int&n)
{
inti;
intflag=0;
printf(">>请输入登记学生姓名学号C语言成绩数学成绩英语成绩: ");
n++;
scanf("%s%d%f%f%f",&stud[n].name,&stud[n].num,&stud[n].c,&stud[n].math,&stud[n].english);
stud[n].zf=stud[n].c+stud[n].math+stud[n].english;
for(i=0;i<=n-2;i++)
{
if(stud[i].num==stud[n].num)
{
flag=flag+1;
}
}
if(flag!=0)
printf("学号输入重复,请检查!! ");
stud[n].pnum=stud[n].pzf=0;
printf("============================================================================ ");
}
voidOutputFile(Studstud[],intn)
{
inti;
if(n<1)
{
printf(">>没任何记录 ");
return;
}
printf("----------------------------------------------------------------- ");
printf("|姓名|学号|C语言成绩|数学成绩|英语成绩|总分| ");
printf("----------------------------------------------------------------- ");
for(i=1;i<=n;i++)
{
printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[i].name,stud[i].num,stud[i].c,stud[i].math,stud[i].english,stud[i].zf);
printf("----------------------------------------------------------------- ");
}
}
voidDispnum(Studstud[],intn)
{ inti=2,j;
intk=stud[0].pnum;
if(n<1)
{
printf(">>没有这种记录,不能进行排序 ");
return;
}
stud[0].pnum=1;stud[1].pnum=-1;
while(i<=n)
{
j=0;
while(stud[j].pnum!=-1&&stud[stud[j].pnum].num<stud[i].num)
j=stud[j].pnum;
stud[i].pnum=stud[j].pnum;
stud[j].pnum=i;
i++;
}
printf("----------------------------------------------------------------- ");
printf("|姓名|学号|C语言成绩|数学成绩|英语成绩|总分| ");
printf("----------------------------------------------------------------- ");
while(k!=-1)
{
printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[k].name,stud[k].num,stud[k].c,stud[k].math,stud[k].english,stud[k].zf);
printf("----------------------------------------------------------------- ");
k=stud[k].pnum;
}
printf("============================================================================ ");
}
voidDispzf(Studstud[],intn)
{ inti=2,j;
intk=stud[0].pzf;
if(n<1)
{
printf(">>没有记录,不能进行排序 ");
return;
}
stud[0].pzf=1;stud[1].pzf=-1;
while(i<=n)
{
j=0;
while(stud[j].pzf!=-1&&stud[stud[j].pzf].zf<stud[i].zf)
j=stud[j].pzf;
stud[i].pzf=stud[j].pzf;
stud[j].pzf=i;
i++;
}
printf("----------------------------------------------------------------- ");
printf("|姓名|学号|C语言成绩|数学成绩|英语成绩|总分| ");
printf("----------------------------------------------------------------- ");
while(k!=-1)
{
printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[k].name,stud[k].num,stud[k].c,stud[k].math,stud[k].english,stud[k].zf);
printf("----------------------------------------------------------------- ");
k=stud[k].pzf;
}
printf("============================================================================ ");
}
voidxuehao(Studstud[],intn)
{
intnum,i,flag=0;
printf("请输入你要查询学生的学号: ");
scanf("%d",&num);
for(i=0;i<=n;i++)
{
if(stud[i].num==num)
{
printf("----------------------------------------------------------------- ");
printf("|姓名|学号|C语言成绩|数学成绩|英语成绩|总分| ");
printf("----------------------------------------------------------------- ");
printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[i].name,stud[i].num,stud[i].c,stud[i].math,stud[i].english,stud[i].zf);
printf("----------------------------------------------------------------- ");
flag++;
}
}
if(flag==0)printf("查询操作失败,没有你要查询的学生!!! ");
elseprintf("查询操作成功!!! ");
printf("============================================================================ ");
}
voidxingming(Studstud[],intn)
{
charname[10];
inti,flag=0;
printf("请输入你要查询的学生的姓名: ");
scanf("%s",&name);
for(i=0;i<=n;i++)
{
if(strcmp(stud[i].name,name)==0)
{
printf("----------------------------------------------------------------- ");
printf("|姓名|学号|C语言成绩|数学成绩|英语成绩|总分| ");
printf("----------------------------------------------------------------- ");
printf("|%10s|%3d|%6.2f|%6.2f|%6.2f|%6.2f| ",stud[i].name,stud[i].num,stud[i].c,stud[i].math,stud[i].english,stud[i].zf);
printf("----------------------------------------------------------------- ");
flag++;
}
}
if(flag==0)printf("查询操作失败,没有你要查询的学生!!! ");
elseprintf("查询操作成功!!! ");
printf("============================================================================ ");
}
voidModify(Studstud[],intn)
{
intNO,j;
intflag=0;
floatc,math,english;
printf("请输入你要修改学生的学号: ");
scanf("%d",&NO);
for(j=0;j<=n;j++)
{
if(stud[j].num==NO)
{
printf("请输入你要修改的学生的C语言成绩数学成绩英语成绩: ");
scanf("%f%f%f",&c,&math,&english);
stud[j].c=c;stud[j].math=math;stud[j].english=english;
stud[j].zf=stud[j].c+stud[j].math+stud[j].english;
flag++;
}
}
if(flag==0)printf("修改操作失败,该学号不存在!!! ");
elseprintf("修改操作成功!!! ");
printf("============================================================================ ");
}
voidDelete(Studstud[],int&n)
{
intNO,i,j;
intflag=0;
printf("请输入你要删除的学生的学号: ");
scanf("%d",&NO);
for(i=0;i<=n;i++)
{
if(stud[i].num==NO)
{
for(j=i;j<n;j++)
stud[j]=stud[j+1];
flag++;
}
}
if(flag==0)printf("删除操作失败,该学号不存在!!! ");
else{n--;
printf("删除操作成功!!! ");
}
printf("============================================================================ ");
}
voidmain()
{ doublemmy=sin(0.0);
Studstud[MaxSize];
intk,n;
printf("欢迎使用学生成绩管理系统!!! ");
printf("============================================================================ ");
ReadFile(stud,n);
do{
printf("1:学生登记2:显示学生信息 ");
printf("3:清空记录4:删除记录 ");
printf("5:按学号排序输出6:按总分排序输出 ");
printf("7:学号查询8:姓名查询 ");
printf("9:修改0:储存退出 ");
printf("请选择相应的功能:");
scanf("%d",&k);
if(k>9&&k<0)printf("操作不当,请重新输入: ");
switch(k)
{
case1:Input(stud,n);
break;
case2:OutputFile(stud,n);
break;
case3:Clearup(stud,n);
break;
case4:Delete(stud,n);
break;
case5:Dispnum(stud,n);
break;
case6:Dispzf(stud,n);
break;
case7:xuehao(stud,n);
break;
case8:xingming(stud,n);
break;
case9:Modify(stud,n);
break;
case0:SaveFile(stud,n);
break;
}
}while(k!=0);
}
效果图: