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

 一、       程序设计的题目

 

 

——学生档案管理系统

 

 

二、         程序分析

1.      主要运用到的知识:类和对象的应用、链表的应用等等。

2.      程序实现的功能:插入学生信息(按学号排序插入);查询学生信息(按学号查询、按名字查询);修改学生信息;删除学生信息;显示学生信息。

3.      分析

代码里设置有Student类和Operation类,Student类私有数据保存学生信息:名字、班别、学号、性别、平时成绩、卷面成绩、总成绩及排名,Operation类公有函数主要实现对信息的操作:插入、查询、删除、修改、显示。将Operation类与Sstudent类组合起来:

         Menu()实现程序主菜单,调用程序各功能

         Insert()实现学生信息的插入

         Search()实现查找功能,按名字查找或按学号查找

         Remove()修改函数

         Delete()删除函数,删除学生信息

         Show()显示所有学生信息,调用Printone函数通过循环把所有信息显示

四、程序源代码

#include
#include 
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<<"********************************************************************************"<>number;
	 cout<>grade;
	 cout<>name;
	 cout<>sex;
	 cout<>dailyScore;
	 cout<>finalScore;
	 cout<>generalScore;
	 cout<>place;
	 cout<next!=NULL&&p->getnum()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"<>c; 
   switch (c) 
   { 
     case '1': 
		 {string n;
             cout<<"请输入你要查询的学生的学号"<>n;
               for(p=first;p!=NULL;p=p->next)
			   {
                 if(p->getnum()==n)
				 {
                   cout
					<< "姓名:" <getname() << endl 
				    << "班别:" <getgrade() << endl 
                    << "学号:" <getnum() << endl 
					<<"性别:"<getgrade()<getdS()<< endl
                    << "期末成绩:" <getfS()<< endl 
                    << "总评成绩:" <getgS()<< endl 
                    << "排名:" <getpla()<< endl ;
				 }
			
			   }
			   break;
		 }
    case '2': 
	
		{ 
			string name;
               cout<<"请输入你要查询的学生姓名"<>name;
               for(p=first;p!=NULL;p=p->next)
			   {
				   if(name==p->getname())
				   {
					   cout
					<< "姓名:" <getname() << endl 
					<< "班级:" <getgrade() << endl 
                    << "学号:" <getnum() << endl 
					<< "性别:" <gets() << endl 
                    << "日常成绩:" <getdS()<< endl
                    << "期末成绩:" <getfS()<< endl 
                    << "总评成绩:" <getgS()<< endl 
                    << "排名:" <getpla()<< endl ;			     	
				   }
				 
			   } 
			   break;
		}
	case '3': 
		return ;
   }
 } 
void Operation::Print()   //输出
{
	Student *p;
    cout
	<< "姓名"  
	<<"\t\t班级"
    << "\t\t学号"  
	<<"\t\t性别"
    << "\t\t期末成绩" 
    << "\t\t总评成绩" 
    << "\t\t排名"<next;p!=NULL;p=p->next)
    cout
	<getname()
	<<"\t\t"<getgrade()
	<<"\t\t"<getnum()
	<<"\t\t"<gets()
	<<"\t\t"<getfS()
	<<"\t\t\t"<getgS()
	<<"\t\t\t"<getpla()
	<< endl ;
}

void Operation::Remove()   //修改
{
	string n;//修改项
	 string number;//学号
	 string grade;//班级
	 string name;//名字
	 string sex;//性别
	 int dailyScore;//平时分
	 int finalScore;//卷面分
	 float generalScore;//总成绩
	 int place;//排名
	cout<<"请输入你要修改的学生姓名"<>n;
	Student *p;
    for(p=first->next;p!=NULL;p=p->next)
		if(p->getname()==n)
		{
			cout<<"请选择您要修改的信息项:"<>in;
			switch(in)
			{
		case 1:
			cout<getnum()<<"修改为:"<>number;p->setnum(number);
			break;
		case 2:
			cout<getgrade()<<"修改为:"<>grade;p->setgrade(grade);
			break;
		case 3:
			cout<getname()<<"修改为:"<>name;p->setname(name);
			break;
    	case 4:
			cout<gets()<<"修改为:"<>sex;p->sets(sex);
			break;
		case 5:
			cout<getdS()<<"修改为:"<>dailyScore;p->setdS(dailyScore);
			break;
		case 6:
			cout<getfS()<<"修改为:"<>finalScore;p->setfS(finalScore);
			break;
		case 7:
			cout<getgS()<<"修改为:"<>generalScore;p->setgS(generalScore);
			break;
		case 8:
			cout<getpla()<<"修改为:"<>place;p->setpla(place);
			break;
		default:
			cout<<"输入错误!"<>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"<<"******************************"<


你可能感兴趣的:(课程设计:学生档案管理系统)