數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(活期儲(chǔ)蓄帳目管理文章編輯__) 報(bào)告

上傳人:a**** 文檔編號(hào):139129634 上傳時(shí)間:2022-08-22 格式:DOC 頁(yè)數(shù):58 大小:522KB
收藏 版權(quán)申訴 舉報(bào) 下載
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(活期儲(chǔ)蓄帳目管理文章編輯__) 報(bào)告_第1頁(yè)
第1頁(yè) / 共58頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(活期儲(chǔ)蓄帳目管理文章編輯__) 報(bào)告_第2頁(yè)
第2頁(yè) / 共58頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(活期儲(chǔ)蓄帳目管理文章編輯__) 報(bào)告_第3頁(yè)
第3頁(yè) / 共58頁(yè)

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(活期儲(chǔ)蓄帳目管理文章編輯__) 報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(活期儲(chǔ)蓄帳目管理文章編輯__) 報(bào)告(58頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 數(shù)據(jù)結(jié)構(gòu) 課 程 設(shè) 計(jì) 報(bào) 告 學(xué) 院: 信息科學(xué)與工程學(xué)院 專業(yè)班級(jí): 計(jì) 科 0701班 姓 名: 吳思琴 學(xué) 號(hào): 0902070108 指導(dǎo)老師: 余 臘 生 日 期: 2021-01-09 【題目】 1.活期儲(chǔ)蓄帳目管理 活期儲(chǔ)蓄處理中,儲(chǔ)戶開戶、銷戶、存入、支出活動(dòng)頻繁,系統(tǒng)設(shè)計(jì)要求: 1) 能比擬迅速地找到儲(chǔ)戶的帳戶,以實(shí)現(xiàn)存款、取款記賬; 2) 能比擬簡(jiǎn)單,迅速地實(shí)現(xiàn)插入和刪除,以實(shí)

2、現(xiàn)開戶和銷戶的需要 5. 文章編輯** 功能:輸入一頁(yè)文字,程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)。 靜態(tài)存儲(chǔ)一頁(yè)文章,每行最多不超過(guò)80 個(gè)字符,共N 行;要求〔1〕分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章 總字?jǐn)?shù);〔2〕統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);〔3〕刪除某一子串,并將后面的字符前移。 存儲(chǔ)結(jié)構(gòu)使用線性表,分別用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能; 輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)。 輸出形式:〔1〕分行輸出用戶輸入的各行字符;〔2〕分4 行輸出"全部字母數(shù)"、"數(shù)字個(gè)數(shù)"、"空格個(gè)數(shù)"、"文章總字 數(shù)"〔3〕輸出刪

3、除某一字符串后的文章;〔4〕盡可能使用圖形界面 第一章 活期儲(chǔ)蓄帳目管理 Ⅰ. 問(wèn)題描述 1.活期儲(chǔ)蓄帳目管理 活期儲(chǔ)蓄處理中,儲(chǔ)戶開戶、銷戶、存入、支出活動(dòng)頻繁,系統(tǒng)設(shè)計(jì)要求: 1) 能比擬迅速地找到儲(chǔ)戶的帳戶,以實(shí)現(xiàn)存款、取款記賬; 2) 能比擬簡(jiǎn)單,迅速地實(shí)現(xiàn)插入和刪除,以實(shí)現(xiàn)開戶和銷戶的需要. Ⅱ. 需求分析: 本演示程序用c-free編寫,完成銀行管理系統(tǒng)的生成,儲(chǔ)戶開戶、銷戶、存入、支出。  ?、?輸入的形式和輸入值的范圍:開戶時(shí)自定義輸入用戶賬號(hào)、用戶姓名、密碼、及開戶金額;用戶登陸時(shí)輸入正確的賬號(hào)及密碼,完成登陸后即可進(jìn)行存款、取

