當前位置:編程學習大全網 - 編程語言 - 求用C語言編寫壹個簡單的學生信息管理程序和課程設計報告

求用C語言編寫壹個簡單的學生信息管理程序和課程設計報告

# 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; //數學課程得分

int Enum; //英語課程得分

int sum; //總分

Student * Next;

void Input()

{

cout<<"\t\t請輸入學生的姓名:"; cin>>name;

cout<<"\t\t請輸入學生的學號:"; cin>>Id;

cout<<"\t\t請輸入C課程的成績:"; cin>>Cnum;

cout<<"\t\t請輸入數學課程的成績:"; 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<<"學號:"<<Id<<endl<<"C++:"<<Cnum<<endl

<<"數學:"<<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<<"輸入任意字符!繼續……";

getch();

}

void AddItem()

{

End->Input();

End->Next=new Student;

End=End->Next;

cout<<"添加成功!"<<endl;

cout<<"輸入任意字符!繼續……";

getch();

}

private:

Student * Head,* End;

ifstream in;

ofstream out;

Student *FindItem(char * name)

{

for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功則返回上壹個指針,不成功就返回空

if(!strcmp(p->Next->name,name))return p;

return NULL;

}

Student *FindID(char * Id)

{

for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功則返回上壹個指針,不成功就返回空

if(!strcmp(p->Next->Id,Id))return p;

return NULL;

}

};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌構造函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

Studentmassage::Studentmassage()

{

Head=new Student;

Head->Next=new Student;

End=Head->Next;

in.open("sort.txt");

if(!in)

cout<<"這是壹個新系統,無學生信息。請先輸入。"<<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讀取學生信息成功!"<<endl;

}

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析構函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

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<<"〓〓〓〓〓〓〓〓〓〓 ☆ 學 生 成 績 管 理 系 統 ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl;

cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.顯示學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序統計成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.刪除學生成績 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改學生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系統 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"\n\t\t\n\t\t請選擇:";

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

void Studentmassage::Find()

{

char name[20] ,Id[10];

int x;

Student * p=NULL;

cout<<"\n\t\t*********************************\n";

cout<<"\t\t※ 1.按學生的姓名查找\n\t\t※ 2.按學生學號查找";

cout<<"\n\t\t*********************************\n請選擇:";

cin>>x;

switch(x)

{

case 1:{cout<<"\t\t請輸入要查找的學生的姓名:";cin>>name;

if(p=FindItem(name))

{

p->Next->Show();

cout<<"輸入任意字符!繼續……";

getch();

}

else

{

cout<<"\t\t沒有找到該姓名的學生!"<<'\n'<<endl;

cout<<"輸入任意字符!繼續……";

getch();

}

}break;

case 2:

{

cout<<"\t\t請輸入要查找的學生的學號:";cin>>Id;

if(p=FindID(Id))

{

p->Next->Show();

cout<<"輸入任意字符!繼續……";

getch();

}

else

{

cout<<"\t\t沒有找到該學好的學生!"<<'\n'<<endl;

cout<<"輸入任意字符!繼續……";

getch();

}

}break;

}

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

void Studentmassage::ModifyItem() //修改信息

{

char name[20];

Student * p=NULL;

cout<<"\t\t請輸入要修改的人的姓名:";cin>>name;

if(p=FindItem(name))

{

cout<<"\t\t已找到學生的信息,請輸入新的信息!"<<endl;

p->Next->Input();

cout<<"修改成功!"<<endl;

cout<<"輸入任意字符!繼續……";

getch();

}

else

{

cout<<"\t\t沒有找到!"<<endl;

cout<<"輸入任意字符!繼續……";

getch();

}

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌刪除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

void Studentmassage::RemoveItem() // 刪除信息

{

char name[20];

Student * p=NULL,*temp=NULL;

cout<<"\t\t請輸入要刪除的學生的姓名:"<<endl;cin>>name;

if(p=FindItem(name))

{

temp=p->Next;

p->Next=p->Next->Next;

delete temp;

cout<<"\t\t刪除成功!"<<endl;

cout<<"輸入任意字符!繼續……";

getch();

}

else

{

cout<<"\t\t沒有找到!"<<endl;

cout<<"輸入任意字符!繼續……";

getch();

}

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

void Studentmassage::Swap(Student *p1, Student *p2)//交換兩個combox變量的數據域

{

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()//統計當前鏈表的記錄總數,返回壹個整數

{

if(! Head)

return 0;

int n=0;

for(Student * p=Head->Next;p!=End;p=p->Next)

{

n++;

}

return n;

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

void Studentmassage::Sort()//對當前鏈表進行排序

{

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;

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

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();

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函數﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

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◎★★★★ 歡迎進入學生成績管理系統 ★★★★◎"<<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;

}

//妳要的功能全部實現了~妳再改改吧,有多余的功能,設計報告妳就自己寫寫吧!能幫妳的就這麽多了。

  • 上一篇:結對編程的缺點
  • 下一篇:蘇州PLC培訓哪裏好
  • copyright 2024編程學習大全網