用户注册,报修

一、需求分析

(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;而不是我们手动来更改报修次数。不知道老师这次增量的要求是不是表达这个意思。

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

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

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

     

时间: 2024-10-29 19:09:39

用户注册,报修的相关文章

智能园区报修系统——易修 需求说明书 软件概要设计 详细设计说明书

  智能园区报修系统  ——易修                                                                                      队长:马腾俊075                                                                                                       队员:隋锦涛072.于俊杰070.杜世伟071            

二维码报修技术实现

1.痛点发现二维码给我们的生活,工作带来了便利,涉及多个领域,如扫码付款,扫码点餐,扫码乘车,扫码发快递等等,今天我们来说说二维码扫码报修,以前看到部门网管整天手忙脚乱,周报缺无以体现,只看到每天有不同的人通过电话,微信,QQ,邮件等多种方式进行故障报修.曾经也想着解决他们的问题,在网上找了不少系统,发现大多数需要员工注册,绑定,登录很是麻烦,我们都知道很少有人能耐心去完成这些过程,电脑上不了网或故障,根本没有办法进行故障报修.记得是在2017年某一天我突发奇想,能不能让报修采用扫码报修,不需要

浅谈行业使用扫码故障报修案例

一.企事业单位使用案例 近日,多家地区交通管理部门开始试用青鸟报修云平台,有望在明年上半年完成交通管理设施设备二维码安装,当安装在户外的设施.设备发生损坏.故障等各地市民或路人可通过设备上安装的二维码完成扫码反馈. 二.酒店使用案例 酒店故障报修众多,主要集中在客房.吧台.后勤等部门,但从酒店组织架构来看,酒店维修人员由不同部门负责,维修数据庞大,比如酒店工程部门负责水.电等维修检修.行政部门负责一部分维修.技术或信息部门负责网络及计算机.电话等信息化维修.不论哪一部门维修任务繁重,比如客房发生

用户注册的邮箱激活模块的设计与实现

----------------------------------------------------------------------------------------------[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52144698作者:朱培      ID:sdksdk0      邮箱: [email protected] --------------------------

Yii2系列教程四:实现用户注册,验证,登录

上一篇写了一点点Yii2的数据库相关知识和强大的Gii,这一篇就如上一篇的最后所说的一样:在Yii2中实现用户的注册和登录. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步一步按照这个教程来做.本期的用户注册和登录,我会使用一个很棒的composer package :dektrium/yii2-user,下面就开始我们的故事吧. 用户的注册和登录 在现在的Web应用中,几乎每一个应用都会需要用户注册,不管是使用的第三方还是自建的注册登录系统,我们都需要通过某些表单来

JavaScript用户注册信息验证

用户注册信息验证是否正确 一.Javascript方式 二.正则表达式验证 应用正则表达式验证:用户名4-16位,字母开头:用户名4-16位,首字母大写:两次密码是否相同:电话号码11位,并以1开头:出生日期 在register.jsp脚本部分代码如下 <script language="JavaScript" type="text/javascript"> function check() { var name=document.getElementB

python学习之最简单的用户注册及登录验证小程序

文章都是从我的个人博客上粘贴过来的哦,更多内容请点击 http://www.iwangzheng.com 正如很多同学所知道的,楼主开始学习python了,前进的道路曲曲折折,有荆棘也有陷阱,从最简单的小程序写起,每天练习,将python进行到底. 有一点比较别扭的就是python的换行之后空四个空格,ruby都是两个,并且python在方法和循环语句的第一句都要加冒号 mysql> show create table user; mysql> alter table user add sal

用户注册邮箱验证逻辑

1.数据库增加两个字段:一个存验证码,一个存验证状态 2.用户注册后给邮箱发邮件,地址上带上验证码参数 3.用户点击地址,通过地址获取到验证码,拿这个验证码到数据库查找是否存在 4.如不存在验证失败,如果存在改了验证状态,并重置了验证码,跳转登录页 5.用户再点进来的话给一个友好的页面,说已经验证通过,提醒登陆

基于xml的用户注册登录案例

用户注册登录 要求:3层框架,使用验证码 1        功能分析 l  注册 l  登录 1.1 JSP页面 l  regist.jsp 注册表单:用户输入注册信息: 回显错误信息:当注册失败时,显示错误信息: l  login.jsp 登录表单:用户输入登录信息: 回显错误信息:当登录失败时,显示错误信息: l  index.jsp 用户已登录:显示当前用户名,以及"退出"链接: 用户未登录:显示"您还没有登录": 1.2 实体类 User: l  Strin