4、款、轉(zhuǎn)賬、修改密碼、及銷戶。 ?、?輸出的形式:在所有三種操作中都顯示操作是否正確以及相應(yīng)操作后的內(nèi)容。其中輸入錯(cuò)誤后回到主頁(yè)面,可繼續(xù)選擇操作 ?、?程序所能到達(dá)的功能: 用戶開戶 賬戶登陸〔存款、取款、轉(zhuǎn)賬、修改密碼〕 賬號(hào)注銷 ④ 測(cè)試數(shù)據(jù): Ⅲ. 概要設(shè)計(jì): 1) .本程序主要包含9個(gè)函數(shù) 1. 賬戶開戶函數(shù): set_account(); 2. 賬戶登陸函數(shù): enter_account(); 3. 銷戶函數(shù): del_account() 4. 轉(zhuǎn)賬函數(shù): transfer(int); 5. 存款函數(shù): savemoney(); 6. 取款函數(shù):

5、 fetchmoney(); 7. 修改密碼函數(shù): change_passwd() 8. 文件存儲(chǔ)函數(shù): save(); 9. 文件翻開函數(shù)load(); 2〕.各函數(shù)關(guān)系如下: 主 函 數(shù) 賬戶開戶 賬戶登錄 賬戶注銷 存 款 取 款 修改密碼 轉(zhuǎn) 賬 Ⅳ.詳細(xì)設(shè)計(jì) 1).定義操作類模板 class YH { public: YH(); void set_account();//銀行開戶 void del_account(); void transfer

6、(int); //轉(zhuǎn)賬 void enter_account(); void addmoney(int,float); void exitYH();// 退出系統(tǒng) void functionshow();// 功能界面 void save(); void load(); protected: consumer *account[20]; static int acnum; //賬戶數(shù) }; 2〕.定義結(jié)點(diǎn)類模板 class consumer:public YH { public: friend class

7、 YH; consumer(int id,string Name,string PassWord,float m) { ID=id;name=Name;money=m;passwd=PassWord; } consumer(){ID=0;name='0';money=0;passwd='0';} int get_id(){return ID;} void savemoney(); // 存錢 string get_passwd(){return passwd;} // 取得密碼

8、 void display(); void fetchmoney(); //取錢 void change_passwd(); //修改密碼 void add_money(float); void dec_money(float); float get_money(); private: int ID; //開戶帳號(hào) string passwd; // 用戶密碼 string name; // 用戶姓名 float money; }; 3〕.定義根本操作 voi

9、d YH::set_account() { int id; string nam; string passw; float m; cout<>id; cout<>nam; cout<>passw; cout<>m;

10、 while(m<=0) { cout<<"請(qǐng)輸入正確的數(shù)字!"<>m; } consumer * acc = new consumer(id,nam,passw,m); account[acnum] = acc; cout<<"開戶成功!!"<

11、 cin>>id; int flag = 1; int i = 0; while((iget_id()) flag = 0; else i++; } if(flag) { cout<<"帳號(hào)不存在!"<>passw; if(passw!=account[i]->get_passwd()) return; account[i]->di

12、splay();cin.get();cin.get(); int n; do{system("cls"); cout<<"請(qǐng)選擇你要進(jìn)行的操作:"<>n; switch(n) {case 1: account[i]->display();break; case 2: account[i]->fetchmoney();save();break; case 3:account[i]

13、->savemoney();save();break; case 4:account[i]->change_passwd();save();break; case 5:transfer(i);save();break; case 6:return; }cin.get();cin.get(); } while(1); }// enter_account 3).修改密碼 void consumer::change_passwd() { string pwd,repwd; cout<<"請(qǐng)輸入新密碼:"; cin>>pwd; cout<<"請(qǐng)?jiān)佥斎胍淮涡旅艽a:"; ci

14、n>>repwd; if(pwd!=repwd) cout<<"你輸入的兩次密碼不一樣,請(qǐng)重新輸入!"<"<>m; while(m<=0) { cout<<"請(qǐng)輸入正確的數(shù)字!"<

15、ut<<"$>"; cin>>m; } if(money"; cin>>ch; while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y') { cout<<"$ >"; cin>>ch; } }while(ch=='y'||ch=='Y')

16、; }// fetchmoney 4).存款 void consumer::savemoney() { float c; char ch; do { cout<"<>c; while(c<=0) { cout<<"請(qǐng)輸入正確的數(shù)字!"<"; cin>>c; } money=money+c; cout<<"操作已成功!"<

17、"; cin>>ch; while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y') { cout<<"$ >"; cin>>ch; } }while(ch=='y'||ch=='Y'); }// savemoney 5).轉(zhuǎn)賬 void YH::transfer(int x) {int id; cout<<"請(qǐng)輸入帳號(hào):"; cin>>id; int flag = 1; int i = 0; while((iget_id()) flag = 0;

18、 else i++; } if(flag) { cout<<"帳號(hào)不存在!"<>b; while(b<=0) { cout<<"請(qǐng)輸入正確的數(shù)字!"<"; cin>>b; } if(account[x]->get_money()

19、; else {account[x]->dec_money(b);account[i]->add_money(b);} return; }//transfer Ⅴ.測(cè)試分析 測(cè)試數(shù)據(jù)及測(cè)試結(jié)果 1. 用戶開戶: 輸入: 開戶賬號(hào):1234567 開戶人姓名:liyan 開戶密碼:123456 存入金額:555 輸出:開戶成功! 2. 用戶登陸 *輸入: 賬號(hào):1234567 輸入密碼:123456 〔在賬號(hào)和密碼都正確的情況下 輸出: 用戶姓名:liyan 賬號(hào):12

20、34567 余額:555 否那么返回主菜單重新選擇。 *用戶登陸后: 1).查看信息 2).取款 3).存款 4).修改密碼 5).轉(zhuǎn)賬 6).返回 選擇人一項(xiàng)操作即可。 3.賬戶注銷 *輸入: 賬號(hào):1234567 輸入密碼:123456 〔在賬號(hào)和密碼都正確的情況下 輸出:注銷成功! 否那么返回主菜單重新選擇。 Ⅵ.用戶使用說(shuō)明 1.本程序的運(yùn)行環(huán)境為DOS操作系統(tǒng),執(zhí)行文件為: 2.進(jìn)入演示程序后即將文本方式的用戶界面:如圖: 3.選擇1,進(jìn)行開戶,按提示依次操作,完成后返回主菜單可再次進(jìn)行選

