督导系统项目开发过程的问题及解决

督导系统开发过程的问题及解决

问题1

前期对数据库的不了解;

解决

后来师兄把我们开发常用的四张表是记录什么内容的,有什么联系的文档发给我们,我才明白我要做什么,大概要怎样做,要对哪张表进行操作。

建议:在以后的项目开发中,师兄应该首先对我们简单讲解一下数据库中的各个表的作用,记录的是什么,各个表的

 

问题2

统计的级的问题

解决

本人觉得这是数据库的表的设计问题,在实际中,如果统计时没有年级的话,统计出来的数据也没有多大的意义,但是由于所用的表中没有这一项,从而使统计功能不完善。最后也只能按班和学院来统计,本想在自己操作的那张表中加入年级一列,但是由于是团队开发,不知其他的组设计特别是添加时,有没有填上年级,即使有也不知道他们会不会也在我操作的表中填入数据,所以还是没有加上这一列。

 

问题3

班组拆分成班的问题。由于实际上课时是几个班一起上,所以表中记录的一个上课的班组合,而不是一个班,但是统计时却要把班从班组合中分离出来。

解决

由于各个班之间用逗号分隔,所以可以用一个map容器和String类型的Pos, SubString,Trim函数分别获得逗号的位置和构造子串,并去除空格,再作为键值存入map容器中来解问题。Map容器的键是班名,值是统计的结果。若该班已存在于map中就累计,不存在就插入并赋初值。

 

问题4

参数的传递问题。由于我的map容器的数据需要作为实参传给它的子窗体,子窗体用这些数据构造图表,而我的map的second是一个我自己定义的结构体,虽然在子窗体中也定义了同样的一个结构体,但是还是出现了参数传递是无法析别的问题。编译器报错为:找不到匹配的函数;

解决

1、由于子窗体中的图表生成只用到我的结构体中的一个成员的数据,所以在new出图表子窗体时,定义一下临时的map,把原先的map中的first和second的结构体中的那个成员的值复制给临时的map,再把这个临时的map作为实参。

2、使用namespace。把我需要用到的结构体定义在图表子窗体(三级窗体)的头文件中(因为二级窗体会include三级窗体的头文件),并在我的窗体(二级窗体)中使用using声明,这样两个不同的文件就用到了系统能识别为同一类型的结构体。否则系统会认为这两个相同的定义是不同的,从而不能识别,出现了问题所描述的情况。

 

问题5:数据的显示。这个问题也是我做这个项目时最头痛的问题。由于统计的情况不同,有些情况只需要用sql语句进行统计,有的则用到上述所说的map容器来统计和记录。显示问题一共有两个,一个是用sql语句统计出的数据成了乱码的问题,另一个是如何把map容器中的数据显示到cxGrid中的问题。

解决

1、对于第一个问题,我用了sql里的函数convert进行强制类型转换。把int型转换成char型,从而把数据显示了出来。我的语句如下:

select student_institute,CONVERT(sum("+Condition.sSituationEn+"),char) from class_situation  where"+sTime+" group by student_institute"; 我试过,这里只能转换成char,varchart和int都不行,其他没有试。

2、对于第二个问题,是师兄解决的。首先在数据库中创建一个临时表,再清空表的内容,把我的map容器中的数据插入到临时表中,清除cxGrid的内容,再进行数据绑定到cxGrid中,就把map的内容显示了出来。在这个操作中,new出了一个新的TADOQuery的对象,所以要注意dataset的重置问题。就是在更新操作中,把dataset重新设为原来的query;

 

posted @ 2012-08-16 11:09  倦飞L  阅读(192)  评论(0编辑  收藏  举报