1. 程式人生 > >課程設計:學生檔案管理系統

課程設計:學生檔案管理系統

 一、       程式設計的題目

 

 

——學生檔案管理系統

 

 

二、         程式分析

1.      主要運用到的知識:類和物件的應用、連結串列的應用等等。

2.      程式實現的功能:插入學生資訊(按學號排序插入);查詢學生資訊(按學號查詢、按名字查詢);修改學生資訊;刪除學生資訊;顯示學生資訊。

3.      分析

程式碼裡設定有Student類和Operation類,Student類私有資料儲存學生資訊:名字、班別、學號、性別、平時成績、卷面成績、總成績及排名,Operation類公有函式主要實現對資訊的操作:插入、查詢、刪除、修改、顯示。將Operation類與Sstudent類組合起來:

         Menu()實現程式主選單,呼叫程式各功能

         Insert()實現學生資訊的插入

         Search()實現查詢功能,按名字查詢或按學號查詢

         Remove()修改函式

         Delete()刪除函式,刪除學生資訊

         Show()顯示所有學生資訊,呼叫Printone函式通過迴圈把所有資訊顯示

四、程式原始碼

#include<iostream>
#include <string>
using namespace std;
class Student
 {
 private:
	 string number;//學號
	 string name;//名字
	 string grade;//班級
	 string sex;//性別
	 int dailyScore;//平時分
	 int finalScore;//卷面分
	 float generalScore;//總成績
	 int place;//排名
 public:
	 Student *next;//next指向下一個學生,構成連結串列
	 Student(){next=NULL;}
	 Student(string num,string n,string g,string s,int dS,int fS,float gS,int pla)
	 {
	 number=num;
	 grade=g;
	 name=n;
	 sex=s;
	 dailyScore=dS;
	 finalScore=fS;
	 generalScore=gS;
	 place=pla;
	 next=NULL;
	 };//建構函式
	 string getnum(){return number;}//學號
	 string getgrade(){return grade;}//班別
	 string getname(){return name;}//名字
	 string gets(){return sex;}//性別
	 int getdS(){return dailyScore;}//平時分
	 int getfS(){return finalScore;}//卷面分
	 float getgS(){return generalScore;}//總成績
	 int getpla(){return place;}//排名
	 void setnum(string num){ number=num;}//修改學號
	 void setgrade(string g){ grade=g;}//修改班級
	 void setname(string n){name=n;}//修改名字
	 void sets(string s){sex=s;}//修改性別
	 void setdS(int dS){dailyScore=dS;}//修改平時分
	 void setfS(int fS){ finalScore=fS;}//修改卷面分
	 void setgS(float gS){ generalScore=gS;}//修改總成績
	 void setpla(int pla){ place=pla;}//修改排名
 };

class Operation
{
private:
	Student *first;
public:
	Operation()
	{
		first=new Student;
	}
   	 void Menu();//選單 
	 void Insert();//插入
	 void Search();//查詢
	 void Remove();//修改
	 void Delete();//刪除
	 void Print();//輸出
};


