注册 登录
编程论坛 C++教室

[原创]学生管理系统框架

wfpb 发布于 2006-05-19 21:28, 4710 次点击

网线刚刚段了1个小时,不能上网.就写了个学生管理系统的框架,大家给些意见,我发现我越来越喜欢写框架了,呵呵~!

[code]
//课程类
class Course
{
int courseNo; //课程编号
string cName;//课程名字
int credit; //学分
int score; //成绩
public:
void set_cName(string na){cName=na;} //设置课程名
string get_cName(){return cName;} //获取课程名
int get_credit(){return credit;} //获取学分
int get_score(){return score;} //获取成绩
void change(); //修改课程信息
};
//学生类
class Student
{
string ID; //学号
string name; //姓名
string address; //住址
int age; //年龄
int courseNo; //选修课程数
vector<Course>c; //课程信息
public:
void set_courseNo(int num){courseNo=num;} //设置课程数
int get_courseNo(){return courseNo;} //获取课程数
void add_Course(); //增加一门课程
void sub_Course(); //减少一门课程
void change(); //修改一个学生的信息
friend void CClass::change(string id); //修改班级信息<==>修改学生信息的总和
};
//班级类
class CClass
{
vector<Student>s; //班上学生信息
int cNo; //班号
string cFname; //班级信息存储路径
public:
void set_cNo(int n){cNo=n;}//设置班号
void setFname()
//设置存储路径
{
cout<<"输入存储的路径:";
string f;cin>>f;
cFname=f;
}
string getFname()const{return cFname;} //获取存储路径
void setAllStudent(ifstream &is); //加载全班学生信息
void saveAllStudent(ofstream &os); //保存全班学生信息
void change(string id); //修改一个学生的信息(根据学号)
void addInform(); //增加一个学生
void delInform(); //删除一个学生
void checkClass(); //查看班级信息
friend void newClass(); //新建班级信息
friend void delClass(int cnum); //删除班级信息(根据班号)=>根据cnum=CClass.cNo;
};
//新建班级信息
void newClass();
//删除班级信息
void delClass(int cnum);

[此贴子已经被作者于2006-5-20 12:56:23编辑过]

34 回复
#2
wfpb2006-05-19 21:39

来坐客

[此贴子已经被作者于2006-5-19 21:39:58编辑过]

#3
没牙的狼2006-05-20 06:47
路过,看看
#4
myajax952006-05-20 07:51
已楼主学C++时间之短写出这么清晰的设计已经十分不易了,在论坛里我还没见过有谁进步这么快。
提一点小小意见:就是课程类Course不应该是完全属于学生类Student的,因为大家很可能上同样的课,把int courseNo; string cName; int credit;重复了很多次,一是没有必要,二是浪费了内存,三是单门课的成绩排名很难搞。可能再建一个CourceInfo的类比较好,学生那只留下课程ID和成绩,或者干脆什么都不留只剩一个对那门课的指针。
这类问题怎么写都不能说最好,标准办法就是挂上数据库,所有这些乱七八糟的关系都轻易举的搞定了。
#5
wfpb2006-05-20 10:58

谢谢抬举,我也只是一知半解,偶还没开始学数据库,慢慢来吧,还需要兄弟你多多帮助哦

#6
wfpb2006-05-20 11:02
提一点小小意见:就是课程类Course不应该是完全属于学生类Student的,因为大家很可能上同样的课,把int courseNo; string cName; int credit;重复了很多次,一是没有必要,二是浪费了内存,三是单门课的成绩排名很难搞。可能再建一个CourceInfo的类比较好,学生那只留下课程ID和成绩,或者干脆什么都不留只剩一个对那门课的指针。
我一开始也想过做排名,但是想到大学都没有排名,而且没个学生的信息都是独立的,所以就这样写了.至于course类,我觉得不管怎么样都没有浪费内存,因为我是作为大学里的学生成绩模式写的,你是说按照高中那样,一门课程的名字下面写下所以的学生成绩,那个比较古老了,所以我才这样用的
#7
wfpb2006-05-20 18:23

想问问SQL要什么做铺垫,想多学点宝贝

#8
myajax952006-05-21 09:59

什么叫SQL用什么做铺垫呀?装个Microsoft Access或者MySQL之类的,在VC上用ODBC连接,对于这种程序个以很方面的实现各种功能。

#9
hsjljh2006-05-21 10:44
#10
wfpb2006-05-21 11:54
可以直接学SQL,而不用掌握其他的知识?
#11
独角龙2006-05-21 19:35
顶!
#12
myajax952006-05-22 01:57
以下是引用wfpb在2006-5-21 11:54:00的发言:
可以直接学SQL,而不用掌握其他的知识?

不用,简单语法十分钟搞定。

