课程设计:学生档案管理系统

 一、       程序设计的题目

——学生档案管理系统

二、         程序分析

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;

}


猜你喜欢

转载自blog.csdn.net/zhifengdeng/article/details/80853207