客戶消費積分管理系統(tǒng)的設計與實現(xiàn)課程設計_第1頁
客戶消費積分管理系統(tǒng)的設計與實現(xiàn)課程設計_第2頁
客戶消費積分管理系統(tǒng)的設計與實現(xiàn)課程設計_第3頁
客戶消費積分管理系統(tǒng)的設計與實現(xiàn)課程設計_第4頁
客戶消費積分管理系統(tǒng)的設計與實現(xiàn)課程設計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、編號 課程設計報告20152016學年 第一學期客戶消費積分管理系統(tǒng)的設計與實現(xiàn)The Design and Implementation of a Client Integral Management System實 習 類 別課程設計學 生 姓 名 李志瑩專 業(yè) 軟件工程學 號 140521329指 導 教 師劉丹、 何巍學 院計算機科學技術學院二一五年十二月 起 止 周1718周數(shù)2實習地點南研1213/1208/1201實驗室課程設計目的:l 了解并掌握數(shù)據(jù)結構與算法的設計方法,具備初步的獨立分析和設計能力;l 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能;

2、l 提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;l 訓練學生用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),培養(yǎng)軟件工作者所應具備的科學的工作方法和作風。課程設計要求:1、獨立思考,獨立完成:課程設計中各任務的設計和調試要求獨立完成,遇到問題可以討論,但不可以拷貝。2、做好上機準備:每次上機前,要事先編制好準備調試的程序,認真想好調試步驟和有關環(huán)境的設置方法,準備好有關的文件。3、實踐設計以實際應用中的小型題目為主,要求學生獨立完成或合作完成。要求學生能根據(jù)不同的題目類型選擇一種或兩種開發(fā)模式,完成從系統(tǒng)定義,指定開發(fā)計劃,需求分析,設計,編碼/測試,直至運行/維護的軟件生存期的全過

3、程。完成課程設計題目客戶消費積分管理系統(tǒng)的設計與實現(xiàn)進度安排及主要內容:第1次課:布置任務;第2次課:問題分析及解決方案確定;第3次課:形成編程思路;第4次課:使用具體語言實現(xiàn)算法;第5次課:上機調試程序;第6次課:編寫課程設計報告;成績:指導教師(簽字)年 月 日一、概述1.1 設計主要完成的任務1.1.1 題目要求針對客戶的消費情況,進行客戶管理,根據(jù)客戶的消費積分對客戶實行不同程度的打折優(yōu)惠。采用一定的存儲結構進行客戶信息的存儲;對客戶的信息可以進行修改、刪除、添加;能夠根據(jù)消費情況進行客戶積分的累加;根據(jù)積分情況,對客戶實行不同程度的打折優(yōu)惠; 1.2 解決的主要問題1.2.1 采用何

4、種數(shù)據(jù)結構和編程語言實現(xiàn)客戶抽象由于客戶數(shù)目不定,所以采用鏈表結構實現(xiàn)客戶的增刪改查等基本操作,用C#窗體圖形用戶界面技術編寫程序。本程序要運用鏈表對客戶信息進行存儲,首先對結點進行定義,采用C#泛型思想和接口建立單鏈表類,并實現(xiàn)單鏈表的基本操作,代碼主要參考的是數(shù)據(jù)結構(C#語言版),但是在實際編寫過程中略有調整。1.2.2 界面設計(1) 主界面:功能按鈕導航;(2) 添加界面:添加新客戶的信息;(3) 刪除界面:按客戶ID刪除已有客戶。(4) 修改界面:按客戶ID修改已有客戶信息。(5) 查找界面:按客戶ID查找已有客戶。(6) 顯示界面:遍歷顯示表中所有的客戶的所有信息。(7) 消費界

5、面:按客戶ID對已有客戶進行消費操作。1.2.3 數(shù)據(jù)結構中單鏈表的C#實現(xiàn)對于單鏈表的操作,主要用到兩個類,一個是Node類,一個是List類。Node類主要是建立節(jié)點的類,這個類包含數(shù)據(jù)內容data和“指針”next用于指向下一個節(jié)點,實現(xiàn)單鏈表的連接。List類主要是進行對單鏈表的各種操作:v 初始化頭節(jié)點為空的鏈表。v 求單鏈表的長度。v 清空單鏈表。v 判斷鏈表是否為空。v 在單鏈表尾部追加數(shù)據(jù)元素。v 在單鏈表的第i個結點的位置前插入一個值為value的結點。v 刪除單鏈表的第i個結點,只是修改引用域,邏輯上的刪除,由垃圾回收器回收。v 獲得單鏈表中第i個數(shù)據(jù)元素。v 在單鏈表中查

