绘芯电池测试 - 专业的电池测试平台!

电池测试在线  - 电池测试仪|超级电容测试仪|电池测试系统|超级电容

当前位置: 电池测试 > 知识库 >

电话计费管理系统设计

时间:2016-07-29 19:02来源:未知 作者:admin 点击:
电话计费管理系统采用全新的设计理念,本系统采用Windows应用程序设计提供完善的功能模块,无论是从客户还是管理人员对自己的业务需求都能够满足。客户可以方便的实现各种业务的查询,管理员可以很方便的管理各种各样的客户业务,办理业务,更新,删除业务,


   

 

随着近年来我国电信业的迅猛发展,各项业务量快速增长,新的业务种类和新的服务形式不断推出,而旧的电信业务的计费处理从体制到技术都越来越不能适应形势的需要,甚至在某种程度上已经限制和阻碍了业务的发展。新的时期,新的挑战。近年来,我国移动电话的普及全国各个角落,种类繁多,形式多样。同时业务的需求也是千变万化,作为一家好的电话服务公司要想在现代电信产业中稳步发展,求的生存,就的有良好管理体制和先进的管理系统和优秀的技术。

如今计算机软件产业的不断进步,在一些面向对象的编程语言中融合了强大的数据库开发能力,ADO.NET数据库访问技术[8]Visual Studio2005开发平台的引入。使数据库开发更加成熟化。SQL2000数据库的强大数据处理能力,市局管理更现代化、自动化、智能化、人性化。在这些软件的帮助下使得数据管理变得简单,条理清晰,科学。易保存,以及一些以前方法无法达到的功能。为了适应现代社会的高节奏,高效率的工作要求,为电话计费管理者对数据的管理带来极大的方便。

电话计费管理系统采用全新的设计理念,本系统采用Windows应用程序设计提供完善的功能模块,无论是从客户还是管理人员对自己的业务需求都能够满足。客户可以方便的实现各种业务的查询,管理员可以很方便的管理各种各样的客户业务,办理业务,更新,删除业务,备份,优化数据等功能。而这些功能的实现都对于客户和管理员都是透明的,都是在可视化的窗体上操作,操作方便简单。

 

 

1章 电话计费管理系统设计与实现概述

 

1.1 项目概述

随着近年来我国电信业的迅猛发展,各项业务量快速增长,新的业务种类和新的服务形式不断推出,而旧的电信业务的计费处理从体制到技术都越来越不能适应形势的需要,甚至在某种程度上已经限制和阻碍了业务的发展。新的时期,新的挑战。近年来,我国移动电话的普及全国各个角落,种类繁多,形式多样。同时业务的需求也是千变万化,作为一家好的电话服务公司要想在现代电信产业中稳步发展,求的生存,就的有良好管理体制和先进的管理系统和优秀的技术。

1.2系统前台开发工具

Visual Studio是微软公司推出的开发环境,是目前最流行的Windows平台应用程序开发环境[1]。目前已经开发到8.0版本,也就是 Visual Studio 2005

Visual Studio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。[5]

Microsoft Visual Studio .NET 2005开发环境。需要在Framework2.0的支持下工作。其中采用C#语言实现前台代码的编写,C#是一种跨平台变成语言,台的兼容性非常好,移植性强。C#语言[9]在带来对应用程序的快速开发能力的同时,并没有牺牲CC++语言的各种特性。它忠实地继承了CC++的优点快速应用程序开发的思想与简洁的语法将会使软件的开发更加趋于简单化。

C#是专门为.NET应用而开发出的语言。这从根本上保证了C#.NET框架的完美结合。在.NET运行库的支持下,.NET框架的各种优点在C#中表现得淋漓尽致。C#具有一些突出的特点:简洁的语法、与Web的紧密结合、完整的安全性与错误处理、版本处理技术、更重要的特点是C#语言是一个功能完备的面相对象程序设计语言。