void Operation::Menu()                    
{  
  cout<<"********************************************************************************"<<endl;  
  cout<<"〓〓〓〓〓〓〓〓〓〓  ☆   學 生 檔案 管 理 系  統     ☆  〓〓〓〓〓〓〓〓〓〓"<<endl;  
  cout<<"〓〓〓〓〓〓〓★★★★★         ★★★★★★★         ★★★★★〓〓〓〓〓〓〓"<<endl;  
  cout<<"〓〓〓〓〓〓〓〓〓★  ☆          1.增加學生資訊        ☆  ★〓〓〓〓〓〓〓〓〓"<<endl;  
  cout<<"〓〓〓〓〓〓〓〓〓★  ☆          2.顯示學生資訊        ☆  ★〓〓〓〓〓〓〓〓〓"<<endl;  
  cout<<"〓〓〓〓〓〓〓〓〓★  ☆          3.查詢學生資訊        ☆  ★〓〓〓〓〓〓〓〓〓"<<endl;  
  cout<<"〓〓〓〓〓〓〓〓〓★  ☆          4.刪除學生資訊        ☆  ★〓〓〓〓〓〓〓〓〓"<<endl;    
  cout<<"〓〓〓〓〓〓〓〓〓★  ☆          5.修改學生資訊        ☆  ★〓〓〓〓〓〓〓〓〓"<<endl;   
  cout<<"〓〓〓〓〓〓〓〓〓★  ☆          6.安全退出系統        ☆  ★〓〓〓〓〓〓〓〓〓"<<endl;  
   
 }  

 void Operation::Insert()     //插入
 {
	 string number;//學號
	 string grade;//班級
	 string name;//名字
	 string sex;//性別
	 int dailyScore;//平時分
	 int finalScore;//卷面分
	 float generalScore;//總成績
	 int place;//排名
	 Student *p=NULL;
	 cout<<"請輸入要新增學生的資訊:"<<endl;
	 cout<<"請輸入學號:";
	 cin>>number;
	 cout<<endl;
	 cout<<"請輸入班級:";
	 cin>>grade;
	 cout<<endl;
	 cout<<"請輸入姓名:";
	 cin>>name;
	 cout<<endl;
	 cout<<"請輸入性別:";
	 cin>>sex;
	 cout<<endl;
	 cout<<"平時成績:";
	 cin>>dailyScore;
	 cout<<endl;
	 cout<<"卷面成績:";
	 cin>>finalScore;
	 cout<<endl;
	 cout<<"總成績:";
	 cin>>generalScore;
	 cout<<endl;
	 cout<<"排名:";
	 cin>>place;
	 cout<<endl;
	 Student *s=new Student(number,name,grade,sex,dailyScore,finalScore,generalScore,place);
	 p=first;
	 while(p->next!=NULL&&p->getnum()<s->getnum())//順便排好序
	 {
		 p=p->next;
	 }
	 s->next=p->next;
	 p->next=s;
}


 void Operation::Delete()//刪除
 {
    string name;
    Student * p =first->next, *q = first;
    cout << "請輸入要刪除學生資訊的姓名:" << endl;
	cin >> name;
    while(p!=NULL)
    {
		if (p->getname()==name)
		{
        q->next = p->next;
        delete p;
		break;
		}
		p=p->next;
		q=q->next;
       
    } 
	if (p!=NULL)
	{cout << "刪除成功!" << endl;
	}
    if (p==NULL)
    {
        cout << "\t\t沒有找到!" << endl;
    }
}

void Operation::Search()//查詢 
{ 
	Student *p=NULL;
  cout<<"\n** 查詢學生資訊 **\n"<<endl; 
  cout<<"請輸入查詢方式:"<<endl; 
  cout<<"1.按學號查詢"<<endl; 
  cout<<"2.按姓名查詢"<<endl; 
  cout<<"3.返回"<<endl; 
  char c;
  cin>>c; 
   switch (c) 
   { 
     case '1': 
		 {string n;
             cout<<"請輸入你要查詢的學生的學號"<<endl;
              cin>>n;
               for(p=first;p!=NULL;p=p->next)
			   {
                 if(p->getnum()==n)
				 {
                   cout
					<< "姓名:" <<p->getname() << endl 
				    << "班別:" <<p->getgrade() << endl 
                    << "學號:" <<p->getnum() << endl 
					<<"性別:"<<p->getgrade()<<endl
                    << "日常成績:" <<p->getdS()<< endl
                    << "期末成績:" <<p->getfS()<< endl 
                    << "總評成績:" <<p->getgS()<< endl 
                    << "排名:" <<p->getpla()<< endl ;
				 }
			
			   }
			   break;
		 }
    case '2': 
	
		{ 
			string name;
               cout<<"請輸入你要查詢的學生姓名"<<endl;
               cin>>name;
               for(p=first;p!=NULL;p=p->next)
			   {
				   if(name==p->getname())
				   {
					   cout
					<< "姓名:" <<p->getname() << endl 
					<< "班級:" <<p->getgrade() << endl 
                    << "學號:" <<p->getnum() << endl 
					<< "性別:" <<p->gets() << endl 
                    << "日常成績:" <<p->getdS()<< endl
                    << "期末成績:" <<p->getfS()<< endl 
                    << "總評成績:" <<p->getgS()<< endl 
                    << "排名:" <<p->getpla()<< endl ;			     	
				   }
				 
			   } 
			   break;
		}
	case '3': 
		return ;
   }
 } 