21、擇: 3.選擇2,賬戶登陸,登陸成功后顯示賬戶信息,然后可選擇相關(guān)操作: 賬號(hào)及密碼都正確會(huì)顯示賬戶信息: 按任意鍵進(jìn)入相關(guān)操作菜單: 在上述操作后再查詢信息: 修改密碼: 3. 選擇3,注銷賬戶: 4. 選擇4,退出該系統(tǒng): Ⅶ.本章小結(jié) 此題為本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的第一個(gè)題目,算是比擬簡(jiǎn)單的了,開始自己讀題時(shí),思路不是很清晰,經(jīng)老師把每個(gè)題目提示看一下后,豁然開朗,想到這個(gè)程序就是要應(yīng)用剛開學(xué)時(shí)學(xué)的單鏈表結(jié)構(gòu),每個(gè)儲(chǔ)戶一個(gè)結(jié)點(diǎn),一個(gè)結(jié)點(diǎn)內(nèi)包含一個(gè)儲(chǔ)戶的各類信息

22、,如姓名,賬號(hào),金額等等,而對(duì)開戶和銷戶的操作就是對(duì)單鏈表結(jié)點(diǎn)的插入和刪除操作, 存款和取款就是對(duì)每個(gè)儲(chǔ)戶結(jié)點(diǎn)內(nèi)的金額域進(jìn)行加減操作。 在對(duì)銀行管理系統(tǒng)的結(jié)構(gòu)大概有個(gè)輪廓后便開始編寫代碼,在代碼運(yùn)行的過(guò)成中,并不是一帆風(fēng)順的,這也是平常練的不夠吧,經(jīng)過(guò)幾輪刪刪改改,終于做的差不多了,根本到達(dá)了老師的要求,但是還是有很多缺乏的地方。通過(guò)這次對(duì)銀行管理系統(tǒng)的編寫與調(diào)試,穩(wěn)固了單鏈表的知識(shí),鍛煉了實(shí)際操作能力,在以后的學(xué)習(xí)中將不斷學(xué)習(xí)新的知識(shí),在學(xué)習(xí)中穩(wěn)固,在學(xué)習(xí)不斷完善。 Ⅷ.參考文獻(xiàn) ?數(shù)據(jù)結(jié)構(gòu)?〔C語(yǔ)言版〕〔嚴(yán)蔚敏 吳偉民 編著〕 ?數(shù)據(jù)結(jié)構(gòu)——基于c++模板類的實(shí)現(xiàn)?〔余臘