本系统采用Micosoft Visual Stduio 2005集成开发环境下的C#语言编写,其中用到的是基于C#Windows应用程序。这是一个集成可视化开发环境,其中提供了相当丰富的类库,组件,控件等。使用 C# 设计的组件可以很容易的转换成 Web 服务[5],可以以任意操作系统的任意语言从 Internet 上调用。开发人员可以定义特定域的属性,并将它们应用于任何语言元素如类,接口等。开发此应用程序的团队使用 .NET 框架和 C# 语言创建了多线程的邮件服务。对这个项目来说,C# 语言[4]看起来是最合适做应用程序设计的了;实际上,因为有了来自 .NET 框架对核心编程任务的支持,使用 C#开发实际的可视化的窗口比使用其他的开发语言更方便,容易。

1.3后台数据库

后台数据库开发采用Microsoft SQL Server 2000数据库[7],选择理由在于:数据结构化;数据共享性高,冗余低,易扩充;数据独立性高;数据由DBMS统一控制和管理。

SQL Server 2000 是一个高性能的客户端/服务器结构的关系数据库管理系统[1]SQL Server 2000是为支持高容量的事务处理以及数据仓库和决策支持系统而设计。它运行在Microsoft Windows NT4Microsoft Windows 2000 Server上—基于使用Intel处理器的网络[2]。可以把SQL Server 2000 作为一种个人桌面数据库系统安装在Windows NT Workstation4Windows 2000 ProfessionalWindows 98 Windows Millennium Edition机器上。可以使用相同的CD来安装任何一个SQL Server 2000的服务器版本或者个人版本。另外,还可以在同一台计算机上安装多个SQL Server 200实例[2],每个实例都有各自的一套用户和数据。

SQL Server 2000实际上有7种不同的可用版本:Standard EditionEnterprise EditionPersonal EditionDeveloper EditionWindows CE EditionEvaluation EditionMicrosoft Desktop Engine

SQL Server 2000也能够为其他的Microsoft操作系统,比如Windows3.1MS-DOS,提供很多客户端和网络接口。由于SQL Server 的开放结构,其他的系统也能够和他交互操作。

SQL Server 2000 是微软公司开发的中型关系数据库管理系统。由于其操作简单,价格相对较低,对于预算紧张、员工不多的中小企业比较有吸引力。SQL Server 2000 简单易学,与当前流行的Windows 操作系统有着天然的兼容性,SQL Server 2000在中小型企业中有着很大的市场份额,所以对读者就业后快速适应工作环境有很大的帮助,SQL Server 2000 是微软进军数据库市场的主要产品,而且可以预见,微软将推出更有竞争力的SQL Server 系列软件。由于数据库软件在企业级软件中的重要性,同一家公司数据库软件将有着相同或相近的操作界面和良好的兼容性,所以通过学习SQL Server 2000,读者能够以不变应万变。

SQL Server 2000是基于结构化查询语言的可伸缩的关系数据库,它支持Internet应用程序的可扩展标记语言、并由数据库、关系数据库、结构化查询语言和可扩展标记语言等部分组成。

SQL Server 2000 以其卓越的性能逐渐成为Windows操作系统平台下进行数据库应用开发中较为理想的选择之一。它是一个后台数据库管理系统,其功能强大、操作简便,日益为广大数据库用户所喜爱,越来越多的开发工具提供了与SQL Server的接口。了解和掌握SQL Server的功能,对于一个数据库开发管理人员来说非常必要。

本系统后台数据库采用Microsoft SQL Server 2000 SQL数据库提供丰富的图形化管理工具[5],动态自动管理和优化管理功能,丰富的用户编程接口,简单的管理方式,同时具有很好的伸缩性和可靠性能和充分的的Internet的技术支持。总之,无论从性能上还是技术上SQL Server在实际的开发中都是很好存储数据的最优选择。

 

 

 

 

 

2章 需求分析

 

2.1 系统需求分析

随着近年来我国电信业的迅猛发展,各项业务量快速增长,新的业务种类和新的服务形式不断推出,而旧的电信业务的计费处理从体制到技术都越来越不能适应形势的需要,甚至在某种程度上已经限制和阻碍了业务的发展。新的时期,新的挑战。近年来,我国移动电话的普及全国各个角落,种类繁多,形式多样。同时业务的需求也是千变万化,作为一家好的电话服务公司要想在现代电信产业中稳步发展,求的生存,就的有良好管理体制和先进的管理系统和优秀的技术。