void Operation::Print()   //輸出
{
	Student *p;
    cout
	<< "姓名"  
	<<"\t\t班級"
    << "\t\t學號"  
	<<"\t\t性別"
    << "\t\t期末成績" 
    << "\t\t總評成績" 
    << "\t\t排名"<<endl;
	for(p=first->next;p!=NULL;p=p->next)
    cout
	<<p->getname()
	<<"\t\t"<<p->getgrade()
	<<"\t\t"<<p->getnum()
	<<"\t\t"<<p->gets()
	<<"\t\t"<<p->getfS()
	<<"\t\t\t"<<p->getgS()
	<<"\t\t\t"<<p->getpla()
	<< endl ;
}

void Operation::Remove()   //修改
{
	string n;//修改項
	 string number;//學號
	 string grade;//班級
	 string name;//名字
	 string sex;//性別
	 int dailyScore;//平時分
	 int finalScore;//卷面分
	 float generalScore;//總成績
	 int place;//排名
	cout<<"請輸入你要修改的學生姓名"<<endl;
	cin>>n;
	Student *p;
    for(p=first->next;p!=NULL;p=p->next)
		if(p->getname()==n)
		{
			cout<<"請選擇您要修改的資訊項:"<<endl;
			cout<<"1、學號,2、班別,3、姓名,4、性別,5、平時分,6、卷面分,7、總成績,8、排名。"<<endl;
			int in;
			cin>>in;
			switch(in)
			{
		case 1:
			cout<<p->getnum()<<"修改為:"<<endl;
			cin>>number;p->setnum(number);
			break;
		case 2:
			cout<<p->getgrade()<<"修改為:"<<endl;
			cin>>grade;p->setgrade(grade);
			break;
		case 3:
			cout<<p->getname()<<"修改為:"<<endl;
			cin>>name;p->setname(name);
			break;
    	case 4:
			cout<<p->gets()<<"修改為:"<<endl;
			cin>>sex;p->sets(sex);
			break;
		case 5:
			cout<<p->getdS()<<"修改為:"<<endl;
			cin>>dailyScore;p->setdS(dailyScore);
			break;
		case 6:
			cout<<p->getfS()<<"修改為:"<<endl;
			cin>>finalScore;p->setfS(finalScore);
			break;
		case 7:
			cout<<p->getgS()<<"修改為:"<<endl;
			cin>>generalScore;p->setgS(generalScore);
			break;
		case 8:
			cout<<p->getpla()<<"修改為:"<<endl;
			cin>>place;p->setpla(place);
			break;
		default:
			cout<<"輸入錯誤!"<<endl;
		    break;
		}
		}

}

int main()
{
    Operation O;
	O.Menu();
    while(1)
    {
		int n;
        cout<<"\n\t\t\n\t\t請選擇:";  
		cin>>n;
        switch(n)
        {
        case 1://增加
            O.Insert();
            break;
        case 2://顯示
            O.Print();   
            break;
        case 3://查詢
           O.Search();
            break;
        case 4://刪除
			O.Delete();
            break;
		case 5://修改
			O.Remove();
			break;
        case 6:
            cout<<"******************************"<<"\n感謝您的使用!\n"<<"******************************"<<endl;
            exit(0);

        }

    }

    return 0;

}