#13
wfpb2006-05-22 16:38
SQL不用学很精通吗?我想考软件设计师,高级程序员这样的东西,我喜欢这
#14
fateboy2006-05-22 16:56

我是新手可不可以写的再详细啊

#15
wfpb2006-05-22 17:03
Microsoft Access
是不是office系列的啊?那我装了
#16
song42006-05-22 19:52
重载重载还是重载
符合点实际
例如我就知道他叫什么呢
优化优化还是优化
哎,辛苦你了
我一点时间也没有
那么少时间很难做.
#17
桂圆2006-05-22 20:33
以下是引用myajax95在2006-5-21 9:59:00的发言:

什么叫SQL用什么做铺垫呀?装个Microsoft Access或者MySQL之类的,在VC上用ODBC连接,对于这种程序个以很方面的实现各种功能。


给个跟ACCESS 使用ODBC 连接的 C++代码
偶只会 用T-L 连接SQL SERVER 数据库
郁闷

谢谢啦

#18
wfpb2006-05-22 23:10
以下是引用song4在2006-5-22 19:52:00的发言:
重载重载还是重载
符合点实际
例如我就知道他叫什么呢
优化优化还是优化
哎,辛苦你了
我一点时间也没有
那么少时间很难做.

下午看了下SQL,发现SQL是简单些:
直接CREAT 3 个TABLE就够了,一个课程,一个学生,一个班级,然后
SELECT ...
FROM ...
WHERE ...
就可以全部搞定
这样的话,就比较系统了

#19
myajax952006-05-23 03:02
以下是引用wfpb在2006-5-22 23:10:00的发言:

下午看了下SQL,发现SQL是简单些:
直接CREAT 3 个TABLE就够了,一个课程,一个学生,一个班级,然后
SELECT ...
FROM ...
WHERE ...
就可以全部搞定
这样的话,就比较系统了

然也。

#20
myajax952006-05-23 03:06
以下是引用桂圆在2006-5-22 20:33:00的发言:


给个跟ACCESS 使用ODBC 连接的 C++代码
偶只会 用T-L 连接SQL SERVER 数据库
郁闷

谢谢啦

ODBC本身是用C写的, VC中用三个Class实现的对ODBC的调用,分别是CDatabase,CRecordSet和CRecordView。我以前用的例子都是在MFC下用的,没有MFC的简单dos窗口的项目这三个Class都不支持。

#21
wfpb2006-05-23 11:53
什么叫“然也”?
#22
myajax952006-05-24 04:27
但SQL不给你作界面,就算用Oracel,ms access给你提供的模板也是有限的,要真正实现对数据任意操作,还得把数据传回来用C++处理各种特例以及定做的界面。
#23
优幽2006-05-24 12:36
你这种水平应该是大二的了吧,合乎
#24
wfpb2006-05-24 12:37
我大3了,但是是今年3月开始学的
#25
myajax952006-05-25 03:21
过几天写个C++的简单SQL的实现SELECT,INSERT,UPDATE的小程序。
#26
wfpb2006-05-25 13:14
你是对我说吗?呵呵,我现在在看数据结构在,先看段时间的这个再说吧!
#27
myajax952006-05-25 13:26
我说我自己要写。
#28
henry8272006-07-18 17:04
以下是引用优幽在2006-5-24 12:36:00的发言:
你这种水平应该是大二的了吧,合乎

好多大学毕业的都还没有这种水平,大二就能写出来了,真牛。

[此贴子已经被作者于2006-7-18 17:05:01编辑过]

#29
unicorn2006-07-18 19:08
整体写的很不错哦...
不过班级类里学生信息非得用容器类封装吗?
数据库做起来会更方便的 不过我们这学期用的是db2 IBM的试验环境感觉不是很好...应该尝试下SQL server 2000
#30
心动音符2006-07-21 15:55
cout<<"输入存储的路径:";
string f;cin>>f;
cFname=f;
这是什么意识啊
能不能继续写完呢 把整个都写下来
我觉得会更有学习价值的啊
#31
wfpb2006-07-21 16:34
以下是引用心动音符在2006-7-21 15:55:32的发言:
cout<<"输入存储的路径:";
string f;cin>>f;
cFname=f;
这是什么意识啊
能不能继续写完呢 把整个都写下来
我觉得会更有学习价值的啊

这只是给出一个对象的数据成员——文件名字,然后根据班级号方便读取数据

#32
wfpb2006-07-21 16:35
我是想将一个班级和他的存储文件名字关联起来,方便些
#33
lxlgod2006-08-09 19:50
我的想法跟楼主一样 !!!!!!!!!!
#34
Visen2006-08-10 16:55
不错.
我喜欢这种风格.
#35
人海穿越2010-11-21 18:25
好厉害
1