數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-客戶消費積分系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-客戶消費積分系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-客戶消費積分系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-客戶消費積分系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-客戶消費積分系統(tǒng)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--客戶消費積分系統(tǒng)課程設(shè)計報告設(shè)計題目:

客戶消費積分系統(tǒng)學(xué)院、系:

電子與信息工程學(xué)

院專業(yè)班級:學(xué)生姓名:指導(dǎo)教師:成 績:2013年 1月 8日目錄1、需求分析??????????????????????21.1問題描述?????????????????????31.2基本要求?????????????????????32、概要設(shè)計??????????????????????32.1數(shù)據(jù)結(jié)構(gòu)?????????????????????.42.2程序模塊?????????????????????.42.3各模塊之間的調(diào)用關(guān)系以及算法設(shè)計?????????.43、詳細設(shè)計?????????????????????...54、測試與分析????????????????????..65、總結(jié)???????????????????????..106、附錄???????????????????????..1131、需求分析:1.1問題描述1、采用動態(tài)分配順序表存儲客戶信息,并用文件保存和讀寫數(shù)據(jù)2、能對客戶信息進行添加、查詢、修改、刪除等基本操作3、根據(jù)客戶消費額,合理計算出客戶消費所得積分4、根據(jù)客戶積分值,實行不同情況的優(yōu)惠(即計算折扣)1.2基本要求進行添加客戶時要注意不能超過所定義數(shù)組的最大容量,查找時輸入的身份證號要求為18位,本程序能對客戶信息進行添加、 查詢、修改、刪除等基本操作,根據(jù)客戶消費額,合理計算出客戶消費所得積分,根據(jù)客戶積分值,實行不同情況的優(yōu)惠。2、概要設(shè)計 :數(shù)據(jù)結(jié)構(gòu)線性表的抽象數(shù)據(jù)類型定義InitList前置條件:線性表不存在輸入:無功能:線性表的初始化輸出:無后置條件:一個空的線性表DestroyList前置條件:線性表已存在輸入:無功能:銷毀線性表輸出:無后置條件:釋放線性表所占的內(nèi)存空間Length前置條件:線性表已存在輸入:無功能:求線性表的長度輸出:線性表中元素個數(shù)后置條件:、線性表不變Get前置條件:線性表已存在4輸入:元素的序號 i功能:在線性表中去序號為 i的元素輸出:如果序號合法,返回序號為i的元素值,否則拋出異常后置條件:、線性表不變Insert前置條件:線性表已存在輸入:插入位置 i,插入元素x功能:在線性表的第 i個位置,插入元素 X輸出:若插入不成功,拋出異常后置條件:若插入成功,表中增加了一個元素Delete前置條件:線性表已存在輸入:刪除位置 i功能:刪除線性表的第 i個元素輸出:若刪除成功,返回被刪除元素,否則拋出異常后置條件:若刪除成功,表中減少了一個元素Print前置條件:線性表已存在輸入:無功能:按位置的先后次序依次輸出線性表中的元素輸出:線性表中的各個元素后置條件:線性表不變程序模塊主函數(shù)main()動態(tài)獲取表空間,初始化鏈表,打開文件將客戶數(shù)據(jù)加載入表中,進行表操作,操作結(jié)束將表數(shù)據(jù)保存到文件,文件關(guān)閉。2.1添加客戶信息遍歷當(dāng)前單鏈表,若待添加的用戶編號已存在,則返回用戶已存在的提示信息;若待添加的用戶不存在,則將該客戶信息添加到順序表最后,并將單鏈表表長度加1。2.2刪除客戶信息遍歷當(dāng)前順序表,若要刪除的用戶標(biāo)號不存在,則返回提示信息;否則提示用戶是否確定刪除,確定即刪除。刪除操作即將待刪除記錄的后面記錄依次向前移動 1步。2.3更改客戶信息遍歷當(dāng)前單鏈表,若待更改的用戶編號不存在,則返回用戶不存在的提示信息;若待添加的用戶存在,則提示輸入新的信息。2.4 查找客戶信息輸入待查找用戶的身份證號,若存在則返回用戶的信息2.5 顯示客戶信息遍歷整個單鏈表,顯示當(dāng)前所有客戶2.6 統(tǒng)計客戶5遍歷單鏈表,統(tǒng)計當(dāng)前鏈表中所有客戶的總數(shù)各模塊之間的調(diào)用關(guān)系以及算法設(shè)計客戶消費積添查刪更顯統(tǒng)加找除改示計客客客客客客戶戶戶戶戶戶客戶消費積分管理系3、詳細設(shè)計添加客戶信息偽代碼:1.初始化工作指針 P,申請空的結(jié)點空間;2.輸入姓名,輸入身份證號;3.若省份證號不等于18,輸出輸入有誤,否則輸入消費金額,并調(diào)用函數(shù)進行折扣計算;查找客戶信息:初始化工作指針P,工作指針P指向頭結(jié)點,并定義折扣;2.判斷P是否為空,若為空,輸出無用戶,否則6后移直到身份證號相同;3.若相同調(diào)用函數(shù)計算折扣;更改客戶信息:初始化工作指針p,定義折扣和續(xù)加金額;判斷指針P是否為空,若為空輸出沒有客戶,否則p后移;判斷身份證號是否相同,若相同輸出姓名、身份證號、消費、折扣、積分;輸入要修改的項目;4.1選擇1,輸入修改后的姓名 4.2選擇2,輸入修改后的身份證號4.3選擇3,覆蓋以前消費、續(xù)加上現(xiàn)在費用;調(diào)用積分函數(shù),計算折扣;刪除客戶信息:初始化工作指針p,定義折扣;2判斷指針P是否為空,若為空輸出沒有客戶,否則p后移;判斷身份證號是否相同,若相同輸出姓名、身份證號、消費、折扣、積分;選擇是否刪除,選1返回刪除成功,選2,返回刪除失?。伙@示客戶信息:71初始化工作指針 p,定義折扣;2判斷指針P是否為空,若為空輸出沒有客戶,否則p后移;輸出每位姓名、身份證號、消費、折扣、積分統(tǒng)計客戶信息:1初始化工作指針 p,累加器i初始化;2判斷指針P是否為空,若為空輸出沒有客戶,否則p后移;3累加器i加1;4輸出現(xiàn)有客戶數(shù)量 i位;計算折扣函數(shù):定義折扣discount若積分為0,則折扣為0;若積分大于0小于50,則折扣為9;若積分大于等于50,于100,則折扣為8,;若積分大于等于100,小于等于150,則折扣為7;若積分大于等于150,小于等于200,則折扣為7;若積分大于等于150,小于等于200,則折扣為6.5若積分大于等于200,小于等于300,則折扣為6,;若積分大于300,折扣為6.4、測試與分析添加客戶信息:8查找客戶信息:9修改客戶信息:刪除客戶信息:10顯示客戶:統(tǒng)計客戶:11退出:5、總結(jié):在本次課程設(shè)計當(dāng)中,我對許多以往掌握不夠熟練或者是使用較少而易忽略的知識點有了一定的掌握,而且通過本次試驗提高了我的12實際操作能力,在編寫代碼的過程當(dāng)中,我通過查閱有關(guān)的資料和分析實例,從中學(xué)到了很多能夠不斷優(yōu)化自己代碼,可以提高代碼利用率的知識,并且更加合理的構(gòu)建了各個知識點之間的聯(lián)系,充分的利用了循環(huán)和選擇性語句,在存儲過程中,對文件的部分知識也有了一個深層次的了解和掌握,對于如何修改文件信息以及保存有了一定的概念和運用。當(dāng)然,在代碼的編寫過程中,也遇到了許多問題,我通過自身的努力去改正它們,在這個過程中我也學(xué)到了很多東西,在代碼的調(diào)試過程中,我碰到了許多以前所沒有碰到過的錯誤,但通過同學(xué)的幫助解決了這些困難,并且自身得到了一定的提高。通過本學(xué)期的學(xué)習(xí)我對數(shù)據(jù)結(jié)構(gòu)有了更深的了解,數(shù)據(jù)結(jié)構(gòu)重在思想,通過學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的思想和C++結(jié)合來編寫程序,雖然現(xiàn)在編程仍有許多困難,但以后的學(xué)習(xí)中,我會更加努力,希望能夠不斷的提高自己!6、附錄:源程序#include<iostream>usingnamespacestd;structcnode13{charname[20];charID[20];doubleconsume;doubleinteger;structcnode*next;};voidInitstack(cnode*&head){head=newcnode;head->next=NULL;}voidGetelem(cnode*head);voidSearch(cnode*head,charID[]);voidAmend(cnode*head,charID[]);voidDelete(cnode*head,charID[]);voidShowall(cnode*head);voidcount(cnode*head);doubledisplay_discount(doubleinteger);voidmain(){14cnode*head;intchoice;chary[20];Initstack(head);do{cout<<"\n";cout<<" 客戶消費 積分管理系統(tǒng)\n\n";cout<<"****************************";cout<<"\n **\n";cout<<"\n * 主菜單*\n";cout<<"\n * 1 添加客戶*\n";cout<<"\n * 2 查找客戶*\n";cout<<"\n * 3 修改客戶*\n";cout<<"\n * 4 刪除客戶*\n";15cout<<"\n * 5 顯示客戶*\n";cout<<"\n * 6 統(tǒng)計客戶*\n";cout<<"\n * 7 退出*\n";cout<<"\n **\n";cout<<"***************************";cout<<"\n請輸入您的選擇(1,2,3,4,5,6):";cin>>choice;if(choice==1){Getelem(head);}elseif(choice==2){cout<<"\n 請輸入您查找客戶的身份證號:";cin>>y;16while(strlen(y)!=18){cout<<"身份證號碼位數(shù)有誤請重新輸入(18位):";cin>>y;}Search(head,y);}elseif(choice==3){cout<<"\n 請輸入您想修改客戶的身份證號:";cin>>y;while(strlen(y)!=18){cout<<"身份證號碼位數(shù)有誤請重新輸入(18位):";cin>>y;}Amend(head,y);}elseif(choice==4)17{cout<<"\n";cout<<" 請輸入你想要刪除的客戶的身份證號:";cin>>y;Delete(head,y);}elseif(choice==5){cout<<"\n";Showall(head);}elseif(choice==6){cout<<"\n";count(head);}elseif(choice==7)exit(1);}while(choice<=7);}18voidGetelem(cnode*head){cnode*p;doubley;p=newcnode;/*申請空的節(jié)點空間*/cout<<"請輸入姓名:";cin>>p->name;cout<<"請輸入身份證號(18位):";cin>>p->ID;while(strlen(p->ID)!=18){cout<<"身份證號碼位數(shù)有誤請重新輸入(18位):";cin>>p->ID;}cout<<"請輸入消費金額:";cin>>p->consume;p->integer=p->consume/100;y=display_discount(p->integer);cout<<"折扣:";cout<<y;cout<<"折\n";19p->next=head->next;head->next=p;}voidSearch(cnode*head,charID[]){cnode*p;doubley;p=head;if(p->next==NULL)cout<<"沒有客戶!\n";else{while(p->next!=NULL){p=p->next;if(strcmp(ID,p->ID)==0){cout<<"姓名:";cout<<p->name;cout<<"身份證號:";cout<<p->ID;20cout<<"消費:";cout<<p->consume;cout<<"積分:";cout<<p->integer;y=display_discount(p->integer);cout<<"折扣:";cout<<y;cout<<"折\n";}}}}voidAmend(cnode*head,charID[]){cnode*p;doubley,z;intchoose,x;p=head;if(p->next==NULL)cout<<"沒有客戶!\n";else21{while(p->next!=NULL){p=p->next;if(strcmp(ID,p->ID)==0){cout<<"姓名:";cout<<p->name;cout<<"身份證號:";cout<<p->ID;cout<<"消費";cout<<p->consume;cout<<"積分:";cout<<p->integer;y=display_discount(p->integer);cout<<"折扣:";cout<<y;cout<<"折\n";}}cout<<"請選擇你要修改的1、姓名。2、身份證號。3、消費金額。";22cin>>choose;if(choose==1){cout<<"請輸入修改后姓名;";cin>>p->name;}if(choose==2){cout<<"請輸入修改后的身份證號 :";cin>>p->ID;while(strlen(p->ID)!=18){cout<<"身份證號碼位數(shù)有誤請重新輸入(18位):";cin>>p->ID;}}if(choose==3){cout<<"1.覆蓋以前消費、2.續(xù)加上現(xiàn)在費用!!請選擇:";cin>>x;23if(x==1){cout<<"請輸入修改后的消費:";cin>>p->consume;}else{cout<<"請輸入續(xù)加金額:";cin>>z;p->consume+=z;}}cout<<"姓名:";cout<<p->name;cout<<"身份證號:";cout<<p->ID;cout<<"消費:";cout<<p->consume;p->integer=p->consume/100;cout<<"積分:";cout<<p->integer;y=display_discount(p->integer);24cout<<"折扣:";cout<<y;cout<<"折\n";}}voidDelete(cnode*head,charID[]){cnode*p;intx;doubley;p=head;if(p->next==NULL)cout<<"沒有客戶!\n";else{while(p->next!=NULL){head=p;p=p->next;if(strcmp(ID,p->ID)==0){25cout<<"姓名:";cout<<p->name;cout<<"身份證號:";cout<<p->ID;cout<<"消費:";cout<<p->consume;cout<<"積分:";cout<<p->integer;y=display_discount(p->integer);cout<<"折扣:";cout<<y;cout<<"折\n";}}cout<<"你確認刪除?1、確定。2、取消。請選擇:";cin>>x;if(x==1){head->next=p->next;cout<<"刪除成功!";}26else{cout<<"刪除失敗!";}}}voidShowall(cnode*head){cnode*p;doubley;p=head;if(p->next==NULL)cout<<"沒有客戶!\n";else{whil

溫馨提示

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

最新文檔

評論

0/150

提交評論