zoukankan      html  css  js  c++  java
  • 用户注册,报修

    一、需求分析

    (1)还没有注册的客户,可以进入注册界面进行注册。

    (2)新建一个报修表,名字为repair_info0,列有用户名、报修类型、报修地点、报修内容,报修日期和时间、用户报修次数。

    (3)在报修界面中,当用户点击“报修”按钮时,软件会把用户报修的信息写入数据库中,还可以更新报修次数,同时会清空相应的文本框。


    二、具体设计思路

    (1)首先建一个报修表,然后在窗体上摆些所需的控件。

    (2)我们需要做的有查询、插入、修改。当点击查询的时候,数据会从数据库里读取到相应的控件里,然后我们可以对报修次数进行更改;我们在相应的控件里填写信息,点击报修会把数据插入到数据库里,同时清空了相应的文本框。

    (3)我们感觉如果插入日期用填写的方法没有多大意义,还容易出错,于是我们用NumericUpDown控件来获取当日的日期。获取的日期用Label显示,然后插入数据库里,为了不影响界面美观,我们把NumericUpDown控件隐藏起来。

    (4)查询、插入、修改都要连接数据库,这样连接数据库的代码要重写多次,所以我们把查询、插入、修改的代码写在一个类里。

    三、代码实现

    封装代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using System.Windows.Forms;
    using System.Data;
    
    namespace zhuce
    {
        class Class1
        {
            public string strCon = "data source=.;initial catalog=H:\DATA\REPAIR.MDF;integrated security=true";
            public SqlConnection sqlCon = new SqlConnection();
            public SqlDataReader sdr;
            public DataTable dt = new DataTable();
            public SqlDataAdapter sda = new SqlDataAdapter();
            public DataSet ds = new DataSet();
            public void dbcon()
            {
                try
                {
                    sqlCon = new SqlConnection(strCon);
                }
                catch (Exception e)
                {
                    MessageBox.Show("数据库连接不成功:" + e.ToString());
                }
            }
            public void dbFill(string selstr)
            {
                dt.Clear();
                sda = new SqlDataAdapter(selstr, strCon);
                sda.Fill(ds, "repair_info0");
                dt = ds.Tables["repair_info0"];
            }
            public void dbSelect(string showInfo)
            {
                sqlCon.Open();
                SqlCommand sqlcmd = new SqlCommand(showInfo, sqlCon);
                sdr = sqlcmd.ExecuteReader();
    
            }
            public void dbInsert(string insertInfo)
            {
                sqlCon.Open();
                SqlCommand sqlcmd = new SqlCommand(insertInfo, sqlCon);
                try
                {
                  
                    sqlcmd.ExecuteNonQuery();
                    MessageBox.Show("报修成功!");
                }
                catch (Exception e)
                {
                    MessageBox.Show("报修失败" + e.ToString());
                }
                sqlCon.Close();
            }
            public void dbInsert1(string insertInfo)
            {
                sqlCon.Open();
                SqlCommand sqlcmd = new SqlCommand(insertInfo, sqlCon);
                try
                {
    
                    sqlcmd.ExecuteNonQuery();
                    MessageBox.Show("注册成功!");
                }
                catch (Exception e)
                {
                    MessageBox.Show("注册失败" + e.ToString());
                }
                sqlCon.Close();
            }
            public void dbUpdate(string updStr)
            {
                sqlCon.Open();
                SqlCommand sqlcmd = new SqlCommand(updStr, sqlCon);
                try
                {
    
                    sqlcmd.ExecuteNonQuery();
                    MessageBox.Show("更新成功!");
                }
                catch (Exception e)
                {
                    MessageBox.Show("更新失败" + e.ToString());
                }
                sqlCon.Close();
     
            }
          
               
        }
    
    }

    注册代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    
    namespace zhuce
    {
        public partial class Zhuce : Form
        {
            public Zhuce()
            {
                InitializeComponent();
            }
            Class1 cl = new Class1();
            private void zc_Click(object sender, EventArgs e)
            {
                cl.dbcon();
                string sql = "insert into user_info(userName,passWord) values('" + textBox1.Text +
                "','" + textBox2.Text + "')";
                cl.dbInsert1(sql); 
               
                baoxiu b = new baoxiu();
                b.Show();
            }
    
          
            }
        }

    报修代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    
    namespace zhuce
    {
        public partial class baoxiu : Form
        {
            public baoxiu()
            {
                InitializeComponent();
            }
            string selStr = "select * from repair_info0";
            Class1 cl = new Class1();
            private void bx_Click(object sender, EventArgs e)
            {
    
                year.Value = Convert.ToDecimal(DateTime.Now.Year);
                month.Value = Convert.ToDecimal(DateTime.Now.Month);
                day.Value = Convert.ToDecimal(DateTime.Now.Day);
                cl.dbcon();
                string insrtInfo = "insert into repair_info0(userName,bxplace,bxtype,bxcontent,bxdate,bxtime) values('" + comboBox2.Text + "','" + textBox1.Text +
                    "','" + comboBox1.Text + "','" + richTextBox1.Text + "','" + label1.Text + "','" + textBox3.Text + "')";
                cl.dbInsert(insrtInfo);
                textBox1.Text = "";
                comboBox2.Text = "";
                textBox3.Text = "";
                comboBox1.Text = "";
                richTextBox1.Text = "";
            }
    
    
            private void year_ValueChanged(object sender, EventArgs e)
            {
                label1.Text = year.Value + "-" + month.Value + "-" + day.Value;
            }
    
            private void month_ValueChanged(object sender, EventArgs e)
            {
                label1.Text = year.Value + "-" + month.Value + "-" + day.Value;
            }
    
            private void day_ValueChanged(object sender, EventArgs e)
            {
                label1.Text = year.Value + "-" + month.Value + "-" + day.Value;
            }
    
    
    
            private void chaxun_Click(object sender, EventArgs e)
            {
               
                cl.dbcon();
                cl.dbFill(selStr);
                comboBox2.ValueMember = "userName";
                comboBox2.DataSource = cl.dt.DefaultView;
               
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                cl.dbcon();
                string strUpd = "update repair_info0 set bxtime='" + textBox3.Text + "' where userName='" + comboBox2.Text + "' ";
                cl.dbUpdate(strUpd);
                textBox1.Text = "";
                comboBox2.Text = "";
                textBox3.Text = "";
                comboBox1.Text = "";
                richTextBox1.Text = "";
            }
    
            private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
            {
                string selStr = "select * from repair_info0 where userName='" + comboBox2.Text + "'";
                cl.dbcon();
                cl.dbSelect(selStr);
                if (cl.sdr.Read())
                {
                    comboBox2.Text = cl.sdr["userName"].ToString();
                    textBox1.Text = cl.sdr["bxplace"].ToString();
                    comboBox1.Text = cl.sdr["bxtype"].ToString();
                    richTextBox1.Text = cl.sdr["bxcontent"].ToString();
                    textBox3.Text = cl.sdr["bxtime"].ToString();
                    label1.Text = cl.sdr["bxdate"].ToString();
    
                }
            }
    
        }
    }

    四、测试

    五、PSP耗时分析

    PSP2.1 Personal Software Process Stages Time(h)
    Planning 计划 10
      • Estimate 估计这个任务需要多长时间 10
    Development 开发 7
      • Analysis 需求分析 1
      • Design Spec 生成设计文档 1
      • Coding Standard 代码规范 2
      • Design 具体设计 1
      • Coding 具体代码 1
      • Code Review 代码复审 0.5
      • Text 测试 0.5
    Reporting 报告 3
      • Test Report 测试报告 1
      • Size Measurement 计算工作量

    1

      • Postmortem 事后总结

    1

    六、团队分工

     这次团队作业是我们一个宿舍的七个人,有付媛媛、徐玉莹、王远离、卫文静、梁秋萍、胡田鸽、龚园苑。

        具体分工如下:

            团队负责人:付媛媛

          创建数据库:徐玉莹

          连接数据库:王远离

          外观设计人员:龚园苑

          写代码人员:徐玉莹、付媛媛

          测试人员:梁秋萍

          写文档人员:胡田鸽

           团队人员得分情况如下:

          付媛媛:3分

          徐玉莹:2分

          卫文静:1分

          王远离:1分

          梁秋萍:1分 

          胡田鸽:1分

          龚园苑:1分

    七、总结

         这次增量作业比上次难一点,涉及的范围比较广,但我们是打不死的小强,再难也要坚持。当然这种题对我们班的学霸来说是小菜一碟,对我们来说就是学习的过程。其实我们这次完成的还有缺陷。比如更新报修次数,并没有达到我们预想的结果。我们在相应的文本框里填写用户报修信息后,当点击报修的时候,就自动在数据库里bxtime(报修次数)列添加1次报修次数,当我们再读取到这一用户时,再点击报修,就自动更改了数据库里报修次数列为2;而不是我们手动来更改报修次数。不知道老师这次增量的要求是不是表达这个意思。

         我们想实现这种结果,但是代码写了又改,总是出错,于是就添加了一个更新按钮来手动更新报修次数。

         纸上得来终觉浅,绝知此事要躬行!当我们看到书上写的一些程序时,总觉得实现的功能太过于简单,而且那些都是别人的知识,纸上谈兵终究不行,但当我自己亲自写一些程序时,才发现即使想实现一个很小的功能也是不易的,但只要每一次都能实现小小的功能就算是有了很大的收获。

         想要实现一个完美的程序,需要很好的基础功底和思考能力,我们就特别缺少基础知识,希望老师每次布置的作业能让我们巩固基础知识,提高思考能力。

         

  • 相关阅读:
    redis 集群目标、集群查看、配置方法及过程、哨兵配置启动
    redis 事务、Jedis事务处理流程
    redis订阅与发布(把redis作为消息中间件)
    redis 管道技术 pipeline 简介
    redis 适用场景、缓存选择、java实现
    redis 数据淘汰策略与配置
    redis 持久化策略、aof配置、测试、手动持久化、aof文件体积优化
    redis 命令行查看修改配置文件项、配置文件说明
    redis HyperLogLog 基数估算
    redis 命令select、dbsize、清空数据库、info、client
  • 原文地址:https://www.cnblogs.com/twinkle-0908/p/5043664.html
Copyright © 2011-2022 走看看