闲话:终于到家了,ISCC比赛结束后,觉得收获不少东西,视野开拓了不少。我想学脚本,我要配置PHP环境,我要学习渗透,我要学习入侵,我要学习吉他,我要搞很多很多东西,但是时间很少,只能抓取时间做事了。老爸说家里要是有一款财务管理软件就好了,我想,别的不搞了,先搞爸爸的需求吧,孝顺下老爸。
===============================================================
(一)用什么语言和工具呢?
Java, C++, C#?
主要是界面为了好看点,决定用C#吧。于是就得在家里的电脑上配置VS2010,于是就得下载这么大的东西。
好吧,要3个小时。我边下边看看有没有别的IDE吧。发现自己想太多了,老老实实下吧。
(二)做完的Winform项目怎么生成一个安装exe文件呢?
看教程:http://blog.csdn.net/hanghwp/article/details/3998083 即可。
(三)名字叫什么呢?
和老爸企业相关,就叫:华腾企业管理系统。
(四)功能有什么呢?
1.管理客户
2.管理物料
3.查询订单
4.查询总账
(五)订单用什么界面呢?
直接就一个界面来呈现即可,但是考虑到要能够用打印机打单,初步决定用现实中的订单的样子来做这个界面。
(六)C#怎么嵌入打印机呢?
百度到了一款BI,水晶报表:http://www.cnblogs.com/xumingming/archive/2008/07/31/1257106.html
嵌入之后应该很不错。
(七)建一个CDBHelper类
1.首先想到的是连接字符串ConfigurationManager,但是找不到,原来要引用 System.Configuration.dll.
2.要insert change delete update select ,发现其实就是两类,select 和 update
3.app.config文件
<configuration>
<connectionStrings>
<add name="connString" connectionString="server=.;database=CWDB;uid=sa;pwd=123577" />
</connectionStrings>
</configuration>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;
namespace 财务管理系统
{
class CDBHelper
{
private static SqlConnection connection;
public static SqlConnection Connection
{
get
{
string connectionString = ConfigurationManager.ConnectionStrings["connString"].ConnectionString;
if (connection == null)
{
connection = new SqlConnection(connectionString);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}
//增删改
public static int ExecuteCommand(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = cmd.ExecuteNonQuery();
return result;
}
//增删改重载,带参数
public static int ExecuteCommand(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
return cmd.ExecuteNonQuery();
}
//获得阅读器
public static SqlDataReader GetReader(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}
public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}
}
}
(八)设计一个好DB
t_admin 存放用户名和密码
admin_id admin_name admin_password
t_customers 存放所有的客户信息
customer_id customer_name customer_address customer_phone customer_ balance
t_products 存放所有的物料信息
product_id product_name product_quantity
t_records 存放所有的交易记录
record_id record_time record_customer_id record_product_id record_money
嗯,暂时就这样吧,挺好的
(九)皮肤控件
下载一个IrisSkin4(VS2010 破解版用的)和一个ssk皮肤
放在项目内(我放在 /bin/debug/)
然后再VS中打开引用,浏览添加IrisSkin4.dll,在工具箱中添加控件(添加项,浏览,添加IrisSkin4.dll 就可以),把控件拖到窗口上就好了
然后在程序中代码如下:
public LoginWnd()
{
InitializeComponent();
skinEngine1.SkinFile = "WarmColor3.ssk"; //skinEngine1就是你把控件拖到窗口上自动生成的对象名
}
奇怪的是,我在登陆窗口设置好了皮肤,竟然主窗口也能享用,这个控件真方便。。
(十)设计一个好的登陆窗口流程
某人说:http://blog.sina.com.cn/s/blog_6d0e97bb0100mezt.html,大概就是说,登陆窗口不参与代码操作,单纯传递值就好。
某人说:http://bbs.ednchina.com/BLOG_ARTICLE_2116009.HTM,大概就是说,主窗口在线程中启动。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
LoginWnd loginForm = new LoginWnd();
loginForm.ShowDialog();
if (loginForm.DialogResult == DialogResult.OK)
{
Application.Run(new MainWnd());
}
}
我个人认为第二种想法比较好,因为这样也分担了主窗口的压力,而且,在OKButton_Click中判断,应该就是符合设计者的理念吧。
登陆窗口,键盘响应,我想要实现Enter键和Esc键,发现只要在窗口属性中的AccpteButton和CancelButton中设置即可,十分方便。
(十一)设计一个漂亮的主窗口
想用导航,发现有个TreeView的控件,一看有点搓,果断下载新插件。
一百度发现DotNetBar这个工具集合,果断下载之。
发现有个插件很适合:ExplorerBar
但是,看起来很像是XP的导航栏,样子挺不好看的。
改变风格后,这是初步界面: