TechRes_local(互动教研统计本地版) 开发进度
当前版本 Gamma G1 迭代 N/A 稳定版本
TRS_Realtime_Local
支援版本 Win7/Win10
框       架 .Net Framework 3.0
当前大小 81.2MB(Source code+Debug Bin+SQLite DLL+Database)
工程大小 644KB(Source code)
开发进度
100%
2016-07-24
TechRes_local(互动教研统计本地版) 开发目标及进度
Pre-alpha Alpha Beta Gamma Stable
 Pa1 A1 B1 B2 G1 G2 1.0
Pre-alpha 1

1.数据库表设计。

2.程序界面设计。

3.数据库初始化程序。

A1

1.实时数据处理窗体的设计。

2.实时数据表的增添改删功能。

3.周备份功能。

B1

1.周备份功能。

2.翻页功能。

3.导出Excel功能。

B2

1.实现一定统计功能。

背景

大D的工作上会经常需要填写两个表格,这两个表格之间的关系强但联系性弱,经常需要两个表同时开起来然后左右窗口对比着填写。

时间一长,容易引发工作失误,同时效率也很低下。

为此大D决定造个轮子,用C#写一个Windows平台的桌面程序用于辅助,思来想去目前先写一个基于.Net Framework 3.0,数据库使用SQLite的工具。

目前尚未涉及到多端数据同步的问题,当有需要时,会考虑将SQLite切换到Mysql,不用MS SQL Server的原因是没有能跑Windows的VPS,所以需要使用在线数据库的时候就切换到Mysql就好了。

目前还在设计阶段,所以开发进度表内尚无截图可以放出来。

开发日志

2016-07-24 Beta B2 阶段

1.将所有统计功能实现。

2.切换到Gamma G1阶段,基本上不再添加新功能了。

2016-07-19 Beta B2 阶段

1.修复一些设计上的BUG(只在窗体载入时查询总条数和计算分页,导致添加条数到达分页数量时无法自动分页)。

2.添加统计窗口,但尚未进行窗体设计和代码的编写。

2016-07-18 Beta B1 阶段

1.添加清除已选学校和已添加人数的功能。

2.添加按照学科输出的功能。

3.添加精细查询输出功能。

4.完成所有导出Excel表格功能代码。

5.对主界面进行了一些微调(控件显示的默认值)。

6.转入Beta B2阶段。

2016-07-17 Beta B1 阶段

1.对导出表格界面做了一些调整。

2.完成导出全部数据功能。

3.表头行插入并带有自动调整列宽。

4.存储窗口、默认文件名功能完成,解决掩盖导出需要确认两次的问题(一次确认由SaveFileDiaglog发起,一次由Excel程序发起)。

5.完成导出进度条(并未实现根据导出进度来显示百分比,使用长时间滚动滚动条来表示正在运行中)。

6.增加主窗口学校选择界面模糊查询并高亮符合搜索条件的行功能。

2016-07-14 Beta B1 阶段

1.主窗体添加调用导出Excel功能窗体代码。

2.设计导出Excel功能窗体样式。

3.新建测试项目测试将Sqlite表导出到Excel。

2016-07-12 Beta B1 阶段

1.对实时数据窗体以及数据库初始化程序作出一些修改,参见开发手记的说明。

2016-06-28 Beta B1 阶段

1.设置窗体清理备份功能完成。

2016-06-27 Beta B1 阶段

1.周备份功能完成。

2.添加一个ini文件读写类,方便编辑配置文件。

3.增加设置窗口,提供关闭自动备份的功能,这部分窗体已经设计好,具体功能尚未实现。

2016-06-22 Beta B1 阶段

1.实时数据表增添改删功能已经完成。

2.翻页功能部分完成。

2016-06-02 Alpha A1 阶段

1.学届联动选择的bug。

2.窗体基本建立完毕。

2016-06-01 Alpha A1 阶段

1.初高中根据选择日期自动联动学届完毕。

2.初中根据选择学届自动联动学科完毕

2016-05-31 Alpha A1 阶段

1.实时数据处理窗体创建完毕。

2.参与学校选择器数据联动编写完毕。

3.程序启动时选择表功能完毕。

4.切换分支到Alpha A1,现阶段主要完成实时数据处理功能的开发。

2016-05-30 Pre-alpha阶段

1.对数据表设计全部完成。

DBmodel

2.增加log4net,可以捕获异常并写入log文件。