随着电信市场的不断变化,许多新的功能模块需要随时增加,已有的模块需要频繁改动,甚至已有的处理流程也会改变,这样就要求系统有极好的灵活性,各系统模块相对独立,可独立于硬件而是随着业务随时在变化。在以有的电话记费系统上要增加新的功能模块以便实现新的功能满足现代电话业务的需求。

22 系统用例图

2.1 电话计费管理系统用例图

3章 系统设计

 

31系统逻辑组成结构

经过分析要完成电话记费的基本功能首先要 建立以下基本表:

u      客户资料表:客户资料表记录了客户的基本信息,设计表如下页图3.1-1

u      收费员资料表:收费员资料表记录了收费员的基本信息,设计表如下图3.1-2

u      应收款额表:应收款额表记录了客户的缴费及余额信息,设计表如下图3.1-3

u      话费信息库表:话费信息库表记录了客户的基本话费信息,设计表如下页图3.1-4

u      客户受理表:客户受理表记录了客户受理结果的基本信息,设计表如下图3.1-5

     

数据类型

     

允许空

客户姓名

varChar

      15

 

联系电话

    Varchar

      15

 

联系地址

    Varchar

      40

     Y

套餐名称

    Varchar 

      20

     Y

手机号码

      Char

      11

    

手机密码

      Char

      10

 

3.1-1 客户资料表

列名

   数据类型

     

允许空

收费员ID

     Char 

      8

 

   

     varChar

      15

 

    

     Varchar

      3

     Y

   

     varchar

      10

    

 

 

 

 

3.1-2收费员资料表

列名

数据类型

长度

允许空

客户姓名

char

15

 

手机号码

char

11

Y

应收费用

money

8

Y

实收费用

money

8

Y

专用卡余额

money

8

Y

3.1-3 应收款额表

     

数据类型

     

允许空

手机号码

Char

      11

 

客户姓名

     varchar

      15

 

通话费

     Money

      8

     Y

新业务费

     Money 

      8

     Y

费用合计

     Money

      8

     Y

  套餐名称

    Varchar

      20

     Y

3.1-4话费信息库表

      

   数据类型

     

允许空

客户姓名

     Varhar 

      15

 

手机号码

      Char

      11

 

受理内容

    Varchar

      50

     Y

受理时间

    Date time

      8

     Y

3.1-5客户受理表

 

 

 

 

32 系统概念结构

4.2-1 系统E-R[6]

3.3 功能模块图

分析电话计费系统的功能模块图,可以看出系统有两个动作分支构成,即客户查询和管理员管理系统,做功能模块图如4.3-1

3.3-1 功能模块图

 

4章 系统实现

 

4.1 系统登陆模块

登录界面模块是通过访问数据库中的用户表中的帐号和密码两个字段来判断用户名和密码是否匹配,如果匹配就和进入主界面,如果不匹配则不能进入主界面。用户分两个级别(客户和管理员),不同的用户级别登录,其权限在主界面中得以体现。如图4.1所示。

4.1 用户登录窗口

实现代码:

using System.Data.SqlClient;

    class linkdatabase

    {

        private string strSQL;

        private string connectionString = "workstation id=localhost;Integrated Security = SSPI;database=电话计费系统";

        private SqlConnection myConnection;

        private DataSet ds = new DataSet();

        private SqlDataAdapter da;

        public linkdatabase()

        {

        }

        public DataSet SelectDataBase(string tempStrSQL, string tempTableName)

        {

            this.strSQL = tempStrSQL;

            this.myConnection = new SqlConnection(connectionString);

            this.da = new SqlDataAdapter(this.strSQL, this.myConnection);

            this.ds.Clear();

            this.da.Fill(ds, tempTableName);

            return ds;}}

