C++課程設計:學生資訊管理系統

小海豚yy發表於2015-04-26

課程設計內容

1.)學生資訊的錄入:錄入新的學生的資訊;

2.)學生資訊的新增:新增新的學生的資訊;

3.) 學生資訊的刪除:刪除不需要的學生的資訊。

4.)學生資訊的查詢:查詢你需要的學生的資訊。

5.)學生資訊的修改:修改錯誤的學生的資訊。

6.)學生資訊的顯示:顯示所有學生的資訊。

   7.)學生資訊的儲存:把學生的資訊儲存到檔案並退出。

8.)學生資訊的讀取:從檔案中讀取所有學生的資訊。

功能描述

1.新增、刪除

系統將提示使用者輸入新新增學生的資訊;由使用者輸入要刪除的學生的學號,然後呼叫刪除函式,刪除該名學生的資料。

2.查詢

3.首先由使用者輸入要查詢的學生的學號,系統用查詢函式查詢,然後系統就呼叫輸出函式。

4.修改

首先由使用者輸入要修改的學生的學號,然後系統用修改函式查詢,顯示該名學生的資料,然後系統提示使用者輸入需要修改的專案和新的資料。

程式碼:

#include<iostream>

#include<fstream>

#include<iomanip>

#include<cstring> 

using namespace std;

int n=0;

 

class Student 

{

public:

 int num; 

 char name[12];

 char study[12]; 

 char classe[12]; 

 int score[3];

 int s; 

 Student *next;  

}; 

 

class Studentmanage

{

private:

  Student *head,*p1,*p2,*p3;  

public:

  Studentmanage (){};

  Student *creat();

  Student *add(Student *head);

  Student *delet(Student *head);

  void *search(Student *head);

  Student *modify(Student *head);

  void display(Student *head);

  void write_file(Student *head);

  Student * read_file();

  ~Studentmanage (){};   

};

 

Student *Studentmanage::creat()

{

   p1=p2=new Student;

   head=NULL;

   cout<<"請輸入學生的基本資訊:以學號為0結束。\n";

   while(1)

    {

       cout<<"學號:";

       cin>>p1->num;

       if(p1->num==0)

       {

           break;

       }

   cout<<"姓名:";

   cin>>p1->name;

   cout<<"院系:";

   cin>>p1->study;

   cout<<"班級:";

   cin>>p1->classe;

   cout<<"C++成績:";

   cin>>p1->score[0];

       cout<<"高數成績:";

       cin>> p1->score[1];

       cout<<"英語成績:";

       cin>>p1->score[2];

       p1->s=p1->score[0]+p1->score[1]+p1->score[2]; 

       n=n+1;

       if(n==1)

         head=p1;

       else

         p2->next=p1; 

         p2=p1;

         p1=new Student;         

    }

       p2->next=NULL;

       return head;

}

Student *Studentmanage::add(Student *head)

{

   long int Num; 

   p1=p2=new Student;

   p3=new Student;

   p1=head;

   int j=0;

   cout<<"請輸入你要新增學生的位置:\n";

   cout<<"如果想放在頭,請輸入0,  否則請輸入要新增前一個學生的學號:\n";

   cin>>Num;

   if(Num==0)

   {  

    cout<<"請輸入要新增學生的資訊!\n學號:";

    cin>>p3->num; 

    cout<<"姓名:";

    cin>>p3->name;

    cout<<"院系:";

    cin>>p3->study;

    cout<<"班級:";

    cin>>p3->classe;

    cout<<"C++成績:"; 

    cin>>p3->score[0]; 

    cout<<"高數成績:";

    cin>>p3->score[1];

    cout<<"英語成績:";

    cin>>p3->score[2];

    p3->s=p3->score[0]+p3->score[1]+p3->score[2];

    p1=head;

    head=p3;

    p3->next=p1;

    n++;

    j=1;

   }

   else

   {

     p1=head;

     p2=p1->next;

     while(p1!=NULL)

     {

      if(p1->num==Num)

      {

       cout<<"請輸入要新增學生的資訊!\n學號:";

       cin>>p3->num;  

       cout<<"姓名:";

       cin>>p3->name;

       cout<<"院系:";

       cin>>p3->study;

       cout<<"班級:";

       cin>>p3->classe;

       cout<<"C++成績:"; 

       cin>>p3->score[0]; 

       cout<<"高數成績:";

       cin>>p3->score[1];

       cout<<"英語成績:";

       cin>>p3->score[2];

       p3->s=p3->score[0]+p3->score[1]+p3->score[2];     

       p1->next=p3;

       p3->next=p2;

   n++;

   j=1;

   break;

  }

  else

      { 

       p1=p2;

       p2=p1->next;

      }

     }

    }

   if(j==0)

    cout<<"你要新增的位置不存在,新增失敗!\n";

else

    cout<<"新增成功!\n";

    return head;

}