3.新建实时数据表完成,以rt_为表前缀,与学年度与学期共同组成表名。

4.查询当前已存在的实时数据表功能完成。

5.数据库初始化程序除帮助文档外全部完成,正式发布。

2016-05-28 Pre-alpha阶段

1.已将完成对教师信息表和学校信息表的增添改删功能,但进行下一步开发时发现数据库设计还是存在一些弊端,需要对目前的数据库结构设计打个Patch。

2.多线程检测数据库连接状态也实现了,但可能会引发访问到已释放资源的问题,暂时忽略了这种异常,后期应该研究一下修补。

2016-05-27 Pre-alpha阶段

1.由于数据表设计的问题,已经将基础数据维护的部分分离出来,单独写个来完成基础数据维护的工作,目前该工具正在做,已完成数据库初始化,数据表初始化,添加、修改、查询功能已经完成

2016-05-26 Pre-alpha阶段

1.数据库表设计完成,将所需数据分离,基础数据(授课教师信息,远端学校信息)分别写入两张表,供WinForm调用使用。

所产生的实时数据按照学期不同存放至不同表内。

2.编写数据库初始化代码

3.搞了个关于窗口

2016-05-25 Pre-alpha阶段

1.考虑数据库表的设计,目前暂时决定使用多张表,具体设计稍后给出。

2.程序界面设计。

3.由于存在多个学年的情况且任课老师存在变化,所以采用基础信息数据与实际生产数据分离的设计,需要设计一个数据库的初始化功能,该功能需要实现通过C#连接数据库并生成新表。

开发手记

2016-07-24 Beta B2 阶段

1.又有差不多四五天没有造这个轮子了,周日花了一天的时间来写,基本上已经把所有的功能都完成了。

2.工作上公司对目前的所有表格统计等方式都进行了一个规范,同时公司选择使用多人协作的应用来进行这些数据的采集工作,所以基本上这个轮子不会再造下去了,早在差不多7月20号时就已经接到了通知,不过做事情要善始善终,所以还是决定把这个轮子造完,至少之前写在开发目标里面的功能都进行一个实现。

3.最后这点统计功能真是写的想死,代码写的确实是不够好看。

2016-07-19 Beta B2 阶段

1.今天添加了一些数据方便进行测试,添加中发现了一些问题,主要是添加条数到达分页数量时并没有进行分页的操作,对该问题进行了一些调整和修改。

2.与同事做了交流,估计这程序会分发给同事们使用,于是要添加一下周报表输出的功能,这个功能比较好办,现在的代码改一改就可以用了。

3.拿到了高中的数据,搞成csv直接存到数据库里面作为测试统计数据用的功能,距离新学期开学还有差不多1个月的时间,要在这一个月时间当中把这个轮子造完,算是个deadline了。

2016-07-18 Beta B1 阶段

1.由于勾选需要添加的学校时从表格内查看影响效率和用户使用体验,添加了清除已选学校和已添加人数的功能。

2.添加按照文理方向(公共科、理科、文科)输出的功能。

3.觉得直接提供几种单独输出的功能有点不够好用,添加了一个以学段、学届、学科、文理方向为共同查询条件的精细查找并导出Excel的功能。

4.找到了为什么输出会少一行,因为输出时导致界面无响应,便使用

使输出时界面仍然能够刷新,这一代码导致了第一次循环并未得到输出,于是调整了代码解决该问题。

5.对界面进行了一些微调。

2016-07-17 Beta B1 阶段

1.今天做的事情比较多,基本上将导出表格功能全部完成了,但是遇到了输出到Excel表格中的数据少一行的问题。

2.暂时先不管少一行数据的问题,把表头插入到表格中的功能完成了,存储窗口调用和默认文件名功能都参照MSDN写好了。

3.学校过多时通过表格直接查看用户体验差,添加了一个模糊查询的功能,可以高亮符合条件的行,帮助快速定位所需要查看的学校名称。

4.掩盖导出时会提示掩盖两次,一次确认由SaveFileDiaglog发起,一次由Excel程序发起,最后使用DisplayAlerts关掉了Excel的提示。

2016-07-14 Beta B1 阶段

1.在stackoverflow上找到了关于sqlite表导出到excel的代码片段,花了点时间写了个demo测试并稍加修改,基本上导出功能的具体实现代码已经搞定了。

2.设计了一下导出Excel功能的窗体,目前提供将全部数据导出或者按照学校名称,初中还是高中,按学届,按教师,按授课科目等多种查询来实现不同的导出。

