電 話:18937133779
網(wǎng) 址:http://www.gycxdjzzl.com
郵 箱:zboao@qq.com
代碼如下:
運(yùn)行結(jié)果:
如果你是計(jì)算機(jī)系的學(xué)生真的希望你不要完全復(fù)制,做下參考自己編寫出來才能有所收獲,這是對你的將來負(fù)責(zé);如果你只是應(yīng)付一下作業(yè),那就隨便了。
# include <iostream>
# include <fstream>
# include <string.h>
#include <conio.h>//用getch();
using namespace std;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student類﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Student
{
public:
char name[20];
char Id[20];
int Cnum; //C課程得分
int Mnum; //數(shù)學(xué)課程得分
int Enum; //英語課程得分
int sum; //總分
Student * Next;
void Input()
{
cout<<"\t\t請輸入學(xué)生的姓名:"; cin>>name;
cout<<"\t\t請輸入學(xué)生的學(xué)號:"; cin>>Id;
cout<<"\t\t請輸入C課程的成績:"; cin>>Cnum;
cout<<"\t\t請輸入數(shù)學(xué)課程的成績:"; cin>>Mnum;
cout<<"\t\t請輸入英語課程的成績:"; cin>>Enum;
sum=Cnum+Mnum+Enum;
}
void ReadFile(istream & in)
{
in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;
}
void Show()
{
cout<<"姓名:"<<name<<endl<<"學(xué)號:"<<Id<<endl<<"C++:"<<Cnum<<endl
<<"數(shù)學(xué):"<<Mnum<<endl<<"外語:"<<Enum<<endl<<"總成績:"<<sum<<endl<<endl<<endl;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage類﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Studentmassage
{
public:
Studentmassage();
~Studentmassage();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(Student *,Student *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Student * p=Head->Next;p!=End;p=p->Next)
p->Show();
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
void AddItem()
{
End->Input();
End->Next=new Student;
End=End->Next;
cout<<"添加成功!"<<endl;
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
private:
Student * Head,* End;
ifstream in;
ofstream out;
Student *FindItem(char * name)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功則返回上一個(gè)指針,不成功就返回空
if(!strcmp(p->Next->name,name))return p;
return NULL;
}
Student *FindID(char * Id)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功則返回上一個(gè)指針,不成功就返回空
if(!strcmp(p->Next->Id,Id))return p;
return NULL;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌構(gòu)造函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::Studentmassage()
{
Head=new Student;
Head->Next=new Student;
End=Head->Next;
in.open("sort.txt");
if(!in)
cout<<"這是一個(gè)新系統(tǒng),無學(xué)生信息。請先輸入。"<<endl;
else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new Student;
End=End->Next;
}
in.close();
cout<<"\t\t讀取學(xué)生信息成功!"<<endl;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析構(gòu)函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::~Studentmassage()
{
Save();
for(Student * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜單﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ShowMenu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 學(xué) 生 成 績 管 理 系 統(tǒng) ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加學(xué)生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.顯示學(xué)生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序統(tǒng)計(jì)成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找學(xué)生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.刪除學(xué)生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改學(xué)生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系統(tǒng) ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"\n\t\t\n\t\t請選擇:";
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Find()
{
char name[20] ,Id[10];
int x;
Student * p=NULL;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※ 1.按學(xué)生的姓名查找\n\t\t※ 2.按學(xué)生學(xué)號查找";
cout<<"\n\t\t*********************************\n請選擇:";
cin>>x;
switch(x)
{
case 1:{cout<<"\t\t請輸入要查找的學(xué)生的姓名:";cin>>name;
if(p=FindItem(name))
{
p->Next->Show();
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
else
{
cout<<"\t\t沒有找到該姓名的學(xué)生!"<<'\n'<<endl;
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
}break;
case 2:
{
cout<<"\t\t請輸入要查找的學(xué)生的學(xué)號:";cin>>Id;
if(p=FindID(Id))
{
p->Next->Show();
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
else
{
cout<<"\t\t沒有找到該學(xué)好的學(xué)生!"<<'\n'<<endl;
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
}break;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ModifyItem() //修改信息
{
char name[20];
Student * p=NULL;
cout<<"\t\t請輸入要修改的人的姓名:";cin>>name;
if(p=FindItem(name))
{
cout<<"\t\t已找到學(xué)生的信息,請輸入新的信息!"<<endl;
p->Next->Input();
cout<<"修改成功!"<<endl;
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
else
{
cout<<"\t\t沒有找到!"<<endl;
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌刪除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::RemoveItem() // 刪除信息
{
char name[20];
Student * p=NULL,*temp=NULL;
cout<<"\t\t請輸入要?jiǎng)h除的學(xué)生的姓名:"<<endl;cin>>name;
if(p=FindItem(name))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"\t\t刪除成功!"<<endl;
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
else
{
cout<<"\t\t沒有找到!"<<endl;
cout<<"輸入任意字符!繼續(xù)……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Swap(Student *p1, Student *p2)//交換兩個(gè)combox變量的數(shù)據(jù)域
{
Student *temp=new Student;
strcpy(temp->name,p1->name);
strcpy(temp->Id,p1->Id);
temp->Cnum=p1->Cnum;
temp->Mnum=p1->Mnum;
temp->Enum=p1->Enum;
temp->sum=p1->sum;
strcpy(p1->name,p2->name);
strcpy(p1->Id,p2->Id);
p1->Cnum=p2->Cnum;
p1->Mnum=p2->Mnum;
p1->Enum=p2->Enum;
p1->sum=p2->sum;
strcpy(p2->name,temp->name);
strcpy(p2->Id,temp->Id);
p2->Cnum=temp->Cnum;
p2->Mnum=temp->Mnum;
p2->Enum=temp->Enum;
p2->sum=temp->sum;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Studentmassage::ListCount()//統(tǒng)計(jì)當(dāng)前鏈表的記錄總數(shù),返回一個(gè)整數(shù)
{
if(! Head)
return 0;
int n=0;
for(Student * p=Head->Next;p!=End;p=p->Next)
{
n++;
}
return n;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Sort()//對當(dāng)前鏈表進(jìn)行排序
{
cout <<"Sorting..."<<endl;
Student *p=NULL,*p1=NULL,*k=NULL;
int n=Studentmassage::ListCount();
if(n<2)
return;
for(p=Head->Next;p!=End;p=p->Next)
for(k=p->Next;k!=End;k=k->Next)
{
if(p->sum>k->sum)
{
Studentmassage::Swap(p,k);
}
}
cout <<"排序完成!"<<endl;
getch();
return;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Save()
{
out.open("sort.txt");
for(Student *p=Head->Next;p!=End;p=p->Next)
out<<p->name<<"\t"<<p->Id<<"\t"<<p->Cnum<<"\t"
<<p->Mnum<<"\t"<<p->Enum<<"\t"<<p->sum<<'\n';
out.close();
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函數(shù)﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int main()
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t◎★★★★【 歡迎進(jìn)入學(xué)生成績管理系統(tǒng) 】★★★★◎"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;;
Studentmassage Grade;
cout<<"按任意鍵開始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cin>>x;
switch(x)
{
case 0:quit=true;break;
case 1:Grade.AddItem();break;
case 2:Grade.Display();break;
case 3:Grade.Sort();break;
case 4:Grade.Find();break;
case 5:Grade.RemoveItem();break;
case 6:Grade.ModifyItem();break;
}
}
return 0;
}
我這有一個(gè)
不過功能沒你的這個(gè)全
你可以自己修改修改
你要就拿去吧,不要就算啦
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <conio.h>
# define N 20
/*********************自定義函數(shù)聲明部分**************************/
void showheader(); //聲明顯示表頭部分
int menu(); //聲明主菜單函數(shù)
int menu3(); //聲明插入功能子菜單函數(shù)
int menu4(); //聲明刪除功能子菜單函數(shù)
int menu5(); //聲明查找功能子菜單函數(shù)
int quanxian(); //聲明用戶權(quán)限管理函數(shù)
void SavePass();
struct student shuru(); //聲明學(xué)生信息錄入函數(shù)
void display(struct student); //聲明顯示函數(shù)
void sort(struct student stu[N],int); //聲明排序函數(shù)
void charu(struct student stu[N],int); //聲明插入函數(shù)
int del1(struct student stu[N],int); //聲明按照學(xué)號刪除函數(shù)
int del2(struct student stu[N],int); //聲明按照姓名刪除函數(shù)
void chazhao1(struct student stu[N],int i); //聲明按照學(xué)號查找函數(shù)
void chazhao2(struct student stu[N],int i); //聲明按照姓名查找函數(shù)
/*********定義結(jié)構(gòu)體************/
struct student
{
int ID;
char name[15];
char sex;
float score[3];
char *getSex() //構(gòu)造結(jié)構(gòu)成員
{
if(sex=='g')
return "女";
else
return "男";
}
float Ave() //構(gòu)造結(jié)構(gòu)成員
{
return (score[0]+score[1]+score[2])/3;
}
student() //構(gòu)造函數(shù)
{
score[0]=0;
score[1]=0;
score[2]=0;
}
};
/****************************主函數(shù)開始**************************/
void main()
{
struct student stu[N];
int count=0,m=0,j;
char ch,ch1;
int choice,choice3,choice4,choice5; //菜單選項(xiàng)及子菜單選項(xiàng)
int user;
do //此循環(huán)體控制用戶信息輸入錯(cuò)誤后是否重輸
{
user=quanxian(); //調(diào)用擁護(hù)權(quán)限函數(shù)
system("cls");
if(user==1) //此條件結(jié)構(gòu)判斷用戶權(quán)限輸入是否正確
{
do //此循環(huán)體控制返回主菜單
{ ch1='n'; //如果用戶將主菜單選擇錯(cuò)誤,可用此變量控制是否重輸
choice=menu();
system("cls");
switch(choice) //此條件結(jié)構(gòu)控制選擇菜單功能后的操作
{
case 1: //輸入學(xué)生信息
{
do //此循環(huán)體控制是否繼續(xù)輸入
{ printf("****************************** 學(xué)員信息錄入 **********************************\n");
printf("\n\n請輸入第%d個(gè)學(xué)員的成績:\n\n",count+1);
stu[count]=shuru(); //調(diào)用輸入函數(shù)
printf("\n\n是否繼續(xù)(y/n)");
fflush(stdin);
ch=getchar();
count++;
system("cls");
}while(ch=='y');
//system("pause");
break;
}
case 2: //顯示排序好的學(xué)生信息
{
printf("****************************** 學(xué)員信息顯示 **********************************\n");
printf("\n\n排序后的成績?nèi)缦?\n");
sort(stu,count); //調(diào)用排序函數(shù)
showheader();
for(j=0;j<count;j++)
{
display(stu[j]); //調(diào)用顯示函數(shù)
}
system("pause");
system("cls");
break;
}
case 3://插入功能
{
while(choice3!=3) //此循環(huán)體控制是否退出子菜單
{
system("cls");
choice3=menu3(); //調(diào)用子菜單函數(shù)
system("cls");
if(choice3==1) //此條件結(jié)構(gòu)控制子菜單選項(xiàng)
{
do //此循環(huán)體判斷是否繼續(xù)插入
{ printf("****************************** 學(xué)員信息插入 **********************************\n");
charu(stu,count); //調(diào)用插入函數(shù)
count++;
printf("是否繼續(xù)插入?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
if (choice3==2) //此條件結(jié)構(gòu)控制子菜單選項(xiàng)
{
printf("\n\n插入學(xué)生信息后如下:\n");
showheader();
for(j=0;j<count;j++)
{
display(stu[j]); //調(diào)用顯示函數(shù)
}
system("pause");
}
//
}
break;
}
case 4://刪除功能
{
while(choice4!=4) //此循環(huán)體控制是否退出子菜單
{
int num;
system("cls");
choice4=menu4(); //調(diào)用子菜單函數(shù)
system("cls");
if(choice4==1) //此條件結(jié)構(gòu)控制子菜單按照學(xué)號刪除選項(xiàng)
{
do //此循環(huán)體控制是否繼續(xù)刪除
{ printf("*********************** 按照學(xué)號刪除學(xué)員信息 ************************\n");
num=del1(stu,count);//調(diào)用刪除函數(shù)
//system("cls");
if(num==1)
count--;
printf("\n是否繼續(xù)刪除?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
if(choice4==2) //此條件結(jié)構(gòu)控制子菜單按照姓名刪除選項(xiàng)
{
do //此循環(huán)體控制是否繼續(xù)刪除
{ printf("************************** 按照姓名刪除學(xué)員信息 ******************************\n");
num=del2(stu,count);//調(diào)用刪除函數(shù)
if(num==1)
count--;
printf("\n是否繼續(xù)刪除?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
if(choice4==3) //此條件結(jié)構(gòu)控制子菜單顯示刪除后的信息選項(xiàng)
{
printf("\n\n刪除學(xué)生信息后如下:\n");
showheader();
for(j=0;j<count;j++)
{
display(stu[j]); //調(diào)用顯示函數(shù)
}
system("pause");
}
}
break;
}
case 5://查找功能
{
while(choice5!=3) //控制是否繼續(xù)查找
{
system("cls");
choice5=menu5(); //調(diào)用查找子菜單函數(shù)
system("cls");
if(choice5==1) //控制按照學(xué)號查找
{
chazhao1(stu,count);//調(diào)用按照學(xué)號查找的函數(shù)
system("cls");
}
if(choice5==2) //控制按照姓名查找
{
chazhao2(stu,count);//調(diào)用按照姓名查找的函數(shù)
system("cls");
}
system("pause");
}
break;
}
case 6://退出
{
printf("確認(rèn)退出?(y/n)"); //讓用戶確認(rèn)是否退出
fflush(stdin);
ch=getchar();
break;
}
default:
{
printf("\a\a警告:您輸入錯(cuò)誤,是否重輸!(y/n)");
fflush(stdin);
ch1=getchar();
system("cls");
break;
}
}
}while(ch=='n'|| ch1=='y');//控制是否要退出系統(tǒng)
}
if(user==0)
{
printf("\a\a警告:您的用戶名或密碼輸入有誤!是否重輸?(y/n)");
}
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
/*************************主函數(shù)結(jié)束*************************/
/*自定義輸入函數(shù)*/
struct student shuru()
{
struct student stu;
printf("\n\n學(xué)號:");
scanf("%d",&stu.ID);
printf("\n姓名:");
scanf("%s",stu.name);
printf("\n性別(g/b):");
fflush(stdin);
scanf("%c",&stu.sex);
printf("\n語文成績:");
scanf("%f",&stu.score[0]);
printf("\n數(shù)學(xué)成績:");
scanf("%f",&stu.score[1]);
printf("\n英語成績:");
scanf("%f",&stu.score[2]);
return stu;
}
/*自定義顯示函數(shù)*/
void display(struct student stu)
{
int j;
printf("\t%d\t",stu.ID);
printf("%s\t",stu.name);
printf("%s\t",stu.getSex());
for(j=0;j<3;j++)
{
printf("%.2f\t",stu.score[j]);
}
printf("%.2f\t",stu.Ave());
putchar('\n');
}
/*自定義排序函數(shù)*/
void sort(struct student stu[N],int i)
{
int j,k;
struct student temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-j-1;k++)
{
if((stu[k].Ave())<(stu[k+1].Ave()))
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
}
/*自定義插入函數(shù)*/
void charu(struct student stu[N],int k)
{
int i,l;
struct student in ;
in=shuru();//調(diào)用輸入函數(shù)
for(i=0;i<k;i++)
{
if(in.Ave()>stu[i].Ave())
break;
}
for(l=k;l>i;l--)
{
stu[l]=stu[l-1];
}
stu[i]=in;
}
/*自定義按照學(xué)號刪除函數(shù)*/
int del1(struct student stu[N],int i)
{
int dele,j,k;
char ch;
printf("請選擇學(xué)號:");
scanf("%d",&dele);
for(j=0;j<i;j++)
{
if(dele==stu[j].ID)
{
break;
}
}
if(j<i)
{
printf("這是您要?jiǎng)h除的學(xué)生信息\n");
showheader();
display(stu[j]);
printf("確認(rèn)刪除?(y/n)");
fflush(stdin);
ch=getchar();
if(ch=='y')
{
for(k=j+1;k<i;k++)
{
stu[k-1]=stu[k];
}
printf("刪除成功");
return 1;
}
else
{
return 0;
}
}
else
{
printf("不存在您要?jiǎng)h除的信息");
return 0;
}
}
/*自定義按照姓名刪除函數(shù)*/
int del2(struct student stu[N],int i)
{
int j,k;
char name[15],ch;
printf("請輸入姓名:");
scanf("%s",&name);
for(j=0;j<i;j++)
{
if(strcmp(name,stu[j].name)==0)
{
break;
}
}
if(j<i)
{
printf("這是您要?jiǎng)h除的學(xué)生信息\n");
showheader();
display(stu[j]);
printf("確認(rèn)刪除?(y/n)");
fflush(stdin);
ch=getchar();
if(ch=='y')
{
for(k=j+1;k<i;k++)
{
stu[k-1]=stu[k];
}
printf("刪除成功");
return 1;
}
else
{
return 0;
}
}
else
{
printf("不存在您要?jiǎng)h除的信息");
return 0;
}
}
/*自定義主菜單函數(shù)*/
int menu()
{ int choice;
printf("\t\t****************************************************\n\n\t\t\t 歡迎進(jìn)入學(xué)生成績管理系統(tǒng) (GLY 1.0版)\n\n\t\t****************************************************\n\n");
printf("\t\t\t***************主菜單***************\n\n");
printf("\t\t\t\t1> 學(xué)生信息錄入\n\n");
printf("\t\t\t\t2> 學(xué)生信息顯示\n\n");
printf("\t\t\t\t3> 插入學(xué)生信息\n\n");
printf("\t\t\t\t4> 刪除學(xué)生信息\n\n");
printf("\t\t\t\t5> 查找學(xué)生信息\n\n");
printf("\t\t\t\t6> 退出\n");
printf("\n\n請選擇功能選項(xiàng):");
scanf("%d",&choice);
return choice;
}
/*自定義插入功能子菜單函數(shù)*/
int menu3()
{ printf("\t*******************這里顯示的是插入功能子菜單*******************\n\n");
printf("\t\t\t\t1、插入學(xué)生信息\n\n");
printf("\t\t\t\t2、顯示插入后的學(xué)生信息\n\n");
printf("\t\t\t\t3、退出子菜單,返回上一級菜單\n\n");
printf("\n\n請選擇功能選項(xiàng):");
int choice3;
scanf("%d",&choice3);
return choice3;
}
/*自定義刪除功能子菜單函數(shù)*/
int menu4()
{
printf("\t*******************這里顯示的是刪除功能子菜單*******************\n\n");
printf("\t\t\t\t1、按照學(xué)號刪除學(xué)生信息\n\n");
printf("\t\t\t\t2、按照姓名刪除學(xué)生信息\n\n");
printf("\t\t\t\t3、顯示刪除后的學(xué)生信息\n\n");
printf("\t\t\t\t4、退出子菜單,返回上一級菜單\n\n");
printf("\n\n請選擇功能選項(xiàng):");
int choice4;
scanf("%d",&choice4);
return choice4;
}
/*自定義按照學(xué)號查找函數(shù)*/
void chazhao1(struct student stu[N],int i)
{
int select,j;
char ch;
printf("\t*******************您選擇的是按照學(xué)號查找:*******************\n\n");
do
{
printf("\n\n請輸入學(xué)號:");
scanf("%d",&select);
for(j=0;j<i;j++)
{
if(select==stu[j].ID)
{
break;
}
}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
printf("你查找的信息不存在\n");
}
printf("是否繼續(xù)查找?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
/*自定義按照姓名查找函數(shù)*/
void chazhao2(struct student stu[N],int i)
{
int j;
char name[15];
char ch;
printf("\t*******************您選擇的是按照姓名查找:*******************\n\n");
do
{
printf("\n\n請輸入姓名:");
scanf("%s",name);
for(j=0;j<i;j++)
{
if(strcmp(name,stu[j].name)==0)
{
break;
}
}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
printf("你查找的信息不存在\n");
}
printf("是否繼續(xù)查找?(y/n)");
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
/*自定義查找功能子菜單函數(shù)*/
int menu5()
{
printf("\t*******************這里顯示的是查找功能子菜單*******************\n\n");
printf("\t\t\t\t1、按照學(xué)號查找\n\n");
printf("\t\t\t\t2、按照姓名查找\n\n");
printf("\t\t\t\t3、退出子菜單,返回上一級菜單\n\n");
printf("\n\n請選擇功能選項(xiàng):");
int choice5;
scanf("%d",&choice5);
return choice5;
}
/*自定義用戶權(quán)限函數(shù)*/
char chrPass[20];
int quanxian()
{
char user[15];
printf("\t\t*****************************************\n\n\t\t 歡迎您訪問學(xué)生成績管理系統(tǒng) (GLY 1.0版)\n\n\t\t*****************************************\n\n");
printf("\n\n\t\t\t提示 用戶名:hehe 密碼:1982");
printf("\n\n\t\t\t用戶名:");
scanf("%s",user);
printf("\n\nt\t\t\t密 碼:");
SavePass();
if((strcmp(chrPass,"1982")==0)&&(strcmp(user,"hehe")==0))
return 1;
else
return 0;
}
/*密碼顯示為"*"的函數(shù)*/
void SavePass()
{
char chr;
int count;
count = 0;
while((chr=getch())!=13)
{
chrPass[count] = chr;
printf("*");
count++;
}
chrPass[count+1] = '\0';
}
/*自定義表頭函數(shù)*/
void showheader()
{ printf("\n\n\t*********************************************************\n");
printf("\t學(xué)號\t姓名\t性別\t語文\t數(shù)學(xué)\t英語\t平均成績\n");
printf("\t*********************************************************\n");
}
希望有所幫助
#include <iostream>
#include <string>
using namespace std;
struct Student //聲明一個(gè)名為student的結(jié)構(gòu)體類型
{
string name; //姓名
string number; //學(xué)號
double English; //英語成績
double math; //數(shù)學(xué)成績
double c; //c++成績
double SUM; //總分
double ave; //平均分
}stu[100]; //定義一個(gè)結(jié)構(gòu)類型的變量stu
int n=0;
void add() //添加
{
int k,m;
cout<<"請輸入所要添加同學(xué)個(gè)數(shù):";
cin>>k;
cout<<"請依次輸入學(xué)生的相關(guān)信息:"<<endl;
for( m=0;m<k;m++)
{cout<<"\t學(xué)號 "<<"姓名 "<<"英語 "<<"數(shù)學(xué) "<<"C++:\t";
cin>>stu[m].number;
cin>>stu[m].name;
cin>>stu[m].English;
cin>>stu[m].math;
cin>>stu[m].c;
stu[m].SUM=stu[m].English+stu[m].math+stu[m].c;//求總分
stu[m].ave=stu[m].SUM/3; //求平均分
n++;
}
if(m>=k)cout<<"\t\t ^_^ 輸入已完成! ^_^"<<endl;
}
void show() //顯示
{
cout<<"學(xué)號\t姓名\t英語\t數(shù)學(xué)\tc++\t總分\t平均分"<<endl;
for(int i=0;i<n;i++)
{
cout<<stu[i].number<<"\t"<<stu[i].name<<"\t"
<<stu[i].English<<"\t"<<stu[i].math<<"\t"
<<stu[i].c<<"\t"<<stu[i].SUM<<"\t"<<stu[i].ave<<endl;
}
}
void rate() //及格率
{
int n1=0,n2=0,n3=0,n4=0;
double j1,j2,j3,j4;
for(int i=0;i<n;i++)
{
if(stu[i].English>=60) n1++;
if(stu[i].math>=60)n2++;
if(stu[i].c>=60)n3++;
if(stu[i].ave>=60)n4++;
}
j1=n1*1.0/n*100; j2=n2*1.0/n*100;
j3=n3*1.0/n*100; j4=n4*1.0/n*100;
cout<<"英語及格率:"<<j1<<"%"<<endl;
cout<<"數(shù)學(xué)及格率:"<<j2<<"%"<<endl;
cout<<"C++及格率:"<<j3<<"%"<<endl;
cout<<"平均分及格率:"<<j4<<"%"<<endl;
}
void search() //查詢
{
cout<<"請選擇查詢方式:"<<endl;
cout<<"\t\t1、按學(xué)號查詢"<<endl;
cout<<"\t\t2、按姓名查詢"<<endl;
int c,i;
cout<<"請輸入選項(xiàng):";
cin>>c;
switch(c)
{
case 1: //按學(xué)號查詢
{
string num;
cout<<"請輸入要查詢的學(xué)號:";
cin>>num;
for(i=0;i<n;i++)
{
if(stu[i].number ==num)
{ cout<<"學(xué)號\t姓名\t英語\t數(shù)學(xué)\tc++\t總分\t平均分"<<endl;
cout<<stu[i].number<<"\t"<<stu[i].name<<"\t"
<<stu[i].English<<"\t"<<stu[i].math<<"\t"
<<stu[i].c<<"\t"<<stu[i].SUM<<"\t"<<stu[i].ave<<endl;break;
}
}
if(i>=n)cout<<"未找到該同學(xué)信息!"<<endl;//跳出循環(huán)
break;
}
case 2: //按姓名查詢
{
string na;
cout<<"請輸入要查詢的姓名:";
cin>>na;
for(i=0;i<n;i++)
{
if(stu[i].name ==na)
{ cout<<"學(xué)號\t姓名\t英語\t數(shù)學(xué)\tc++\t總分\t平均分"<<endl;
cout<<stu[i].number<<"\t"<<stu[i].name<<"\t"
<<stu[i].English<<"\t"<<stu[i].math<<"\t"
<<stu[i].c<<"\t"<<stu[i].SUM<<"\t"<<stu[i].ave<<endl;break;
}
}
if(i>=n)cout<<"未找到該同學(xué)信息!"<<endl;
break;
}
}
}
void paixu() //排序
{
cout<<"請選擇排序方式:"<<endl;
cout<<"\t\t1、按學(xué)生總分排序"<<endl;
cout<<"\t\t2、按學(xué)生平均分排序"<<endl;
int c;
cout<<"請輸入選項(xiàng):";
cin>>c;
switch(c)
{
case 1: //按學(xué)生總分排序
{
Student p;
for(int i=0;i<n;i++)//冒泡法排序
{
for(int j=0;j<n-i;j++)
if(stu[j].SUM <stu[j+1].SUM )
{
p=stu[j];
stu[j]=stu[j+1];
stu[j+1]=p;
}
}
cout<<"學(xué)號\t姓名\t英語\t數(shù)學(xué)\tc++\t總分\t平均分"<<endl;
for(int m=0;m<n;m++)//依次輸出
{ cout<<stu[m].number<<"\t"<<stu[m].name<<"\t"
<<stu[m].English<<"\t"<<stu[m].math<<"\t"
<<stu[m].c<<"\t"<<stu[m].SUM<<"\t"<<stu[m].ave<<endl;
}
break;
}
case 2: //按平均分排序
{
Student p;
for(int i=0;i<n;i++)
{
for(int j=0;j<n-i;j++)
if(stu[j].ave <stu[j+1].ave )
{
p=stu[j] ;
stu[j]=stu[j+1] ;
stu[j+1]=p;
}
}
cout<<"學(xué)號\t姓名\t英語\t數(shù)學(xué)\tc++\t總分\t平均分"<<endl;
for(int m=0;m<n;m++)
{ cout<<stu[m].number<<"\t"<<stu[m].name<<"\t"
<<stu[m].English<<"\t"<<stu[m].math<<"\t"
<<stu[m].c<<"\t"<<stu[m].SUM<<"\t"<<stu[m].ave<<endl;
}
break;
}
}
}
void max() //最大值
{
double max1=stu[0].English,max2=stu[0].math,
max3=stu[0].c ,max4=stu[0].SUM ,max5=stu[0].ave;
for(int i=0;i<n;i++)
{
if(stu[i].English>max1) max1=stu[i].English;
if(stu[i].math>max2) max2=stu[i].math;
if(stu[i].c>max3) max3=stu[i].c ;
if(stu[i].SUM >max4) max4=stu[i].SUM ;
if(stu[i].ave>max5) max5=stu[i].ave;
}
cout<<"英語最高分:"<<max1<<"\n"<<"數(shù)學(xué)最高分:"<<max2<<"\n"
<<"C++最高分:"<<max3<<"\n"<<"總分最高分:"<<max4<<"\n"
<<"平均分最高分:"<<max5<<endl;
}
void min() //最小值
{
double min1=stu[0].English,min2=stu[0].math,
min3=stu[0].c ,min4=stu[0].SUM ,min5=stu[0].ave;
for(int i=0;i<n;i++)
{
if(stu[i].English<min1) min1=stu[i].English;
if(stu[i].math<min2) min2=stu[i].math;
if(stu[i].c<min3) min3=stu[i].c ;
if(stu[i].SUM <min4) min4=stu[i].SUM ;
if(stu[i].ave<min5) min5=stu[i].ave;
}
cout<<"英語最低分:"<<min1<<"\n"<<"數(shù)學(xué)最低分:"<<min2<<"\n"
<<"C++最低分:"<<min3<<"\n"<<"總分最低分:"<<min4<<"\n"
<<"平均分最低分:"<<min5<<endl;
}
void dele() //刪除
{
string num;
cout<<"請輸入要?jiǎng)h除學(xué)生的學(xué)號(按回車確認(rèn)):";
cin>>num;
for(int i=0;i<n;i++)
if(stu[i].number==num)
{
for(int j=i;j<n-1;j++)
stu[j]=stu[j+1];//用后一個(gè)學(xué)生的信息覆蓋前一個(gè)學(xué)生的信息
n--;//學(xué)生人數(shù)減少一個(gè)
cout<<"已成功刪除該學(xué)生信息!"<<endl;
break;
}
}
void printstar(int n ) //用來打印*號
{
for(int i=0;i<n;i++)
cout<<"*";
cout<<endl;
}
void main() //主函數(shù)
{
Student person;
int b;
while(b<9)
{
cout<<endl;cout<<endl;
printstar(60);
cout<<endl;
cout<<"\t\t1 、 添加 \t 2 、 打印"<<endl;
cout<<"\t\t3 、 查詢 \t 4 、 及格率"<<endl;
cout<<"\t\t5 、 最低分\t 6 、 最高分"<<endl;
cout<<"\t\t7 、 排序 \t 8 、 刪除"<<endl;
cout<<"\t\t9 、 退出"<<endl;
cout<<endl;
printstar(60);
cout<<" ^_^請輸入您所需要的服務(wù):";cin>>b; cout<<endl;
switch(b)
{
case 1: add();break;
case 2: show();break;
case 3: search();break;
case 4: rate();break;
case 5: min();break ;
case 6: max();break;
case 7: paixu();break;
case 8: dele();break;
case 9:cout<<" ^_^ 謝謝使用! ^_^ "<<endl;break;
}
}
}
有個(gè)現(xiàn)成的 里面稍微改改就ok了 Good Luck!!
#include<stdio.h>
#include <time.h>
#include<conio.h> /*清屏*/
#include <stdlib.h> /*顯示目錄*/
#include<string.h>
#define MAX 80
void input(); /*輸入數(shù)據(jù)函數(shù)*/
void sort();/*排序數(shù)據(jù)函數(shù)*/
void sort1();
void sort2();
void sort3();
void display();/*顯示數(shù)據(jù)函數(shù)*/
void display1();
void insert(); /*插入數(shù)據(jù)函數(shù)*/
void del(); /*刪除數(shù)據(jù)函數(shù)*/
void average(); /*平均值函數(shù)*/
void find();/*查找數(shù)據(jù)函數(shù)*/
void find1();
void find2();
void save(); /*保存數(shù)據(jù)函數(shù)*/
void read(); /*讀出數(shù)據(jù)函數(shù)*/
void del_file(); /*刪除文件函數(shù)*/
void modify(); /*修改文件函數(shù)*/
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],*p;
main()/*主函數(shù)*/
{
int as;
char ch;
do{
start: printf("\n\n\n\t\t\t歡迎使用學(xué)生成績管理系統(tǒng)\n");
printf("\n\n\n\n\n\n\t\t******************按任意鍵繼續(xù)********************");
ch=getch();
}
while(!ch);
system("cls");
/*一下為功能選擇模塊*/
do
{
printf("\n\t\t\t\t1.錄入學(xué)員信息\n\t\t\t\t2.顯示學(xué)員總成績信息\n\t\t\t\t3.對總成績排序\n\t\t\t\t4.顯示學(xué)員單科成績排序\n\t\t\t\t5.添加學(xué)員信息\n\t\t\t\t6.刪除學(xué)員信息\n\t\t\t\t7.修改學(xué)員信息\n\t\t\t\t8.查詢學(xué)員信息\n\t\t\t\t9.從文件讀入學(xué)員信息\n\t\t\t\t10.刪除文件中學(xué)員信息\n\t\t\t\t11.保存學(xué)員信息\n\t\t\t\t12.退出\n");
printf("\t\t\t\t選擇功能選項(xiàng)(輸入所選功能前的數(shù)字):");
fflush(stdin);
/*可用可不用,用于清除緩存防止下次用scanf輸入是出現(xiàn)錯(cuò)誤*/
scanf("%d",&as);
switch(as)
{
case 1:system("cls");
input();
break;
case 2:system("cls");
display();
break;
case 3:system("cls");
sort();
break;
case 4:system("cls");
display1();
break;
case 5:system("cls");
insert();
break;
case 6:system("cls");
del();
break;
case 7:system("cls");
modify();
break;
case 8:system("cls");
find();
break;
case 9:system("cls");
read();
break;
case 10:system("cls");
del_file();
break;
case 11:system("cls");
save();
break;
case 12:system("exit");
exit(0);
default:system("cls");
goto start;
}
}while(1);/*while(1),1表示真,所以while(1)表示永遠(yuǎn)循環(huán)下去,一般在while(1)的循環(huán)體內(nèi)都有break 或者return 跳出循環(huán)*/
/*至此功能選擇結(jié)束*/
}
void input()/*原始數(shù)據(jù)錄入模塊*/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.錄入學(xué)員信息\n輸入第%d個(gè)學(xué)員的信息\n",i+1);
printf("\n輸入學(xué)生編號:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n輸入學(xué)員姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n輸入學(xué)員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學(xué)員成績1:");
scanf("%f",&stu[i].score1);
printf("\n輸入學(xué)員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學(xué)員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("是否繼續(xù)輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void sort()/*排序數(shù)據(jù)函數(shù)*/
{
struct student temp;
int i,j;
average();
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave<stu[j].ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
printf("排序以完成進(jìn)入功能2可進(jìn)行顯示\n");
system("pause");
system("cls");
}
void sort1()/*排序數(shù)據(jù)函數(shù)*/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].score1<stu[j].score1)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void sort2()/*排序數(shù)據(jù)函數(shù)*/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].score2<stu[j].score2)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void sort3()/*排序數(shù)據(jù)函數(shù)*/
{
struct student temp;
int i,j;
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].score3<stu[j].score3)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void display()/*顯示數(shù)據(jù)函數(shù)*/
{
int i;
char as;
average();
do
{
printf("\t\t\t班級學(xué)員信息列表\n");
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void display1()/*顯示數(shù)據(jù)函數(shù)*/
{
int i;
char as;
do
{
printf("\t\t\t班級學(xué)員score1成績排序\n");
printf("\t編號\t姓名\t性別\t成績1\n");
sort1();
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1);
printf("\t\t\t班級學(xué)員score2成績排序\n");
printf("\t編號\t姓名\t性別\t成績2\n");
sort2();
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score2);
printf("\t\t\t班級學(xué)員score3成績排序\n");
printf("\t編號\t姓名\t性別\t成績3\n");
sort3();
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score3);
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void insert()/*插入數(shù)據(jù)函數(shù)*/
{
char ch;
do
{
printf("\n\t\t輸入新插入學(xué)員隊(duì)信息\n");
printf("\n輸入學(xué)生編號:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("\n輸入學(xué)員姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("\n輸入學(xué)員性別:");
fflush(stdin);
gets(stu[now_no].sex);
printf("\n輸入學(xué)員成績1:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("\n輸入學(xué)員成績2:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("\n輸入學(xué)員成績3:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否繼續(xù)輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
}
void del()/*刪除數(shù)據(jù)函數(shù)*/
{
int inum,i;
printf("輸入要?jiǎng)h除學(xué)員的編號:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i].no==inum)
{
if(i==now_no)now_no-=1;
else
{
stu[i]=stu[now_no-1];
now_no-=1;
}
sort();
break;
}
}
system("cls");
}
void save()/*保存數(shù)據(jù)函數(shù)*/
{
FILE *fp;
int i;
char filepath[20];
printf("輸入要保存的文件路徑:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp,"\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
fclose(fp);
printf("學(xué)生信息已保存在%s中!\n",filepath);
system("pause");
system("cls");
}
void find()/*查詢函數(shù)*/
{
int i;
char str[20],as;
do
{
printf("輸入要查詢的學(xué)生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str))
{
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void average()/*求平均數(shù)*/
{
int i;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
}
}
void modify()/*修改數(shù)據(jù)函數(shù)*/
{
int i;
char str[20];
printf("輸入要修改的學(xué)生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
{
if(!strcmp(stu[i].name,str))
{
system("cls");
printf("\n\t\t輸入新插入學(xué)員隊(duì)信息\n");
printf("\n輸入學(xué)生編號:");
fflush(stdin);
scanf("%d",&stu[i].no);
printf("\n輸入學(xué)員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學(xué)員成績1:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學(xué)員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學(xué)員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
sort();
break;
}
}
system("cls");
}
void read()
{
FILE *fp;
int i;
char filepath[20];
printf("輸入要讀入的文件路徑:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);
now_no++;
}
fclose(fp);
printf("保存的在文件%s中的所有信息已經(jīng)讀入!\n",filepath);
system("pause"); /*按任意鍵繼續(xù)*/
system("cls");
}
void del_file()
{
FILE *fp;
char filepath[20];
printf("輸入要?jiǎng)h除的文件路徑:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存的在文件%s中的所有信息已經(jīng)刪除!\n",filepath);
system("pause");
system("cls");
}
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
#include<ctime>
#include<conio.h>
#include<iostream>
struct student //定義一個(gè)學(xué)生結(jié)構(gòu)體
{
char name[8];
int num;
char add[20];
int GS,YY,JSJ,SUM;
};
int s=0;
class student1 //定義一個(gè)學(xué)生類
{
private:
student stu[40];
char name,add;
int num;
int GS,YY,JSJ,SUM;
public:
void sr(char *,int,char *,int,int,int);
void print(int);
int jc(int xxh)
{
int m=0;
while(m<=s+1)
if(xxh==stu[m++].num)
break;
if(m>s+1)
return 0;
else
return 1;
}
void cz(int);
void sc(int);
void sum(int);
};
void student1::sr(char *xm,int xh,char *dz,int gs,int yy,int jsj) //輸入模塊
{
strcpy(stu[s].name,xm);
stu[s].num=xh;
strcpy(stu[s].add,dz);
stu[s].GS=gs;
stu[s].YY=yy;
stu[s].JSJ=jsj;
}
void student1::print(int s) //輸出模塊
{
cout<<s<<"\t";
cout<<stu[s].name<<"\t";
cout<<stu[s].num<<"\t";
cout<<stu[s].add<<"\t";
cout<<stu[s].GS<<"\t";
cout<<stu[s].YY<<"\t";
cout<<stu[s].JSJ<<"\t";
cout<<endl;
}
void student1::cz(int s) //查找模塊
{
int xxh,p;
while(s==0)
{
cout<<"沒有記錄,請先輸入記錄!"<<endl;
break;
}
if(s!=0)
{cout<<"請輸入您要查找的學(xué)號:";
cin>>xxh;
while (xxh<100000||xxh>999999) //判斷輸入的學(xué)號是否正確
{
cout<<"您輸入的學(xué)號不正確,請輸入一個(gè)六位數(shù)的學(xué)號"<<endl;
cin>>xxh;
}
while(s!=0) //查找是否有符合條件的記錄
{
p=1;
if (xxh==stu[s].num)
{
cout<<"姓名\t學(xué)號\t地址\t高數(shù)\t英語\t計(jì)算機(jī)"<<endl;
cout<<stu[s].name<<"\t";
cout<<stu[s].num<<"\t";
cout<<stu[s].add<<"\t";
cout<<stu[s].GS<<"\t";
cout<<stu[s].YY<<"\t";
cout<<stu[s].JSJ<<endl;
getch();
break;
}
else
p=0;
s--;
}
if(p==0)
cout<<"很抱歉,沒有找到您要查找的學(xué)號!"<<endl;}
getch();
}
void student1::sc(int n) //刪除模塊
{
int xxh,p;
char da;
while(s==0)
{
cout<<"沒有記錄,請先輸入記錄!"<<endl;
break;
}
if(s!=0)
{
cout<<"請輸入您要?jiǎng)h除的學(xué)號:";
cin>>xxh;
while (xxh<100000||xxh>999999)
{
cout<<"您輸入的學(xué)號不正確,請您輸入一個(gè)六位數(shù)的學(xué)號" <<endl;
cin>>xxh;
}
for(int i=1;i<=n;i++)
{
if(stu[i].num!=xxh)
p=0;
if(stu[i].num==xxh)
{
cout<<"姓名\t學(xué)號\t地址\t高數(shù)\t英語\t計(jì)算機(jī)"<<endl;
cout<<stu[i].name<<"\t";
cout<<stu[i].num<<"\t";
cout<<stu[i].add<<"\t";
cout<<stu[i].GS<<"\t";
cout<<stu[i].YY<<"\t";
cout<<stu[i].JSJ<<endl;
cout<<"您確實(shí)要?jiǎng)h除該學(xué)生的記錄嗎?(y/n)";
cin>>da;
if(da=='y'||da=='Y')
{
for(int j=i;j<=n-1;j++) //刪除記錄
{
strcpy(stu[j].name,stu[j+1].name);
stu[j].num=stu[j+1].num;
strcpy(stu[j].add,stu[j+1].add);
stu[j].GS=stu[j+1].GS;
stu[j].YY=stu[j+1].YY;
stu[j].JSJ=stu[j+1].JSJ;
}
cout<<"該記錄已刪除!"<<endl;
s=s-1;
p=1;
break;
}
else
{
cout<<"該記錄未刪除!"<<endl;
p=1;
}
}
}
if(p==0)
cout<<"很抱歉,沒有找到您要找的學(xué)號!"<<endl;
}
getch();
}
void student1::sum(int s) //排序模塊
{
int chang;
int b[40];
while(s==0)
{
cout<<"沒有記錄,請先輸入記錄!"<<endl;
break;
}
if(s!=0)
{
cout<<"姓名\t學(xué)號\t地址\t英語\t";
cout<<"高數(shù)\t計(jì)算機(jī)\t總分"<<endl;
for(int k=1;k<=s;k++)
{
b[k]=stu[k].GS+stu[k].YY+stu[k].JSJ;
stu[k].SUM=stu[k].GS+stu[k].YY+stu[k].JSJ;
}
for(int i=1;i<=s;i++) //利用冒泡法對B[]進(jìn)行排序
for(int j=1;j<=s-i;j++)
if(b[j]<b[j+1])
{
chang=b[j];
b[j]=b[j+1];
b[j+1]=chang;
}
for(int h=1;h<=s;h++) //輸出與B[]中相同總分所對應(yīng)的內(nèi)容
for(int e=1;e<=s;e++)
if(b[h]==stu[e].SUM)
{
cout<<stu[e].name<<"\t";
cout<<stu[e].num<<"\t";
cout<<stu[e].add<<"\t";
cout<<stu[e].YY<<"\t";
cout<<stu[e].GS<<"\t";
cout<<stu[e].JSJ<<"\t";
cout<<stu[e].SUM<<endl;
}
}
getch();
}
void main()
{
student1 st;
char da,a;
char *xm,*dz;
int gs,yy,jsj,xh;
time_t t;
time(&t);
while(1)
{
system("cls");
cout<<" 版權(quán)所有:張珊珊 肖朋麗 姚約漢"<<endl;
cout<<endl;
cout<<" 學(xué)生成績管理系統(tǒng)"<<endl;
cout<<" 顯示系統(tǒng)時(shí)間和日期:"<<ctime(&t)<<endl;
cout<<"1.輸入/添加學(xué)生資料"<<endl;
cout<<"2.顯示學(xué)生資料"<<endl;
cout<<"3.按學(xué)號查找"<<endl;
cout<<"4.刪除記錄"<<endl;
cout<<"5.按總分進(jìn)行排序"<<endl;
cout<<"6.退出"<<endl;
cout<<"請選擇操作(1-6)"<<endl;
cin>>a;
t: if(a=='6') break;
switch (a)
{
case '1':
{
cout<<"請依次輸入學(xué)生的姓名,學(xué)號,地址,高數(shù),英語,計(jì)算機(jī):"<<endl;
xm=new char[];dz=new char[];
cin>>xm>>xh>>dz>>gs>>yy>>jsj;
while(st.jc(xh)) //調(diào)用JC模塊判斷學(xué)號是否重復(fù)
{
cout<<"學(xué)號重復(fù),請重新輸入!"<<endl;
cin>>xh;
}
s=s+1;
st.sr(xm,xh,dz,gs,yy,jsj);
cout<<"是否繼續(xù)輸入?(y/n)";
cin>>da;
while (da=='y'||da=='Y') //判斷是否要繼續(xù)輸入
{
cout<<"請依次輸入學(xué)生的姓名,學(xué)號,地址,高數(shù),英語,計(jì)算機(jī):"<<endl;
xm=new char[];dz=new char[];
cin>>xm>>xh>>dz>>gs>>yy>>jsj;
while(st.jc(xh))
{
cout<<"學(xué)號重復(fù),請重新輸入!"<<endl;
cin>>xh;
}
s=s+1;
st.sr(xm,xh,dz,gs,yy,jsj);
cout<<"是否繼續(xù)輸入?(y/n)";
cin>>da;
}
getch();
};break;
case '2':
{
if(s==0) //判斷是否有記錄輸入
{
cout<<"沒有記錄,請先輸入記錄!"<<endl;
getch();
break;
}
if(s!=0)
{
cout<<"序號"<<"\t";
cout<<"姓名"<<"\t";
cout<<"學(xué)號"<<"\t";
cout<<"地址"<<"\t";
cout<<"高數(shù)"<<"\t";
cout<<"英語"<<"\t";
cout<<"計(jì)算機(jī)"<<endl;
for(int i=1;i<=s;i++)
st.print(i);
getch();
}
};break;
case '3':st.cz(s);break;
case '4':st.sc(s);break;
case '5':st.sum(s);break;
default:
{
while(a=='0'||a>'6') //判斷選項(xiàng)是否正確
{
cout<<"錯(cuò)誤選項(xiàng),請重新選擇!"<<endl;
cin>>a;
}
goto t;
};break;
}
}
cout<<"謝謝您的使用!"<<endl;
}
(全國總部)河南省鄭州市金水區(qū)博雅廣場4號樓1104
+18937133779
zboao@qq.com
中博奧技術(shù)有限公司& 版權(quán)所有
工信部備案號:豫ICP備11015869號-8