23、生等編著〕 ?C和指針?〔Kenneth A. Reek 著 徐波 譯〕 Ⅸ.附錄〔源代碼〕 #include #include #include #include class consumer; class YH { public: YH(); void set_account();//銀行開戶 void del_account(); void transfer(int); //轉(zhuǎn)賬 void enter_account(); void addmoney(in

24、t,float); void exitYH();// 退出系統(tǒng) void functionshow();// 功能界面 void save(); void load(); protected: consumer *account[20];//賬戶數(shù) static int acnum; }; int YH::acnum=0; YH::YH() { for(int i=0;i<20;i++) { account[i] = NULL; } } class consumer:public YH

25、 { public: friend class YH; consumer(int id,string Name,string PassWord,float m) { ID=id;name=Name;money=m;passwd=PassWord; } consumer(){ID=0;name='0';money=0;passwd='0';} int get_id(){return ID;} void savemoney();// 取錢 string get_passwd() // 取

26、得密碼 { return passwd; } void display(); void fetchmoney(); //取錢 void change_passwd(); void add_money(float); void dec_money(float); float get_money(); private: int ID; //開戶帳號(hào) string passwd; // 用戶密碼 string name; // 用戶姓名 fl

27、oat money; }; void YH::save() {ofstream ofile("bankdat.dat",ios::out); ofstream outfile("bankdat.dat",ios::out); int n=0; outfile<ID<<" "; outfile<money<<" "; outfile<name<<" "; outfile<pas

28、swd<<" "; } outfile.close(); } void YH::load() {ifstream infile("bankdat.dat",ios::in); if(!infile) {cerr<<"讀取錯(cuò)誤,無(wú)資料!"<>acnum; for(;n>id; infile>>m; infile>>nam; infile>>passw;account[n]->pa

29、sswd; consumer * acc = new consumer(id,nam,passw,m); account[n] = acc; } infile.close(); cout<<"讀取資料正常!"<>id; int flag = 1; int i = 0; while((iget_id()) flag = 0; else i+

30、+; } if(flag) { cout<<"帳號(hào)不存在!"<>b; while(b<=0) { cout<<"請(qǐng)輸入正確的數(shù)字!"<"; cin>>b; } if(account[x]->get_money()

31、!"<dec_money(b); account[i]->add_money(b); } return; } void consumer::add_money(float x) {money=x+money;} void consumer::dec_money(float x) {money=money-x;} void YH::addmoney(int x,float y) {account[x]->money=account[x]->money-y; } flo

32、at consumer::get_money() {return money;} void main() {YH yh; yh.functionshow(); } void YH::functionshow() { int n; do {system("cls"); cout<<"*******************銀行管理系統(tǒng)*********************"<

33、cout<<"****************************************************"; cout<"; cin>>n; while(n<1||n>4) { cout<<"請(qǐng)輸入正確的操作序號(hào)!"<"; cin>>n; } switch(n) { case 1: set_account(); break; ca

34、se 2:enter_account();break; case 3: del_account(); break; case 4: exitYH(); break; } cin.get(); } while(true); } void YH::enter_account() {int id; cout<<"請(qǐng)輸入帳號(hào):"; cin>>id; int flag = 1; int i = 0; // while((i

35、count[i]->get_id()) flag = 0; else i++; } if(flag) { cout<<"帳號(hào)不存在!"<>passw; if(passw!=account[i]->get_passwd()) return; account[i]->display();cin.get();cin.get(); int n; do{system("cls"); cout<<"請(qǐng)選擇你要進(jìn)行的操作:"<

36、>n; switch(n) {case 1: account[i]->display();break; case 2: account[i]->fetchmoney();save();break; case 3:account[i]->savemoney();save();break; case 4:account[i]->change_passwd();save();break

37、; case 5:transfer(i);save();break; case 6:return; }cin.get();cin.get(); } while(1); } void YH::set_account() { int id; string nam; string passw; float m; cout<>id; cout<>nam;

38、 cout<>passw; cout<>m; while(m<=0) { cout<<"請(qǐng)輸入正確的數(shù)字!"<>m; } consumer * acc = new consumer(id,nam,passw,m); account[acnum] = acc; cout<<"開戶成功!!"<

39、n.get(); return; } void YH::del_account() { int id; cout<>id; int flag = 1; int i = 0; while((iget_id()) { flag = 0; } else { i++; } } if(flag) { cout<<"帳號(hào)不存在!"<

40、l; return; } cout<<"請(qǐng)輸入密碼:"; string passw; cin>>passw; if(passw!=account[i]->get_passwd()) return; for(int j=i;j

41、nge_passwd() { string pwd,repwd; cout<<"請(qǐng)輸入新密碼:"; cin>>pwd; cout<<"請(qǐng)?jiān)佥斎胍淮涡旅艽a:"; cin>>repwd; if(pwd!=repwd) cout<<"你輸入的兩次密碼不一樣,請(qǐng)重新輸入!"<"<

42、l ;// cin>>m; while(m<=0) { cout<<"請(qǐng)輸入正確的數(shù)字!"<"; cin>>m; } if(money"; cin>>ch; while(ch!='n'&&ch!='N'&&ch!=

43、'Y'&&ch!='y') { cout<<"$ >"; cin>>ch; } }while(ch=='y'||ch=='Y'); } void consumer::savemoney() { float c; char ch; do { cout<"<>c; while(c<=0) { cout<<"請(qǐng)輸入正確的數(shù)字!"<"; cin>>c; } money=money+c; cout<<"操作已成功!"<

44、"; cin>>ch; while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y') { cout<<"$ >"; cin>>ch; } }while(ch=='y'||ch=='Y'); } void consumer::display() {system("cls"); cout<<"**********************************"<

45、<"*   用戶姓名:"<

46、章 文章編輯** Ⅰ. 問(wèn)題描述 功能:輸入一頁(yè)文字,程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)。 靜態(tài)存儲(chǔ)一頁(yè)文章,每行最多不超過(guò)80 個(gè)字符,共N 行;要求〔1〕分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章 總字?jǐn)?shù);〔2〕統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);〔3〕刪除某一子串,并將后面的字符前移。 存儲(chǔ)結(jié)構(gòu)使用線性表,分別用幾個(gè)子函數(shù)實(shí)現(xiàn)相應(yīng)的功能; 輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)。 輸出形式:〔1〕分行輸出用戶輸入的各行字符;〔2〕分4 行輸出"全部字母數(shù)"、"數(shù)字個(gè)數(shù)"、"空格個(gè)數(shù)"、"文章總字 數(shù)"〔3〕輸出刪除某一

47、字符串后的文章;〔4〕盡可能使用圖形界面 Ⅱ. 需求分析: 本演示程序用c-free編寫,完成文章編輯系統(tǒng)的生成,并實(shí)現(xiàn)其各個(gè)功能:   ①輸入數(shù)據(jù)的形式和范圍:可以輸入大寫、小寫的英文字母、任何數(shù)字及標(biāo)點(diǎn)符號(hào)。 ②輸出形式:〔1〕分行輸出用戶輸入的各行字符;〔2〕分4 行輸出"全部字母數(shù)"、"數(shù)字個(gè)數(shù)"、"空格個(gè)數(shù)"、"文章總字?jǐn)?shù)"〔3〕輸出刪除某一字符串后的文章; 輸出的形式:在所有三種操作中都顯示操作是否正確以及相應(yīng)操作后的內(nèi)容。其中輸入錯(cuò)誤后回到主頁(yè)面,可繼續(xù)選擇操作  ③ 程序所能到達(dá)的功能: 〔1〕分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);〔2〕統(tǒng)計(jì)

48、某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);〔3〕刪除某一子串,并將后面的字符前移。 ④ 測(cè)試數(shù)據(jù): Ⅲ. 概要設(shè)計(jì): 1.本程序主要包含5個(gè)函數(shù) 10. 賬戶開戶函數(shù): InitList(Node *L); 11. 賬戶登陸函數(shù): CountStr(Node *L); 12. 銷戶函數(shù): DelStr(Node *L) 13. 轉(zhuǎn)賬函數(shù): print1(Node *L); 14. 存款函數(shù): print2(Node *L, int &p1, int &p2, int &p3, int &n); 2.各函數(shù)關(guān)系如下: 主 函 數(shù)

