版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》</p><p> 問題描述--------------------------------------------------------1</p><p> 問題分析---------------------------------------------------------1</p><p> 邏輯結(jié)構(gòu)和存儲
2、結(jié)構(gòu)設(shè)計------------------------------------1</p><p> 算法設(shè)計----------------------------------------------------------1</p><p> 時間復(fù)雜度和空間復(fù)雜度分析-------------------------------4</p><p> 源代
3、碼--------------------------------------------------------------4-13</p><p> 程序運行結(jié)果-----------------------------------------------------13-15</p><p> 心得-----------------------------------------
4、----------------------------15</p><p> 參考文獻-----------------------------------------------------------------------15</p><p><b> 一.問題描述</b></p><p> 小明是一個計算機專業(yè)top stude
5、nt,祝賀他畢業(yè)了。并準(zhǔn)備到銀行參加工作。上班第一天,經(jīng)理叫他編制一個實現(xiàn)一個活期儲蓄處理程序,算作考查。上班第一天, 一定要給領(lǐng)導(dǎo)一個好印象,小明二話沒說,就答應(yīng)了。現(xiàn)要你是小明了,請完成如下題目功能。儲戶開戶、銷戶、存入、支出活動頻繁,系統(tǒng)設(shè)計要求:(1)能比較迅速地找到儲戶的帳戶,以實現(xiàn)存款、取款記賬;</p><p> ?。?)能比較簡單,迅速地實現(xiàn)插入和刪除,以實現(xiàn)開戶和銷戶的需要。</p>
6、<p><b> 二.問題分析</b></p><p> 活期儲蓄處理中,儲戶開戶、銷戶、存入、指出活動頻繁,系統(tǒng)設(shè)計要求;</p><p> 能比較迅速的找到儲戶的賬戶,以實現(xiàn)存款、取款記賬;</p><p> 能比較簡單的、迅速的實現(xiàn)擦如和刪除,以實現(xiàn)開戶銷戶的需要。</p><p><b
7、> 需求分析:</b></p><p> 創(chuàng)建文件,用數(shù)組形式存儲用戶數(shù)據(jù),開戶時自定義用戶賬戶、姓名、密碼、開戶金額;</p><p> 用戶登錄時,輸入正確的用戶姓名、用戶密碼,完成登陸后即可進行存款、取款、查詢、修改密碼;</p><p> 實現(xiàn)輸入用戶的賬戶名和密碼,將其全部信息刪除,進行銷戶。</p><p&g
8、t; 三.邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)設(shè)計</p><p><b> 邏輯結(jié)構(gòu):</b></p><p> 存儲結(jié)構(gòu)設(shè)計:該存儲結(jié)構(gòu)是鏈?zhǔn)酱鎯Y(jié)構(gòu),本系統(tǒng)主要用線性表結(jié)構(gòu)類型來存儲在“活期儲蓄賬目管理系統(tǒng)”中的信息。其中,結(jié)構(gòu)體由4個分量構(gòu)成:用戶賬號名、用戶姓名、用戶密碼、開戶金額。</p><p><b> 四.算法設(shè)計</b
9、></p><p> 本系統(tǒng)采用鏈?zhǔn)浇Y(jié)構(gòu)存儲儲蓄賬目管理</p><p> 1、用戶輸入想開戶的儲戶輸入其姓名賬戶密碼,然后顯示開戶成功,會有一個賬戶生成,然后開戶成功。</p><p> 2、用戶登錄需要輸入賬號名和密碼,判斷密碼是否正確,如果錯誤則返回,然后點擊登錄,就可以進入管理系統(tǒng)。</p><p> 3、用戶的存取款和
10、查詢余額,首先在登錄賬戶的基礎(chǔ)上,選擇存或取款,然后輸入相應(yīng)的金額,若是取款應(yīng)判斷其金額是否小于賬戶上的金額,如果不小于,則提示儲戶重新輸入相應(yīng)的金額,或者退出。</p><p> 4、儲戶需要銷戶的賬戶,然后程序自動判斷該賬戶是否存在,然后輸入賬戶密碼,若密碼與賬戶相對應(yīng),則刪除該賬戶。</p><p> 五. 空間復(fù)雜度和時間復(fù)雜度分析</p><p>
11、空間復(fù)雜度:是程序運行所以需要的額外消耗存儲空間,一般的遞歸算法就要有o(n)的空間復(fù)雜度了,簡單說就是遞歸集算時通常是反復(fù)調(diào)用同一個方法,遞歸n次,就需要n個空間。時間復(fù)雜度:一個算法花費的時間與算法中語句的執(zhí)行次數(shù)成正比例,哪個算法中語句執(zhí)行次數(shù)多,它花費時間就多。一個算法中的語句執(zhí)行次數(shù)稱為語句頻度或時間頻度。記為T(n)。一般情況下,算法中基本操作重復(fù)執(zhí)行的次數(shù)是問題規(guī)模n的某個函數(shù),用T(n)表示,若有某個輔助函數(shù)f(
12、n),使得當(dāng)n趨近于無窮大時,T(n)/f (n)的極限值為不等于零的常數(shù),則稱f(n)是T(n)的同數(shù)量級函數(shù)。記作T(n)=O(f(n)),稱O(f(n)) 為算法的漸進時間復(fù)雜度,簡稱時間復(fù)雜度。在各種不同算法中,若算法中語句執(zhí)行次數(shù)為一個常數(shù),則時間復(fù)雜度為O(1),另外,在時間頻度不相同時,時間復(fù)雜度有可能相同,如T(n)=n2+3n+4與T(n)=4n2+2n+1它們的頻度不同,但時間復(fù)雜度相同,都為O(n2)。</
13、p><p><b> 六.源代碼</b></p><p> #include<iostream></p><p> #include <string></p><p> #include<stdlib.h></p><p> #include<fst
14、ream></p><p> using namespace std;</p><p> class consumer;</p><p><b> class YH</b></p><p><b> {</b></p><p><b> public
15、:</b></p><p><b> YH();</b></p><p> void set_account();</p><p><b> //銀行開戶</b></p><p> void del_account();</p><p> void tr
16、ansfer(int); //轉(zhuǎn)賬</p><p> void enter_account();</p><p> void addmoney(int,float);</p><p> void exitYH();// 退出系統(tǒng)</p><p> void functionshow();</p><p>
17、void save();</p><p> void load();// 功能界面</p><p> protected:</p><p> consumer *account[20];</p><p> static int acnum;</p><p><b> //賬戶數(shù)</b&g
18、t;</p><p><b> };</b></p><p> int YH::acnum=0;</p><p><b> YH::YH()</b></p><p><b> {</b></p><p> //for(int i=0;i<
19、20;i++) </p><p><b> //{ </b></p><p> //account[i] = NULL; </p><p><b> //} </b></p><p><b> }</b></p><p> class cons
20、umer:public YH</p><p><b> {</b></p><p><b> public:</b></p><p> friend class YH;</p><p> consumer(int id,string Name,string PassWord,float m)
21、</p><p><b> {</b></p><p> ID=id;name=Name;money=m;passwd=PassWord;</p><p><b> }</b></p><p> consumer(){ID=0;name='0';money=0;passwd=
22、'0';}</p><p> int get_id(){return ID;}</p><p> void savemoney();</p><p><b> // 存錢</b></p><p> string get_passwd(){return passwd;}</p><
23、;p><b> // 取得密碼</b></p><p> void display(); </p><p> void fetchmoney(); //取錢</p><p> void change_passwd(); </p><p> void add_money(float);&
24、lt;/p><p> void dec_money(float);</p><p> float get_money();</p><p><b> //卡卡轉(zhuǎn)帳</b></p><p><b> private:</b></p><p> int ID; //開戶帳號
25、</p><p> string passwd; // 用戶密碼</p><p> string name; // 用戶姓名 </p><p> float money;</p><p><b> };</b></p><p> void YH::save()</p>&l
26、t;p> {ofstream ofile("bankdat.dat",ios::out);</p><p> ofstream outfile("bankdat.dat",ios::out);</p><p><b> int n=0;</b></p><p> outfile<<
27、;acnum<<" ";</p><p> for(;n<acnum;n++)</p><p> {outfile<<account[n]->ID<<" ";</p><p> outfile<<account[n]->money<<&qu
28、ot; ";</p><p> outfile<<account[n]->name<<" ";</p><p> outfile<<account[n]->passwd<<" ";</p><p><b> }</b><
29、;/p><p> outfile.close(); //__page_break__</p><p><b> }</b></p><p> void YH::load()</p><p> {ifstream infile("bankdat.dat",ios::in);</p
30、><p> if(!infile)</p><p> {cerr<<"讀取錯誤,無資料中!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p><b>
31、; int n=0;</b></p><p><b> int id,m;</b></p><p> string nam,passw;</p><p> infile>>acnum;</p><p> for(;n<acnum;n++)</p><p>
32、 {infile>>id;</p><p> infile>>m;</p><p> infile>>nam;</p><p> infile>>passw;account[n]->passwd;</p><p> consumer * acc = new consumer(id,
33、nam,passw,m); </p><p> account[n] = acc; </p><p><b> }</b></p><p> infile.close();</p><p> cout<<"讀取資料正常!"<<endl;</p><p
34、><b> }</b></p><p> void YH::transfer(int x)</p><p><b> {int id; </b></p><p> cout<<"請輸入帳號:"; </p><p><b> cin>&g
35、t;id; </b></p><p> int flag = 1; </p><p> int i = 0; </p><p> while((i<acnum)&&(flag)) </p><p><b> { </b></p><p> if(id==
36、account[i]->get_id()) flag = 0; else i++; </p><p><b> } </b></p><p><b> if(flag) </b></p><p><b> { </b></p><p> cout<<
37、"帳號不存在!"<<endl<<endl; </p><p><b> return ;</b></p><p><b> } </b></p><p><b> float b;</b></p><p> cout<&
38、lt;endl<<"請輸入你要轉(zhuǎn)帳的金額:";</p><p><b> cin>>b;</b></p><p> while(b<=0)</p><p><b> {</b></p><p> cout<<"請輸入正確
39、的數(shù)字!"<<endl;</p><p> cout<<"$>";</p><p><b> cin>>b;</b></p><p><b> }</b></p><p> if(account[x]->get_m
40、oney()<b) cout<<"對不起,金額不夠!!"<<endl;</p><p> else {account[x]->dec_money(b);account[i]->add_money(b);</p><p> cout<<"轉(zhuǎn)帳成功!";}</p><p>
41、<b> return;</b></p><p><b> }</b></p><p> void consumer::add_money(float x)</p><p> {money=x+money;}</p><p> void consumer::dec_money(float
42、x)</p><p> {money=money-x;}</p><p> void YH::addmoney(int x,float y)</p><p> {account[x]->money=account[x]->money-y;</p><p><b> }</b></p>&
43、lt;p> float consumer::get_money()</p><p> {return money;}</p><p> int main()</p><p><b> {YH yh;</b></p><p> yh.functionshow();</p><p>&
44、lt;b> }</b></p><p> void YH::functionshow()</p><p><b> {</b></p><p><b> int n;</b></p><p><b> do</b></p><p&
45、gt; {system("cls"); load();</p><p> cout<<endl<<"請你輸入相應(yīng)的操作序號進行操作:"<<endl;</p><p> cout<<"1) 用戶開戶"<<endl<<"2) 賬戶登陸"&
46、lt;<endl<<"3) 帳戶注銷"<<endl<<"4) 退出系統(tǒng) "<<endl;</p><p> cout<<"$>";</p><p><b> cin>>n;</b></p><p>
47、 while(n<1||n>4)</p><p><b> { </b></p><p> cout<<"請輸入正確的操作序號!"<<endl;</p><p> cout<<"$ >";</p><p><b&g
48、t; cin>>n;</b></p><p><b> }</b></p><p><b> switch(n)</b></p><p><b> {</b></p><p> case 1: set_account();</p>
49、<p><b> break;</b></p><p> case 2:enter_account();break;</p><p> case 3: del_account();</p><p><b> break;</b></p><p> case 4: exitYH(
50、);</p><p><b> break;</b></p><p><b> }</b></p><p> cin.get();</p><p><b> }</b></p><p> while(true);</p><
51、p><b> }</b></p><p> void YH::enter_account()</p><p><b> {int id; </b></p><p> cout<<"請輸入帳號:"; </p><p><b> cin>&
52、gt;id; </b></p><p> int flag = 1; </p><p> int i = 0; //__page_break__</p><p> while((i<acnum)&&(flag)) </p><p><b> { </b></
53、p><p> if(id==account[i]->get_id()) flag = 0; else i++; </p><p><b> } </b></p><p><b> if(flag) </b></p><p><b> { </b></p>
54、<p> cout<<"帳號不存在!"<<endl<<endl; </p><p><b> return; </b></p><p><b> } </b></p><p> cout<<"請輸入密碼:";<
55、;/p><p> string passw;</p><p> cin>>passw;</p><p> if(passw!=account[i]->get_passwd()) return;</p><p> account[i]->display();cin.get();cin.get();</p>
56、<p><b> int n;</b></p><p> do{system("cls"); </p><p> cout<<"請選擇你要進行的操作:"<<endl<<"1)查看信息"<<endl<<"2)取款"
57、;<<endl<<"3)存款"<<endl<<"4)修改密碼"<<endl<<"5)轉(zhuǎn)賬"<<endl<<"6)返回"<<endl;</p><p><b> cin>>n;</b></
58、p><p><b> switch(n)</b></p><p> {case 1: account[i]->display();break;</p><p> case 2: account[i]->fetchmoney();save();break;</p><p> case 3:account[i
59、]->savemoney();save();break;</p><p> case 4:account[i]->change_passwd();save();break;</p><p> case 5:transfer(i);save();break;</p><p> case 6:return;</p><p>
60、}cin.get();cin.get();</p><p><b> }</b></p><p><b> while(1);</b></p><p><b> }</b></p><p> void YH::set_account()</p><p
61、><b> {</b></p><p><b> int id;</b></p><p> string nam;</p><p> string passw;</p><p><b> float m;</b></p><p> co
62、ut<<endl<<"請輸入開戶號:";</p><p><b> cin>>id;</b></p><p> cout<<endl<<"請輸入開戶人姓名:";</p><p><b> cin>>nam;</b
63、></p><p> cout<<endl<<"請輸入開戶密碼:";</p><p> cin>>passw;</p><p> cout<<endl<<"請輸入存入金額:";</p><p><b> cin>&
64、gt;m;</b></p><p> while(m<=0)</p><p><b> {</b></p><p> cout<<"請輸入正確的數(shù)字!"<<endl;</p><p><b> cin>>m;</b>&
65、lt;/p><p><b> }</b></p><p> consumer * acc = new consumer(id,nam,passw,m); </p><p> account[acnum] = acc; </p><p> cout<<"開戶成功!!"<<en
66、dl<<endl; </p><p><b> acnum++;</b></p><p><b> save();</b></p><p> cin.get();</p><p><b> return;</b></p><p>&l
67、t;b> }</b></p><p> void YH::del_account()</p><p><b> {</b></p><p><b> int id;</b></p><p> cout<<endl<<"請輸入你要注銷的帳戶
68、號:";</p><p><b> cin>>id;</b></p><p> int flag = 1; </p><p> int i = 0; </p><p> while((i<acnum)&&(flag)) </p><p><
69、b> { </b></p><p> if(id == account[i]->get_id()) </p><p><b> { </b></p><p> flag = 0; </p><p><b> } </b></p><p>&l
70、t;b> else </b></p><p><b> { </b></p><p><b> i++; </b></p><p><b> } </b></p><p><b> } </b></p><p
71、><b> if(flag) </b></p><p><b> { </b></p><p> cout<<"帳號不存在!"<<endl<<endl; </p><p><b> return; </b></p>&
72、lt;p><b> } </b></p><p> for(int j=i;j<acnum;j++) </p><p><b> { </b></p><p> account[j] = account[j+1]; </p><p><b> } </b>
73、</p><p> account[acnum-1]=NULL; </p><p><b> acnum--; </b></p><p> cout<<"注銷成功!!"<<endl<<endl; </p><p><b> save();</
74、b></p><p> cin.get();</p><p><b> return; </b></p><p><b> } </b></p><p> void consumer::change_passwd()</p><p><b> {&l
75、t;/b></p><p> string pwd,repwd;</p><p> cout<<"請輸入新密碼:";</p><p><b> cin>>pwd;</b></p><p> cout<<"請再輸入一次新密碼:";&l
76、t;/p><p> cin>>repwd;</p><p> if(pwd!=repwd)</p><p> cout<<"你輸入的兩次密碼不一樣,請重新輸入!"<<endl;</p><p> passwd=pwd;</p><p> cout<&l
77、t;"密碼修改成功,請牢記!"<<endl;cin.get(); </p><p><b> }</b></p><p> void consumer::fetchmoney()</p><p><b> {</b></p><p><b> flo
78、at m;</b></p><p><b> char ch;</b></p><p><b> do</b></p><p><b> {</b></p><p> cout<<endl<<"你要取多少錢:"&l
79、t;<"$>"<<endl ;//__page_break__</p><p><b> cin>>m;</b></p><p> while(m<=0)</p><p><b> {</b></p><p> cout<&
80、lt;"請輸入正確的數(shù)字!"<<endl;</p><p> cout<<"$>";</p><p><b> cin>>m;</b></p><p><b> }</b></p><p> if(money&
81、lt;m)</p><p><b> {</b></p><p> cout<<"對不起,你的余額不足!"</p><p><b> <<endl;</b></p><p><b> }</b></p><
82、p><b> else</b></p><p> {money=money-m;</p><p> cout<<endl<<"操作成功,請收好錢!"</p><p><b> <<endl;</b></p><p><b&g
83、t; }</b></p><p> cout<<"是否要繼續(xù)該項操作:(Y/N) "</p><p><b> <<endl;</b></p><p> cout<<"$ >";</p><p><b> c
84、in>>ch;</b></p><p> while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')</p><p><b> {</b></p><p> cout<<
85、;"$ >";</p><p><b> cin>>ch;</b></p><p><b> }</b></p><p> }while(ch=='y'||ch=='Y');</p><p><b> }<
86、/b></p><p> void consumer::savemoney()</p><p><b> {</b></p><p><b> float c;</b></p><p><b> char ch;</b></p><p>&
87、lt;b> do</b></p><p><b> {</b></p><p> cout<<endl<<"你要存多少錢:"<<"$>"<<endl ;</p><p><b> cin>>c;</
88、b></p><p> while(c<=0)</p><p><b> {</b></p><p> cout<<"請輸入正確的數(shù)字!"<<endl;</p><p> cout<<"$>";</p>&
89、lt;p><b> cin>>c;</b></p><p><b> }</b></p><p> money=money+c;</p><p> cout<<"操作已成功!"<<endl;</p><p> cout<&
90、lt;"是否要繼續(xù)該項操作:(Y/N) "<<endl;</p><p> cout<<"$ >";</p><p><b> cin>>ch;</b></p><p> while(ch!='n'&&ch!='N
91、39;&&ch!='Y'&&ch!='y')</p><p><b> {</b></p><p> cout<<"$ >";</p><p><b> cin>>ch;</b></p>&
92、lt;p><b> }</b></p><p> }while(ch=='y'||ch=='Y');</p><p><b> }</b></p><p> void consumer::display()</p><p> {system("
93、;cls"); </p><p> cout<<"**********************************"<<endl;</p><p> cout<<"*"<<endl;</p><p> cout<<"* 用戶姓名:&q
94、uot;<<name<<endl;</p><p> cout<<"* 帳號: "<<ID<<endl;</p><p> cout<<"* 余額: "<<money<<endl;</p><p> cout&l
95、t;<"**********************************"<<endl;</p><p><b> }</b></p><p> void YH::exitYH()</p><p><b> {</b></p><p> cout&l
96、t;<endl<<"感謝你對本銀行儲蓄管理系統(tǒng)的支持,歡迎下次光臨!"<<endl;</p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> 七.程序運行結(jié)果</b></p>
97、<p><b> 心得</b></p><p> 編寫程序的過程并不簡單,在編寫過程中也遇到了各種各樣的困難,開始時存在很多編寫錯誤,也很難找出錯誤出處,只有經(jīng)過多番檢查、努力才能夠編寫出成功的程序。完成程序的編寫,決不意味著萬事大吉。你認(rèn)為萬無一失的程序,實際上機運行時可能不斷出現(xiàn)麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯 誤,也能夠順利運行,但是運行結(jié)果
98、顯然是錯誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無法發(fā)現(xiàn)這種程序邏輯錯誤,只能靠自己的上機經(jīng)驗分析判斷錯誤所在。</p><p><b> 參考文獻:</b></p><p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(C/C++描述)</p><p><b> 數(shù)據(jù)結(jié)構(gòu)</b></p><p> C++面向?qū)ο蟪绦蛟O(shè)計&l
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀行活期儲蓄賬戶管理課程設(shè)計
- 活期儲蓄帳目管理系統(tǒng)課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-活期儲蓄賬目管理
- 課程設(shè)計(數(shù)據(jù)結(jié)構(gòu))報告--活期儲蓄賬目管理
- 活期儲蓄賬目管理系統(tǒng)doc
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--趣味問題之八皇后 活期儲蓄帳目管理
- c++課程設(shè)計---銀行賬戶管理系統(tǒng)程序
- c++課程設(shè)計--c++程序設(shè)計語言
- c++課程設(shè)計-- c++面向?qū)ο蟪绦蛟O(shè)計
- c++程序設(shè)計課程設(shè)計報告
- c++課程設(shè)計---吃豆子游戲程序
- 《c++程序設(shè)計課程設(shè)計——復(fù)數(shù)類》
- 《c++語言程序設(shè)計》課程設(shè)計報告
- 《程序設(shè)計語言(c++)》課程設(shè)計
- c++課程設(shè)計--設(shè)計菜單選擇程序
- 基于c++的教師排課程序課程設(shè)計
- c++課程設(shè)計--學(xué)生社團管理程序
- 活期儲蓄客戶價值隨機模型構(gòu)建及應(yīng)用.pdf
- 規(guī)模攀升至8000億 貨基大戰(zhàn)活期儲蓄
評論
0/150
提交評論