求助贴 一个学生管理系统 如何实现通过姓名查找

hzy93116 2012-05-13 09:54:39
#ifndef STUDENT_H
#define STUDENT_H
class student
{
private:
float math;
float ch;
float en;
char *name;
int num;
char sex; //用M表示男的 W表示女的
int i;
public:
student();
void come();//输入所需数据
void print();//输出所有元素
void name_delet(char uname[10]);//按名字删除
void num_delet(int n);//按学号删除
void name_search(char *oname);//按名字查找
void num_search(int n);//按学号查找
void input();//插入学生信息
void name_amend();//按名字查找修改
void num_amend();//按学号查找修改
void taxis();//按学号排序
};
#endif

#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include"studnt.h"
student data[500];
student::student()
{
i=0;
}
void student::come()//输入所需数据
{
char sign;
while(sign!='n'&&sign!='N')
{
cout<<"学生学号:";
cin>>data[i].num;
cout<<"学生姓名:";
cin>>data[i];
cout<<"学生性别(男的用M表示,女的用W表示):";
cin>>data[i].sex;
cout<<"学生数学成绩:";
cin>>data[i].math;
cout<<"学生英语成绩:";
cin>>data[i].en;
cout<<"学生语文成绩:";
cin>>data[i].ch;
cout<<"是否继续输入学生信息(Y/N)";
cin>>sign;
i++;
system("cls");
}
}
void student::print()//输出所有元素
{
for(int j=0;j<i;j++)
{
cout<<"学生学号:"<<data[j].num<<endl<<"学生姓名:"<<data[j].name<<endl;
cout<<"学生性别"<<data[j].sex<<endl;
cout<<"学生数学成绩:"<<data[j].math<<endl<<"学生英语成绩:"<<data[j].en<<endl;
cout<<"学生语文成绩:"<<data[j].ch<<endl;
}
system("pause");
system("cls");
}
void student::num_search(int n)//按学号查找
{
int m=n;
for(int j=0;j<i;j++)
{
if(data[j].num==m)
{
cout<<"学生学号:"<<data[j].num<<endl<<"学生姓名:"<<data[j].name<<endl;
cout<<"学生性别"<<data[j].sex<<endl;
cout<<"学生数学成绩:"<<data[j].math<<endl<<"学生英语成绩:"<<data[j].en<<endl;
cout<<"学生语文成绩:"<<data[j].ch<<endl;
}break;
}
system("pause");
system("cls");
}
void student::name_search(char *uname)//按名字查找
{
name=new char;
strcpy(name,uname);
for(int j=0;j<i;j++)
{
if(data[j].name==uname)
{
cout<<"学生学号:"<<data[j].num<<endl<<"学生姓名:"<<data[j].name<<endl;
cout<<"学生性别"<<data[j].sex<<endl;
cout<<"学生数学成绩:"<<data[j].math<<endl<<"学生英语成绩:"<<data[j].en<<endl;
cout<<"学生语文成绩:"<<data[j].ch<<endl;
}break;
}
system("pause");
system("cls");

}
void student::input()//插入学生信息
{
for(int j=i;j>=0;j--)
{
data[j+1]=data[j];
}
cout<<"学生学号:";
cin>>data[0].num;
cout<<"学生姓名:";
cin>>data[0].name;
cout<<"学生性别(男的用M表示,女的用W表示):";
cin>>data[0].sex;
cout<<"学生数学成绩:";
cin>>data[0].math;
cout<<"学生英语成绩:";
cin>>data[0].en;
cout<<"学生语文成绩:";
cin>>data[0].ch;
i++;
cout<<"插入成功";
system("pause");
system("cls");
}
void student::name_delet(char uname[10])//按名字删除
{

int k;
*name=uname[10];
for(int j=0;j<i;j++)
{
if(data[j].name==name)
k=j;
}
for(int l=k;l<i;l++)
{
data[l]=data[l+1];
}
i--;
system("pause");
system("cls");
}
void student::num_delet(int unum)//按学号删除
{
int k;
int m=unum;
for(int j=0;j<i;j++)
{
if(data[j].num==m)
{k=j;}
}
for(int l=k;l<i;l++)
{
data[l]=data[l+1];
}
i--;
system("pause");
system("cls");
}
#include<iostream.h>
#include"studnt.h"
#include"mue.h"
void main()
{
int choose;
student a;
char onname[10],unname[10];
int q,p;
loop:
choose = menu();
switch(choose)
{
case 1:
system("cls");
cout<<"请输入学生信息:";
a.come();
goto loop;
break;
case 2:
system("cls");
cout<<"输出所有学生信息:";
a.print();
goto loop;
break;
case 3:
system("cls");
cout<<"请输入要删除学生的学号";
cin>>p;
a.num_delet(p);
goto loop;
break;
case 4:
system("cls");
cout<<"请输入要删除学生的姓名";
cin>>onname;
a.name_delet(onname);
goto loop;
break;
case 5:
system("cls");
cout<<"请输入需要插入的学生信息:";
a.input();
goto loop;
break;
case 8:
system("cls");
cout<<"请输入查找学生学号";
cin>>unname;
a.name_search(unname);
goto loop;
break;
case 9:
system("cls");
cout<<"请输入查找学生学号";
cin>>q;
a.num_search(q);
goto loop;
break;
case 0:
cout<<"感谢你的使用,谢谢!";
exit(0);
}
}
#include <stdlib.h>
#include <string.h>
int menu()
{
int choose;
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<<"0. 退出信息系统 \n";
cout<<"输入你的选择(0-9):";
cin>>choose;
if((choose<'0'||choose>'9'))
return choose;
else
{
system("cls");
cout<<"输入有误,请重新输入"<<endl;
return menu();
}
}
...全文
459 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bsnry 2012-05-14
  • 打赏
  • 举报
回复
线性表,数组,这些查找的时候,二分法查找,但是要先排序。

chelp 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
表示不是很懂你说的那个
[/Quote]
map<string ,int > stl;
我建议:
你用两个表:
struct
{
sting
struct{}b *p;

}a;
SmallKind 2012-05-13
  • 打赏
  • 举报
回复
汗,我们同学的期末考就有这个题目,我表示他们非专业的还考这么难,他们老师就一变态
hzy93116 2012-05-13
  • 打赏
  • 举报
回复
表示不是很懂你说的那个
main_jj 2012-05-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
用stl的map就可以,map的key为学生姓名,value为student的类,如果学生姓名允许重复,就用multimap
[/Quote]

顶 map容器解决
石头614 2012-05-13
  • 打赏
  • 举报
回复
用stl的map就可以,map的key为学生姓名,value为student的类,如果学生姓名允许重复,就用multimap

65,183

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