前言
本人是某211的计算机系大四学生,虽然菜但是热爱学习,希望能在各方面提高自己。九月刚开学不久,经同学介绍,接到了一个小项目,主要内容是给某公司做一个人资管理系统,用于管理员工的信息。当时一听,觉得并不难,不就是写个界面加上个数据库吗!通过这个还可以练练手,在项目履历上再加上一笔~~~于是就答应开始做。没想到,自己正在慢慢走向一个大坑... ...
项目历时两个多月才磕磕绊绊地完成。期间由于各种各样的原因,遇到了各种各样的问题,同时也有许多的感想。因此萌生了用博客记录下的想法。这也是我的第一篇比较正式的博文~~~因为内容较多,预计写成一个系列。
起步
拿到需求后,我和搭 (nǚ) 档 (piào) 就开始了讨论。这个项目并不怎么难,首先需要写个界面,然后在数据库里建表,最后连接数据库就可以了 : ) 数据库我们决定用 MySQL,一是因为开源,社区版免费,二是因为用的人很多,遇到各种问题基本都能找到解决方法。那么应该用什么写界面和逻辑代码呢?我和搭档都会 Java,C++ 和 C# 也都会一点点(以前看过一点但是很少用,实际上差不多忘光了)同时我也掌握了 Python 的基础。但是我们都不想用 Java 写界面,因为以前做Java课设的时候用 awt 写界面的蛋疼经历一直让我们耿耿于怀,无法忘怀。Python 倒是可以写界面,但我百度了相关内容,发现 tkinter/Qt 写对自己来说也不怎么合适。于是最终决定问一问社团的研究生学长,他开发经验丰富,技术也很强。
学长问了下我们的项目情况,马上就建议我们使用 C# 完成,因为它简单,而且用来写界面也不难。抱着试一试的心态,我就开始百度怎么用 C# 写界面,发现了好多陌生的名词,什么 UWP 啊,什么 WPF 啊,还有 Winform 之类的东西。经过进一步查找,知道了 UWP 程序其实就是 Windows 应用商店里的那些程序,而剩下的两个都可以用来开发桌面程序,其中 WPF 能做出更好看的界面,比 Winform 更先进一些。
我们经过短暂的讨论,马上决定使用 WPF 来开发,显然它比其他两个要更适合一些。但是我们都不会用怎么办?还能咋办,现学呗!于是我们就立马去图书馆借了几本讲 C# 和 WPF 的书,从入门开始学起...考虑到项目的进度我们预计7-10天基本掌握 WPF,同时在此期间,我也开始制作界面的原型,和客户那边先确定界面,然后再进入开发阶段。
现在看来,当初这个决定是极其错误的。原因有以下几点:
1.学习成本较高。做项目时尽量用自己熟练的技术或语言,对于自己不会的技术,除非特别有必要,否则一定要谨慎考虑使用!!!可能学长用 C# 很熟练,觉得很方便,但是它并不适合我们。我们在基本不懂 C# 和 WPF 的情况下开始学习,要在7-10天达到能做出一个完整的应用程序的水平(而不是玩具应用),是有一定难度的,而且网上关于 WPF 的各种问题的答疑贴很少,这点我们后来才发现。后来我们基本上都是在 StackOverflow 上各种找遇到的问题,而且只有一部分问题得到了解决,对于剩下的问题,我们只能自己尝试各种可能的方法,实在解决不了就采用其他的方式来解决。其间经历了多少痛苦和郁闷,走了多少弯路,只有自己知道。
2.浪费时间。现在看来,当初我们在制作界面原型的时候,如果同时去讨论思考整个项目的结构,先写出一个大致的框架,会非常有利于展开后续的开发工作。但我们选择了去学一个新的东西,这就意味着我们只能在客户确定界面以后、进入开发阶段以后才开始考虑程序的结构相关的事。这是不对的,应该在开发阶段之前就大致确定这些事,要不然会浪费后续开发阶段的时间。
3.没必要学这些。为什么这么说?因为当初我们选择接这个项目的目的是为了提高自己的编程水平,掌握更多计算机数据库相关的知识,并不是学一门新语言,或是写个界面,这并不是我学习的重点。我的时间是有限的,所以需要把时间投入到最需要的地方,比如思考数据库中应该怎么分表,数据库语句怎么写效率最高,应该如何使用长连接,怎么让代码逻辑更清晰、更有拓展性等等。这些内在的东西,比我学会怎么用 WPF 重要的多。
作为系列的第一篇,这篇的内容基本都没讲到和技术有关的东西 : ) 从第二篇开始,我会根据时间顺序来说明使用 C# 和 MySQL 搭建小型人资管理系统的步骤,遇到的困难及解决的办法。最后,把我用墨刀做的原型发出来,大家有需要的可以参考一下。
下一篇会介绍登录页和主页面的框架布局,欢迎阅读~~~