49、 統(tǒng)計(jì)中英文字母和空格數(shù)以及整篇文章總字?jǐn)?shù) 統(tǒng)計(jì)某一字符串在文章中出現(xiàn)次數(shù) 刪 除 某 一 子 串 分 行 輸 出 用 戶 輸 入 的 各 行 字 符 Ⅳ.詳細(xì)設(shè)計(jì) 1).定義結(jié)構(gòu)類型 struct Node{ char letter; Node *next; }; 2〕.輸入文章,并逐個(gè)存儲(chǔ)到鏈表 void InitList(Node *L) { //輸入以“*〞結(jié)束的文章 cout<<"輸入一頁(yè)文字(以#結(jié)束): "<letter = getchar()) != '*') {

50、 L->next = new Node; L = L->next; } L->next = NULL; }// InitList 3〕.統(tǒng)計(jì)指定字符串 void CountStr(Node *L) { //統(tǒng)計(jì)某一字符串在文章中出現(xiàn)次數(shù) int n = 0; //計(jì)數(shù)器 char s[80], *q; Node *p; cout<<"輸入一字符串: "; cin>>s; while(L->next) { for (p = L, q = s; *q != '\0' && p->next; p = p->next, q

51、++) if (p->letter != *q) break; if (*q == '\0') n++; L = L->next; } cout<<"字符串 "<>s; if (H->letter == *s) { for (p = H-

52、>next, q = s+1; *q != '\0' && p->next; p = p->next, q++) if (p->letter != *q) break; if (*q == '\0') H = p; } while(L->next) { for (p = L->next, q = s; *q != '\0' && p->next; p = p->next, q++) if (p->letter != *q) break; if (*q == '\0') L->next = p; else L = L->next; }

53、return H; } // DelStr 5). 分行輸出 void print1(Node *L) { //分行輸出用戶輸入的各行字符 while(L->next) { cout<letter; L = L->next; } cout<next;

54、 L = L->next, n++) if(isalpha(L->letter)) p1++; else if(isdigit(L->letter)) p2++; else if(L->letter == ' ') p3++; else if(L->letter == '\n') n--; cout<<"\n全部字母數(shù): "<

55、試結(jié)果 輸入:aaa bbb ccc ddd eee fff ggg 1234 aa bb cc 123 *(回車) 顯示:1:統(tǒng)計(jì)中英文字母和空格數(shù)以及整篇文章總字?jǐn)?shù)2:統(tǒng)計(jì)某一字符串在文章中出現(xiàn)次數(shù) 3:刪除某一子串 4:分行輸出用戶輸入的各行字符 5:退出 輸入:1 顯示: 全部字母數(shù): 27 數(shù)字個(gè)數(shù):7 空格個(gè)數(shù):10 文章總字?jǐn)?shù): 44 輸入:2 aa 顯示:字符串a(chǎn)a出現(xiàn)3次 輸入:3 aa〔刪除字符串a(chǎn)a〕 輸入:4 顯示:a bbb ccc ddd eee fff gg

56、g 1234 bb cc 123 輸入:5 顯示:退出系統(tǒng) Ⅵ.用戶使用說(shuō)明 1.本程序的運(yùn)行環(huán)境為DOS操作系統(tǒng),執(zhí)行文件為: 2.進(jìn)入演示程序后即將文本方式的用戶界面:如圖: 3.按照提示輸入字符后:〔以*結(jié)束〕 選擇1; 選擇2: 選擇3:刪除文章中所有字符串a(chǎn)a后 選擇:4 選擇5 :退出 Ⅶ.本章小結(jié) 本章選做的是第五題,文章編輯,編寫程序時(shí)依然用的單鏈表結(jié)構(gòu),一個(gè)字符一個(gè)結(jié)點(diǎn),后來(lái)意識(shí)到這樣做的話可能效率不高。 題目要求分別統(tǒng)計(jì)出其中英文字母數(shù)和空格數(shù)及整篇文章總字?jǐn)?shù);