3.接下来是要加个进度条,同时搞一个保存文件的窗口,实现指定保存位置和指定文件名的功能,基本上这些功能都搞定之后就没有太多需要增加的功能了,最多也就是加一个统计的功能出来,方便学期末统计数据使用。

2016-07-12 Beta B1 阶段

1.由于W520遭遇一些问题导致开发工作停滞,已于7月12日重新开始开发进程。

2.思考到如果涉及到程序在多处使用(也就是最终存在多个有数据的数据库)且使用中对学校数据表进行了增加行的操作,那么学期末进行统计时就比较麻烦了,所以将当前使用的外键ID作为学校ID的这种存储方式变为直接存储学校名称,尚未可知由此带来的数据库性能开销有多大,不过当前数据量不大,同时从两表关联查询变为单表查询。性能方面目前暂时不需要过多进行考虑。

2016-06-28 Beta B1 阶段

1.完成了清理备份文件夹的功能,不过每次都连backup文件夹同时删除,正在考虑解决办法,目测直接删除后新建文件夹就好了。

2.构思了一下Excel导出功能要怎么做,搜索一下相关资料看看怎么实现的吧。

2016-06-27 Beta B1 阶段

1.之前手贱装了个和谐版插件,导致VS2015无法正常启动,卸载重装VS,修复VS均不能正常打开,一怒之下重装了系统。

2.装系统是个漫长过程,终于在06-26搞定了,于是又可以愉快的重新写代码了。

3.每周一自动备份的功能完成了, 将文件备份到Path\Backup\yyyy-MM-dd\yyyy-MM-dd.db

4.添加了个ini的类,用于写配置文件,想到还是提供一个关闭自动备份的功能,于是弄了个设置界面,界面已经搞定,但目前还没有实现通过ini来控制自动备份函数是否调用的功能。留着明天来搞就是了。

5.本来想用xml来做配置文件,搜索了xml文档结构的文档读了一下,节点也已经手写的差不多了,在程序内实现读取调用时太麻烦了,本来就已经代码很长了,于是放弃了xml做配置文件的想法。

6.导出excel文件这部分的功能会比较麻烦,也许应该提供一下根据学校、学科等可选参数来进行筛选输出以及全表输出两种功能。

7.添加了ini类之后,工程内添加了一个包含默认设置参数节点的ini文件,VS保存时是带BOM的,因为这个问题兜了不少圈子,最后一刻才想到是不是编码的问题,果断改成UTF-8无BOM就可以顺利读取了。

2016-06-22 Beta B1 阶段

1.这一段时间相对比较忙碌,没有太多的时间来继续造轮子,不过在这20天当中还是做了一些的。

2.增添改删功能基本算是完成了,尝试插入了上千条数据,加载速度堪忧,跟SQLite数据库自身的性能有一定关系,也与大D对程序本身的设计有关,思来想去还是加个分页功能吧。

3.菜单栏已经添加完,切换数据表的功能也搞定了,用了个最烂的办法,直接重启程序。

4.再一次深刻意识到没有好好做PRD的痛苦之处,然而下次还是不会做PRD.

2016-06-02 Alpha A1 阶段

1.发现学届联动选择有Bug,重新思考了一下实现逻辑然后重新编写了代码,目前看来是没问题了。

2.因为实时数据表字段比较多,窗体做的比较大,不知道在低分辨率显示器上显示效果怎么样,周末可以试一下。

3.主界面基本上已经写的差不多了,接下来就是将功能逐一实现即可,然后就可以过渡到Beta阶段增加一下输出Excel表乃至分析数据的功能。

2016-06-01 Alpha A1 阶段

1.学届联动部分算是写完了,有点坑的是代码实现个人觉得比较渣,一打判断。

2.虽然学届联动部分写完了,但是当时这个业务逻辑还是详细思考了很久才真正弄懂。

3.具体是对判断方式进行了改变,原有是跟系统当前时间进行对比判断,这样做会出现一些错误,新方法不仅简化了实现的代码,还增加了对数据准确性的保护。

2016-05-31 Alpha A1 阶段

1.发现了数据库字段少设计了一个,于是今天补上,但暂时还未对数据库初始化工具进行修改。

2.改了多次实时数据处理窗体的摆放样式,晚上基本上得到一个还算满意的,为进一步简化操作,需要思考一下当前年份月份与毕业学届之间的关系,用来自动识别并填充将学期所开科目到下拉列表当中去。