6、找值為value的結點。所有的操作都是基于List中的私有變量head和通過方法得到的長度,利用他們實現(xiàn)節(jié)點的查找和定位。1.2.4 客戶的抽象客戶用類進行抽象建模,在客戶類Consumer中定義相關字段(信息)、屬性(字段的操作方式)、構造方法(客戶創(chuàng)建方式)和實例方法(操作函數(shù))。所要定義的屬性、字段和方法參見圖-1。 圖-1 客戶類的結構圖-1中類要調用消費方法時,消費方法又調用計算折扣方法。左邊一列沒有注釋的內容為類中各字段對應的屬性,用于對外寫入和讀入字段的值。右邊帶有注釋的內容為屬于類的字段,是對客戶信息的抽象。二、需求分析2.1 客戶(管理對象)需求2.1.1 客戶的基本信息注冊

7、登記時,每個客戶都有唯一的ID,在方便管理的基礎上,管理員可對客戶的基本個人信息,如ID,姓名,電話等等,進行增加、刪除、修改和查找,但是無法直接修改客戶的累計消費、享有優(yōu)惠、積分,這三個信息是執(zhí)行消費操作時由系統(tǒng)后臺自動更改的。2.1.2 積分設置當用戶每消費一次,都由管理員用系統(tǒng)執(zhí)行添加消費操作,操作成功就有一筆積分與以前的積分進行累加,記錄在系統(tǒng)中,并按照相關的積分政策,可享受打折優(yōu)惠等,或累計一定的積分,可為會員類型進行升級。2.1.3 消費設置在系統(tǒng)中,每次消費操作得到管理員輸入的有效消費金額,調用折扣計算函數(shù)訪問客戶的享有優(yōu)惠信息,計算出實際支付款,顯示次實付款以及此次消費享有的優(yōu)

8、惠,購買成功后顯示最新積分。2.2 數(shù)據(jù)需求應使用string對每個客戶的基本信息進行存儲。用戶消費、積分用double類型存儲。然后運用鏈表的存儲結構將用戶所有信息進行保存。繼而完成各種功能。2.3題目的功能v 采用一定的存儲結構進行客戶信息的存儲;v 對客戶的信息可以進行修改、刪除、添加;v 能夠根據(jù)消費情況進行客戶積分的累加;v 根據(jù)積分情況,對客戶實行不同程度的打折優(yōu)惠;2.4系統(tǒng)各項功能描述2.4.1根據(jù)不同的積分區(qū)間對客戶進行打折具體如下:積分滿500享受1元優(yōu)惠,積分滿1000享受2元優(yōu)惠,積分滿2000享受5元優(yōu)惠,積分滿5000享受9折優(yōu)惠,積分滿10000享受VIP的7折優(yōu)

9、惠。 2.4.1用例分析v  用例1 v 用例名:錄入客戶及商品信息 行為者:超市管理員 v 目的:完成對客戶及商品信息的錄入管理 v 過程描述: v 錄入客戶(商品)的詳細信息包括客戶的姓名、身份證號、及現(xiàn)有的積分(商品名、商品的序列號、商品的價格、商品的數(shù)量) 通過客戶文件in.txt(in2.txt)文件或者鍵盤輸入讀取客戶(商品)信息 對鍵盤輸入的客戶的積分初始化為0;輸入客戶(商品)名稱能查找到相應信息; 根據(jù)客戶的積分信息及打折信息給客戶實現(xiàn)打折優(yōu)惠;v 異常處理:無。 v 用例2&

10、#160;v 用例名:客戶信息管理 。 行為者:超市管理員。 v 目的:完成對客戶信息的管理。v 過程描述: v 超市管理員輸入客戶的姓名和ID號。 對客戶進行相應的增、刪、查、改的操作并能正確的顯示客戶信息 對客戶進行報表統(tǒng)計;保存客戶信息錄入客戶信息文件out.txt v 異常處理:無。 v 用例 3 v 用例名:客戶消費管理 。 行為者:超市管理員。 v 目的:完成對客戶購買消費的計算并根據(jù)客戶消費返回客戶積分;v 過程描述: v 超市管理員輸入客戶

