主题:高手帮忙改成类
#include<fstream>
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<string>
#include<conio.h>
#include"password.h"
char filename[15]={""}; // 存放文件名
struct stu
{
int xh;
char xm[10];
float cj;
}x[61]={0,"",0};
int num;
void Inputnjxx(char nj[]) // 年级
{
time_t timer;
struct tm *tblock;
int year;
timer=time(NULL); // 获取机器的日期
tblock=localtime(&timer);
year=tblock->tm_year+1900;
if(tblock->tm_mon<8)
{
do
{
cout<<" 请输入年级("<<year-1<<"或";
cout<<year-2<<"或";
cout<<year-3<<"):";
cin>>nj;
if(atoi(nj)>year-1 || atoi(nj)<year-3)
cout<<" 年级越界!请重新输入!\n";
}while(atoi(nj)>year-1 || atoi(nj)<year-3 );
}
else
{
do
{
cout<<" 请输入年级("<<year<<"或";
cout<<year-1<<"或";
cout<<year-2<<"):";
cin>>nj;
if(atoi(nj)>year || atoi(nj)<year-2)
cout<<" 年级越界!请重新输入!\n";
}while(atoi(nj)>year || atoi(nj)<year-2 );
}
}
void Inputxbzy(char xbzy[]) // 输入系别、专业编号
{
fstream outfile;
struct xuex
{
char xiname[20],zhuanye[10][20];
}xx[10];
int i,j;
char xb[3],zy[3];
outfile.open("Xuexiaoxinxi.dat",ios::in);
if(!outfile)
{
cout<<"Xuexiaoxinxi.dat can't open.\n";
abort();
}
outfile.read((char *)xx,sizeof(xx));
cout<<"\n\n\t编号\t系名\n ";
i=0;
while(strcmp(xx[i].xiname,"")!=0)
{
cout<<"\t"<<i+1<<"\t"<<xx[i].xiname<<"\n";
i++;
}
cout<<"\n 请选择系编号:";
cin>>xb;
cout<<"\n\n\t编号\t专业名\n ";
i=atoi(xb)-1;
j=0;
while(strcmp(xx[i].zhuanye[j],"")!=0)
{
cout<<"\t"<<j+1<<"\t"<<xx[i].zhuanye[j]<<"\n";
j++;
}
cout<<"\n 请选择专业编号:";
cin>>zy;
strcat(xbzy,xb);
strcat(xbzy,zy);
outfile.close();
}
void Inputxxjbxx() // 输入学校基本信息,存入数组xx中
{
fstream outfile;
struct xuex
{
char xiname[20],zhuanye[10][20];
}xx[10]={""};
int i,j,num,zynum;
outfile.open("Xuexiaoxinxi.dat",ios::out);
if(!outfile)
{
cout<<"Xuexiaoxinxi.dat can't open.\n";
abort();
}
cout<<" 您是第一次使用本系统,请建立教学系的有关信息!\n\n";
do // 限制输入的系数
{
cout<<" 请输入学校系数(1-10):";
cin>>num;
if(num<1 || num>10)
cout<<"\t 系数越界,请输入1-10!"<<endl;
}while(num<1 || num>10);
for(i=0;i<num;i++)
{
cout<<" 请输入第 "<<i+1<<" 个系的名称:";
cin>>xx[i].xiname;
}
cout<<"\n\n 请输入各系的专业名称!\n";
for(i=0;i<num;i++)
{
cout<<"\n 下面输入 "<<xx[i].xiname<<" 各专业的名称\n\n";
do // 限制输入的专业数
{
cout<<" 请输入专业数(1-10):";
cin>>zynum;
if(zynum<1 || zynum>10)
cout<<"\t 专业数越界,请输入1-10!"<<endl;
}while(zynum<1 || zynum>10);
for(j=0;j<zynum;j++)
{
cout<<" 请输入第 "<<j+1<<" 个专业的名称:";
cin>>xx[i].zhuanye[j];
}
}
outfile.write((char *)xx,sizeof(xx));
outfile.close();
system("color F9");
cout<<"\n\n\n\t\t\t欢 迎 登 录 径 赛 成 绩 管 理 系 统 "<<endl<<endl<<endl;
}
void Inputbjxx() // 输入班级基本信息产生文件名
{
char nianji[5],xbzy[6]="",bj[3];
fstream outfile;
outfile.open("Xuexiaoxinxi.dat",ios::in);
if(!outfile)
{
Inputxxjbxx(); // 输入学校基本信息
}
strcpy(filename,"");
cout<<" 请输入班级基本信息:\n";
Inputnjxx(nianji);
strcat(filename,nianji);
Inputxbzy(xbzy);
strcat(filename,xbzy);
cout<<"\n 班级编号(如1):";
cin>>bj;
strcat(filename,bj);
}
void Inputxsxx() // 输入学生基本信息
{
fstream outfile;
int i,num;
outfile.open(filename,ios::out);
if(!outfile)
{
cout<<"filename can't open.\n";
abort();
}
x[0].xh=1;
cout<<"请输入该班的人数:";
cin>>num;
cout<<"下面请输入每个人的姓名。\n";
cout<<"学号\t姓名\n";
for(i=0;i<num;i++)
{
cout<<x[i].xh<<"\t";
cin>>x[i].xm;
x[i+1].xh=x[i].xh+1;
}
x[i].xh=0;
outfile.write((char *)x,sizeof(x));
outfile.close();
}
void fzjishi() // 分组计时
{
int i,rs,xh[11];;
char anykey;
clock_t start,finish;
double totaltime[11]={0},tim;
fstream outfile;
outfile.open(filename,ios::in|ios::out);
outfile.read((char *)x,sizeof(x)); //读数据
do // 限制输入的人数
{
cout<<"\n请输入本组人数(1-10):";
cin>>rs;
if(rs<1 || rs>10)
cout<<"每组人数越界,请输入1-10!"<<endl;
}while(rs<1 || rs>10);
cout<<"按任意键开始! \n按任意键取时间,按n/N键终止! "<<endl;
anykey=getch();
start=clock(); // 取机器时间
for(i=1;i<=rs;i++)
{
while(!kbhit()) // 若没有键按下
{
cout<<"\r";
finish=clock(); // 再取机器时间
tim=(double)(finish-start)/1000; // 计算时间
cout<<tim;
}
totaltime[i]=tim; // 记录时间
cout<<"\t第 "<<i<<" 名 "<<endl;
anykey=getch();
if(anykey=='n'||anykey=='N') // 按n/N键终止
break;
}
for(i=1;i<=rs;i++)
{
cout<<"请输入第 "<<i<<" 名 的学号:";
cin>>xh[i];
}
cout<<"\n\n 成绩"<<endl<<endl;
for(i=1;i<=rs;i++)
{
cout<<" 第 "<<i<<" 名 的成绩为 "<<totaltime[i]<<" 秒!学号:";
cout<<xh[i]<<" 姓名:"<<x[xh[i]-1].xm<<endl;
x[xh[i]-1].cj=totaltime[i];
}
outfile.seekp(0,ios::beg);
outfile.write((char *)x,sizeof(x)); // 回写数据
outfile.close();
}
void Printxx()
{
fstream outfile;
outfile.open(filename,ios::in);
outfile.read((char *)x,sizeof(x)); // 读数据
char ynn,choice;
int i;
do
{
system("cls");
cout<<"**********************************************"<<endl;
cout<<"* 输 出 程 序 *"<<endl;
cout<<"**********************************************"<<endl<<endl;
cout<<" 1. 显示所有学生成绩" <<endl<<endl;
cout<<" 2. 显示部分学生成绩" <<endl<<endl;
cout<<" 3. 显示某个学生成绩" <<endl<<endl;
cout<<" 4. 显示前n名学生成绩" <<endl<<endl;
cout<<" 0. 退出输出" <<endl<<endl;
cout<<"**********************************************"<<endl;
cout<<" 请选择(0-4):";
cin>>choice;
switch(choice)
{
case '1':
i=0;
cout<<"\n\n "<<filename<<" 班径赛成绩"<<endl<<endl;
cout<<"学号\t姓名\t成绩\n";
while(x[i].xh!=0)
{
cout<<x[i].xh<<"\t"<<x[i].xm<<"\t"<<x[i].cj<<endl;
i++;
}
num=i;
break;
case '2':
int startxh,endxh;
cout<<"请输入起始学号(如1):";
cin>>startxh;
cout<<"请输入终止学号(如30):";
cin>>endxh;
cout<<"学号\t姓名\t成绩\n";
for(i=startxh;i<=endxh;i++)
cout<<x[i-1].xh<<"\t"<<x[i-1].xm<<"\t"<<x[i-1].cj<<endl;
break;
case '3':
int mxh;
cout<<"请输入学生的学号(如30):";
cin>>mxh;
cout<<"学号\t姓名\t成绩\n";
cout<<x[mxh-1].xh<<"\t"<<x[mxh-1].xm<<"\t"<<x[mxh-1].cj<<endl;
break;
case '4':
//对数组先排序再输出
int j,n;
struct stu t;
for(i=0;i<num-1;i++)
for(j=i+1;j<num;j++)
if(x[i].cj>x[j].cj)
{
t.xh=x[i].xh; x[i].xh=x[j].xh; x[j].xh=t.xh;
strcpy(t.xm,x[i].xm); strcpy(x[i].xm,x[j].xm); strcpy(x[j].xm,t.xm);
t.cj=x[i].cj; x[i].cj=x[j].cj; x[j].cj=t.cj;
}
cout<<"请输入n=";
cin>>n;
cout<<"学号\t姓名\t成绩\n";
for(i=0;i<n;i++)
cout<<x[i].xh<<"\t"<<x[i].xm<<"\t"<<x[i].cj<<endl;
break;
case '0': break;
}
outfile.close();
cout<<"\n\n是否返回主菜单(y/n)? ";
cin>>ynn;
}while(ynn=='n'||ynn=='N');
}
void main()
{
char yn,choice;
system("color F9");
cout<<"\n\n\n\t\t\t欢 迎 登 录 径 赛 成 绩 管 理 系 统 "<<endl<<endl<<endl;
InputUserName();
InputPassWord();
Inputbjxx(); // 输入班级基本信息
do
{
system("cls");
system("color 1f");
cout<<"**********************************************"<<endl;
cout<<"* 欢 迎 使 用 径 赛 程 序 *"<<endl;
cout<<"**********************************************"<<endl<<endl;
cout<<" 1. 输入学生基本信息" <<endl<<endl;
cout<<" 2. 分组计时" <<endl<<endl;
cout<<" 3. 显示径赛成绩" <<endl<<endl;
cout<<" 4. 修改用户和密码" <<endl<<endl;
cout<<" 0. 退出系统" <<endl<<endl;
cout<<"**********************************************"<<endl;
cout<<" 请选择(0-4):";
cin>>choice;
switch(choice)
{
case '1':
Inputxsxx();
break;
case '2':
fzjishi();
break;
case '3':
Printxx();
break;
case '4':
ModifyUser();
break;
case '0':break;
}
cout<<"\n\n是否结束程序(y/n)? ";
cin>>yn;
} while(yn=='n' || yn=='N');
}
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<string>
#include<conio.h>
#include"password.h"
char filename[15]={""}; // 存放文件名
struct stu
{
int xh;
char xm[10];
float cj;
}x[61]={0,"",0};
int num;
void Inputnjxx(char nj[]) // 年级
{
time_t timer;
struct tm *tblock;
int year;
timer=time(NULL); // 获取机器的日期
tblock=localtime(&timer);
year=tblock->tm_year+1900;
if(tblock->tm_mon<8)
{
do
{
cout<<" 请输入年级("<<year-1<<"或";
cout<<year-2<<"或";
cout<<year-3<<"):";
cin>>nj;
if(atoi(nj)>year-1 || atoi(nj)<year-3)
cout<<" 年级越界!请重新输入!\n";
}while(atoi(nj)>year-1 || atoi(nj)<year-3 );
}
else
{
do
{
cout<<" 请输入年级("<<year<<"或";
cout<<year-1<<"或";
cout<<year-2<<"):";
cin>>nj;
if(atoi(nj)>year || atoi(nj)<year-2)
cout<<" 年级越界!请重新输入!\n";
}while(atoi(nj)>year || atoi(nj)<year-2 );
}
}
void Inputxbzy(char xbzy[]) // 输入系别、专业编号
{
fstream outfile;
struct xuex
{
char xiname[20],zhuanye[10][20];
}xx[10];
int i,j;
char xb[3],zy[3];
outfile.open("Xuexiaoxinxi.dat",ios::in);
if(!outfile)
{
cout<<"Xuexiaoxinxi.dat can't open.\n";
abort();
}
outfile.read((char *)xx,sizeof(xx));
cout<<"\n\n\t编号\t系名\n ";
i=0;
while(strcmp(xx[i].xiname,"")!=0)
{
cout<<"\t"<<i+1<<"\t"<<xx[i].xiname<<"\n";
i++;
}
cout<<"\n 请选择系编号:";
cin>>xb;
cout<<"\n\n\t编号\t专业名\n ";
i=atoi(xb)-1;
j=0;
while(strcmp(xx[i].zhuanye[j],"")!=0)
{
cout<<"\t"<<j+1<<"\t"<<xx[i].zhuanye[j]<<"\n";
j++;
}
cout<<"\n 请选择专业编号:";
cin>>zy;
strcat(xbzy,xb);
strcat(xbzy,zy);
outfile.close();
}
void Inputxxjbxx() // 输入学校基本信息,存入数组xx中
{
fstream outfile;
struct xuex
{
char xiname[20],zhuanye[10][20];
}xx[10]={""};
int i,j,num,zynum;
outfile.open("Xuexiaoxinxi.dat",ios::out);
if(!outfile)
{
cout<<"Xuexiaoxinxi.dat can't open.\n";
abort();
}
cout<<" 您是第一次使用本系统,请建立教学系的有关信息!\n\n";
do // 限制输入的系数
{
cout<<" 请输入学校系数(1-10):";
cin>>num;
if(num<1 || num>10)
cout<<"\t 系数越界,请输入1-10!"<<endl;
}while(num<1 || num>10);
for(i=0;i<num;i++)
{
cout<<" 请输入第 "<<i+1<<" 个系的名称:";
cin>>xx[i].xiname;
}
cout<<"\n\n 请输入各系的专业名称!\n";
for(i=0;i<num;i++)
{
cout<<"\n 下面输入 "<<xx[i].xiname<<" 各专业的名称\n\n";
do // 限制输入的专业数
{
cout<<" 请输入专业数(1-10):";
cin>>zynum;
if(zynum<1 || zynum>10)
cout<<"\t 专业数越界,请输入1-10!"<<endl;
}while(zynum<1 || zynum>10);
for(j=0;j<zynum;j++)
{
cout<<" 请输入第 "<<j+1<<" 个专业的名称:";
cin>>xx[i].zhuanye[j];
}
}
outfile.write((char *)xx,sizeof(xx));
outfile.close();
system("color F9");
cout<<"\n\n\n\t\t\t欢 迎 登 录 径 赛 成 绩 管 理 系 统 "<<endl<<endl<<endl;
}
void Inputbjxx() // 输入班级基本信息产生文件名
{
char nianji[5],xbzy[6]="",bj[3];
fstream outfile;
outfile.open("Xuexiaoxinxi.dat",ios::in);
if(!outfile)
{
Inputxxjbxx(); // 输入学校基本信息
}
strcpy(filename,"");
cout<<" 请输入班级基本信息:\n";
Inputnjxx(nianji);
strcat(filename,nianji);
Inputxbzy(xbzy);
strcat(filename,xbzy);
cout<<"\n 班级编号(如1):";
cin>>bj;
strcat(filename,bj);
}
void Inputxsxx() // 输入学生基本信息
{
fstream outfile;
int i,num;
outfile.open(filename,ios::out);
if(!outfile)
{
cout<<"filename can't open.\n";
abort();
}
x[0].xh=1;
cout<<"请输入该班的人数:";
cin>>num;
cout<<"下面请输入每个人的姓名。\n";
cout<<"学号\t姓名\n";
for(i=0;i<num;i++)
{
cout<<x[i].xh<<"\t";
cin>>x[i].xm;
x[i+1].xh=x[i].xh+1;
}
x[i].xh=0;
outfile.write((char *)x,sizeof(x));
outfile.close();
}
void fzjishi() // 分组计时
{
int i,rs,xh[11];;
char anykey;
clock_t start,finish;
double totaltime[11]={0},tim;
fstream outfile;
outfile.open(filename,ios::in|ios::out);
outfile.read((char *)x,sizeof(x)); //读数据
do // 限制输入的人数
{
cout<<"\n请输入本组人数(1-10):";
cin>>rs;
if(rs<1 || rs>10)
cout<<"每组人数越界,请输入1-10!"<<endl;
}while(rs<1 || rs>10);
cout<<"按任意键开始! \n按任意键取时间,按n/N键终止! "<<endl;
anykey=getch();
start=clock(); // 取机器时间
for(i=1;i<=rs;i++)
{
while(!kbhit()) // 若没有键按下
{
cout<<"\r";
finish=clock(); // 再取机器时间
tim=(double)(finish-start)/1000; // 计算时间
cout<<tim;
}
totaltime[i]=tim; // 记录时间
cout<<"\t第 "<<i<<" 名 "<<endl;
anykey=getch();
if(anykey=='n'||anykey=='N') // 按n/N键终止
break;
}
for(i=1;i<=rs;i++)
{
cout<<"请输入第 "<<i<<" 名 的学号:";
cin>>xh[i];
}
cout<<"\n\n 成绩"<<endl<<endl;
for(i=1;i<=rs;i++)
{
cout<<" 第 "<<i<<" 名 的成绩为 "<<totaltime[i]<<" 秒!学号:";
cout<<xh[i]<<" 姓名:"<<x[xh[i]-1].xm<<endl;
x[xh[i]-1].cj=totaltime[i];
}
outfile.seekp(0,ios::beg);
outfile.write((char *)x,sizeof(x)); // 回写数据
outfile.close();
}
void Printxx()
{
fstream outfile;
outfile.open(filename,ios::in);
outfile.read((char *)x,sizeof(x)); // 读数据
char ynn,choice;
int i;
do
{
system("cls");
cout<<"**********************************************"<<endl;
cout<<"* 输 出 程 序 *"<<endl;
cout<<"**********************************************"<<endl<<endl;
cout<<" 1. 显示所有学生成绩" <<endl<<endl;
cout<<" 2. 显示部分学生成绩" <<endl<<endl;
cout<<" 3. 显示某个学生成绩" <<endl<<endl;
cout<<" 4. 显示前n名学生成绩" <<endl<<endl;
cout<<" 0. 退出输出" <<endl<<endl;
cout<<"**********************************************"<<endl;
cout<<" 请选择(0-4):";
cin>>choice;
switch(choice)
{
case '1':
i=0;
cout<<"\n\n "<<filename<<" 班径赛成绩"<<endl<<endl;
cout<<"学号\t姓名\t成绩\n";
while(x[i].xh!=0)
{
cout<<x[i].xh<<"\t"<<x[i].xm<<"\t"<<x[i].cj<<endl;
i++;
}
num=i;
break;
case '2':
int startxh,endxh;
cout<<"请输入起始学号(如1):";
cin>>startxh;
cout<<"请输入终止学号(如30):";
cin>>endxh;
cout<<"学号\t姓名\t成绩\n";
for(i=startxh;i<=endxh;i++)
cout<<x[i-1].xh<<"\t"<<x[i-1].xm<<"\t"<<x[i-1].cj<<endl;
break;
case '3':
int mxh;
cout<<"请输入学生的学号(如30):";
cin>>mxh;
cout<<"学号\t姓名\t成绩\n";
cout<<x[mxh-1].xh<<"\t"<<x[mxh-1].xm<<"\t"<<x[mxh-1].cj<<endl;
break;
case '4':
//对数组先排序再输出
int j,n;
struct stu t;
for(i=0;i<num-1;i++)
for(j=i+1;j<num;j++)
if(x[i].cj>x[j].cj)
{
t.xh=x[i].xh; x[i].xh=x[j].xh; x[j].xh=t.xh;
strcpy(t.xm,x[i].xm); strcpy(x[i].xm,x[j].xm); strcpy(x[j].xm,t.xm);
t.cj=x[i].cj; x[i].cj=x[j].cj; x[j].cj=t.cj;
}
cout<<"请输入n=";
cin>>n;
cout<<"学号\t姓名\t成绩\n";
for(i=0;i<n;i++)
cout<<x[i].xh<<"\t"<<x[i].xm<<"\t"<<x[i].cj<<endl;
break;
case '0': break;
}
outfile.close();
cout<<"\n\n是否返回主菜单(y/n)? ";
cin>>ynn;
}while(ynn=='n'||ynn=='N');
}
void main()
{
char yn,choice;
system("color F9");
cout<<"\n\n\n\t\t\t欢 迎 登 录 径 赛 成 绩 管 理 系 统 "<<endl<<endl<<endl;
InputUserName();
InputPassWord();
Inputbjxx(); // 输入班级基本信息
do
{
system("cls");
system("color 1f");
cout<<"**********************************************"<<endl;
cout<<"* 欢 迎 使 用 径 赛 程 序 *"<<endl;
cout<<"**********************************************"<<endl<<endl;
cout<<" 1. 输入学生基本信息" <<endl<<endl;
cout<<" 2. 分组计时" <<endl<<endl;
cout<<" 3. 显示径赛成绩" <<endl<<endl;
cout<<" 4. 修改用户和密码" <<endl<<endl;
cout<<" 0. 退出系统" <<endl<<endl;
cout<<"**********************************************"<<endl;
cout<<" 请选择(0-4):";
cin>>choice;
switch(choice)
{
case '1':
Inputxsxx();
break;
case '2':
fzjishi();
break;
case '3':
Printxx();
break;
case '4':
ModifyUser();
break;
case '0':break;
}
cout<<"\n\n是否结束程序(y/n)? ";
cin>>yn;
} while(yn=='n' || yn=='N');
}