3.增加窗体时遇到了关闭登陆窗体时同时关闭掉了主窗体的原因,后来发现应该用对话框的方式启动登陆窗体,这问题也算是顺利解决了。

4.对于窗体间传值的问题,目前是通过类的方式来解决的,还有不少的方式可以来实现,目前只会这一种,基本上就就这么用了。

5.实时数据处理窗体剩下的功能,除各类联动判断之外的代码基本可以复用数据库初始化工具的,省事儿。

6.其实并不是很理解软件开发当中各个阶段的特点,随心好了。

2016-05-30 Pre-alpha阶段

1.这两天花了时间设计完了数据库,期间咨询了D大一些问题,感谢D大的帮助。

2.数据库初始化工具算是写完了,中间还是遇到不少的问题,还好通过搜索引擎基本都解决了。

3.增加了新的功能,提供了日志,这样对后期分发使用的情况收集有了很大的帮助。

2016-05-28 Pre-alpha阶段

1.花了些事件研究了invoke以及多线程,实现了通过System.timer.timer类实现定时触发,利用Invoke及代理多线程操作跨线程调整UI,使得检测数据库状态的提示可以正常显示了。

2.修改了一下程序界面,将连接和关闭数据库的功能放到了菜单当中。

3.发现了数据设计上的一些问题,实时数据表,也就是存储最重要信息数据表内会有大量的冗余数据,这类冗余数据如何保证一致性是一个问题,所以目前重新回过头来看一下数据库,对数据表进行一下优化,使得大量冗余字段可以通过外键的方式来进行妥善的管理与存储。

4.目前来看,还需要实现数据库自动备份的功能,不过这倒好办,关闭连接之后,System.IO上去直接复制一份就好了。

5.今天吃饭的时间看了一下C#关于图表的类,争取给他搞个数据分析的功能。

6.目测一堆功能全下来,没个几千行是搞不定了。

2016-05-27 Pre-alpha阶段

1.今天工作不是很忙,闲着的时候基本都在写代码,不得不说,不在动手之前将所有功能都考虑到是个很让人恼火的事情。今天吃饭的时候脑袋里还在想功能的问题,于是又增加了新的功能,越写越大的节奏。

2.目前为止都已经300行了,在群里得瑟了一番之后D大目测我要写3K行,搞不好写到最后真要到3K行。

3.应该加强一下代码复用,有不少的代码其实可以封装成一个类,后面的工作就应该轻松一些了。然而大D我并不会写类,可以先把功能都写好,后面做重构的时候把搞一下类。

2016-05-26 Pre-alpha阶段

1.基本上确定了数据库表的设计,虽然用的是比较笨的方法,而且数据量大起来的话效率应该会明显降低。

2.由于数据库表设计完了,需要写一个初始化和编辑基础数据的功能。代码中涉及到了跨线程操作控件的问题,又没怎么学过C#,先看一下委托怎么用吧

2016-05-25 Pre-alpha阶段

1.现在还没有想好数据库内的表应该怎么设计,就目前来看,数据过于分散且每周存在重复,需要好好分析一下现有两张表格的内容然后再对数据库表结构进行设计。

2.之所以选择使用SQLite,跟此类数据库与Access数据库相似,均为文件型,但SQLite相比Access还是要有更多的优势,就目前的情况来看,这个小程序的数据库内的数据行数不会超过百万级,SQLite的性能足够了。

3.目前需要担忧的问题是SQLite虽然是一个实现比较好的文件型数据库,由于它自身的特性,所以仅能支持多读单写,这就有可能涉及到需要读写锁的问题。

代码量统计

既然这个小项目已经到了关闭的时候,玩一下VS2015自带的代码度量值功能吧,顺路贴出来凑凑字数。

由于数据库初始化功能和基础的表维护功能并没有写到主程序当中,而是单独写了一个程序出来做,这里也放出该程序的VS代码度量值报告。

Bug反馈

暂无

资源下载

本程序不对外公布使用。

版权声明
转载保留版权: 大D技研室 | 《[稳定版本]TechRes_local(互动教研统计本地版)开发日志》
本文链接地址:https://www.dadclab.com/archives/6304.jiecao
转载须知:如果您需要转载本文,请将版权信息,版权授权方式,以及本文的链接地址注明,谢谢合作。
本文被贴上了: , , , , , , 标签