zoukankan      html  css  js  c++  java
  • 梦之翼团队项目(学生信息管理系统)

    一 项目整体概述

         本次老师让我们做一个以数据库为基础的登陆页面,这个项目我们团队首先进行了相关的讨论与交流,我们想的是,这次在编码上难度不大,我们把侧重点放到了软件的架构的功能的实现上面,如果单一的做一个登陆页面,这样会比较死板,因此,我们把它放到了一个现实的系统当中,这样可以更加生动形象的理解登陆界面和数据库的综合应用技术,所以,我们做出了学生信息管理系统!

    二 设计思路

    1 整体界面展示

    图片:登陆界面

    图片:注册页面

     图片:管理系统内容界面

    用户要想登陆到此系统,必须要先注册账号,(如果有账号的可以直接登陆),注册成功后数据库会有相关的数据,无论是用户在登录页面或者注册页面,单击取消可以立即停止当前操作,并且关闭当前窗口

     

    3 登陆时,会根据不同的情况,给用户做出相应的提示,例如用户名不存在,密码错误,登陆成功等

    4,登陆成功之后,进入系统界面,此界面可以按,学号,姓名,进行排序,还可以进行数据的更新,关闭,增加,修改,删除等数据库的操作

    三 数据库的制作与展示

    我们团队做了两个数据库分别为 repair 和 stuDB 数据库,一个主要是存储用户的注册登录信息,另外一个主要是存储学生的基本信息

    1.repair 数据库包含一个表 user_info

       userName 是用户名,passWord 是密码

    stuDB 数据库包含三个表分别是admin , stuinfo , stuMarks

    此处主要用到stuinfo表和stuMarks 表

    四 相关代码

    1 登陆界面代码(form2)

    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 综合项目_10._10
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
            
            private void button1_Click(object sender, EventArgs e)
            {
                 string strConn = "Data Source=.;Initial Catalog=repair;Integrated Security=True";    //连接数据库
                  SqlConnection Connection = new SqlConnection(strConn);
    
                 try
                 {
                    
                     string sqlStr = "select userName,passWord from user_info where userName=@user";    //查询
                     DataSet ds = new DataSet();
                     Connection.ConnectionString = Connection.ConnectionString;
                     Connection.Open();
                     SqlCommand cmd = new SqlCommand(sqlStr, Connection);
                     cmd.Parameters.Add(new SqlParameter("@user", SqlDbType.VarChar, 30));  //传参
                     cmd.Parameters["@user"].Value =user.Text;         //给user文本框赋值
                     SqlDataReader dater = cmd.ExecuteReader();
                     if (user.Text.Trim() == "")         //如果user的值等于空
                     {
                         UserMessage.Text = "用户名不允许为空!";
    
                     }
                     else if (pwd.Text.Trim()== "")          //同上
                     {
                         PwdMessage.Text = "密码不能为空!";
                     }
                       else  if (!dater.Read())              //如果输入的用户名没有被dater读到,则用户名不存在
                     {
                         UserMessage.Text = "用户名不存在!";
                         Message.Text = "";
                         PwdMessage.Text = "";
                         user.Text = "";
                     }
                      else if (dater["passWord"].ToString().Trim() == pwd.Text.Trim()) //输入密码等于数据库密码登录成功且弹出音乐框
                     {
                         Message.Text = "登录成功!";
                         UserMessage.Text = "";
                         PwdMessage.Text = "";
                         Form1 frm = new Form1();
                         frm.ShowDialog();
                     }
                     else
                     {
                         PwdMessage.Text = "密码错误!";      //否则密码错误
                         UserMessage.Text = "";
                         Message.Text = "";
                         pwd.Text = "";
    
                     }
                 }
                 catch (Exception )
                 {
                     throw;               //抛出异常
                 }
                 finally
                 {
                     Connection.Close();        //关闭数据库
                 }
            
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
    
            private void label3_Click(object sender, EventArgs e)
            {
                Form3 frm = new Form3();
                frm.ShowDialog();  
            }
        }
    }
    

     2 注册界面代码(form3)

    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 综合项目_10._10
    {
        public partial class Form3 : Form
        {
            public Form3()
            {
                InitializeComponent();
            }
           
            private void button1_Click(object sender, EventArgs e)
            {
                string strConn = "Data Source=.;Initial Catalog=repair;Integrated Security=True";
                SqlConnection conn = new SqlConnection(strConn);
                string sql = "select userName,passWord from user_info";
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql,conn);
                cmd.CommandText = "insert into " + "user_info(userName,passWord)" + " values(@userName,@passWord)";
                cmd.Parameters.Add("@userName", SqlDbType.VarChar).Value = textBox1.Text.Trim();
                cmd.Parameters.Add("@passWord", SqlDbType.VarChar).Value = textBox2.Text.Trim();
                cmd.ExecuteNonQuery();
                conn.Close();
                MessageBox.Show("注册成功");
                this.Close();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                this.Close();
            }
    
          }
        }

    3 主界面系统信息的代码(form1)

     (封装方法的类)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    using System.Data;
    using System.Windows.Forms;
    
    namespace 综合项目_10._10
    {
        class DBCon
        {
            public string strCon = @"Data Source=.; Initial Catalog=studb; Integrated Security=True;";
            public SqlConnection sqlCon = new SqlConnection();
            public SqlDataAdapter sda = new SqlDataAdapter();
            public DataSet ds = new DataSet();
            public DataTable dt = new DataTable();
            public SqlDataReader sdr;
            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, "stuinfo");
                dt = ds.Tables["stuinfo"];
            }
            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();
                }
                catch (Exception e)
                {
                    MessageBox.Show("数据插入失败"+e.ToString());
                }
                sqlCon.Close();
            }
            public void dbGridViewUpd()  //数据集的更新与数据库关联的方法
            {
                SqlCommandBuilder scb = new SqlCommandBuilder(sda);
                DialogResult result;
                result = MessageBox.Show("确保保存修改过的数据吗?","操作提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                    dt = ds.Tables["stuinfo"];
                    sda.Update(dt);
                    dt.AcceptChanges();
    
                }
            }
            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();
            }
            public void dbDelete(string delStr)
            {
                sqlCon.Open();
                SqlCommand sqlcmd = new SqlCommand(delStr, sqlCon);
                try
                {
                    sqlcmd.ExecuteNonQuery();
                    MessageBox.Show("数据库删除成功");
                }
                catch (Exception e)
                {
                    MessageBox.Show("数据库删除失败" + e.ToString());
                }
                sqlCon.Close();
            }
        }
    }

     (form1 主页面代码)

    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;
    
    namespace 综合项目_10._10
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            string selstr = @"select stuno,stuname,stusex,stuage,stuseat,stuAddress from stuinfo";
            DBCon db = new DBCon();
            private void Form1_Load(object sender, EventArgs e)
            {
                
                db.dbcon();
                db.dbFill(selstr);
                comboBox1.ValueMember = "stuno";
                comboBox1.DataSource = db.dt;
            }
            private void paixu_Click(object sender, EventArgs e)
            {
                string ser = selstr;
                dataGridView1.Refresh();
                if (radioButton1.Checked)
                {
                    ser = selstr + " order by stuno";
                }
                else
                {
                    ser = selstr + " order by stuname";
    
                }
                db.dbcon();
                db.dbFill(ser);
                dataGridView1.DataSource = db.dt;
            }
            
    
            private void chaxun_Click(object sender, EventArgs e)
            {
                db.dbcon();
                db.dbFill(selstr);
                dataGridView1.DataSource = db.dt;
            }
            private void zengjia_Click(object sender, EventArgs e)
            {
                db.dbcon();
                string insr = "insert into stuinfo(stuno ,stuname,stusex,stuAddress,stuage) values('" + comboBox1.Text + "','" + stname.Text + "','" + stasex.Text + "','" + staddress.Text + "'," + stage.Text + ")";
                db.dbInsert(insr);
                db.dbFill(selstr);
                dataGridView1.DataSource = db.dt;
    
                
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
              
            }
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                string selInfo = "select stuno,stuname,stusex,stuage,stuseat,stuAddress from stuinfo where stuno='" + comboBox1.
                    Text.ToString().Trim() + "'";
                db.dbcon();
                db.dbselect(selInfo);
                if (db.sdr.Read())
                {
                    stname.Text = db.sdr["stuname"].ToString();
                    stasex.Text = db.sdr["stusex"].ToString();
                    stage.Text = db.sdr["stuage"].ToString();
                    staddress.Text = db.sdr["stuAddress"].ToString();
                }
            }
    
            private void xiugai_Click(object sender, EventArgs e)
            {
                db.dbcon();
                string up = "update stuinfo set stuname='" +stname.Text.Trim()+ "',stusex='"+ stasex.Text.Trim()+ "',stuAddress='" +staddress.Text.Trim()+ "' where stuno='" + comboBox1.Text.Trim() + "'";
                db.dbUpdate(up);
                db.dbFill(selstr);
                dataGridView1.DataSource = db.dt;
            }
    
            private void shanchu_Click(object sender, EventArgs e)
            {
                DialogResult result = MessageBox.Show("确定要删除吗", "操作提示", MessageBoxButtons.OKCancel);
                if (result != DialogResult.OK)
                {
                    return;
                }
                db.dbcon();
                string des = "delete from stumarks where stuno='" + comboBox1.Text.Trim() + "'";
                db.dbDelete(des);
                string strup = "delete from stuinfo where stuno='" + comboBox1.Text.Trim() + "'";
                db.dbDelete(strup);
                db.dbFill(selstr);
                dataGridView1.DataSource = db.dt;
                comboBox1_SelectedIndexChanged(sender, e);
            }
    
            private void gengxin_Click(object sender, EventArgs e)
            {
                db.dbcon();
                db.dbGridViewUpd();
            }
    
            private void guanbi_Click(object sender, EventArgs e)
            {
                Application.Exit();
            }
    
           
           
        }
    }

    四 软件测试 

    五  psp消耗时间表

    六 团队成员任务分配

    七 总结 

    这是我们第二次进行团队项目,整个过程感觉挺顺利的!经过每位成员的不懈努力,我们终于把这个项目拿下来咯,做出来了一个还算不错的登录页面。

    每一次成功的背后都有无数的争吵与瓶颈,我们团队在开发过程中也遇到了许多问题,例如:

     一:项目整体的运行效果与成员意见的相互取舍

     二:ADO.NET技术的不熟悉

     三:纠结数据库的插入问题

     四:软件测试知识缺乏,不懂测试

     五:专业技术的差别

    ...........

    不过,这些困难经过大家的团结协作,我们把其中的大部分都攻克了。现在我切身的体会到,软件开发人员的艰辛,任何一款软件成功发布的背后,必定都有无数个困难所构成,都有一个坚忍且强大的团队所作出的不懈努力!

    接下来,我们就对这个软件团队做一个小总结:

    一:任何一个团队里面都存在意见分歧,我们做的就是统一商议,拿出最好的解决方案,解决问题

    二:团队成员的知识能力不同,要把团队结构最优化,每个人做适合自己的任务,并且相互协作,共同完成任务

    三:成员之间一定要培养高度契合度,并且增强时间观念和执行力,这样,才能保证一个软件保质保量保时完成。

    四:这样的团队任务很有实际意义,可以增加同学之间的相互交流与团队协作能力。

    五:团队的每个成员都得到了不同程度的锻炼,各方面的能力都得到了提高 

    ........

    这些就是我们这次做团队项目的整个过程和一些自己内心的总结,希望老师阅读后,批评指正,谢谢老师!

  • 相关阅读:
    js 获取当前时间
    html5拨打电话及发短信
    ::before和::after伪元素的使用
    vue单页面应用刷新网页后vuex的state数据丢失问题以及beforeunload的兼容性
    CSS3径向渐变实现优惠券波浪造型
    iOS 幻灯片的自动循环滚动
    iOS 编译正常,但无法运行到真机和模拟器上,Choose a destination with a supported architecture in order to run on this device.
    iOS webView抓取改变js的alertView
    iOS 创建单例的方法
    webView图片点击可以实现预览效果
  • 原文地址:https://www.cnblogs.com/good123/p/5017880.html
Copyright © 2011-2022 走看看