做一个大型实验求大神教

lxq2061971 2012-05-21 05:56:25
要做一个选课系统开发,我已经做好了选课基本程序,就是一点解决不了,就是选课过程中我可以储存每个学生所选的课(用的是链),但是我怎么在选课过程中同时记录对应课程的被选的学生的信息呢?即既可以在学生登录处查课程和老师,同时可以再老师登录处查自己的课的学生信息。
...全文
109 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2012-05-21
  • 打赏
  • 举报
回复
课程和学生这两个实体之间是多对多的关系,在这个关系中,(课程ID+学生ID)是唯一的,即同一个学生不能同时选上两次同一个课程,课程反过来也是一样。基于这个分析,你可以先创建一个结构或者类,其中有课程ID和学生ID这两个成员,比如

typedef struct _relation
{
int courseID;
int studentID;
// ...
}Relation;


然后将Relation类型的变量(对象),存入到链表中即可。

如果要查询某个课程被那些学生选了,你就需要遍历该链表,判断链表中的courseID和待查询课程的id是否一致,如果是就把对应的studentID记录下来。

老师和课程的关系,也有可能是多对多的关系,比如一个老师可能教几门功课,一门课程也有可能被多个老师教,但<老师id+课程id>则是唯一的,所以可以参照上面的做法。

在这个实验中,主要的实体就是学生,课程和老师这三个,此三者的可以通过上面两个关系联系起来。

这三个实体你可以用三个类来表示,比如学生:

class Student
{
private:
int studentID;
string name;
...
public:
// 一些公有成员函数
};

课程和老师这两个实体与此类似。

这个实验,实质上就是让学生了解数据库的设计以及实现。上面我所讲的就是设计数据库的data model,并且至少符合2NF。关于这一点,设计过关系型数据库数据模型的朋友,一眼就能看出来。

这个题目很不错,好好做吧,你会学到不少东西滴。

顺便问问,能不能用stl?如果可以,你就可以省去写链表的代码了,而是直接用stl中的list或者其他的容器。

以上意见,仅供参考。
lxq2061971 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 6 楼 的回复:

我在想可不可以有一种方法可以在选课过程中同时保存一条条教师的所选学生的链,这样就方便多了,可是自己不会实践啊

我觉得你的思路很乱.你最好先把思路理清楚,看到底希望程序按什么思路运行下去,然后再编程,同时在碰到问题是查找相关知识点.不然你可能碰到一个问题就希望换个思路,最终会花费很多时间.
应该是教师提供可选的课程,学生在浏览了这些课程后从中选出希望的课程.老师……
[/Quote]
哦,谢谢了,我在看看书,想想
忘世麒麟 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

我在想可不可以有一种方法可以在选课过程中同时保存一条条教师的所选学生的链,这样就方便多了,可是自己不会实践啊
[/Quote]
我觉得你的思路很乱.你最好先把思路理清楚,看到底希望程序按什么思路运行下去,然后再编程,同时在碰到问题是查找相关知识点.不然你可能碰到一个问题就希望换个思路,最终会花费很多时间.
应该是教师提供可选的课程,学生在浏览了这些课程后从中选出希望的课程.老师再查看这些课程都有谁选.
这个过程中就涉及到上述不同的操作,通过不同的函数实现之.
忘世麒麟 2012-05-21
  • 打赏
  • 举报
回复
比如说:
运行程序的时候,通过输入1,或0 分别代表登陆的是学生或者老师
假如现在学生登陆,你可以通过让其输入1-查看可选课程,2-选课(用文件保存结果),3-重选,4-退出
假如是老师登陆,可以让其输入1-查看选课学生,2-统计选课学生......
这可以通过switch-case语句实现,不同的case语句执行不同的操作,这些操作就是不同的函数,其中有些函数负责创建文件(如学生选课时),有些负责操作文件(如重选时,老师查看信息).当然你也可以将所有可选课程的信息实现事先保存到一个文件中.还有一些函数就是普通函数了.我的那个例子时很详细的.
最重要的是明白文件的操作.这东西把书上的这个知识点多看几遍就好了.我想你的这个问题,我只能回答道这里了.
lxq2061971 2012-05-21
  • 打赏
  • 举报
回复
因为我们老师还要求有教师录入学生成绩的功能,所以要这么麻烦
lxq2061971 2012-05-21
  • 打赏
  • 举报
回复
我在想可不可以有一种方法可以在选课过程中同时保存一条条教师的所选学生的链,这样就方便多了,可是自己不会实践啊
lxq2061971 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
这个也可以啊.本来就是在控制台下的啊.可以再控制台下创建/写/读文件.
参考这个吧,当年我做过的:http://download.csdn.net/detail/baijiaheizhiganmao/3231044.仅仅是供参考思路.
[/Quote]
如果用文件流保存的话 我怎么操作让老师看到自己的学生啊,因为我选课时在学生登录那里进去选课的,即保存时按学生排序的.难道老师查自己学生时需要对所有选课记录筛选?那不是很麻烦啊
忘世麒麟 2012-05-21
  • 打赏
  • 举报
回复
这个也可以啊.本来就是在控制台下的啊.可以再控制台下创建/写/读文件.
参考这个吧,当年我做过的:http://download.csdn.net/detail/baijiaheizhiganmao/3231044.仅仅是供参考思路.
lxq2061971 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
使用文件将选过这么课的学生名字保存起来,给老师查看.这样你做完一门课程后,其他课程就依葫芦画瓢了(也是文件),给老师登录后可以查看谁选了它的课同时统计学生数,学生登录的时候不允许查看这个文件不就好了.
[/Quote]
好难实现啊我c++只学到类,就是那种很简单的小程序(黑框框)那种啊
忘世麒麟 2012-05-21
  • 打赏
  • 举报
回复
使用文件将选过这么课的学生名字保存起来,给老师查看.这样你做完一门课程后,其他课程就依葫芦画瓢了(也是文件),给老师登录后可以查看谁选了它的课同时统计学生数,学生登录的时候不允许查看这个文件不就好了.
lxq2061971 2012-05-21
  • 打赏
  • 举报
回复
求思路啊,我快疯了

64,666

社区成员

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

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