我在汕头搞企业管理系统(一)

 

闲话:终于到家了,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 

我在汕头搞企业管理系统(一)_第1张图片

但是,看起来很像是XP的导航栏,样子挺不好看的。

改变风格后,这是初步界面:

我在汕头搞企业管理系统(一)_第2张图片

 

 

你可能感兴趣的:(我在汕头搞企业管理系统(一))