Student *Studentmanage::delet(Student *head) 

{

   long int Num;

   p2=p1=new Student;

   cout<<"請輸入要刪除學生的學號:\n";

   cin>>Num;

   p2=p1=head;

   int j=0;

   if(head->num==Num&&head!=NULL) 

   {   

      head=head->next;

      delete(p1);

  j=1;

  n--; 

   }

   else

   {  

      p1=head->next;

      while(p1!=NULL)

      {

        if(p1->num==Num)

        {

          p2->next=p1->next;

          free(p1);

          j=1;

      n--; 

          break;               

        } 

        else  

        {

          p2=p1;

          p1=p2->next; 

        }              

      }

   }

   if(j==0)

 cout<<"此學生不存在,刪除的失敗!\n";

   else

 cout<<"刪除成功!\n";

   return head;            

}

 

void *Studentmanage::search(Student *head)

{

  long int Num;

  p1=new Student;

  cout<<"請輸入要查詢學生的學號:\n";

  cin>>Num;

  p1=head;

  int j=0;

  while(p1!=NULL)

  {

    if(p1->num==Num) 

{  

       cout<<"學號:"<<p1->num;

       cout<<" 姓名:"<<p1->name;

       cout<<" 院系:"<<p1->study;

       cout<<" 班級:"<<p1->classe;

       cout<<" C++成績:"<<p1->score[0];

       cout<<" 高數成績:"<<p1->score[1];

       cout<<" 英語成績:"<<p1->score[2];

       cout<<" 總成績:"<<p1->s<<endl;

       j=1;

   break;

}

p1=p1->next;

  }

  if(j==0)

  cout<<"沒有找到你要查詢學生的資訊。\n";

  else

  cout<<"這是你要查詢學生的資訊:\n";           

}

 

Student *Studentmanage::modify(Student *head)

{

   long int Num; 

   long int num1;

   char name1[12];

   char study1[12]; 

   char classe1[12];

   int score1[3]; 

   p1=new Student;

   int j=0;

   cout<<"請輸入你要更改學生的學號:\n";

   cin>>Num;

   p1=head;

   if(head->num==Num) 

    {

     cout<<"顯示要修改學生的資訊:\n";

     cout<<"學號:"<<head->num<<" 姓名:"<<head->name<<" 院系:"<<head->study;

     cout<<" 班級:"<<head->classe<<"C++成績:"<<head->score[0];

     cout<<" 高數成績:"<<head->score[1]<<" 英語成績:"<<head->score[2];

     cout<<"總成績:"<<head->s<<endl; 

     cout<<"請輸入要更改學生的資訊:\n";

     cout<<"學號:";

     cin>>num1; 

     cout<<"姓名:";

     cin>>name1;

     cout<<"院系:";

     cin>>study1;

     cout<<"班級:";

     cin>>classe1;

     cout<<"C++成績:";

     cin>>score1[0];

     cout<<"高數成績:";

     cin>>score1[1];

     cout<<"英語成績:";

     cin>>score1[2];                     

     head->num=num1;

     strcpy(head->name,name1);

     strcpy(head->study,study1);

     strcpy(head->classe,classe1);

     head->score[0]=score1[0];

     head->score[1]=score1[1];

     head->score[2]=score1[2];

     head->s=head->score[0]+head->score[1]+head->score[2];

     j=1;

    }

   else

    { 

     p1=head->next; 

 while(p1!=NULL)

 {

      if(p1->num!=Num)

      {

       p1=p1->next;

      }

      else

      {

        cout<<"顯示要修改學生的資訊:\n";

        cout<<"學號:"<<p1->num<<" 姓名:"<<p1->name<<" 院系:"<<p1->study;

        cout<<" 班級:"<<p1->classe<<"C++成績:"<<p1->score[0];

        cout<<" 高數成績:"<<p1->score[1]<<" 英語成績:"<<p1->score[2]<<endl;

        cout<<"請輸入要更改學生的資訊:\n";

        cout<<"學號:";

        cin>>num1; 

        cout<<"姓名:";

        cin>>name1;

        cout<<"院系:";

        cin>>study1;

        cout<<"班級:";

        cin>>classe1;

        cout<<"C++成績:";

        cin>>score1[0];

        cout<<"高數成績:";

        cin>>score1[1];

        cout<<"英語成績:";

        cin>>score1[2];                     

        p1->num=num1;

        strcpy(p1->name,name1);

        strcpy(p1->study,study1);

        strcpy(p1->classe,classe1);

        p1->score[0]=score1[0];

        p1->score[1]=score1[1];

        p1->score[2]=score1[2];

        p1->s=p1->score[0]+p1->score[1]+p1->score[2];

    j=1;

    break;

 }

    }

   }

if(j==0)

cout<<"沒有找到你要更改的學生,更改失敗!\n";

else

cout<<"更改成功!\n";

    return head;             

}

 