11、的身份證號查找到相應的客戶并顯示客戶的積分及打折信息,如果客戶不存在則打印此用戶不存在;輸入客戶購買的商品序號 打印出商品的信息。輸入客戶購買的商品數(shù)量并累加到consumer的消費中;退出系統(tǒng);v  異常處理:無。  三、技術方案3.1軟硬件環(huán)境 3.1.1 系統(tǒng)軟件:本課程設計的系統(tǒng)開發(fā)平臺為Windows XP及以上。程序設計語言為C#語言,程序運行平臺可Windws98/2000/XP/Seven。 需要Visual Studio 2013編程軟件和.Net Framework組件。3.1.2系統(tǒng)硬件的需求:

12、0;Pentium4 800MHZ或者更高主頻CPU 512MB以上內存。 3.2配置方案Windows7操作系統(tǒng),VS2013開發(fā)工具及平臺。3.3 關鍵技術C#窗體應用技術,c#泛型和面向對象編程,數(shù)據(jù)結構原理及算法,單鏈表的基本操作。4、 總體設計4.1 系統(tǒng)功能架構系統(tǒng)的功能架構參見圖-2: 圖-2 系統(tǒng)功能的結構4.2 各模塊功能架構4.2.1添加 圖-3 添加客戶4.2.2刪除 圖-4 刪除客戶4.2.3修改 圖-5 修改客戶4.2.4查找 圖-6 查找客戶4.2.5添加消費 圖-7 添加消費4.2.6 查看所有 圖-8 查看所有五、詳細設計5.1節(jié)點

13、的定義class Node<T> / 定義單鏈表數(shù)據(jù)結構 private T data; /數(shù)據(jù)域 字段 public T Data / 數(shù)據(jù)域 屬性 get return data; set data = value; private Node<T> next; /指針域 字段 public Node<T> Next /指針域 屬性 get return next; set next = value; /構造函數(shù) public Node() /空節(jié)點 this.data = default(T); this.next = null; public Node

14、(T data, Node<T> next) /數(shù)據(jù)域,指針域 節(jié)點 this.data = data; this.next = next; public Node(T data) /數(shù)據(jù)域 節(jié)點 next = null; this.data = data; public Node(Node<T> next) /指針域 節(jié)點 this.next = next; 5.2單鏈表的實現(xiàn)以及基本操作接口5.2.1單鏈表的字段、構造方法: class List<T> : IListDS<T> private Node<T> head; / 單鏈

15、表頭結點 字段 / 頭結點屬性 public Node<T> Head get return head; set head = value; / 構造方法 public List() head = null;5.2.2 單鏈表類接口:/接口的定義 public interface IListDS<T> int GetLength(); /求長度 void Clear(); /清空操作 bool IsEmpty(); /判斷線性表是否為空 bool Append(T item); /附加操作 bool Insert(T item, int i); /插入操作 T Dele

16、te(int i); /刪除操作 T GetElem(int i); /取表元 int Locate(T value); /按值查找 5.3 各功能模塊流程圖5.3.1 添加流程 圖-9 添加流程 5.3.2刪除流程圖-10 刪除流程5.3.3修改流程、查找流程圖-11 修改流程、查找流程5.3.4添加消費、查看所有客戶流程圖-12 添加消費、查看所有客戶流程六、軟件測試6.1針對目標系統(tǒng)的測試方案6.1.1測試流程添加幾個用例,刪除其中之一,再試著查找不存在的客戶,給存在的客戶添加消費,查看所有客戶信息。6.1.2用例以及測試結果添加4個客戶-ID 姓名 身份證號 電話 會員類型 -a a

17、a a 普通, b b b b 普通, c c c c 普通, d d d d VIP,刪除a,修改b為ba ba ba ba VIP,查找f,為c添加消費500元,查看所有客戶。 測試結果: |-ID-|-姓名-|-身份證號-|-電話-|會員類型|-累計消費-|-積分-|享受優(yōu)惠|1 babababaVIP00打七折2 cccc普通500500減1元3 ddddVIP00打七折6.1.3測試結論程序可以正常增刪改除客戶,具有一定友好性。七、總結在本次課程設計當中,我對許多以往掌握不夠熟練或者是使用較少而易忽略的知識點有了一定的掌握,比如說泛型,單鏈表的基本操作,new和delete的動態(tài)內存

