首页 新闻 赞助 找找看

简单学生管理系统遇到的小问题

0
悬赏园豆:10 [已解决问题] 解决于 2017-09-20 18:06

java学生管理系统,选课时,怎么判断当前有哪些课程可以选(选了的不可选)。我觉得我的数据库设计出了点问题,可以给我讲一下你们的思路

 

这是我有关课程的数据库表

 

 

问题补充:

例如现在有3门课程 C JAVA PHP

问题:查询学生A还可以选的课程

一个学生A选了C,那么C就不能被学生A所选了,但是列出学生A还可以选的课程也就是JAVA 和PHP

我的思路是:先在课程记录表查询出学生A已选的课程,然后再课程表作比较,选出没有被选

但是我觉得思路有点不清晰

oneStep12的主页 oneStep12 | 初学一级 | 园豆:142
提问于:2017-09-19 19:14
< >
分享
最佳答案
1

不太清楚你可选不可选的概念是什么,我只能简单的理解为一个类似库存的玩意,如果选的数量到了上限(库存被扣完)及重复选择外都可选。

如果是这样,最起码几个基础表要有

课程表,记录基础信息及余量

用户表,记录用户信息,登录密码啥的

用户选课表,记录用户选课的历史数据(如果考虑多次使用的话需要在表中加入学期标识已区分)

在选课的时候(抛开前面那些展示什么的),最后关键的地方就是需要保证课程余量扣减和用户选课表的事务性,这个地方简单点就一个普通数据库级事务就可以搞定了,确保在用户选择后发现任何地方不满足选课条件则直接回滚。

完备点的可以加个用户操作历史记录表,这个表的数据只增不改,完全反应用户的各种对数据的变更,这个具有很强的证据作用。

收获园豆:10
Daniel Cai | 专家六级 |园豆:10424 | 2017-09-19 19:34

我已经补充了问题,麻烦

oneStep12 | 园豆:142 (初学一级) | 2017-09-20 09:31

@oneStep12: 你补充的问题

select * from tb where column_name not in (select column_name from tb2 where...)

Daniel Cai | 园豆:10424 (专家六级) | 2017-09-20 10:12

@Daniel Cai: 好的,谢谢

oneStep12 | 园豆:142 (初学一级) | 2017-09-20 10:25
其他回答(4)
0

条件太少`

吴瑞祥 | 园豆:29449 (高人七级) | 2017-09-19 20:01

我已经补充了问题,麻烦

支持(0) 反对(0) oneStep12 | 园豆:142 (初学一级) | 2017-09-20 09:30
0

最简单的就是加一张表,表里两个字段,一个记录课程所能选的次数,一个记录该课程被选了多少,达到所能选的次数就不能选了。

海棠依旧 | 园豆:202 (菜鸟二级) | 2017-09-19 22:39

我已经补充了问题,麻烦

支持(0) 反对(0) oneStep12 | 园豆:142 (初学一级) | 2017-09-20 09:30
0

学生A 选择了 C语言课程 ,那么学生A 的这条数据里肯定有一个字段是要用来存 选中的课的标识的 ,假如这个字段名叫做chose_course , 那么选了C语言课程,就把C语言课程的标识 放进入,多门课用 ' , ' 号隔开,然后查询的时候,就用学生表里chose_course字段存的科目标识去匹配课程表里的科目标识,匹配上了就是已选,匹配不上就是还没选 ,

大水煮鱼 | 园豆:366 (菜鸟二级) | 2017-09-20 11:08
0

学生A 选择了 C语言课程 ,那么学生A 的这条数据里肯定有一个字段是要用来存 选中的课的标识的 ,假如这个字段名叫做chose_course , 那么选了C语言课程,就把C语言课程的标识 放进入,多门课用 ' , ' 号隔开,然后查询的时候,就用学生表里chose_course字段存的科目标识去匹配课程表里的科目标识,匹配上了就是已选,匹配不上就是还没选 ,

fcyh | 园豆:568 (小虾三级) | 2017-09-20 12:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册