2924.課程設(shè)計(jì)報(bào)告家庭理財(cái)系統(tǒng)報(bào)告和源碼
家庭理財(cái)系統(tǒng)課程設(shè)計(jì)報(bào)告源文件及打包安裝文件聯(lián)系本人姓 名: 學(xué) 號(hào): 班 級(jí): 級(jí) 班 專 業(yè): 計(jì)算機(jī)科技與技術(shù) 指導(dǎo)教師: 時(shí) 間: 10年1月1號(hào) 大學(xué) 計(jì)算機(jī)科學(xué)與信息學(xué)院目 錄1 課程設(shè)計(jì)目的 32 課程設(shè)計(jì)題目描述和要求 33 課程設(shè)計(jì)報(bào)告內(nèi)容 44 總結(jié)145 參考書目155 附錄 15一、課程設(shè)計(jì)目的通過課程設(shè)計(jì),使學(xué)生能夠掌握C+語(yǔ)言(VC+)的基本內(nèi)容及程序設(shè)計(jì)的基本方法與編程技巧,使學(xué)生具有應(yīng)用計(jì)算機(jī)解決實(shí)際問題的基本能力,培養(yǎng)學(xué)生掌握使用計(jì)算機(jī)處理問題的思維方法與途徑, 培養(yǎng)良好的程序設(shè)計(jì)風(fēng)格,使學(xué)生能夠獨(dú)立編制和調(diào)試各種結(jié)構(gòu)的面向?qū)ο蟮腃+語(yǔ)言程序。初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力;完成所選設(shè)計(jì)題目,上機(jī)調(diào)試通過該程序系統(tǒng)所有功能;編寫設(shè)計(jì)說明書,內(nèi)容包括:課程設(shè)計(jì)的目的、意義;設(shè)計(jì)任務(wù);總體設(shè)計(jì)方案;軟件設(shè)計(jì)(各功能模塊的流程圖及詳細(xì)的文字說明);軟件系統(tǒng)的使用說明;收獲、體會(huì)等;參考文獻(xiàn)。書寫要整潔、規(guī)范,裝訂成冊(cè)。二、課程設(shè)計(jì)題目描述和要求1、開發(fā)系統(tǒng)的功能介紹(1)增加收支窗體 主要為各家庭收入和消費(fèi)時(shí)增加的項(xiàng)目窗體,包括收支類別、收支屬性、金額,描述。點(diǎn)擊增加按鈕后,可在主頁(yè)面顯示剛增加的數(shù)據(jù)。(2)刪除收支按鈕 主要功能是刪除所選中的收支項(xiàng)目,然后得到所選項(xiàng)目的流水號(hào),進(jìn)行刪除,如增加了多余的收入,就可以方便的刪除,能及時(shí)的準(zhǔn)確的刪除不必要的收支項(xiàng)目(3)修改收支窗體 選要進(jìn)行修改的信息,修改按鈕,將會(huì)彈出修改頁(yè)面,修改所要改動(dòng)的數(shù)據(jù),點(diǎn)修改,能及時(shí)的修正數(shù)據(jù)。(4)收支查詢窗體 可按流水號(hào)、收支類別、金額、進(jìn)行查詢,點(diǎn)擊查詢按鈕后能快速的查詢出所要查詢的收支數(shù)據(jù)。(5)系統(tǒng)注冊(cè)窗體 用自己喜歡的用戶名和密碼進(jìn)行注冊(cè),方能使用本系統(tǒng),如不進(jìn)行注冊(cè),不能進(jìn)入系統(tǒng),失去所有的系統(tǒng)操作。2、解決的問題本課程設(shè)計(jì)的題目為“家庭理財(cái)系統(tǒng)”,應(yīng)用.net開發(fā)平臺(tái)實(shí)現(xiàn),開發(fā)語(yǔ)言為C#,在開發(fā)的過程中開已出了安裝包(可看附件),安裝及可使用本系統(tǒng),它能解決家庭的時(shí)時(shí)理財(cái),方便清查詢現(xiàn)有財(cái)務(wù)和所用財(cái)務(wù)。一切直觀明了。 三、課程設(shè)計(jì)報(bào)告內(nèi)容(一) 需求分析長(zhǎng)期以來人們使用傳統(tǒng)的大腦記憶方式來管理家里的日常消費(fèi),其很麻煩,靠大腦的記憶,只能記住很短的時(shí)間,所以常常為錢不知去向而煩,而有時(shí)常常會(huì)想不起一些消費(fèi)記錄,家里的理財(cái)很是混亂等問題,綜上所看,靠人腦記憶理財(cái)存在很大的不足。為此,家庭理財(cái)系統(tǒng)為家庭解決了上述問題,提供了快速,直觀明了的理財(cái)過程,方便使用。(二)系統(tǒng)設(shè)計(jì)根據(jù)家庭的消費(fèi)和收入記錄要求,和記錄數(shù)據(jù)的一些習(xí)慣,該系統(tǒng)實(shí)施后,應(yīng)能達(dá)到以下目標(biāo):界面設(shè)計(jì)友好,美觀,數(shù)據(jù)存儲(chǔ)安全,可靠?;镜脑O(shè)置保證收入和支出分類管理。強(qiáng)大的查詢功能,保證數(shù)據(jù)查詢的靈活性。對(duì)增加,刪除,修改,查詢的信息進(jìn)行精密設(shè)計(jì),保證能及時(shí)處理信息。采用人機(jī)對(duì)話方式,方便日常操作。系統(tǒng)最大限度地實(shí)現(xiàn)了易維護(hù)性和易操作性。(三)操作流程 用戶>注冊(cè)>登錄>操作界面>增加收支->增加收支界面->增加 查詢收支-> 查詢收支界面->查詢 刪除記錄->刪除當(dāng)前所選定的數(shù)據(jù)項(xiàng)->操作修改記錄修改收支界面->修改 操作界面通訊錄編輯系統(tǒng)增加收支登陸修改記錄刪除記錄查詢收支注冊(cè)查詢收支界面查詢收支界面修改記錄界面增加收支界面(四)系統(tǒng)功能結(jié)構(gòu)根據(jù)家庭理財(cái)系統(tǒng)的特點(diǎn),可將其分為:系統(tǒng)登錄、系統(tǒng)注冊(cè)用戶,主界面、查詢界面、修改界面、增加界面。其各部分的具體功能模塊如圖: 家庭理財(cái)系統(tǒng)用戶登錄 用戶注冊(cè) 主界面 查詢界面 修改界面 增加界面 (五)系統(tǒng)預(yù)覽為了初步了解家庭理財(cái)系統(tǒng),下面分別給出系統(tǒng)中的兩個(gè)界面。登錄頁(yè)面:主窗體頁(yè)面:(六)構(gòu)建開發(fā)環(huán)境系統(tǒng)開發(fā)環(huán)境:系統(tǒng)開發(fā)環(huán)境:Microsoft Visual Studio 2005集成開發(fā)環(huán)境。系統(tǒng)開發(fā)語(yǔ)言:C#。系統(tǒng)數(shù)據(jù)庫(kù):Access.開發(fā)運(yùn)行環(huán)境:Windows XP系統(tǒng)服務(wù)運(yùn)行環(huán)境:M Framework 2.0. 最佳效果:1024*768。(七)數(shù)據(jù)庫(kù)設(shè)計(jì)本系統(tǒng)采用Access數(shù)據(jù)庫(kù),名稱為Familydb,其包含3張表,其E-R圖如下:收支記錄流水號(hào)類別收支項(xiàng)目日期備注金額. Familyuser表: Consume表:Remuser表:(八)文件夾組織結(jié)構(gòu)為了方便對(duì)本系統(tǒng)的了解,現(xiàn)將文件系統(tǒng)展示如下: (九)公共類設(shè)計(jì)在開發(fā)過程中,經(jīng)常會(huì)用到一些公共的模塊,如數(shù)據(jù)庫(kù)的連接及操作的類,字串的處理的類等,因此,在開發(fā)系統(tǒng)前,首先要設(shè)計(jì) 這些公共模塊,下面將介紹家庭理財(cái)系統(tǒng)中所需要的數(shù)據(jù)庫(kù)操作類,農(nóng)數(shù)據(jù)庫(kù)操作類用來完成數(shù)據(jù)庫(kù)的連接操作,以及數(shù)據(jù)庫(kù)的查詢,添加,刪除修改操作,現(xiàn)將這幾種操作編寫到一個(gè)公共類里,可以減少代碼的編寫工作,有利于代碼的維護(hù)。(1)首先在命空間using system data.sqlclient下創(chuàng)建Conn() 方法此方法用來連接數(shù)據(jù)庫(kù),返加類型為sqlconnection 代碼如下:public static OleDbConnection Conn() string constring ="Provider=Microsoft.Jet.OleDb.4.0;"constring += "Data Source=App_DateFamilydb.mdb"OleDbConnection con = new OleDbConnection(constring); return con; (2)UserAction.cs類為數(shù)據(jù)庫(kù)的操作: public static bool DeleteData(string Table, string KeyName, int Id) string sql = "delete from " + Table + " where " + KeyName + "=" + Id + "" if (ExcuteUpdateData(sql) != -1) return true; else return false; public static DataSet ExecuteSelectSql(string Select_str) OleDbConnection con = DBcon.Conn(); OleDbDataAdapter sda = new OleDbDataAdapter(Select_str, con); DataSet ds = new DataSet(); try sda.Fill(ds); catch (Exception ex) throw new Exception(ex.Message); finally con.Close(); sda.Dispose(); return ds; public static OleDbDataAdapter ExecuteSelectSql_AspNetPager(string Select_str) OleDbConnection con = DBcon.Conn(); OleDbDataAdapter sda = new OleDbDataAdapter(Select_str, con); con.Close(); return sda; public static int ExcuteUpdateData(string sql) int action = -1; OleDbConnection con = DBcon.Conn(); OleDbCommand cmd = new OleDbCommand(sql, con); try con.Open(); action = cmd.ExecuteNonQuery(); catch (Exception ex) throw new Exception(ex.Message); finally con.Close(); cmd.Dispose(); return action; public static bool Base_DeleteData(string Table, string KeyName, int Id) string sql = "delete from " + Table + " where " + KeyName + "=" + Id + "" if (ExcuteUpdateData(sql) != -1) return true; else return false; (十)各界面代碼及功能實(shí)現(xiàn)(1)登錄界面:功能:登陸 實(shí)現(xiàn)登錄在按鈕loginbtn下代碼: private void loginbtn_Click(object sender, EventArgs e) string usern = LoginUser.Text.Trim().ToString();string userp = UserPassword.Text.Trim().ToString();string sql = "select userName,userPassword from Familyuser where userName=" + usern + " and userPassword="+userp+""DataSet ds = new DataSet();ds = UserAction.ExecuteSelectSql(sql); if (ds.Tables0.Rows.Count > 0) MessageBox.Show("登錄成功,將進(jìn)入主界面"); MainForm mForm = new MainForm(); mForm.Show(); this.Hide(); (2)注冊(cè)界面: 功能:注冊(cè)。實(shí)現(xiàn)注冊(cè)功能:在按鈕(注冊(cè))下private void rigistbtn1_Click(object sender, EventArgs e) string sql = "insert into Familyuser(userName,userPassword) values(" + rigistname.Text.Trim().ToString() + "," + rigistpassword.Text.Trim().ToString() + ")" if (UserAction.ExcuteUpdateData(sql) != -1) string sql1 = "insert into remuser(userName,userPassword) values(" + rigistname.Text.Trim().ToString() + "," + rigistpassword.Text.Trim().ToString() + ")" if (UserAction.ExcuteUpdateData(sql1) != -1) MessageBox.Show("增加了新用戶"); lform.getusername(rigistname.Text.Trim(); this.Close(); (3)主界面:功能:數(shù)據(jù)的顯示,時(shí)間顯示,各窗口跳轉(zhuǎn)。顯示數(shù)據(jù)代碼:在窗體加載時(shí)private void MainForm_Load(object sender, EventArgs e) string sql = "select * from Consume" datexianshi.DataSource = UserAction.ExecuteSelectSql(sql);datexianshi.DataMember = UserAction.ExecuteSelectSql(sql).Tables0.TableName; 顯示當(dāng)前時(shí)間:在窗體加載時(shí)DateTime dt = DateTime.Now; string date = dt.ToLongDateString(); string time = dt.ToLongTimeString();lbtime.Text = date + time;(4) 增加收支界面 功能:增加收支 實(shí)現(xiàn)增加收支代碼: private void button1_Click(object sender, EventArgs e) int money1 = Convert.ToInt32(textBox1.Text); string sql = "insert into Consume(Type,Category,ConsumeMoney,Discription) values(" + comboBox1.Text + "," + comboBox2.Text + "," + money1 + "," + textBox2.Text + ")" if (UserAction.ExcuteUpdateData(sql) != -1) MessageBox.Show("添加成功"); MainForm ifrom = new MainForm(); ifrom.Show(); this.Close(); (5)查詢界面功能:按各類別查詢主要代碼:如按流水號(hào)(ID)查詢private void button1_Click(object sender, EventArgs e) if (selectbox.Text.Trim().ToString()!="") int idd=Convert.ToInt32(selectbox.Text); string sql = "select * from Consume where ID="+idd+"" dataGridView1.DataSource = UserAction.ExecuteSelectSql(sql); dataGridView1.DataMember = UserAction.ExecuteSelectSql(sql).Tables0.TableName; dataGridView1.Columns0.HeaderCell.Value = "流水號(hào)" dataGridView1.Columns1.HeaderCell.Value = "日期" dataGridView1.Columns2.HeaderCell.Value = "類別" dataGridView1.Columns3.HeaderCell.Value = "收支項(xiàng)目" dataGridView1.Columns4.HeaderCell.Value = "金額" dataGridView1.Columns5.HeaderCell.Value = "備注" else MessageBox.Show("流水號(hào)為空了"); (6)修改界面功能:實(shí)現(xiàn)數(shù)據(jù)的修改其它實(shí)現(xiàn)代碼為: private void bupdate_Click(object sender, EventArgs e) string date = year.Text + - + month.Text + - + day.Text; int idd = Convert.ToInt32(txtliushui.Text); int money1 = Convert.ToInt32(txtmoney.Text); string sql = "update Consume set ConsumeDate=" + date + ",Type=" + cobtype.Text + ",Category=" + comshou.Text + ",ConsumeMoney=" + money1 + " ,Discription=" + txtdiscription .Text.ToString()+ " where id=" + idd + "" if (UserAction.ExcuteUpdateData(sql) = 1) MessageBox.Show("修改成功"); string sql1 = "select * from Consume" datexianshi.DataSource = UserAction.ExecuteSelectSql(sql1); datexianshi.DataMember = UserAction.ExecuteSelectSql(sql1).Tables0.TableName; 四、總結(jié)這次的課程設(shè)計(jì)牽扯到了很多以前學(xué)到的一些東西,或許在某個(gè)方面是反映我這三年來的所學(xué)的成果。在開發(fā)這個(gè)系統(tǒng)的過程中,碰到很多的問題,有些是大的,而有些是很小的問題,只是自己沒有仔細(xì)的看清楚,沒有注意細(xì)節(jié)問題。不過在解決了問題后,卻是不一樣的心情,首先是讓我放松了,畢竟是難題解決了。第二是充實(shí)了很多,因?yàn)樵诮鉀Q了問題的同時(shí),我又學(xué)到了一點(diǎn)。 在編制過程中,我首先考慮到了界面的友好性,并在界面設(shè)計(jì)時(shí)不采用煩瑣的細(xì)節(jié),使界面簡(jiǎn)單、清晰,便于操作。本次編制中的不足之處是因?yàn)槭鞘状螄L試這個(gè)管理系統(tǒng),可能在實(shí)際應(yīng)用中有些功能不到位,我將不斷提高自己,爭(zhēng)取今后在編制程序時(shí),能編寫出有個(gè)性且應(yīng)用性較強(qiáng)的管理系統(tǒng)。通過這次課程設(shè)計(jì),對(duì)應(yīng)用.net C# winform開發(fā)設(shè)計(jì),我付出了大量的時(shí)間,但是,我得到的收獲遠(yuǎn)遠(yuǎn)不是這些時(shí)間可以衡量的,它將是我終生的財(cái)富,必將給我今后的學(xué)習(xí)和工作帶來更多的收益。通過對(duì)此課題的開發(fā),使我對(duì)用.net C# winform開發(fā)系統(tǒng)有了一個(gè)比較清楚的認(rèn)識(shí),體會(huì)到理論和實(shí)踐的重要性。由于自己的分析設(shè)計(jì)和程序經(jīng)驗(yàn)不足,該系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)過程中,還有許多沒有完善的地方,比如用戶界面設(shè)計(jì)不夠美觀,異常出錯(cuò)處理比較差等多方面問題,這些都有待進(jìn)一步完善和提高。對(duì)于文中出現(xiàn)的不足和系統(tǒng)中出現(xiàn)的問題敬請(qǐng)老師指導(dǎo)。參考書目:C#大學(xué)教程C# .net窗體開發(fā)一百例C#高級(jí)編程第四版附 錄:一般數(shù)據(jù)庫(kù)文件默認(rèn)在App_Date文件夾下如果使用VS2005打開本站項(xiàng)目文件fimily.sln。建議打開前務(wù)必安裝VS2005點(diǎn)擊運(yùn)行即可(F5)。另外本軟件已做好安裝程序,運(yùn)行之前確定安裝了M Framework 2.0. 程序見附件