18、分配與內存空間的釋放,通過設計前對整個客戶積分系統(tǒng)的分析,使我對面向對象的結構化程序設計有了更深一層次的認識,通過對用戶需求所作的人性化分析,在設計程序的過程中,我更加合理的構建了能夠最大限度的滿足用戶需求的系統(tǒng)功能,使用戶在使用時可以隨心所欲,在編寫代碼的過程當中,我通過查閱有關的資料和分析實例,從中學到了很多能夠不斷優(yōu)化自己代碼,可以提高代碼利用率的知識,并且更加合理的構建了各個知識點之間的聯(lián)系,充分的利用了循環(huán)和選擇性語句,在存儲過程中,對文件的部分知識也有了一個深層次的了解和掌握,對于如何修改文件信息以及保存有了一定的概念和運用。當然,在代碼的編寫過程中,也遇到了許多問題,我通過自身的

19、努力去改正它們,在這個過程中我也學到了很多東西,在代碼的調試過程中,我碰到了許多以前所沒有碰到過的錯誤,在老師的悉心指導和自己的努力思考下, 我最終把這些問題一一解決掉,并把教訓牢記在心,努力使自己得到更大的收獲和提高??傊?,在本次課程設計的過程中,我首先從代碼的編寫中發(fā)現(xiàn)了一些解決問題所必須具備的基本能力和素質,在設計程序時,我感受到了作為一名軟件開發(fā)者所必須具備的統(tǒng)籌安排,注重層次與結構的素養(yǎng),為我以后從事軟件開發(fā)工作標明了方向,自己設計的最終實現(xiàn)為自己以后的努力樹立了信心,這次課程設計使我受益匪淺。附錄1參考文獻1 嚴蔚敏,吳偉民數(shù)據(jù)結構(C語言版)北京:清華大學出版社,2007.2 譚

20、浩強C+程序設計(第2版)北京:清華大學出版社,2011.8.3 劉莉,李梅,姜志堅C#程序設計教程北京:清華大學出版社,2014.附錄2 關鍵源代碼v private void addButton_Click(object sender, EventArgs e) /單擊添加頁的添加按鈕函數(shù):獲取各文本框字符串,調用構造方法/創(chuàng)建新客戶,以此調用構造鏈表的Append()方法將新客戶插入鏈表尾。 string type; if (radioButton_Normal.Checked = true) type = "普通" else type = "VIP&quo

21、t; Consumer con = new Consumer(textBoxID.Text, textBoxName.Text, textBoxIDnum.Text, textBoxTel.Text, type ); L.List.Append(con); MessageBox.Show("ID:" + con.IID + ",姓名:" + con.Name + ",身份證號:" + con.IIDnum + ",電話:" + con.Tel + ",會員類型:" + con.Type + &q

22、uot;。" + "n客戶總數(shù):" + L.List.GetLength(), "添加客戶成功!"); this.Close(); v private void modButton_Click(object sender, EventArgs e) /單擊修改頁的修改按鈕函數(shù) /*省略:i值獲取和基本信息參數(shù)獲取*/ Consumer con = new Consumer( /*省略:基本信息參數(shù)*/ /舊節(jié)點的累計消費 L.List.GetElem(i).PayoutSum, /舊節(jié)點的積分 L.List.GetElem(i).Integra

23、l ); L.List.Insert(con,i); /修改的實現(xiàn):1.先在i位置插入新節(jié)點 L.List.delete(value); / 2.刪除舊節(jié)點 this.Close(); /*省略消息對話框提示代碼,與上文相似*/ /*刪除和查找的代碼實現(xiàn)與以上添加和修改原理相似,故不贅述!*/v private void confButton_Click(object sender, EventArgs e) /添加消費頁的確定按鈕單擊函數(shù) /*省略:i值獲取*/ if (i <= L.List.GetLength() && i >= 1) double amoun

24、t = 0; try amount = double.Parse(textBox_amount.Text); if (amount > 0) textBox_amount_show.Text = amount.ToString(); textBox_discountRate_show.Text = L.List.GetElem(i).DiscountRate; double payout = L.List.GetElem(i).consume(textBox_amount.Text); textBox_payout_show.Text = payout.ToString(); label

25、_successBuy.Visible = true; textBox_integral_show.Visible = true; textBox_integral_show.Text = L.List.GetElem(i).Integral.ToString(); else MessageBox.Show("請重新輸入金額!"); catch (FormatException e1) MessageBox.Show("請重新輸入金額!"); else MessageBox.Show("客戶ID不存在!"); /this.Close(); v private void viewForm_Load(object sender, EventArgs e)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論