1 题目:
简单学生信息管理系统
实现一个简单的学生信息管理系统。
学生的主要信息包括学号、姓名,其上能完成添加、删除、查找、显示等基本功能;
分别用顺序表、链表方式实现。
首先用线性表实现,及其类数组实现
首先定义一下头文件和类库
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
class Student
{
public :
string name;
int id;
};
class StuList
{
private :
Student s[100];
int length;
public :
StuList(){}
StuList(int len)
{
length=len;
for(int i=1;i<=len;i++)
{
s[i].id=i;
s[i].name="";
}
}
StuList(int len,Student *stu)
{
length=len;
for(int i=1;i<=length;i++)
{
s[i].id=stu[i-1].id;//注意数组的尾数 下标
s[i].name=stu[i-1].name;
}
}
//void SetId(int i){return s[i].id;} //id 不需要变更
int GetId(int i){return s[i].id;}
void SetName(int i,string str){s[i].name=str;}
string GetName(int i){return s[i].name;}
void SortStu()
{
for(int i=1;i<=length;i++)
{
for(int j=i;j<=length;j++)
{
if(s[i].id>s[j].id)
{
Student temp;
temp.id=s[i].id;
temp.name=s[i].name;
s[i].id=s[j].id;
s[i].name=s[j].name;
s[j].id=temp.id;
s[j].name=temp.name;
}
}
}
}
void AddStu(int,string);
void DeleteStu(int );//按学号删除
void DeleteStu(string);//按姓名删除
string SelectStu(int );//按学号查找
int SelectStu(string );//按姓名查找
void PrintStu();
void ChangeID(int ,string);
};
void StuList::AddStu(int _id,string _name)
{
s[++length].id=_id;
s[length].name=_name;
SortStu();
}
void StuList::ChangeID(int _id,string _name)
{
int temp=-1;
for(int i=1;i<=length;i++)
{
if(s[i].name==_name){temp=i;break;}
}
if(temp==-1){return;}
else
{
s[temp].id=_id;
}
}
void StuList::DeleteStu(int _id)
{
int temp=1;
for(int i=1;i<=length;i++)
{
if(s[i].id==_id){temp=i;}
}
for(int j=temp+1;j<=length;j++)
{
s[j-1].id=s[j].id;
s[j-1].name=s[j].name;
}
length--;
}
void StuList::DeleteStu(string _name)
{
int temp=-1;
for(int i=1;i<=length;i++)
{
if(s[i].name==_name){temp=i;break;}
}
for(int j=temp+1;j<=length;j++)
{
s[j-1].id=s[j].id;
s[j-1].name=s[j].name;
}
length--;
}
string StuList::SelectStu(int _id)
{
int temp=-1;
for(int i=1;i<=length;i++)
{
if(s[i].id==_id){temp=i;break;}
}
if(temp==-1){return "";}
else {return s[temp].name; }
}
int StuList::SelectStu(string _name)
{
int temp=-1;
for(int i=1;i<=length;i++)
{
if(s[i].name==_name){temp=i;break;}
}
if(temp==-1){return -1;}
else {return s[temp].id;}
}
void StuList::PrintStu()
{
cout<<"length="<<length<<endl;
for(int i=1;i<=length;i++)
{
cout<<s[i].id<<'\t'<<s[i].name<<endl;
}
}
然后相对应的main函数Cpp文件如下所示
/*2014-3-12 学生管理系统 顺序表*/
#include<cstdio>
#include"hTest1_1.h"
#include<iostream>
#include<string>
using namespace std;
//选择的人性化界面提示
void Choice(StuList &sl)
{
int flag=true;
while(flag)
{
cout<<"请选择您所需要的服务1-增加 2-删除(按ID) 3-删除(按姓名) 4-查询(按ID) "<<endl<<"5-查询(按姓名) 6-修改(按姓名) 7-排序(按ID 降序) 8-输出显示 9-退出"<<endl;
int choice=0,id=0;
string name="";
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"请输入需要的添加的 ID 和 Name"<<endl;
cin>>id>>name;
(sl).AddStu(id,name);break;
}
case 2:
{
cout<<"请输入需要删除的ID号"<<endl;
cin>>id;
sl.DeleteStu(id);
break;
}
case 3:
{
cout<<"请输入需要删除的人的姓名"<<endl;
cin>>name;
sl.DeleteStu(name);
break;
}
case 4:
{
cout<<"请输入需要查询的人的ID"<<endl;
cin>>id;
cout<<"ID:"<<id<<" 姓名:"<<sl.SelectStu(id)<<endl;
break;
}
case 5:
{
cout<<"请输入需要查询的人的名字"<<endl;
cin>>name;
cout<<"姓名:"<<name<<" ID:"<<sl.SelectStu(name)<<endl;
break;
}
case 6:
{
cout<<"请输入需要修改的人的姓名 和 修改后的ID号"<<endl;
//Getline();
cin>>name;
cin>>id;//为什么会出问题 读取String类型需要注意的事项
sl.ChangeID(id,name);
sl.SortStu();
sl.PrintStu();
break;
}
case 7:
{
sl.SortStu();
sl.PrintStu();
break;
}
case 8:{sl.PrintStu();break;}
case 9:{flag=0;break;}
}
cout<<endl;
}
}//选择的人性化界面
int main()
{
Student s[3]={{"张三",12},{"李四",25},{"王五",8}};注意数组的尾数 下标
StuList sl(3,s);
//sl.PrintStu();
Choice(sl);
return 1;
}