57、統(tǒng)計(jì)某一字符串在文章中出現(xiàn)的次數(shù),并輸出該次數(shù);刪除某一子串,并將后面的字符前移。因?yàn)槭怯脝捂湵泶鎯?chǔ)的每個(gè)字符,想到統(tǒng)計(jì)數(shù)字的話就可以對(duì)單鏈表進(jìn)行查找,遇到滿足條件的就將對(duì)應(yīng)的計(jì)數(shù)器加1,查找,刪除功能的實(shí)現(xiàn)都是運(yùn)用的單鏈表的查找刪除等根本操作。 在不斷地進(jìn)行書面設(shè)計(jì)和上機(jī)調(diào)試的過(guò)程中,認(rèn)識(shí)到掌握設(shè)計(jì)程序的思路非常重要,要正確處理算法與語(yǔ)法的關(guān)系,算法是程序的核心,是靈魂,語(yǔ)法是外殼是工具。但是光掌握語(yǔ)法也是不夠的,應(yīng)該還要把重點(diǎn)放在解題思路上。 在老師的幫助下,在同學(xué)之間互相幫助,共同探討下,我們收獲頗多,不僅復(fù)習(xí)穩(wěn)固了以前所學(xué)的知識(shí),學(xué)到了一些新知識(shí),新方法,改良了很多缺乏,還

58、使我們將這些理論知識(shí)運(yùn)用到實(shí)際中,掌握了很多上機(jī)技巧。雖然在此過(guò)程中,困難重重,但對(duì)于我們是一次很大的提高過(guò)程,也表達(dá)了團(tuán)結(jié)協(xié)作之力量。 Ⅷ.參考文獻(xiàn) ?數(shù)據(jù)結(jié)構(gòu)?〔C語(yǔ)言版〕〔嚴(yán)蔚敏 吳偉民 編著〕 ?數(shù)據(jù)結(jié)構(gòu)——基于c++模板類的實(shí)現(xiàn)?〔余臘生等編著〕 ?C和指針?〔Kenneth A. Reek 著 徐波 譯〕 Ⅸ.附錄〔源代碼〕 #include #include #include struct Node{ char letter; Node *next;

59、 }; void InitList(Node *L) { //輸入以“*〞結(jié)束的文章 cout<<"輸入一頁(yè)文字(以*結(jié)束): "<letter = getchar()) != '*') { L->next = new Node; L = L->next; } L->next = NULL; } void CountStr(Node *L) { //統(tǒng)計(jì)某一字符串在文章中出現(xiàn)次數(shù) int n = 0; char s[80], *q; Node *p; cout<

60、<"輸入一字符串: "; cin>>s; while(L->next) { for (p = L, q = s; *q != '\0' && p->next; p = p->next, q++) if (p->letter != *q) break; if (*q == '\0') n++; L = L->next; } cout<<"字符串 "<

61、*q; Node *p; cout<<"輸入該子串: "; cin>>s; if (H->letter == *s) { for (p = H->next, q = s+1; *q != '\0' && p->next; p = p->next, q++) if (p->letter != *q) break; if (*q == '\0') H = p; } while(L->next) { for (p = L->next, q = s; *q != '\0' && p->next; p = p->next, q++) if

62、 (p->letter != *q) break; if (*q == '\0') L->next = p; else L = L->next; } return H; } void print1(Node *L) { //分行輸出用戶輸入的各行字符 while(L->next) { cout<letter; L = L->next; } cout<

63、//統(tǒng)計(jì)中英文字母和空格數(shù)以及整篇文章總字?jǐn)?shù) n = p1 = p2 = p3 = 0; for( ; L->next; L = L->next, n++) if(isalpha(L->letter)) p1++; else if(isdigit(L->letter)) p2++; else if(L->letter == ' ') p3++; else if(L->letter == '\n') n--; cout<<"\n全部字母數(shù): "<

64、 cout<<"\n文章總字?jǐn)?shù): "<>choice; switch(choice) { case 1:print2(L, p1, p2, p3, n);break; case 2:CountStr(L);break; case 3:DelStr(L); break; case 4:print1(L); break; case 5:exit(0); } }while(choice); } ****************************END***************************

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!