private void button1_Click(object sender, EventArgs e)

        {for (int i = 0; i < mytable.Rows.Count; i++)

            {    this.myrow = mytable.Rows[i];

                if (myrow[0].ToString().Trim() == this.txt_id.Text.ToString().Trim() && myrow[1].ToString().Trim() == this.txt_pwd.Text.ToString().Trim()){    blcanlogin = true;

                    MessageBox.Show("密码验证成功,欢迎使用本系统!!","登录成功",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);

 主页面 aa = new 主页面();aa.Show();this.Hide();txt_pwd.Clear(); return;}

42 主窗体

主窗体是显示电话计费管理系统的主要功能(客户信息、业务查询、业务办理系统维护等)。不同的用户级别登录到主界面有不同的权限。如图4.2所示。

 

 

 

 

 

 

 

 

4.2 主窗口

43 客户业务查询

客户查询窗口只要是为客户提供花费查询、个人信息查询、余额查询和套餐查询等信息。如图4.3所示。

 

 

 

 

 

 


4.3 客户业务查询窗口

  private void button1_Click(object sender, EventArgs e)

        {

            SqlConnection conn = new SqlConnection();

图4.3 客户查询窗口

 conn.ConnectionString = "data source=(local);initial catalog=电话计费系统;  integrated security=true;";

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "select * from 话费信息库表 where(手机号码=@id);";

            SqlParameter p1 = new SqlParameter();

            p1.ParameterName = "@id";

            p1.SqlDbType = SqlDbType.Char;

            p1.Value = txtb1.Text;

            cmd.Parameters.Add(p1);

            conn.Open();

            SqlDataAdapter da = new SqlDataAdapter();

            DataSet ds = new DataSet();

            da.SelectCommand = cmd;

            da.Fill(ds, "话费信息库表");

            dataGrid1.DataSource = ds.Tables["话费信息库表"];

            conn.Close();

            txtb1.Clear();

        }

     private void button6_Click(object sender, EventArgs e)

        {

            SqlConnection conn = new SqlConnection();

            conn.ConnectionString = "data source=(local);initial catalog=电话计费系统;  integrated security=true;";

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "SELECT  手机号码 , 姓名 , 帐户余额 FROM 收款额表 where(手机号码=@id);";

            SqlParameter p1 = new SqlParameter();

            p1.ParameterName = "@id";

            p1.SqlDbType = SqlDbType.Char;

            p1.Value = textBox2.Text;

            cmd.Parameters.Add(p1);

            conn.Open();

            SqlDataAdapter da1 = new SqlDataAdapter();

            DataSet ds1 = new DataSet();

            da1.SelectCommand = cmd;

            da1.Fill(ds1, "话费信息库表");

            dataGrid3.DataSource = ds1.Tables["话费信息库表"];

            conn.Close();

            txtb1.Clear();

        }

private void button4_Click(object sender, EventArgs e)

        {

            SqlConnection conn = new SqlConnection();

            conn.ConnectionString = "data source=(local);initial catalog=电话计费系统;  integrated security=true;";

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "SELECT 手机号码 , 姓名 , 套餐名称 FROM 话费信息库表 where(手机号码=@id);";

            SqlParameter p1 = new SqlParameter();

            p1.ParameterName = "@id";

            p1.SqlDbType = SqlDbType.Char;

            p1.Value = textBox1.Text;

            cmd.Parameters.Add(p1);

            conn.Open();

            SqlDataAdapter da2 = new SqlDataAdapter();

            DataSet ds2 = new DataSet();

            da2.SelectCommand = cmd;

            da2.Fill(ds2, "话费信息库表");

            dataGrid2.DataSource = ds2.Tables["话费信息库表"];

            conn.Close();

            txtb1.Clear();

        }

4.4 办理业务

业务办理窗口主要是系统管理员根据客户需求为客户办理各种业务,如办理新帐户、套餐、更新、删除客户业务等信息。如图4.4所示。

图4.4 业务办理

 

using System.Data.SqlClient;

SqlConnection conn;

        SqlDataAdapter da;

        DataSet ds;

        CurrencyManager cm;

public partial class 办理业务 : Form

    {

        SqlConnection conn;

        SqlDataAdapter da;

        DataSet ds;

        CurrencyManager cm;

        private void Bangding()

        {

            DataRow dr = ds.Tables[0].Rows[BindingContext[ds.Tables[0]].Position];

            this.txtzhbh.Text = dr["帐户编号"].ToString();

            this.txtsjhm.Text = dr["手机号码"].ToString();

            this.txtxm.Text = dr["姓名"].ToString();

            this.txtsllx.Text = dr["受理类型"].ToString();

            this.txtslsj.Text = dr["受理时间"].ToString();

        }

        private void Display()

        {

            SqlConnection conn = new SqlConnection();

            conn.ConnectionString = "data source=(local);initial catalog=电话计费系统;  integrated security=true;";

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "select * from 客户受理表 where(手机号码=@id);";

            SqlParameter p1 = new SqlParameter();

            p1.ParameterName = "@id";

            p1.SqlDbType = SqlDbType.Char;

            p1.Value = txtsjhm.Text;

            cmd.Parameters.Add(p1);

            conn.Open();

            SqlDataAdapter da = new SqlDataAdapter();

            DataSet ds = new DataSet();

            da.SelectCommand = cmd;

            da.Fill(ds, "客户受理表");

            dataGrid1.DataSource = ds.Tables["客户受理表"];

            conn.Close();

        }

        private void 办理业务_Load(object sender, EventArgs e)

        {

            conn = new SqlConnection();

            conn.ConnectionString = "data source=.;initial catalog=电话计费系统;integrated security=true;";

            da = new SqlDataAdapter("select *from 客户受理表", conn);

            ds = new DataSet();

            da.Fill(ds);

            cm = (CurrencyManager)BindingContext[this.ds.Tables[0]];

            Bangding();

        }

        private void button2_Click(object sender, EventArgs e)

        {

            if (cm.Position <= cm.Count - 1) cm.Position--;

            Bangding();

        }

        private void button3_Click(object sender, EventArgs e)

        {

            if (cm.Position >= 0) cm.Position++;

        Bangding();

        }

        private void button5_Click(object sender, EventArgs e)

        {

            conn = new SqlConnection();

            conn.ConnectionString = "data source=.;initial catalog=电话计费系统;integrated security=true;";

            da = new SqlDataAdapter("select *from 客户受理表", conn);

            conn.Open();

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "Insert into 客户受理表 values(@zhbh,@sjhm,@xm,@sllx,@slsj)";

            SqlParameter p1 = new SqlParameter();

            p1.ParameterName = "@zhbh";

            p1.SqlDbType = SqlDbType.Char;

            p1.Value =txtzhbh.Text;

            cmd.Parameters.Add(p1);

            SqlParameter p2 = new SqlParameter();

            p2.ParameterName = "@sjhm";

            p2.SqlDbType = SqlDbType.Char;

            p2.Value = txtsjhm.Text;

            cmd.Parameters.Add(p2);

            SqlParameter p3 = new SqlParameter();

            p3.ParameterName = "@xm";

            p3.SqlDbType = SqlDbType.VarChar;

            p3.Value = txtxm.Text;

            cmd.Parameters.Add(p3);

            SqlParameter p4= new SqlParameter();

            p4.ParameterName = "@sllx";

            p4.SqlDbType = SqlDbType.VarChar;

            p4.Value = txtsllx.Text;

             cmd.Parameters.Add(p4);

            SqlParameter p5 = new SqlParameter();

            p5.ParameterName = "@slsj";

            p5.SqlDbType = SqlDbType.DateTime;

            p5.Value = txtslsj.Text;

            cmd.Parameters.Add(p5);

            cmd.ExecuteNonQuery();

            Bangding();

            MessageBox.Show("开户成功");

            Display();

        }

        private void button7_Click(object sender, EventArgs e)

        {

            conn = new SqlConnection();

            conn.ConnectionString = "data source=.;initial catalog=电话计费系统;integrated security=true;";

            da = new SqlDataAdapter("select *from 客户受理表", conn);

            conn.Open();

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "delete 客户受理表 where (帐户编号=@zhbh)";

            SqlParameter p1 = new SqlParameter();

            p1.ParameterName = "@zhbh";

            p1.SqlDbType = SqlDbType.Char;

            p1.Value = txtzhbh.Text;

            cmd.Parameters.Add(p1);

            cmd.ExecuteNonQuery();

            MessageBox.Show("数据删除成功!");

            Bangding();

            conn.Close();

        }

//交话费

using System.Data.SqlClient;

using System.Runtime.InteropServices;

public partial class 交话费 : Form

    {   //定义win32API函数

        [DllImport("Shell32.dll")]

        public extern static int ShellExecute(int hwnd, string operation, string Filename, string parameter, string directory, int showcmd);

        SqlConnection conn;

        SqlDataAdapter da

        public 交话费()

        {

            InitializeComponent();

        }

        private void Display()

        {

            SqlConnection conn = new SqlConnection();

            conn.ConnectionString = "data source=(local);initial catalog=电话计费系统;  integrated security=true;";

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "select * from 收款额表 where(手机号码=@id);";

            SqlParameter p1 = new SqlParameter();

            p1.ParameterName = "@id";

            p1.SqlDbType = SqlDbType.Char;

            p1.Value = txtsjhm.Text;

            cmd.Parameters.Add(p1);

            conn.Open();

            SqlDataAdapter da = new SqlDataAdapter();

            DataSet ds = new DataSet();

            da.SelectCommand = cmd;

            da.Fill(ds, "收款额表");

            dataGrid1.DataSource = ds.Tables["收款额表"];

            conn.Close();

        }

//添加客户话费

        private void button5_Click(object sender, EventArgs e)

        {

            conn = new SqlConnection();

            conn.ConnectionString = "data source=.;initial catalog=电话计费系统;integrated security=true;";

            da = new SqlDataAdapter("select *from 收款额表", conn);

            conn.Open();

            SqlCommand cmd = new SqlCommand();

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "Insert into 收款额表 values(@zhbh,@sjhm,@xm,@ysfy,@ssfy,@zhye)";

            SqlParameter p1 = new SqlParameter();

            p1.ParameterName = "@zhbh";

            p1.SqlDbType = SqlDbType.Char;

            p1.Value = txtzhbh.Text;

            cmd.Parameters.Add(p1);

            SqlParameter p2 = new SqlParameter();

            p2.ParameterName = "@sjhm";

            p2.SqlDbType = SqlDbType.Char;

            p2.Value = txtsjhm.Text;

            cmd.Parameters.Add(p2);

            SqlParameter p3 = new SqlParameter();

            p3.ParameterName = "@xm";

            p3.SqlDbType = SqlDbType.VarChar;

            p3.Value = txtxm.Text;

            cmd.Parameters.Add(p3);

            SqlParameter p4 = new SqlParameter();

            p4.ParameterName = "@ysfy";

            p4.SqlDbType = SqlDbType.Money;

            p4.Value = txtysfy.Text;

            cmd.Parameters.Add(p4);

            SqlParameter p5 = new SqlParameter();

            p5.ParameterName = "@ssfy";

            p5.SqlDbType = SqlDbType.Money;

            p5.Value = txtssfy.Text;

            cmd.Parameters.Add(p5);

            SqlParameter p6 = new SqlParameter();

            p6.ParameterName = "@zhye";

            p6.SqlDbType = SqlDbType.Money;

            p6.Value = txtksye.Text;

            cmd.Parameters.Add(p6);

            cmd.ExecuteNonQuery();

            MessageBox.Show("交费成功");

            txtzhbh.Clear();

            txtxm.Clear();

            txtysfy.Clear();

            txtzhbh.Clear();

            txtssfy.Clear();

            Display();

        }

        private void button7_Click(object sender, EventArgs e)

        {

            txtsjhm.Clear();

            txtzhbh.Clear();

            txtxm.Clear();

            txtysfy.Clear();

            txtzhbh.Clear();

            txtssfy.Clear();

        }

        private void button2_Click(object sender, EventArgs e)

        {

            IntPtr p = this.Handle;

            int hwnd = p.ToInt32()

            ShellExecute(hwnd, "open", "calc.exe", "", "", 3);  }

4.5 打印报表

4.5 打印报表

private void button1_Click(object sender, EventArgs e)

        { SqlConnection conn = new SqlConnection();

            String MyString = "data source=(local);integrated security=true;initial catalog=电话计费系统;";  conn.ConnectionString = MyString;

           string strsql = "SELECT * From 收款额表 WHERE  手机号码 like  @a ";

            conn.Open();SqlCommand sqlCommand1 = new SqlCommand();

            sqlCommand1.Connection = conn;sqlCommand1.CommandType = CommandType.Text;

            sqlCommand1.CommandText = strsql;

            sqlCommand1.Parameters.Add(new SqlParameter("@a", SqlDbType.Char, 15));

            sqlCommand1.Parameters[0].Value = textBox1.Text + "%";

            SqlDataAdapter da = new SqlDataAdapter(strsql, conn);

            da.SelectCommand = sqlCommand1;

            DataSet1 ds = new DataSet1();

            da.Fill(ds, "收款额表");

            c2.SetDataSource(ds);

            crystalReportViewer1.ReportSource = c2;

        }

4.6 客户留言簿

图4.6 客户留言簿

 

// 应用GDI+技术实现客户留言簿的字体大小,颜色和字体的设置

using System.Drawing.Text;

using System.Drawing.Printing;

using System.IO;

        private static readonly string noFilename = "Untitled";

        private string curFilename = null;

        private bool dirty = false;

        private bool fileOnDiskModified = false;

        private PageSettings storedPageSettings = null;

        private IContainer components;

        private Color textColor;

        private int textSize;

        private void button2_Click(object sender, EventArgs e)

        {

            textSize = (int)numericUpDown1.Value;

            string selFont = comboBox1.SelectedText;

            Font textFont = new Font(selFont, textSize);

            richTextBox1.ForeColor = textColor;

            richTextBox1.Font = textFont;

        }

        private void ReadTextFile()

        {

            richTextBox1.TextChanged -= new System.EventHandler(this.richTextBox1_TextChanged);

            fileSystemWatcher1.EnableRaisingEvents = false;

            try

            {

                Stream fs = new FileStream(curFilename, FileMode.Open);

                FileInfo filInfo = new FileInfo(curFilename);

                string extn = filInfo.Extension.ToUpper();

                if (extn.Equals(".RTF"))

                    richTextBox1.LoadFile(fs, RichTextBoxStreamType.RichText);

                else

                    richTextBox1.LoadFile(fs, RichTextBoxStreamType.PlainText);

                fs.Close();

                fileSystemWatcher1.Path = filInfo.DirectoryName;

                fileSystemWatcher1.Filter = filInfo.Name;

            }

            catch (Exception exp)

            {

                MessageBox.Show(exp.Message.ToString());

            }

            finally

            {

                richTextBox1.TextChanged += new System.EventHandler(this.richTextBox1_TextChanged);

                fileSystemWatcher1.EnableRaisingEvents = true;

            }

        }

        private void OpenFile_Click(object sender, System.EventArgs e)

        {

            OpenFileDialog openDlg = new OpenFileDialog();

            if (openDlg.ShowDialog() == DialogResult.OK)

            {

                curFilename = openDlg.FileName;

                ReadTextFile();

            }

        }

        private void button1_Click(object sender, EventArgs e)

        {

            ColorDialog colorDlg = new ColorDialog();

            if (colorDlg.ShowDialog() == DialogResult.OK)

            {

                textColor = colorDlg.Color;

            }

        }

        private void Form1_Load(object sender, EventArgs e)

        {

            numericUpDown1.Value = 10;

            InstalledFontCollection

                sysFontCollection = new InstalledFontCollection();

            FontFamily[] fontFamilies = sysFontCollection.Families;

            for (int i = 0; i < fontFamilies.Length; ++i)

            {

                comboBox1.Items.Add(fontFamilies[i].Name);

            }

            comboBox1.Select(0, 20); }

4.7 Web引用

图4.7 web 引用窗口

 

using ClassLibrary1;

using System.Data;

//在基础数据层创建连接

public  SqlConnection GetConnection()

        {

            SqlConnection conn = new SqlConnection();

            conn.ConnectionString = "data source=(local);initial catalog=电话计费系统;  integrated security=true;";

            conn.Open();

            return conn;

        }

   public DataSet GetData()

        {

            using (SqlConnection conn=this.GetConnection())

            {

                SqlDataAdapter da = new SqlDataAdapter("select *from  话费信息库表", conn);

                DataSet ds = new DataSet();

                da.Fill(ds, "话费信息库表");

                return ds;

            }

//web的引用,调用可合话费库信息

  [WebMethod(Description = "获得客户话费信息库表", CacheDuration = 1200)]

    public DataSet GetData()

    {

        KHDataAccess sda = new KHDataAccess();

        return sda.GetData();

    }

 

 

 

 

 

 

 

 

 

 

 

 

5章 调试分析

 

Microsoft Visual Studio .NET2005编译出的程序在Windows操作系统中必须辅助以.NET Framework 2.0 才能正常运行。安装Microsoft Visual Studio .NET2005时会自动将 .NET Framework 2.0安装到系统。

安装好Framework2.0后,利用ADO.NET编写的数据库应用程序不需要其他组建即可运行,因此直接将编译好的程序拷贝到要发布的计算机默认路径下即可运行。

在调试程序代码的过程中,经常会遇到,应用程序连接不上数据源,数据访问不可用,数据帮定不达到预期的效果,DataSource绑定目标不明确的问题,导致在DataGrid控件中不能很有效的将要访问的数据文件显示出来。经过查阅资料,同学老师的指点,从错误中分析问题的所在,积极查阅资料最终的以顺利的解决。

本次客设中要求用到水晶报表来实现数据的导出在以前都没有直接的接触到水井报表,在本次客设中通过自学和老师的指导,最后终于顺利的完成。Web服务在软件编程中值得注意的是类的继承,和对字段进行封装。特别注意,子类的限定修饰符一定要设为公有public形式,以方便在后续代码中对其调用。

 

 

 

 

 

 

 

 

 

 

6章 设计总结

 

通过三周时间的基于windows的应用程序设计。从中学习到了许许多多的知识和技术。最为重要的是学习在实际的应用中得到料实践,使我深深感觉到,任何理论在没有实践之前都是苍白无力的。其主要知识点如下:

u      电话计费系统的需求分析。

u      关于信息的查询、管理。

u      熟练掌握ADO数据库访问技术。

u      利用UML建模语言结合数据库,对数据功能建模。

u      SQL Server 2000数据库的设计方法和思想。

u      ADO.NET数据库访问技术的实际运用。

u      利用Microsoft Visual Studio .NET2005进行数据库编成的多种方法。

u      CrystalRrport水晶报表的制作。

u      Web服务的创建和引用。

u      应用系统发布的注意事项。

在这门课程设计中锻炼我独立思考问题,解决问题的能力。在遇到难点时要想

法去解决。同时锻炼的自学能力。课程设计中遇到很多不曾接触的知识。这就需要我们去独立学习。他,同时也培养我们团队合作能力。总之我认为知识一次成功的课程设计,达到了其预期的目的。

 

 

 

7 致谢

 

这是一次成功的课程设计,编写代码和撰写论文当中遇到了许许多多的问题。很多问题时我们不能独立解决的,在老师和同学的帮助下。我能顺利地完成此次课程设计。在此我向帮助过我的老师、同学表示衷心的感谢。 

感谢 梁  爽 老师在课程设计代码阶段给与我关键性的指导。

感谢 吴晓艳 老师在课程设计的代码和论文撰写阶段给予我的帮助。

感谢 王文彬、谭胜同学、陈超同学对我的帮助,向我提供可设期间的硬件支持及有用的代码实例和上机调试。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8章 参考文献

 

[1]  Microsoft 《基于C#Windows应用程序设计》     高等教育出版社   2004

[2]  Microsoft 《数据库程序设计—SQL server 2000数据库程序设计》

高等教育出版社    2004

[3]  Microsoft AOD.NET数据库访问技术》          高等教育出版社    2004

[4]      晟 《Visual C# .NET数据库开发》          清华大学出版社  2005

[5]  Microsoft 《面向.NETWeb应用程序设计》       高等教育出版社   2005

[6]  萨 师 煊 《数据库系统概论 第四版》            高等教育出版社  2004

[7]  刘 卫 宏 《SQL server 2000 实用教程》        第三版科学出版社 2003

[8]  李 勇 平 《.NET Windows 应用开发教程》       兵器工业出版社   2004

[9]  韩磊[]Beginning C# Objects中文版第一版   电子工业出版社      2006

 


(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容