?? hong.cpp
字號:
// Hong.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include <iostream.h>
#include <fstream.h>
#include <string>
FILE *fp;
struct Stu
{ char name[30];
char sex[5];
char num[10];
float math;
float eng;
float pro;
float mfc;
float ed;
float all;
float ave;
};
class Stud
{int m;
public:
Stud(int i ){m=i;};
void Hunt1(); //用學(xué)號查找個人信息
void Hunt2(); //用姓名查找個人信息
void Show(); //顯示所有信息
};
void Stud::Hunt1()
{struct Stu st[100],tem;
char ch1[10];
int i;
cout<<"\n請輸入要查找的學(xué)號:";
cin>>ch1;
fp=fopen("student.txt","r");
while((fp=fopen("student.txt","r"))==NULL)
{ cout<<"文件打開失敗,無法顯示!"<<endl;break;}
for(i=0;fread(&st[i],sizeof(struct Stu),1,fp)!=0;i++)
{ while(strcmp(st[i].num,ch1)==0)
{ tem=st[i];
cout<<"學(xué)號\t"<<"姓名\t"<<"性別\t"<<"數(shù)學(xué)\t"<<"英語\t"
<<"程序\t"<<"可視化\t"<<"體育\t"<<"總分\t"<<"平均分\n\n";
cout<<tem.num<<"\t"<<tem.name<<"\t"<<tem.sex<<"\t"<<tem.math
<<"\t"<<tem.eng<<"\t"<<tem.pro<<"\t"<<tem.mfc<<"\t"
<<tem.ed<<"\t"<<tem.all<<"\t"<<tem.ave<<endl;
break;
}
}
while(strcmp(tem.num,ch1)!=0)
{ cout<<"沒有相關(guān)信息!\n";break;}
fclose(fp);
}
void Stud::Hunt2()
{struct Stu st[100],tem;
char ch2[30];
int i;
cout<<"\n請輸入要查找的姓名:";
cin>>ch2;
fp=fopen("student.txt","r");
while((fp=fopen("student.txt","r"))==NULL)
{ cout<<"文件打開失敗,無法顯示!"<<endl;break;}
for(i=0;fread(&st[i],sizeof(struct Stu),1,fp)!=0;i++)
{ while(strcmp(st[i].name,ch2)==0)
{ tem=st[i];
cout<<"學(xué)號\t"<<"姓名\t"<<"性別\t"<<"數(shù)學(xué)\t"<<"英語\t"
<<"程序\t"<<"可視化\t"<<"體育\t"<<"總分\t"<<"平均分\n\n";
cout<<tem.num<<"\t"<<tem.name<<"\t"<<tem.sex<<"\t"<<tem.math
<<"\t"<<tem.eng<<"\t"<<tem.pro<<"\t"<<tem.mfc<<"\t"
<<tem.ed<<"\t"<<tem.all<<"\t"<<tem.ave<<endl;
break;
}
}
while(strcmp(tem.name,ch2)!=0)
{ cout<<"沒有相關(guān)信息!\n";break;}
fclose(fp);
}
void Stud::Show()
{ struct Stu t[100],temp;
int i=0,n=0,j,k,fail1,fail2,fail3,fail4,fail5;
int zb1,zb2,zb3,zb4,zb5;
fail1=fail2=fail3=fail4=fail5=0;
zb1=zb2=zb3=zb4=zb5=0;
fp=fopen("student.txt","r");
while((fp=fopen("student.txt","r"))==NULL)
{ cout<<"文件打開失敗,無法顯示!"<<endl;break;}
while(fread(&t,sizeof(struct Stu),1,fp)==0)
{cout<<"\n信息庫里沒有信息可供查看!!\n";break;}
fclose(fp);
fp=fopen("student.txt","r");
for(i=0;fread(&t[i],sizeof(struct Stu),1,fp)!=0;i++)
{
if(t[i].math>=0 &&t[i].math<60)fail1++;if(t[i].math==-1)zb1++;
if(t[i].eng>=0 &&t[i].eng<60)fail2++; if(t[i].eng==-1)zb2++;
if(t[i].pro>=0 &&t[i].pro<60)fail3++; if(t[i].pro==-1)zb3++;
if(t[i].mfc>=0 &&t[i].mfc<60)fail4++; if(t[i].mfc==-1)zb4++;
if(t[i].ed>=0 &&t[i].ed<60)fail5++; if(t[i].ed==-1)zb5++;
}
n=i;
fclose(fp);
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(t[j].num<t[k].num)k=j;
if(k!=i)
{temp=t[i];t[i]=t[k];t[k]=temp;}
}
/*for (j=1;j<=n-1;j++)
for (i=0;i<n-j;i++)
if(t[i].num>t[i+1].num)
{temp=t[i];t[i]=t[i+1];t[i+1]=temp;}*/
cout<<"\n\n為了方便查看,下列信息均按學(xué)號順序排列!\n\n"
<<"學(xué)號\t"<<"姓名\t"<<"性別\t"<<"數(shù)學(xué)\t"<<"英語\t"
<<"程序\t"<<"可視化\t"<<"體育\t"<<"總分\t"<<"平均分\n\n";
for (i=0;i<n;i++)
{cout<<t[i].num<<"\t"<<t[i].name<<"\t"<<t[i].sex<<"\t"<<t[i].math
<<"\t"<<t[i].eng<<"\t"<<t[i].pro<<"\t"<<t[i].mfc<<"\t"
<<t[i].ed<<"\t"<<t[i].all<<"\t"<<t[i].ave<<endl;
};
cout<<"\n\t一共統(tǒng)計了"<<n<<"個學(xué)生信息,結(jié)果如下:\n"
<<"\t不及格人數(shù)"<<"\t作弊人數(shù)(成績?yōu)?1的)"<<endl;
cout<<"\n數(shù)學(xué):\t"<<fail1<<"\t\t"<<zb1
<<"\n英語:\t"<<fail2<<"\t\t"<<zb2
<<"\n程序:\t"<<fail3<<"\t\t"<<zb3
<<"\n可視化:\t"<<fail4<<"\t\t"<<zb4
<<"\n體育:\t"<<fail5<<"\t\t"<<zb5<<endl;
}
class Teach:public Stud //類Teach繼承類Stud
{public:
Teach(int i);
void Add(); //添加學(xué)生信息
void Del(); //刪除單個學(xué)生信息
void Delall(); //刪除所有學(xué)生信息
void Edit(); //修改單個學(xué)生信息
void Sort(); //修改用戶密碼
};
Teach::Teach(int i):Stud( i ){};
void Teach::Add()
{ struct Stu st[50],t[100];
int i=0,j;
char ch;
cout<<"\n請按以下順序輸入學(xué)生信息\n:"
<<"學(xué)號 姓名 性別 數(shù)學(xué) 英語 程序 可視化 體育\n";
fp=fopen("student.txt","r");
do
{cout<<"請輸入:\n";
cin>>st[i].num>>st[i].name>>st[i].sex>>st[i].math>>
st[i].eng>>st[i].pro>>st[i].mfc>>st[i].ed;
st[i].all=(st[i].math+st[i].eng+st[i].pro+st[i].mfc+st[i].ed);
st[i].ave=st[i].all/5;
for(j=0;fread(&t[j],sizeof(struct Stu),1,fp)!=0;j++)
{ while(strcmp(st[i].num,t[j].num)==0)
{cout<<"您要添加信息的學(xué)號已經(jīng)存在,若其信息有誤,"
<<"\n可返回上一層選擇 <修改學(xué)生信息> 對其修改!";
break;}
}fclose(fp);
fp=fopen("student.txt","a");
fwrite(&st[i],sizeof(struct Stu),1,fp);
i++;
cout<<"\n繼續(xù)輸入?(Y/N)";
cin>>ch;
}while(ch=='y'||ch=='Y');
cout<<"你已經(jīng)成功添加"<<i<<"個學(xué)生信息!"<<endl;
fclose(fp);
}
void Teach::Del()
{struct Stu st[100],temp;
int i=0,j=0,n;
char ch7[10];
cout<<"\n請輸入你要刪除信息的學(xué)號:";
cin>>ch7;
fp=fopen("student.txt","r");
while((fp=fopen("student.txt","r"))==NULL)
{ cout<<"文件打開失敗,無法顯示!"<<endl;break;}
for(i=0;fread(&st[i],sizeof(struct Stu),1,fp)!=0;i++)//先查找一下是
if(strcmp(st[i].num,ch7)==0) //否有此學(xué)號的
{temp=st[i];j=i; }; //信息.
n=i;
fclose(fp);
while(strcmp(temp.num,ch7)!=0) //沒有,則退出
{ cout<<"沒有相關(guān)信息,不用刪除!\n";break; } //刪除程序
fp=fopen("student.txt","w"); //有,則打開文件,
for (i=0;i<j;i++)fwrite(&st[i],sizeof(struct Stu),1,fp);//進(jìn)行刪除工作.
for (i=j+1;i<n;i++)fwrite(&st[i],sizeof(struct Stu),1,fp);
cout<<"信息已刪除!\n";
fclose(fp);
}
void Teach::Delall()
{Stu st;
char ch8;
cout<<"\n!!!你確定要刪除所有信息嗎!!!?(Y/N)\n";
cin>>ch8;
while(ch8=='y'||ch8=='Y')
{ fp=fopen("student.txt","w");
if((fp=fopen("student.txt","w"))==NULL)
{ cout<<"文件打開失敗,無法刪除!"<<endl;exit(0);}
else
{fwrite(&st,0,0,fp);
cout<<"所有信息都已刪除!\n";break;
fclose(fp);}
}
}
void Teach:: Edit()
{struct Stu st[100],tem,tem2;
char ch1[10];
int i,k,n=0;
cout<<"\n請輸入要修改信息的學(xué)生學(xué)號:";
cin>>ch1;
fp=fopen("student.txt","r");
while((fp=fopen("student.txt","r"))==NULL)
{ cout<<"文件打開失敗,無法顯示!"<<endl;break;}
for(i=0;fread(&st[i],sizeof(struct Stu),1,fp)!=0;i++,n++)
if(strcmp(st[i].num,ch1)==0)
{tem2=st[i];k=i;
cout<<"請輸入新的信息!\n"
<<"學(xué)號\t"<<"姓名\t"<<"性別\t"<<"數(shù)學(xué)\t"<<"英語\t"
<<"程序\t"<<"可視化\t"<<"體育\n\n";
cin>>tem.num>>tem.name>>tem.sex>>tem.math>>
tem.eng>>tem.pro>>tem.mfc>>tem.ed;
tem.all=(tem.math+tem.eng+tem.pro+tem.mfc+tem.ed);
tem.ave=tem.all/5;
while(strcmp(tem.num,ch1)!=0)
{cout<<"要修改信息的學(xué)號與新輸入的學(xué)號不一致,修改不成功!\n";
break;}
}
fclose(fp);
while(strcmp(tem2.num,ch1)!=0)
{ cout<<"沒有相關(guān)信息!\n";break;}
st[k]=tem;
fp=fopen("student.txt","w");
for(i=0;i<n;i++)fwrite(&st[i],sizeof(struct Stu),1,fp);
cout<<"修改成功,新的信息為:\n"
<<tem.num<<"\t"<<tem.name<<"\t"<<tem.sex<<"\t"<<tem.math
<<"\t"<<tem.eng<<"\t"<<tem.pro<<"\t"<<tem.mfc<<"\t"
<<tem.ed<<"\t"<<endl;
fclose(fp);
}
void Teach::Sort() //按數(shù)學(xué)成績排序
{
int j,k,i=0;
struct Stu temp;
struct Stu *t;
t=new struct Stu[100];
int num; //寫入操作文件的人數(shù)
fstream f,g;
num=0;
fp=fopen("student.txt","r");
for(i=0;fread(&t[i],sizeof(struct Stu),1,fp)!=0;i++);
num=i;
fclose(fp); //選擇排序
for(i=0;i<num;i++)
{
k=i;
for(j=i+1;j<num;j++)
if(t[j].num>t[k].num)
k=j;
temp=t[i];
t[i]=t[k];
t[k]=temp;
}
while((fp=fopen("student.txt","w"))==NULL)
{ cout<<"文件打開失敗,無法顯示!"<<endl;break;}
for( i=0;i<num;i++)
{
fwrite((char*)&t[i],sizeof(struct Stu),1,fp);
}
fclose(fp);
cout<<"成功按數(shù)學(xué)成績排序"<<endl;
cout<<"學(xué)號\t"<<"姓名\t"<<"性別\t"<<"數(shù)學(xué)\t"<<"英語\t"
<<"程序\t"<<"數(shù)據(jù)\t"<<"體育\t"<<"總分\t"<<"平均分\n\n";
for (i=0;i<num;i++)
{cout<<t[i].num<<"\t"<<t[i].name<<"\t"<<t[i].sex<<"\t"<<t[i].math
<<"\t"<<t[i].eng<<"\t"<<t[i].pro<<"\t"<<t[i].mfc<<"\t"
<<t[i].ed<<"\t"<<t[i].all<<"\t"<<t[i].ave<<endl;
};
}
void menu1()
{ cout<<"\n\t******************************************\n\n";
cout<<"\n\t** 計機054,林鎮(zhèn)鴻 (學(xué)號:0515214416) **\n\n";
cout<<"\n\t--------歡迎您來到學(xué)生學(xué)籍管理系統(tǒng)------\n\n";
cout<<"\n\t******* 1--- 使用需知 ******\n";
cout<<"\n\t******* 2--- 學(xué)生 ******\n";
cout<<"\n\t******* 3--- 教師(需要密碼) *****\n";
cout<<"\n\t******* 4----退出 *****\n";
cout<< "\n\n\t**請選擇你的身份或需要的操作:";
};
void menu2()
{ cout<<"\n\t***** 1--- 用學(xué)號查找個人信息 ******\n";
cout<<"\n\t***** 2--- 用姓名查找個人信息 ******\n";
cout<<"\n\t***** 3--- 顯示所有信息 ******\n";
cout<<"\n\t***** 4----返回 ******\n";
cout<<"\n\t***** 5----退出 ******\n";
cout<< "\n\n\t**請選擇你需要的操作:";
}
void menu3()
{ cout<<"\n\t** 1-- 用學(xué)號查找個人信息 2-- 用姓名查找個人信息**\n\n";
cout<<"\t** 3-- 顯示所有信息 4-- 添加學(xué)生信息 **\n\n";
cout<<"\t** 5-- 刪除單個學(xué)生信息 6-- 刪除所有學(xué)生信息 **\n\n";
cout<<"\t** 7-- 修改學(xué)生信息 8--- paixu **\n\n";
cout<<"\t** 9-- 返回 0--- 退出 **\n\n";
cout<< "\n\n\t**請選擇你需要的操作:";
} ;
void main()
{ char i,i1,i2,c[20],key[20],q[100],p;
Stud s(0);
Teach te(0);
loop1:
menu1(); cin>>i;
switch(i)
{ case '1':
{system("cls");
ifstream f("instruct.txt",ios::in);
while(!f.eof())
{ f.getline(q,100);
cout<<q<<endl;}
f.close();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop1;}
break;
}
case '2':
{ system("cls");
loop2:
menu2();
cin>>i1;
if(i1=='1')
{ s.Hunt1();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop2;}
break;}
else if(i1=='2')
{ s.Hunt2();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop2;}
break;}
else if(i1=='3')
{ s.Show();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop2;}
break;}
else if(i1=='4'){system("cls");goto loop1;}
else break;
}
case '3':
{ system("cls");
{loop3:
menu3();
cin>>i2;
if(i2=='1')
{ te.Hunt1();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop3;}
break;}
else if(i2=='2')
{ te.Hunt2();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop3;}
break;}
else if(i2=='3')
{ te.Show();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop3;}
break;}
else if(i2=='4')
{ te.Add();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop3;}
break;}
else if(i2=='5')
{ te.Del();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop3;}
break;}
else if(i2=='6')
{ te.Delall();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop3;}
break;}
else if(i2=='7')
{ te.Edit();
cout<<"\n返回上一層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop3;}
break;}
else if(i2=='8')
{ te.Sort();
cout<<"\n返回到最上層?(Y/N)";
cin>>p;
while(p=='y'||p=='Y'){system("cls");goto loop1;}
break;}
else if(i2=='9'){system("cls");goto loop1;}
else break;
}
}
case '4': cout<<"\n謝謝使用,再見!\n";break;
default: {cout<<"\n輸入錯誤,請重新輸入!\n";goto loop1;}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -