学生信息管理系统代码
2012-04-08 18:16
417 查看
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
const int n=2;
const int m=10;
class student{
private:
int ID,english,math,computer,total;
string name;
string sex;
int chinese;
public:
student(){cout<<"构造函数在执行\n";}
~student(){cout<<"析构函数在执行\n";}
student(student &p);
student &operator=(student&);
void Getinfo();
friend ostream&operator<<(ostream&os,const student &a);
friend istream&operator>>(istream&is,student&a);
void Print(student st[])const;
int FindID(student st[])const;
void FindName(student st[])const;
void SortName(student st[]);
void SortID(student st[],int (*fun)(int a,int b));
//void SortID(student st[]);
void SortTotal(student st[],int (*fun)(int a,int b));
void SortChinese(student st[],int (*fun)(int a,int b));
void SortMath(student st[],int (*fun)(int a,int b));
void SortEnglish(student st[],int (*fun)(int a,int b));
void SortComputer(student st[],int (*fun)(int a,int b));
void swap(student &,student &);
friend bool checki(string str);
};
#include "student.h"
student::student(student &p)
{
cout<<"复制构造函数执行\n";
ID=p.ID;chinese=p.chinese;english=p.english;math=p.math;
computer=p.computer;total=p.total;
name=p.name;sex=p.sex;
}
student &student::operator=( student&p)
{
cout<<"重载赋值运算符函数执行\n";
ID=p.ID;chinese=p.chinese;english=p.english;math=p.math;
computer=p.computer;total=p.total;
name=p.name;sex=p.sex;
return *this;
}
bool checki(string str)
{
for(unsigned int i=0;i<str.length();i++)
if(str[i]<48||str[i]>58)
return false;
return true;
}
void student::Getinfo()
{
cout<<"请输入学生的姓名\n";cin>>name;
string str;
cout<<"请输入学生的学号\n";cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
ID=atoi(str.c_str());
cout<<"请输入学生的性别\n";cin>>sex;
cout<<"请输入语文成绩\n";cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
chinese=atoi(str.c_str());
cout<<"请输入英语成绩\n";cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
english=atoi(str.c_str());
cout<<"请输入数学成绩\n";cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
math=atoi(str.c_str());
cout<<"请输入计算机成绩\n";cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
computer=atoi(str.c_str());
total=chinese+english+math+computer;
}
istream&operator>>(istream&is,student&a)
{
cout<<"请输入学生的姓名\n";is>>a.name;
string str;
cout<<"请输入学生的学号\n";is>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}
a.ID=atoi(str.c_str());
cout<<"请输入学生的性别\n";is>>a.sex;
cout<<"请输入语文成绩\n";is>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}
a.chinese=atoi(str.c_str());
cout<<"请输入英语成绩\n";is>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}
a.english=atoi(str.c_str());
cout<<"请输入数学成绩\n";is>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}
a.math=atoi(str.c_str());
cout<<"请输入计算机成绩\n";is>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";is>>str;}
a.computer=atoi(str.c_str());
a.total=a.chinese+a.english+a.math+a.computer;
return is;
}
ostream&operator<<(ostream&os,const student &a)
{
os<<"姓名 "<<setw(6)<<a.name<<" 学号"<<setw(4)<<a.ID <<" 性别"<<setw(4)<<a.sex<<" 语文"<<setw(4)<<a.chinese;
os<<" 数学"<<setw(4)<<a.math<<" 英语"<<setw(4)<<a.english <<" 计算机"<<setw(4)<<a.computer<<" 总分"<<setw(4)<<a.total<<endl;
return os;
}
void student::Print(student st
) const
{
for(int i=0;i<n;i++)
{
cout<<"姓名 "<<setw(6)<<st[i].name<<" 学号"<<setw(4)<<st[i].ID <<" 性别"<<setw(4)<<st[i].sex<<" 语文"<<setw(4)<<st[i].chinese;
cout<<" 数学"<<setw(4)<<st[i].math<<" 英语"<<setw(4)<<st[i].english <<" 计算机"<<setw(4)<<st[i].computer<<" 总分"<<setw(4)<<st[i].total<<endl;
}
}
void student::SortTotal(student st
,int (*fun)(int a,int b))
{
int i,j,k; student s;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(fun(st[k].total,st[j].total)) {k=j;}
if(k!=i){s.swap(st[i],st[k]);}
}
for(i=0;i<n;i++)
cout<<st[i];
}
void student::SortID(student st
,int (*fun)(int a,int b))
{
int i,j,k;
student s;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(fun(st[k].ID,st[j].ID)) {k=j;}
if(k!=i) {s.swap(st[i],st[k]); }
}
for(i=0;i<n;i++)
cout<<st[i];
}
void student::SortName(student st
)
{
int i,j,k;
student s;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(st[k].name.compare(st[j].name)>0) {k=j;}
if(k!=i){s.swap(st[i],st[k]); }
}
}
for(i=0;i<n;i++)
cout<<st[i];
}
void student::SortChinese(student st
,int (*fun)(int a,int b))
{
int i,j,k;
student s;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(fun(st[k].chinese,st[j].chinese)) {k=j;}
if(k!=i){s.swap(st[i],st[k]); }
}
}
for(i=0;i<n;i++)
cout<<st[i];
}
void student::SortMath(student st
,int (*fun)(int a,int b))
{
int i,j,k;
student s;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
{
if(fun(st[k].math,st[j].math)) {k=j;}
if(k!=i){s.swap(st[i],st[k]); }
}
}
for(i=0;i<n;i++)
cout<<st[i];
}
void student::SortComputer(student st
,int (*fun)(int a,int b))
{
int i,j,k;
student s;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(fun(st[k].computer,st[j].computer)) {k=j;}
if(k!=i){s.swap(st[i],st[k]); }
}
}
for(i=0;i<n;i++)
cout<<st[i];
}
void student::SortEnglish(student st
,int (*fun)(int a,int b))
{
int i,j,k;
student s;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(fun(st[k].english,st[j].english)) {k=j;}
if(k!=i){s.swap(st[i],st[k]);}
}
}
//s.Print(st);
for(i=0;i<n;i++)
cout<<st[i];
}
int student::FindID(student st
)const
{
int i,id;
ff:cout<<"请输入您要查找的学号\n";
cin>>id;
for(i=0;i<n;i++)
{
if(st[i].ID ==id)
{
cout<<st[i];
return 0;
}
}
cout<<"您查找的学号不存在\n";goto ff;
}
void student::FindName(student st[])const
{
string name1;
int i,j=0;
nn:cout<<"请输入要查找学生姓名\n";
cin>>name1;
for(i=0;i<n;i++)
if(name1.compare (st[i].name )==0)
{
cout<<st[i];return ;
}
cout<<"此姓名不存在,请重新输入\n";goto nn;
}
void student::swap(student &a,student &b)
{
student s=a;
a=b;b=s;
}
#include<iostream>
#include<iomanip>
#include<string>
#include "student.h"
void print()
{
cout<<"欢迎使用荣强学生信息管理系统,请根据提示选择操作\n";
cout<<"温馨提示\n";
cout<<"输入1,进入输入数据界面\n";
cout<<"输入2,进入输出数据界面\n";
cout<<"输入3,进入数据按学号排序界面\n";
cout<<"输入4,进入数据按学号查找界面\n";
cout<<"输入5,进入数据按姓名排序界面\n";
cout<<"输入6,进入数据按姓名查找界面\n";
cout<<"输入7,进入数据按总分排序界面\n";
cout<<"输入8,进入数据按语文成绩排序界面\n";
cout<<"输入9,进入数据按数学成绩排序界面\n";
cout<<"输入10,进入数据按英语成绩排序界面\n";
cout<<"输入11,进入数据按计算机成绩排序界面\n";
cout<<"输入0,退出该系统\n";
}
int ascending(int a,int b){if(a>b) return 1;else return 0;}
int descending(int a,int b){if(a<b) return 1;else return 0;}
int main()
{ student a;
print();
student ST
;
int i,choice=1;
while(choice!=0)
{
kk: cout<<"请输入你的选择\n";string str;
cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
choice=atoi(str.c_str());
int scend;
switch(choice)
{
case 0:cout<<"退出系统,欢迎下次使用\n";break;
case 1:cout<<"进入输入数据界面\n";
for(i=0;i<n;i++) cin>>ST[i]; print();break;
case 2:cout<<"进入输出数据界面\n";for(i=0;i<n;i++) cout<<ST[i];print();
break;
case 3:cout<<"进入数据按学号排序界面\n";cout<<"升序请按1,否则降序\n";cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
scend=atoi(str.c_str());
if(scend==1) {ST[0].SortID(ST,ascending);}
else {ST[0].SortID(ST,descending);}
print(); break;
case 4:cout<<"进入数据按学号查找界面\n";ST[0].FindID(ST);print();break;
case 5:cout<<"进入数据按姓名排序界面\n";ST[0].SortName(ST);print(); break;
case 6:cout<<"进入数据按姓名查找界面\n";ST[0].FindName(ST); print();break;
case 7:cout<<"进入数据按总分排序界面\n";cout<<"升序请按1,否则降序\n";
cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
scend=atoi(str.c_str());
if(scend==1) {ST[0].SortTotal(ST,ascending);}
else {ST[0].SortTotal(ST,descending);}
print(); break;
case 8:cout<<"进入数据按语文排序界面\n";cout<<"升序请按1,否则降序\n";
cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
scend=atoi(str.c_str());
if(scend==1) {ST[0].SortChinese(ST,ascending);}
else {ST[0].SortChinese(ST,descending);}
print(); break;
case 9:cout<<"进入数据按数学排序界面\n";cout<<"升序请按1,否则降序\n";
cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
scend=atoi(str.c_str());
if(scend==1) {ST[0].SortMath(ST,ascending);}
else {ST[0].SortMath(ST,descending);}
print(); break;
case 10:cout<<"进入数据按英语排序界面\n";cout<<"升序请按1,否则降序\n";
cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
scend=atoi(str.c_str());
if(scend==1) {ST[0].SortEnglish(ST,ascending);}
else {ST[0].SortEnglish(ST,descending);}
print(); break;
case 11:cout<<"进入数据按计算机排序界面\n";cout<<"升序请按1,否则降序\n";
cin>>str;
if(!checki(str)) {cout<<"输入格式不正确,请重新输入\n";cin>>str;}
scend=atoi(str.c_str());
if(scend==1) {ST[0].SortComputer(ST,ascending);}
else {ST[0].SortComputer(ST,descending);}
print(); break;
default:cout<<"输入有误,请重新输入\n";goto kk;break;
}
}
return 0;
}
相关文章推荐
- 课程设计~学生信息管理系统代码
- 学生信息管理系统代码学习
- 学生信息管理系统-代码理解篇
- Java60行代码实现swing+mysql学生信息管理系统
- 课程设计————学生信息管理系统(包含历代思路和代码)
- 学生信息管理系统(在LINUX下用GCC编译需要更改conio.h为curses.h并修改相关代码)
- 【学生信息管理系统】模块代码的理解
- 学生信息管理系统(C语言1369行代码)【不会】
- 学生信息管理系统 模块代码总结
- (一个代码学会c语言操作数据库)linux上通过c语言操作数据库实现基本的学生信息管理系统(增、删、查、改‘显示)
- 学生信息管理系统之第三篇登录界面java代码
- C语言实现学生信息管理系统(单链表)
- 学生信息管理系统6——错误调试
- C语言使用链表实现学生信息管理系统
- 学生信息管理系统-问题解决
- 验收--学生信息管理系统
- 《数据结构》进行曲 之 单链表实现学生信息管理系统
- 学生信息管理系统——错误小结
- 学生信息管理系统 之 “探索原因和办法”
- 黑马程序员——综合练习 学生信息管理系统