void Studentmanage::display(Student *head)

{

    int i;

    i=n;

  cout<<"這裡有"<<n<<"個學生的資訊:"<<endl;

  p1=head;

  if(p1==NULL)

  cout<<"這是一個空表!請先輸入學生資訊。"<<endl;

  else

  {

      while(i>0)

      { 

      cout<<"學號:"<<p1->num<<" 姓名:"<<p1->name<<" 院系:"<<p1->study;

      cout<<" 班級:"<<p1->classe<<" C++成績:"<<p1->score[0];

      cout<<" 高數成績:"<<p1->score[1]<<" 英語成績:"<<p1->score[2];

      cout<<" 總成績:"<<p1->s<<endl;

      p1=p1->next;

      i--;             

      }

  }           

}

Student *Studentmanage::read_file()

{

    int num;

    int i=0;

    char name[12];

    char study[12];

    char classe[12];

    int score[3];

    int s;

    p1=p2=new Student;

    head=NULL;

    ifstream in;

    in.open("yyy.txt");

    if(!in)

    {

        cout<<"開啟檔案失敗!"<<endl;

    }

    while(in)

    {

        

        in>>num>>name>>study>>classe>>score[0]>>score[1]>>score[2]>>s;

        p1->num=num;

        strcpy(p1->name,name);

        strcpy(p1->study,study);

        strcpy(p1->classe,classe);

        p1->score[0]=score[0];

        p1->score[1]=score[1];

        p1->score[2]=score[2];

        p1->s=s;

        i++;

        if(i==1)

        {

           head=p2=p1;

        }

       else

       {

         p2->next=p1; 

       }

         p2=p1;

         p1=new Student;

         n=i-1;

    }

    return head;

}

void Studentmanage::write_file(Student *head)

{

    

    ofstream out;

    out.open("yyy.txt");

    if(!out)

    {

        cout<<"開啟檔案失敗!"<<endl;

    }

    p1=NULL;

    p1=head;

    while(p1)

    {

        out<<p1->num<<setw(5)<<p1->name<<setw(5)<<p1->study<<setw(5)<<p1->classe<<setw(5)<<p1->score[0]<<setw(5)<<p1->score[1]<<setw(5)<<p1->score[2]<<setw(5)<<p1->s<<endl;

        p1=p1->next;

    }

    out.close();

}

char menu()

{  

    system("cls");

    char ch;

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

    cout<<"\t\t\t---------1.錄入功能-------\n";

    cout<<"\t\t\t---------2.新增功能:-------\n";

    cout<<"\t\t\t---------3.刪除功能:-------\n";

    cout<<"\t\t\t---------4.查詢功能:-------\n";

    cout<<"\t\t\t---------5.修改功能:-------\n";

    cout<<"\t\t\t---------6.顯示功能:----\n";

    cout<<"\t\t\t---------7.儲存並退出:----------\n";

    cout<<"\t\t\t---------8讀出檔案-----------\n";

    cin>>ch;

    return ch;

}

 

int main ()

{

  Studentmanage s;

  Student *head;

  char c;

    cout<<"歡迎使用學生資訊管理系統!\n"; 

    cout<<"**********************************作者:於洋洋\n";

    cout<<"----------------------- 祝你使用愉快!\n";

system("pause");

  while(1)

switch (menu())

{

   case'1':head=s.creat();system("pause");break;

   case'2':head=s.add(head);system("pause");break;

   case'3':head=s.delet(head);system("pause");break;

   case'4':s.search(head);system("pause");break;

   case'5':head=s.modify(head);system("pause");break;

   case'6':s.display(head);system("pause");break;

 case'7':s.write_file(head);cout<<"謝謝使用!再見!\n";system("pause");return 0;

   case'8':head=s.read_file();system("pause");break;

   default:cout<<"選擇有錯,請重新選擇\n";

   }

  return 0;       

}



相關文章