夢之翼團隊項目(學生信息管理系統)


一 項目整體概述

     本次老師讓我們做一個以數據庫為基礎的登陸頁面,這個項目我們團隊首先進行了相關的討論與交流,我們想的是,這次在編碼上難度不大,我們把側重點放到了軟件的架構的功能的實現上面,如果單一的做一個登陸頁面,這樣會比較死板,因此,我們把它放到了一個現實的系統當中,這樣可以更加生動形象的理解登陸界面和數據庫的綜合應用技術,所以,我們做出了學生信息管理系統!

二 設計思路

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技術的不熟悉

 三:糾結數據庫的插入問題

 四:軟件測試知識缺乏,不懂測試

 五:專業技術的差別

...........

不過,這些困難經過大家的團結協作,我們把其中的大部分都攻克了。現在我切身的體會到,軟件開發人員的艱辛,任何一款軟件成功發布的背后,必定都有無數個困難所構成,都有一個堅忍且強大的團隊所作出的不懈努力!

接下來,我們就對這個軟件團隊做一個小總結:

一:任何一個團隊里面都存在意見分歧,我們做的就是統一商議,拿出最好的解決方案,解決問題

二:團隊成員的知識能力不同,要把團隊結構最優化,每個人做適合自己的任務,並且相互協作,共同完成任務

三:成員之間一定要培養高度契合度,並且增強時間觀念和執行力,這樣,才能保證一個軟件保質保量保時完成。

四:這樣的團隊任務很有實際意義,可以增加同學之間的相互交流與團隊協作能力。

五:團隊的每個成員都得到了不同程度的鍛煉,各方面的能力都得到了提高 

........

這些就是我們這次做團隊項目的整個過程和一些自己內心的總結,希望老師閱讀后,批評指正,謝謝老師!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM