


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:客戶消費(fèi)積分系統(tǒng)學(xué)院、系:電子與信息工程學(xué)院專業(yè)班級:學(xué)生姓名:指導(dǎo)教師:成 績:2013年 1月 8日目錄1、需求分析 21.1問題描述 31.2基本要求32、概要設(shè)計(jì)32.1數(shù)據(jù)結(jié)構(gòu).42.2程序模塊.42.3各模塊之間的調(diào)用關(guān)系以及算法設(shè)計(jì) .43、詳細(xì)設(shè)計(jì).54、測試與分析.65、總結(jié) .10&附錄 .111、需求分析:11 問題描述1、采用動(dòng)態(tài)分配順序表存儲客戶信息,并用文件保存和讀寫數(shù)據(jù)2、能對客戶信息進(jìn)行添加、查詢、修改、刪除等基本操作3、根據(jù)客戶消費(fèi)額,合理計(jì)算出客戶消費(fèi)所得積分4、根據(jù)客戶積分值,實(shí)行不同情況的優(yōu)惠(即計(jì)算折扣)12 基本要求 進(jìn)
2、行添加客戶時(shí)要注意不能超過所定義數(shù)組的最大容量, 查找時(shí)輸入的身份證號 要求為 18 位,本程序能對客戶信息進(jìn)行添加、查詢、修改、刪除等基本操作, 根據(jù)客戶消費(fèi)額, 合理計(jì)算出客戶消費(fèi)所得積分, 根據(jù)客戶積分值, 實(shí)行不同情 況的優(yōu)惠。2、概要設(shè)計(jì) :1. 數(shù)據(jù)結(jié)構(gòu) 線性表的抽象數(shù)據(jù)類型定義InitList 前置條件:線性表不存在 輸入:無功能:線性表的初始化輸出:無 后置條件:一個(gè)空的線性表DestroyList 前置條件:線性表已存在 輸入:無功能:銷毀線性表輸出:無 后置條件:釋放線性表所占的內(nèi)存空間Length 前置條件:線性表已存在 輸入:無功能:求線性表的長度 輸出:線性表中元素個(gè)
3、數(shù) 后置條件:、線性表不變Get 前置條件:線性表已存在 輸入:元素的序號 i 功能:在線性表中去序號為 i 的元素 輸出:如果序號合法,返回序號為 i 的元素值,否則拋出異常 后置條件:、線性表不變Insert前置條件:線性表已存在輸入:插入位置 i ,插入元素 x功能:在線性表的第 i 個(gè)位置,插入元素 X 輸出:若插入不成功,拋出異常 后置條件:若插入成功,表中增加了一個(gè)元素 Delete前置條件:線性表已存在 輸入:刪除位置 i 功能:刪除線性表的第 i 個(gè)元素 輸出:若刪除成功,返回被刪除元素,否則拋出異常 后置條件:若刪除成功,表中減少了一個(gè)元素 Print前置條件:線性表已存在
4、輸入:無 功能:按位置的先后次序依次輸出線性表中的元素 輸出:線性表中的各個(gè)元素 后置條件:線性表不變2. 程序模塊 主函數(shù) main()動(dòng)態(tài)獲取表空間,初始化鏈表,打開文件將客戶數(shù)據(jù)加載入表中,進(jìn)行表操 作,操作結(jié)束將表數(shù)據(jù)保存到文件,文件關(guān)閉。2.1 添加客戶信息 遍歷當(dāng)前單鏈表,若待添加的用戶編號已存在,則返回用戶已存在的提示 信息;若待添加的用戶不存在, 則將該客戶信息添加到順序表最后, 并將單鏈表 表長度加 1。2.2 刪除客戶信息 遍歷當(dāng)前順序表,若要?jiǎng)h除的用戶標(biāo)號不存在,則返回提示信息;否則提 示用戶是否確定刪除,確定即刪除。刪除操作即將待刪除記錄的后面記錄依次向前移動(dòng) 1 步。
5、2.3 更改客戶信息 遍歷當(dāng)前單鏈表,若待更改的用戶編號不存在,則返回用戶不存在的提示信息; 若待添加的用戶存在,則提示輸入新的信息。2.4 查找客戶信息 輸入待查找用戶的身份證號,若存在則返回用戶的信息2.5 顯示客戶信息 遍歷整個(gè)單鏈表,顯示當(dāng)前所有客戶2.6 統(tǒng)計(jì)客戶 遍歷單鏈表,統(tǒng)計(jì)當(dāng)前鏈表中所有客戶的總數(shù)3. 各模塊之間的調(diào)用關(guān)系以及算法設(shè)計(jì)3、詳細(xì)設(shè)計(jì)添加客戶信息偽代碼:1初始化工作指針 P,申請空的結(jié)點(diǎn)空間;2輸入姓名,輸入身份證號;3若省份證號不等于18,輸出輸入有誤,否則輸入消費(fèi)金額,并調(diào)用函數(shù)進(jìn)行折扣計(jì)算;查找客戶信息:1. 初始化工作指針P,工作指針P指向頭結(jié)點(diǎn),并定義折
6、扣;2判斷P是否為空,若為空,輸出無用戶,否則P后移直到身份證號相同;3 若相同調(diào)用函數(shù)計(jì)算折扣; 更改客戶信息:1. 初始化工作指針p,定義折扣和續(xù)加金額;2. 判斷指針P是否為空,若為空輸出沒有客戶,否則p后移;3. 判斷身份證號是否相同,若相同輸出姓名、身份證號、消費(fèi)、折扣、積分;4. 輸入要修改的項(xiàng)目;4.1選擇1,輸入修改后的姓名 4.2選擇2,輸入修改后的身份證號 4.3選擇3,覆蓋以前消 費(fèi)、續(xù)加上現(xiàn)在費(fèi)用;5. 調(diào)用積分函數(shù),計(jì)算折扣;刪除客戶信息:1.初始化工作指針p,定義折扣;2判斷指針P是否為空,若為空輸出沒有客戶,否則p后移;3判斷身份證號是否相同,若相同輸出姓名、身份
7、證號、消費(fèi)、折扣、積分;4選擇是否刪除,選 1返回刪除成功,選 2,返回刪除失?。?顯示客戶信息:1初始化工作指針 p,定義折扣;2判斷指針P是否為空,若為空輸出沒有客戶,否則p后移;3輸出每位姓名、身份證號、消費(fèi)、折扣、積分統(tǒng)計(jì)客戶信息:1初始化工作指針 p,累加器i初始化;2判斷指針P是否為空,若為空輸出沒有客戶,否則p后移;3累加器i加1 ;4輸出現(xiàn)有客戶數(shù)量i位;計(jì)算折扣函數(shù):1. 定義折扣 discount2. 若積分為0,則折扣為0;若積分大于0小于50,則折扣為9;若積分大于等于50,于100,則折扣為8,;若積分大于等于100,小于等于150,則折扣為7;若積分大于等于 150
8、,小于等于200,則折扣為7;若積分大于等于 150,小于等于200,則折扣為6.5 若積分大于等于200,小于等于300,則折扣為6,;若積分大于300,折扣為6.4、測試與分析添加客戶信息:客戶帖節(jié)積分管理系統(tǒng)” *請輸人您的應(yīng)莘CL, Z, 3t 4, 5t 6>?退出«附客戶*_D C+-FiDebugli xiaoton g .exe>8般S丄曉<1李號額工金SB姓屠.8 八人八汨 範(fàn)S!駅王菜單*1i耐悟戶*2查找客戶*查找客戶信息:修改客戶信息:統(tǒng)計(jì)客戶6退出刪除客戶豆示畧戶萱找喜戶修改客戶客H梢費(fèi)祀分菅璉系統(tǒng)證號t 肖費(fèi)t 1234;12 -3HJf
9、®:S 折2104219Z08310H肖夷 1234=12,:? *8 昂2.身份證號。3x瘠詡金頷。1:m英耳梵耳疋廉: Jt英耳疋耳耳幫斃鳶菱xa<g>E)ta<Kii:M請輸人堡的詵擇"2. 3. 4. 5, 6>=3 請輸入您想醪丐 生名:許R報(bào)筠 青輸人核改后姓刪除客戶信息:顯示客戶: ' D C -Debugfi xiaotsrg.?ise土臬單 透加客門 沓找客口 修改客白 礎(chǔ)除客口顯示客白退岀請輸入您的選擇U 2, 3. 4, 5. 6)=5月身份證號:21B4Z31?2fl8310855費(fèi);H45積'.分;口禺折汨洱
10、廝 許時(shí)任身俯證號:21O4231?920831C844Vt位已和分:1氛旳折扣:¥8折 ¥:統(tǒng)計(jì)客戶:退出:5、總結(jié): 在本次課程設(shè)計(jì)當(dāng)中,我對許多以往掌握不夠熟練或者是使用較少而易忽略的 知識點(diǎn)有了一定的掌握,而且通過本次試驗(yàn)提高了我的實(shí)際操作能力,在編寫代碼的過 程當(dāng)中,我通過查閱有關(guān)的資料和分析實(shí)例,從中學(xué)到了很多能夠不斷優(yōu)化自己代碼, 可以提高代碼利用率的知識,并且更加合理的構(gòu)建了各個(gè)知識點(diǎn)之間的聯(lián)系,充分的利 用了循環(huán)和選擇性語句,在存儲過程中,對文件的部分知識也有了一個(gè)深層次的了解和 掌握,對于如何修改文件信息以及保存有了一定的概念和運(yùn)用。當(dāng)然,在代碼的編寫過
11、程中,也遇到了許多問題,我通過自身的努力去改正它們,在這個(gè)過程中我也學(xué)到了很 多東西,在代碼的調(diào)試過程中,我碰到了許多以前所沒有碰到過的錯(cuò)誤,但通過同學(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、附錄:源程序#in clude<iostream> using n amespace std; struct cnodechar n ame20;char ID20; double con s
12、ume; double in teger; struct cnode *n ext;void In itstack(c node * &head)head= new cnode; head->next=NULL;void Getelem (cnode *head);void Search(cnode *head,char ID);void Amend(cnode *head,char ID);void Delete(cnode *head,char ID);void Showall(cnode *head);void count(cnode *head);double displ
13、ay_discount(double integer); void main()cnode *head;int choice; char y20; Initstack(head);docout<<"客戶消費(fèi)積分管理系統(tǒng)nncout<<"*“ Jcout<<"n*n"cout<<"n*、t t I、/,主菜單*n"cout<<"n*1添加客戶*n"cout<<"n*2查找客戶*n"cout<<"n*3修改
14、客戶*n"cout<<"n*4刪除客戶*n"cout<<"n*5顯示客戶*n"cout<<"n*6統(tǒng)計(jì)客戶*n"cout<<"n*7退出*n"cout<<"n*n"cout<<"*"Jcout<<"n請輸入您的選擇 (1 ,2, 3,4,5,6cout<<"n".n.cin>>choice;if(choice=1)Getelem(
15、head);else if(choice=2)cout<<"n 請輸入您查找客戶的身份證號cin>>y;while(strlen(y)!=18)cout<<"身份證號碼位數(shù)有誤請重新輸入(18位):"cin>>y; Search(head,y);else if(choice=3)cout<<"n 請輸入您想修改客戶的身份證號 : cin>>y;while(strlen(y)!=18)(18 位 ): "cout<<" 身份證號碼位數(shù)有誤請重新輸入 ci
16、n>>y; Amend(head,y);else if(choice=4) cout<<"n" cout<<" 請輸入你想要?jiǎng)h除的客戶的身份證號: cin>>y;Delete(head,y);else if(choice=5) cout<<"n" Showall(head);else if(choice=6) cout<<"n" count(head);else if(choice=7) exit(1);while(choice<=7);void
17、Getelem (cnode *head)cnode *p; double y;p=new cnode;/* 申請空的節(jié)點(diǎn)空間 */cout<<" 請輸入姓名: "cin>>p->name;cout<<"請輸入身份證號(18位):"; cin>>p->ID;while(strlen(p->ID)!=18)(18 位 ): "cout<<" 身份證號碼位數(shù)有誤請重新輸入 cin>>p->ID;cout<<" 請輸入消費(fèi)金
18、額: ";cin>>p->consume; p->integer=p->consume/100; y=display_discount(p->integer);cout<<" 折扣 :";cout<<y; cout<<" 折 n"; p->next=head->next; head->next=p;void Search(cnode *head,char ID)cnode *p; double y; p=head; if(p->next=NULL)c
19、out<<" 沒有客戶 !n";elsewhile(p->next!=NULL)p=p->next; if(strcmp(ID,p->ID)=0)cout<<"姓名:" cout<<p->name; cout<<" 身份證號: " cout<<p->ID;cout<<" 消費(fèi): " cout<<p->consume;cout<<"積分:"cout<<p-
20、>integer; y=display_discount(p->integer); cout<<"折扣:"cout<<y;cout<<"折 n"void Amend(cnode *head,char ID)cnode *p;double y,z;int choose,x;p=head;if(p->next=NULL)cout<<" 沒有客戶 !n"elsewhile(p->next!=NULL)p=p->next;if(strcmp(ID,p->ID)
21、=0) cout<<" 姓名: " cout<<p->name; cout<<" 身份證號: " cout<<p->ID; cout<<" 消費(fèi) " cout<<p->consume;cout<<"積分:";cout<<p->integer; y=display_discount(p->integer); cout<<"折扣:"cout<<y; c
22、out<<"折 n"cout<<" 請選擇你要修改的 1、姓名。 2、身份證號。 3、消費(fèi)金額。 cin>>choose;if(choose=1) cout<<" 請輸入修改后姓名 ;" cin>>p->name; if(choose=2)cout<<" 請輸入修改后的身份證號(18 位 ):"!請選擇 :"cin>>p->ID; while(strlen(p->ID)!=18) cout<<"
23、; 身份證號碼位數(shù)有誤請重新輸入 cin>>p->ID;if(choose=3)cout<<"1. 覆蓋以前消費(fèi)、 2.續(xù)加上現(xiàn)在費(fèi)用 cin>>x;if(x=1)cout<<" 請輸入修改后的消費(fèi) :" cin>>p->consume;elsecout<<" 請輸入續(xù)加金額 :"cin>>z; p->consume+=z; cout<<" 姓名: " cout<<p->name; cout&l
24、t;<" 身份證號: " cout<<p->ID; cout<<" 消費(fèi): " cout<<p->consume; p->integer=p->consume/100;cout<<"積分:";cout<<p->integer; y=display_discount(p->integer); cout<<"折扣:"cout<<y;cout<<"折 n"void
25、Delete(cnode *head,char ID)cnode *p; int x;double y;p=head;if(p->next=NULL)cout<<" 沒有客戶 !n"elsewhile(p->next!=NULL)head=p;p=p->next;if(strcmp(ID,p->ID)=0) cout<<" 姓名: " cout<<p->name; cout<<" 身份證號: " cout<<p->ID; cout<&
26、lt;" 消費(fèi): " cout<<p->consume;cout<<"積分:";cout<<p->integer; y=display_discount(p->integer); cout<<"折扣:"cout<<y;cout<<"折 n"cout<<" 你確認(rèn)刪除? 1、確定。 2、取消。請選擇 cin>>x;if(x=1) head->next=p->next; cout<<" 刪除成功 !"elsecout<<" 刪除失敗 !"void Showall(cnode *head)cnode *p;double y;p=head;if(p->next=NULL)cout<<" 沒有客戶 !n"elsewhile(p->next!=NULL)p=p->next; cout<<" 姓名: " cout<<p->name; cout<<"
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年呼倫貝爾職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫匯編
- 2025年度土地互換與農(nóng)村土地制度改革合同
- 2025年度客戶價(jià)格保密與農(nóng)業(yè)科技合作開發(fā)合同
- 2025年度工地食堂員工滿意度調(diào)查與提升承包合同
- 2025年度夫妻雙方子女撫養(yǎng)權(quán)及探望權(quán)離婚協(xié)議書
- 2025年度房屋贈予與遺產(chǎn)分配協(xié)議
- 2025年度大型活動(dòng)臨時(shí)聘用保安人員合作協(xié)議
- 2025年度人工智能教育平臺建設(shè)合同變更協(xié)議
- 互聯(lián)網(wǎng)平臺限用農(nóng)藥違規(guī)售賣現(xiàn)狀調(diào)研報(bào)告
- 2025年度總經(jīng)理聘任與質(zhì)量管理體系合同:提升產(chǎn)品質(zhì)量合作協(xié)議
- 戶外LED顯示屏設(shè)計(jì)施工方案.docx
- 上崗證WORD模板
- 凈土資糧——信愿行(05)第三講安住在彌陀大愿之海
- 化工車間開停車風(fēng)險(xiǎn)分析
- 鈑金k因子和折彎扣除參照表
- 市政小三線施工方案(共22頁)
- 靜壓樁機(jī)、鉆孔灌注樁、沉槽機(jī)CAD圖形
- 易經(jīng)(拼音版)
- 紅旗優(yōu)質(zhì)服務(wù)窗口先進(jìn)事跡材料
- 總監(jiān)辦標(biāo)準(zhǔn)化管理規(guī)定
- (完整版)裝飾裝修工程監(jiān)理細(xì)則(詳解)最新(精華版)
評論
0/150
提交評論