注册 登录
编程论坛 新人交流区

我有编程问题求教,关于在类中使用结构体和结构数组。

veraxxrr 发布于 2007-11-16 21:05, 1699 次点击

我要设计一个学生信息管理系统,用C++语言实现,但是不用链表,用数组和结构体的话怎么做呢,有点思路,但是不知道该怎么做了。
学生信息包括,姓名,性别,班级,学号,学生总数
要求能够逐个输入学生信息,可以追加,删除学生信息,可以查询学生信息
我的思路是设计一个类,基本如下,然后在public函数里面定义结构数组解决问题,但是发现有点走不通,请高人给指点一下,可以吗,顺便说一句,身边的女生没人想好好学编程,虽然以后不想做coding,但是我不想混日子,研究生想学点东西,只是刚看书两个月,以前也没怎么编过程序,这次是自己试着编的,水平很烂,请大家帮忙,谢谢啦
class Student //类Student
{
private:
struct student //学生信息结构体student
{
char sname[20];
char sgender[2];
int sclass;
char snum[4];
};
public:
void input(int &a);
void showall();
void inquire();
void add();
void dele();
static int sum;
Student();
~Student();
};

[此贴子已经被作者于2007-11-16 21:15:29编辑过]

5 回复
#2
veraxxrr2007-11-16 21:06
补充一下要求,要用IO流将学生信息输入到文件中去
#3
StarWing832007-11-17 13:33

面向对象的抽象太弱。建议先设计好接口再说。以下是一点建议。
1 student结构体最好放外面。类里面只留一个student的指针以适合动态分配(你懒得管内存操作留一个数组也可以)
2 类是专门用来管理那个结构体的。如果没有要求可以直接使用STL的vector实现。如果要求自己写管理器的话可以参照数据结构中的线性表来做 忠告:管理器中最好不要有IO类的函数!因为主要是用来管理。所以类可以改名为std_list或者别的可以反映出功能的名字。如果使用vector可以写成
[CODE]typedef vector<student> std_list;
typedef vector<student>::iterator sl_iter;[/CODE]
如果怕copy的效率开销就用指针吧,具体可以上网查。STL的资料还是很多的~

3 IO输出建议使用单独的函数实现。可以有一个显示菜单的函数menu,然后调用类的实现最后显示或者存储。如果觉得文件操作太麻烦也可以把文件操作移到一个单独的函数中。但是不要把IO操作放到类里面去!(比如什么print函数啊,save函数啊,display函数啊什么的)

#4
zy8609092007-11-17 14:46
IO流我没好好学,爱莫能助
#5
veraxxrr2007-11-20 21:37
回复:(veraxxrr)补充一下要求,要用IO流将学生信息...

谢谢啦!!!

#6
szb1232007-11-20 21:48

呵呵

1