版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 選題2名稱: 同學(xué)錄系統(tǒng)</p><p><b> 目 錄</b></p><p><b> 課題目標(biāo)</b></p><p> 1.1 程序功能簡(jiǎn)介</p><p> 1.2 課程設(shè)計(jì)要求</p><p> 1.3 評(píng)定難易級(jí)別</p
2、><p><b> 具體實(shí)現(xiàn)</b></p><p> 2.1 程序總體方案</p><p><b> 2.1.1開發(fā)平臺(tái)</b></p><p> 2.1.2程序結(jié)構(gòu)或流程圖</p><p> 2.2 關(guān)鍵代碼及注釋</p><p><
3、;b> 程序截圖</b></p><p><b> 調(diào)試報(bào)告</b></p><p> ?。ㄔ谠O(shè)計(jì)和實(shí)現(xiàn)過程所遇到的問題和解決,請(qǐng)如實(shí)填寫)…</p><p><b> 總體小結(jié)</b></p><p> ?。ㄔ谡麄€(gè)設(shè)計(jì)過程中的心得體會(huì))</p><p&g
4、t;<b> 分工介紹</b></p><p> ?。ㄊ仟?dú)立完成還是合作完成,若為合作完成,說明合作者以及之間的具體分工)…</p><p><b> 一、課題目標(biāo)</b></p><p> 1.1 程序功能簡(jiǎn)介</p><p> 此程序是一個(gè)簡(jiǎn)單的同學(xué)錄系統(tǒng),具有導(dǎo)入同學(xué)信息,存儲(chǔ),顯示、
5、新增、刪除、查詢、修改同學(xué)信息等功能,最主要的是,它是用雙向鏈表實(shí)現(xiàn)的,所以新增和刪除的效率非常的高。</p><p> 其菜單分為:顯示所有同學(xué)錄信息、新增一個(gè)同學(xué)錄信息、刪除一個(gè)同學(xué)錄信息、查詢系統(tǒng)、修改同學(xué)錄信息,尋求幫助等。</p><p> 1.2 課程設(shè)計(jì)要求</p><p> 用雙向鏈表完成一個(gè)同學(xué)錄系統(tǒng)</p><p>
6、 實(shí)現(xiàn)同學(xué)錄所該有的功能,并方便用戶的使用!</p><p> 1.3 評(píng)定難易級(jí)別</p><p><b> A組</b></p><p><b> 二、具體實(shí)現(xiàn)</b></p><p> 2.1 程序總體方案</p><p><b> 2.1.1開
7、發(fā)平臺(tái)</b></p><p> 操作系統(tǒng):Windows 7</p><p> 開發(fā)工具:visual studio 2010</p><p> 2.1.2程序結(jié)構(gòu)或流程圖</p><p><b> 主函數(shù)的流程圖:</b></p><p> 2.2 所做改進(jìn) </
8、p><p><b> 2.2.1改進(jìn)一</b></p><p> 2.2.1.1 改進(jìn)方案</p><p> 基本上這個(gè)程序都是自己寫的,改進(jìn)也只是對(duì)原有要求的添加而已。</p><p> 先說說這個(gè)程序怎么實(shí)現(xiàn)所有功能的吧。</p><p> 2.2.1.2 具體實(shí)現(xiàn)</p>
9、<p> 進(jìn)入程序,首先是讀取txt文件的信息,然后顯示的是菜單。再然后一目了然的有各種功能。</p><p> 總體是用雙向鏈表做的。</p><p> 新增結(jié)點(diǎn)信息:即添加一個(gè)鏈表結(jié)點(diǎn)信息。</p><p> 顯示所有信息:是先根據(jù)學(xué)號(hào)排序,然后從頭至尾分屏顯示所有信息,鏈表依次讀取。</p><p> 刪除操作:
10、 即鏈表操作,刪除一個(gè)結(jié)點(diǎn).</p><p> 查詢操作: 按要求進(jìn)行各種情況查詢,總體思想是線性的比較,如果有匹配的字符串就輸出(這里面用的是string.find函數(shù))。</p><p> 修改同學(xué)錄: 先根據(jù)查找操作找到這個(gè)信息,再修改當(dāng)前結(jié)點(diǎn)信息</p><p> 尋求幫助: 作為一些運(yùn)用該程序的說明而存在。可以對(duì)用戶一些較常見的疑問
11、做出回答。</p><p> 退出程序: 退出前會(huì)保存所有的信息至txt文件。</p><p><b> 2.2.2改進(jìn)二</b></p><p> 2.2.2.1 改進(jìn)方案</p><p> 為了使我的查詢更完善,我的程序做到了部分字符串匹配的查詢方式,即比如在輸入姓名查詢的時(shí)候,如果輸入的是姓名的姓或者
12、名,那么與之匹配的所有信息都會(huì)顯示,而不是顯示結(jié)果不存在。</p><p> 同樣的,還可以根據(jù)自己一開始對(duì)該同學(xué)的評(píng)價(jià)做查詢。</p><p> 另外,我設(shè)置了幫助選項(xiàng),可以為用戶解答很多常見的疑問??梢苑奖阌脩?。</p><p> 2.2.2.2 具體實(shí)現(xiàn)</p><p> 運(yùn)用STL string類里面的find( )函數(shù);把我
13、的成員全都定義成string類的,最后再讓用戶輸入所需查找的字符串(也是一個(gè)string類),然后從到之為用find函數(shù)查,如njust[i].name.find(temp)!=string::npos;則加入到輸出。</p><p> 在所有的查詢方式里使用相同的方法,即可實(shí)現(xiàn),所有的查詢都帶有子串查找功能。</p><p><b> STL確實(shí)方便</b>&l
14、t;/p><p><b> 三、程序運(yùn)行截圖</b></p><p><b> 進(jìn)入程序:</b></p><p><b> 進(jìn)入菜單:</b></p><p><b> 分屏顯示</b></p><p><b>
15、查詢界面:</b></p><p><b> 修改同學(xué)錄信息:</b></p><p><b> 幫助界面:</b></p><p><b> 四、調(diào)試報(bào)告</b></p><p> 調(diào)試還算順利,只是一開始容錯(cuò)方面做得比較簡(jiǎn)陋。后來改好了。再又就是一開始功
16、能比較少,后來慢慢一步步完善,變成現(xiàn)在這樣,還算可以用用的程序。</p><p><b> 五、總體小結(jié)</b></p><p> 經(jīng)過這么多天的編程,我了解到了要想完成一個(gè)比較大的程序,需要先根據(jù)程序的要求,確定設(shè)計(jì)思路,畫出流程圖,把想要用到的函數(shù)都寫出其函數(shù)原型說明。然后根據(jù)自己已經(jīng)寫好的函數(shù)原型說明。一步步把函數(shù)都實(shí)現(xiàn)。即分別寫出每一個(gè)功能所需要的具體的函
17、數(shù)。</p><p> 這樣,有一個(gè)清晰的思路,就比較有調(diào)理,有了調(diào)理,也不容易忘記一些想要實(shí)現(xiàn)的東西。然后,才會(huì)有一個(gè)層次分明,客戶友好的程序。</p><p> 另外,類的封裝和雙向鏈表弄起來還是比較繁瑣的。但是,把問題一個(gè)個(gè)搞清楚以后,問題就自然而然的被簡(jiǎn)化了。</p><p> 另外編程序還要注重細(xì)節(jié),任意一個(gè)看似細(xì)微的的錯(cuò)誤,都可能會(huì)引起一連串的er
18、ror,所以每次從鍵盤讀入數(shù)據(jù)或者數(shù)據(jù)的處理的環(huán)節(jié)都要注意合法性的檢查。</p><p> 最后不得不提的是,我加入ACM隊(duì),在暑假做了大量的題目聯(lián)系,所以在調(diào)試方面沒有出現(xiàn)什么打問題,都算是比較輕松的過關(guān)了。熟練的寫程序,對(duì)我們著實(shí)是非常重要的!</p><p><b> 六、分工介紹</b></p><p><b> 獨(dú)立完
19、成。</b></p><p> #pragma once</p><p> #include"student.h"</p><p> struct node //鏈表node結(jié)點(diǎn)</p><p><b> {</b></p><
20、;p> student &stu;</p><p> node *next;</p><p> node *prev;</p><p> node(student & s)</p><p><b> :stu(s)</b></p><p><b> {&
21、lt;/b></p><p><b> }</b></p><p><b> };</b></p><p> class guanli</p><p><b> {</b></p><p><b> public:</b&
22、gt;</p><p> node * head_ptr;</p><p> node *tail_ptr;</p><p> node * current_ptr;</p><p> guanli(void);</p><p> ~guanli(void);</p><p> vo
23、id UserChoice(int);//用戶選擇</p><p> void InsertRecord();//插入信息</p><p> void InsertNode(node *);//插入新結(jié)點(diǎn)</p><p> void InsertNodeAtHead(node*);//插入頭結(jié)點(diǎn)</p><p> void Inser
24、tNodeAtEnd(node*);//插入尾結(jié)點(diǎn)</p><p> void ShowList();//顯示所有信息</p><p> void ShowSortedList1();//顯示排序后鏈表1</p><p> void ShowSortedList2();//顯示排序后鏈表2</p><p> void DeleteRe
25、cord();//刪除某條記錄</p><p> void DeleteNodeAtHead();//刪除頭結(jié)點(diǎn)</p><p> void DeleteNodeAtEnd();//刪除尾結(jié)點(diǎn)</p><p> void DeleteNodeAtMiddle();//在中間刪除</p><p> void DeleteNode();/
26、/刪除某個(gè)節(jié)點(diǎn)</p><p> void ChangeMes();//修改信息函數(shù)</p><p> bool VerifyDelete();//確認(rèn)刪除</p><p> void DeleteList();//釋放鏈表,保存至文件</p><p> void SearchChoice();//選擇查找方式</p>
27、<p> void ASearchByName();//A方式中的名字查找</p><p> void ASearchByStuNum();//A方式中的學(xué)號(hào)查找</p><p> void ASearchByDormNum();//A方式中的整個(gè)宿舍查找</p><p> void BSearchByStuNum();//B方式,按學(xué)號(hào)顯示個(gè)人詳
28、細(xì)信息</p><p> void LoadFile();//讀取文件</p><p> void SaveFile();//存至文件</p><p> void Help();//幫助提示函數(shù)</p><p> void UserInput();//用戶輸入備用</p><p><b> };&l
29、t;/b></p><p> #include "guanli.h"</p><p> #include<iostream></p><p> using namespace std;</p><p> guanli::guanli(void)</p><p><b&
30、gt; {</b></p><p><b> }</b></p><p> guanli::~guanli(void)</p><p><b> {</b></p><p><b> }</b></p><p> void gua
31、nli::UserChoice(int t)</p><p><b> {</b></p><p><b> switch(t)</b></p><p><b> {</b></p><p><b> case 0:</b></p>
32、<p> InsertRecord();//添加結(jié)點(diǎn)(OK)</p><p><b> break;</b></p><p><b> case 1:</b></p><p> ShowList();//顯示所有結(jié)點(diǎn)信息(OK)</p><p><b> break;&
33、lt;/b></p><p><b> case 2:</b></p><p> DeleteRecord();//刪除記錄 (OK)</p><p><b> break;</b></p><p><b> case 3:</b></p><
34、p> SearchChoice();//查找記錄(OK)</p><p><b> break;</b></p><p><b> case 4:</b></p><p> ChangeMes();</p><p><b> break;</b></p&g
35、t;<p><b> case 5:</b></p><p> Help();//幫助文件</p><p><b> break;</b></p><p><b> case 6:</b></p><p> SaveFile();</p>
36、<p> if(head_ptr!=NULL)</p><p> DeleteList();</p><p><b> break;</b></p><p><b> default :</b></p><p> cout<<"選擇無效,請(qǐng)重新輸入: &qu
37、ot;;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> void guanli::InsertRecord()</p><p><b>
38、{</b></p><p> char tt[15];</p><p> char temp_memory[300];</p><p> student *s=new student;</p><p> node * new_ptr=new node(*s);</p><p> if(new_pt
39、r!=NULL)</p><p><b> {</b></p><p> system("cls");</p><p> cout<<"同學(xué)姓名: ";</p><p> cin>>new_ptr->stu.fri_name;</p>
40、;<p> cout<<"郵箱:";</p><p> cin>>new_ptr->stu.e_mail;</p><p> cout<<"性別:";</p><p> cin>>new_ptr->stu.sex;</p><
41、p> cout<<"電話號(hào)碼:";</p><p> cin>>new_ptr->stu.phone_num;</p><p> cout<<"珍貴回憶有(請(qǐng)輸入一句話,不含空格,可用逗號(hào)分隔):";</p><p> cin>>new_ptr->stu
42、.memory;</p><p> InsertNode(new_ptr);</p><p> cin.ignore(20,'\n');</p><p> cout<<"是否繼續(xù)添加?Y/N"<<endl;</p><p> char te[30];</p>
43、<p> cin.getline(te,30);</p><p> if(!strcmp(te,"Y")||!strcmp(te,"y"))InsertRecord();</p><p><b> }</b></p><p><b> else</b></p
44、><p> cout<<"申請(qǐng)內(nèi)存空間失敗,不能創(chuàng)建新結(jié)點(diǎn)??!\n";</p><p> //system("cls");</p><p><b> }</b></p><p> void guanli::InsertNode(node *new_ptr)<
45、/p><p><b> {</b></p><p> //system("cls");</p><p> node * temp_ptr;</p><p><b> //若鏈表為空</b></p><p> if(head_ptr==NULL)<
46、;/p><p><b> {</b></p><p> new_ptr->next=new_ptr;</p><p> new_ptr->prev=new_ptr;</p><p> head_ptr=new_ptr;</p><p> tail_ptr=new_ptr;<
47、/p><p><b> return;</b></p><p><b> }</b></p><p><b> //只有一個(gè)節(jié)點(diǎn)</b></p><p> if(head_ptr->next==head_ptr)</p><p><b&g
48、t; {</b></p><p> if(new_ptr->stu.fri_name<head_ptr->stu.fri_name)</p><p> InsertNodeAtHead(new_ptr);</p><p><b> else </b></p><p> Insert
49、NodeAtEnd(new_ptr);</p><p><b> return ;</b></p><p><b> }</b></p><p> //多個(gè)節(jié)點(diǎn),自動(dòng)按姓名排序插入</p><p> if(head_ptr->next!=head_ptr)</p><
50、;p><b> {</b></p><p> current_ptr=head_ptr->next;</p><p> while((new_ptr->stu.fri_name>current_ptr->stu.fri_name)//比較姓名進(jìn)行排序</p><p> &&(current_
51、ptr!=head_ptr))//并且當(dāng)前結(jié)點(diǎn)不是頭結(jié)點(diǎn)(雙向鏈表的頭尾是相連的)</p><p> current_ptr=current_ptr->next;//繼續(xù)向后拓展結(jié)點(diǎn)</p><p> if(current_ptr==head_ptr)</p><p> InsertNodeAtEnd(new_ptr);//插入在鏈表尾</p>
52、;<p><b> else</b></p><p><b> {</b></p><p> temp_ptr=current_ptr->prev;//此時(shí),插入的結(jié)點(diǎn)在current結(jié)點(diǎn)和temp結(jié)點(diǎn)之間</p><p> temp_ptr->next=new_ptr;</p>
53、;<p> new_ptr->prev=temp_ptr;</p><p> current_ptr->prev=new_ptr;</p><p> new_ptr->next=current_ptr;</p><p><b> }</b></p><p><b> }
54、</b></p><p><b> }</b></p><p> void guanli::InsertNodeAtEnd(node*new_ptr)</p><p><b> {</b></p><p> new_ptr->next=head_ptr;</p>
55、<p> tail_ptr->next=new_ptr;</p><p> new_ptr->prev=tail_ptr;</p><p> head_ptr->prev=new_ptr;</p><p> tail_ptr=new_ptr;</p><p><b> }</b>
56、</p><p> void guanli::InsertNodeAtHead(node *new_ptr)</p><p><b> {</b></p><p> new_ptr->next=head_ptr;</p><p> new_ptr->prev=tail_ptr;</p>
57、<p> head_ptr->prev=new_ptr;</p><p> tail_ptr->next=new_ptr;</p><p> tail_ptr=new_ptr;</p><p><b> }</b></p><p> #include "guanli.h&quo
58、t;</p><p> #include<iostream></p><p> #include<iomanip></p><p> using namespace std;</p><p> void guanli::ShowList()</p><p><b> {<
59、;/b></p><p> system("cls");</p><p><b> int n;</b></p><p> cout<<"\t\t\t下面將顯示所有同學(xué)錄信息\n\n\t\t\t請(qǐng)輸入每屏幕顯示學(xué)生的個(gè)數(shù)\n\n\t\t\t每顯示一屏幕暫停一次\n\n\t\t\t輸入的數(shù)不大
60、于20:\n";</p><p><b> cin>>n;</b></p><p> system("cls");</p><p><b> int i;</b></p><p> current_ptr=head_ptr;</p>&
61、lt;p> if(current_ptr!=NULL)</p><p><b> do</b></p><p><b> { </b></p><p><b> i=1;</b></p><p> cout<<setw(14)<<&quo
62、t;姓名"<<setw(8)<<"性別"<<setw(30)<<"郵箱"<<setw(20)<<"電話號(hào)碼"<<endl<<endl;</p><p><b> do</b></p><p><b
63、> {</b></p><p> cout<<setw(14)<<current_ptr->stu.fri_name<<setw(8)<<current_ptr->stu.sex;</p><p> cout<<setw(30)<<current_ptr->stu.e_mail
64、<<setw(20)<<current_ptr->stu.phone_num<<endl;</p><p> current_ptr=current_ptr->next;</p><p><b> i++;</b></p><p> }while(current_ptr!=head_ptr&
65、amp;&i<=n);</p><p> cout<<endl<<endl;</p><p> if(current_ptr!=head_ptr)</p><p><b> {</b></p><p> system("pause");</p>
66、<p> system("cls");</p><p><b> }</b></p><p> else cout<<"文件結(jié)束!"<<endl;</p><p> }while(current_ptr!=head_ptr);</p><p
67、><b> else</b></p><p><b> {</b></p><p> cout<<"同學(xué)錄為空!"<<endl;</p><p><b> }</b></p><p> system("pau
68、se");</p><p> system("cls");</p><p><b> }</b></p><p> void guanli::SearchChoice()</p><p><b> {</b></p><p><b&
69、gt; char n;</b></p><p> cout<<endl<<"輸入數(shù)字鍵選擇你所要進(jìn)行的操作:"<<endl<<endl;</p><p> cout<<"\t\t\t1:姓名查詢"<<endl<<endl;</p>&l
70、t;p> cout<<"\t\t\t2:姓名缺省查詢(姓氏,名字部分查詢)"<<endl<<endl;</p><p> cout<<"\t\t\t3:記憶片段查詢"<<endl<<endl;</p><p> cout<<"\t\t\t4:退出
71、查詢"<<endl<<endl;</p><p> cout<<"輸入你的選擇:"<<endl;</p><p><b> cin>>n;</b></p><p> while(n!='4')</p><p&g
72、t;<b> {</b></p><p><b> switch(n)</b></p><p><b> {</b></p><p> case '1':</p><p> ASearchByStuNum();</p><
73、p><b> break;</b></p><p><b> case '2':</b></p><p> ASearchByName();</p><p><b> break;</b></p><p><b> case '
74、3':</b></p><p> ASearchByDormNum();</p><p><b> break;</b></p><p><b> default :</b></p><p> cout<<"對(duì)不起,您輸入的查詢方式尚未做出,請(qǐng)重新輸
75、入: ";</p><p><b> break;</b></p><p><b> }</b></p><p> cout<<"輸入0顯示菜單,輸入5退出查詢,其他任意鍵繼續(xù)查詢:"<<endl;</p><p><b>
76、 char pp;</b></p><p><b> cin>>pp;</b></p><p> if(pp=='0')</p><p><b> {</b></p><p> cout<<endl<<"輸入數(shù)字鍵選擇
77、你所要進(jìn)行的操作:"<<endl<<endl;</p><p> cout<<"\t\t\t1:姓名查詢"<<endl<<endl;</p><p> cout<<"\t\t\t2:姓名缺省查詢(姓氏,名字部分查詢)"<<endl<<endl
78、;</p><p> cout<<"\t\t\t3:記憶片段查詢"<<endl<<endl;</p><p> cout<<"\t\t\t4:退出查詢"<<endl<<endl;</p><p> cout<<"輸入你的選擇:&
79、quot;<<endl;</p><p><b> cin>>n;</b></p><p><b> }</b></p><p> else if(pp=='4')n='4';</p><p> system("cls&qu
80、ot;);</p><p><b> }</b></p><p><b> }</b></p><p> void guanli::ASearchByStuNum()</p><p><b> {</b></p><p> system(&qu
81、ot;cls");</p><p> bool nFlag=0;</p><p> string search_str;</p><p> current_ptr=head_ptr;</p><p> if(current_ptr==NULL)</p><p> cout<<"
82、;學(xué)生記錄為空"<<endl;</p><p><b> else</b></p><p><b> {</b></p><p> cin.ignore(20,'\n');</p><p> cout<<"\n輸入你要搜索的同學(xué)姓名
83、:";</p><p> cin>>search_str;</p><p> if(current_ptr->stu.fri_name==search_str)</p><p><b> {</b></p><p><b> nFlag=1;</b></p&
84、gt;<p> cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p><p> cout<<"\t電話:"<<current_ptr->stu.phon
85、e_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p><p> cout<<"珍貴回憶:\n"<<current_ptr->stu.memory<<endl;</p><p><b> }</b>
86、;</p><p><b> else</b></p><p><b> {</b></p><p> current_ptr=current_ptr->next;</p><p> while(current_ptr!=head_ptr)</p><p>&l
87、t;b> {</b></p><p> if(current_ptr->stu.fri_name==search_str)</p><p><b> {</b></p><p><b> nFlag=1;</b></p><p> cout<<"
88、;姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p><p> cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<
89、;<current_ptr->stu.e_mail<<endl;</p><p> cout<<"珍貴回憶:\n"<<current_ptr->stu.memory<<endl;</p><p><b> break;</b></p><p><b&
90、gt; }</b></p><p> current_ptr=current_ptr->next;</p><p><b> }</b></p><p><b> }</b></p><p> if(!nFlag)//搜索完所有結(jié)點(diǎn)都沒發(fā)現(xiàn)</p><
91、p><b> {</b></p><p> cout<<"無記錄!"<<endl;</p><p> system("pause");</p><p> system("cls");</p><p><b>
92、}</b></p><p><b> }</b></p><p><b> }</b></p><p> void guanli::ASearchByName()</p><p><b> {</b></p><p> system
93、("cls");</p><p> bool nFlag=0;</p><p> string search_str;</p><p> current_ptr=head_ptr;</p><p> if(current_ptr==NULL)</p><p> cout<<&
94、quot;同學(xué)錄為空"<<endl;</p><p><b> else</b></p><p><b> {</b></p><p> cin.ignore(20,'\n');</p><p> cout<<"\n輸入你要搜索的同
95、學(xué)的姓或名或其中的一部分:";</p><p> cin>>search_str;</p><p> if(current_ptr->stu.fri_name.find(search_str)!=string::npos)</p><p><b> {</b></p><p> if(
96、!nFlag)cout<<"找到記錄\n";</p><p><b> nFlag=1;</b></p><p> cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr-&
97、gt;stu.sex;</p><p> cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p><p> cout<<"珍貴回憶:\n
98、"<<current_ptr->stu.memory<<endl<<endl;</p><p><b> }</b></p><p> current_ptr=current_ptr->next;</p><p> while(current_ptr!=head_ptr)</
99、p><p><b> {</b></p><p> if(current_ptr->stu.fri_name.find(search_str)!=string::npos)</p><p><b> {</b></p><p> if(!nFlag)cout<<"找到
100、記錄\n";</p><p><b> nFlag=1;</b></p><p> cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p><
101、p> cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p><p> cout<<"珍貴回憶:\n"<<current_ptr-&
102、gt;stu.memory<<endl<<endl;</p><p><b> }</b></p><p> current_ptr=current_ptr->next;</p><p><b> }</b></p><p> if(!nFlag)//搜索完所有
103、結(jié)點(diǎn)都沒發(fā)現(xiàn)</p><p><b> {</b></p><p> cout<<"無記錄!"<<endl;</p><p> system("pause");</p><p> system("cls");</p>
104、<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void guanli::ASearchByDormNum()</p><p><b> {</b><
105、/p><p> system("cls");</p><p> bool nFlag=0;</p><p> string search_str;</p><p> current_ptr=head_ptr;</p><p> if(current_ptr==NULL)</p>
106、<p> cout<<"學(xué)生記錄為空"<<endl;</p><p><b> else</b></p><p><b> {</b></p><p> cin.ignore(20,'\n');</p><p> co
107、ut<<"\n輸入你對(duì)那個(gè)同學(xué)的記憶(即你當(dāng)初輸入的一句話里面的幾個(gè)詞語):";</p><p> cin>>search_str;</p><p> if(current_ptr->stu.memory.find(search_str)!=string::npos)</p><p><b> {&l
108、t;/b></p><p> if(!nFlag)cout<<"找到記錄\n";</p><p><b> nFlag=1;</b></p><p> cout<<"姓名:"<<current_ptr->stu.fri_name<<&quo
109、t;\t性別:"<<current_ptr->stu.sex;</p><p> cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p>&l
110、t;p> cout<<"珍貴回憶:\n"<<current_ptr->stu.memory<<endl<<endl;</p><p><b> }</b></p><p> current_ptr=current_ptr->next;</p><p>
111、 while(current_ptr!=head_ptr)</p><p><b> {</b></p><p> if(current_ptr->stu.memory.find(search_str)!=string::npos)</p><p><b> {</b></p><p>
112、 if(!nFlag)cout<<"找到記錄\n";</p><p><b> nFlag=1;</b></p><p> cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_
113、ptr->stu.sex;</p><p> cout<<"\t電話:"<<current_ptr->stu.phone_num<<"\t郵箱:"<<current_ptr->stu.e_mail<<endl;</p><p> cout<<"珍貴
114、回憶:\n"<<current_ptr->stu.memory<<endl<<endl;</p><p><b> }</b></p><p> current_ptr=current_ptr->next;</p><p><b> }</b></p&g
115、t;<p> if(!nFlag)//搜索完所有結(jié)點(diǎn)都沒發(fā)現(xiàn)</p><p><b> {</b></p><p> cout<<"無記錄!"<<endl;</p><p> system("pause");</p><p> sy
116、stem("cls");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> #include "guanli.h"</p><p
117、> #include<iostream></p><p> #include<iomanip></p><p> using namespace std;</p><p> void guanli::DeleteRecord()</p><p><b> {</b></p&g
118、t;<p> system("cls");</p><p> string search_string;</p><p> node *previous_ptr=NULL;</p><p> current_ptr=head_ptr;</p><p> if(current_ptr==NULL)&l
119、t;/p><p><b> {</b></p><p> cout<<"沒有你要?jiǎng)h除的記錄!"<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p
120、> cin.ignore(20,'\n');</p><p> int nFlag=0;</p><p> bool ask=0;</p><p> char n[30];</p><p> cout<<"\t\t是否需要先根據(jù)查找來查看所要?jiǎng)h除的同學(xué)完整姓名?Y/N"<&
121、lt;endl;</p><p> cin.getline(n,30);</p><p> if(!strcmp(n,"y")||!strcmp(n,"Y"))SearchChoice();</p><p> cout<<"\n輸入你要?jiǎng)h除的同學(xué)完整姓名:\n";</p>&
122、lt;p> cin>>search_string;</p><p> while((current_ptr->stu.fri_name==search_string)&&head_ptr!=NULL)</p><p><b> {</b></p><p><b> nFlag=1;<
123、;/b></p><p> cout<<"\n找到記錄\n";</p><p> cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p>&l
124、t;p> cout<<"\t郵箱:"<<current_ptr->stu.e_mail<<"\t電話:"<<current_ptr->stu.phone_num<<endl;</p><p> cout<<"珍貴回憶:\n"<<current_ptr
125、->stu.memory<<endl;</p><p> if(VerifyDelete()) //向用戶詢問是否真的要?jiǎng)h除</p><p><b> {</b></p><p> DeleteNode();</p><p> cout<<"\n記錄已刪除!\n&quo
126、t;;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"姓名為:"<<current_ptr->stu.fri_na
127、me<<"\t的記錄沒有刪除"<<endl;</p><p> current_ptr=current_ptr->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> do
128、</b></p><p><b> {</b></p><p> if(current_ptr->stu.fri_name==search_string)</p><p><b> {</b></p><p><b> nFlag=1;</b><
129、/p><p> cout<<"\n找到記錄\n";</p><p> cout<<"姓名:"<<current_ptr->stu.fri_name<<"\t性別:"<<current_ptr->stu.sex;</p><p> co
130、ut<<"\t郵箱:"<<current_ptr->stu.e_mail<<"\t電話:"<<current_ptr->stu.phone_num<<endl;</p><p> cout<<"珍貴回憶:\n"<<current_ptr->stu.me
131、mory<<endl;</p><p> if(VerifyDelete()) //向用戶詢問是否真的要?jiǎng)h除</p><p><b> {</b></p><p> DeleteNode();</p><p> cout<<"\n記錄已刪除!\n";</p&g
132、t;<p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"姓名為:"<<current_ptr->stu.fri_name<<&
133、quot;\t的記錄沒有刪除"<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> current_ptr=current_ptr->next;</p><p> }while(current_ptr!=he
134、ad_ptr||head_ptr==NULL);</p><p> if(!nFlag)cout<<"\n沒有找到相符的記錄也沒有刪除記錄。\n";</p><p> cin.get();</p><p> system("cls");</p><p><b> }<
135、/b></p><p> void guanli::Help()</p><p><b> {</b></p><p><b> help:</b></p><p> char choice2;</p><p> system("cls")
136、;</p><p> cout<<"歡迎使用“幫助”,請(qǐng)輸入幫助類型:\n";</p><p> cout<<"1:此程序有哪些功能?"<<endl;</p><p> cout<<"2:如何一次性刪除所有記錄?"<<endl;</p&
137、gt;<p> cout<<"3:此程序關(guān)閉后我的記錄存在哪里?為什么我修改的記錄沒有被保存?"<<endl;</p><p> cout<<"4:為什么有時(shí)候我的程序會(huì)突然死掉?"<<endl;</p><p> cout<<"5:何時(shí)會(huì)有更完善的版本出現(xiàn)?&
138、quot;<<endl;</p><p> cout<<"6:此程序的作者信息?"<<endl;</p><p> cout<<"7:退出幫助。"<<endl;</p><p> cin>>choice2;</p><p>
139、 switch(choice2)</p><p><b> {</b></p><p><b> case '1':</b></p><p> cout<<"此程序?yàn)橐粋€(gè)同學(xué)錄系統(tǒng),由雙向鏈表實(shí)現(xiàn)。"<<endl;</p><p>
140、 cout<<"具體的話可以查看菜單。"<<endl;</p><p> cout<<"謝謝您使用本程序!"<<endl;</p><p> system("pause");</p><p> system("cls");</p
141、><p> goto help;</p><p><b> break;</b></p><p><b> case '2':</b></p><p> cout<<"請(qǐng)退出本程序后手動(dòng)刪除一個(gè)名為xuejiguanli.txt的文件,謝謝~"&l
142、t;<endl;</p><p> system("pause");</p><p> system("cls");</p><p> goto help;</p><p><b> break;</b></p><p><b>
143、case '3':</b></p><p> cout<<"在一個(gè)名為xuejiguanli.txt的文件里面"<<endl;</p><p> cout<<"只有正常關(guān)閉才會(huì)保存,在運(yùn)行途中強(qiáng)行關(guān)閉,程序?qū)⒉粚?duì)原有文件做任何修改"<<endl;</p>&
144、lt;p> system("pause");</p><p> system("cls");</p><p> goto help;</p><p><b> break;</b></p><p><b> case '4':</b&
145、gt;</p><p> cout<<"目前本程序在輸入有誤方面的容錯(cuò)處理可能還不夠完善,有時(shí)輸入太多非法數(shù)據(jù)可能導(dǎo)致程序死機(jī)";</p><p> cout<<"所以,請(qǐng)規(guī)范您的操作,并注意輸入的正確,謝謝您的配合。"<<endl;</p><p> system("pau
146、se");</p><p> system("cls");</p><p> goto help;</p><p><b> break;</b></p><p><b> case '5':</b></p><p>
147、cout<<"下一屆課程設(shè)計(jì)必然有更強(qiáng)大的學(xué)弟學(xué)妹來完善它。"<<endl;</p><p> system("pause");</p><p> system("cls");</p><p> goto help;</p><p><b>
148、 break;</b></p><p><b> case '6':</b></p><p> cout<<"Author:計(jì)科三班,孫健波。\n學(xué)號(hào):0906840330\n";</p><p> cout<<"謝謝您的使用~~"<<
149、endl;</p><p> system("pause");</p><p> system("cls");</p><p> goto help;</p><p><b> break;</b></p><p><b> defaul
150、t:</b></p><p> system("pause");</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> bo
151、ol guanli::VerifyDelete()</p><p><b> {</b></p><p> char v[100];</p><p> cout<<"\n確認(rèn)?(Y/N)";</p><p> scanf("%s",v);</p>
152、<p> cin.ignore(20,'\n');</p><p> if(!strcmp(v,"y")||!strcmp(v,"Y"))return true;</p><p> else return false;</p><p><b> }</b></p&g
153、t;<p> void guanli::DeleteNode()</p><p><b> {</b></p><p> if(current_ptr==head_ptr)</p><p> DeleteNodeAtHead();</p><p><b> else</b>&
154、lt;/p><p> if(current_ptr->next==head_ptr)</p><p> DeleteNodeAtEnd();</p><p><b> else</b></p><p> DeleteNodeAtMiddle();</p><p><b> }
155、</b></p><p> void guanli::DeleteNodeAtHead()</p><p><b> {</b></p><p> if(head_ptr->next!=head_ptr)</p><p><b> {</b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- vc++課程設(shè)計(jì)-- 餐飲管理系統(tǒng)
- vc++課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)--同學(xué)錄的設(shè)計(jì)與實(shí)現(xiàn)
- 同學(xué)錄
- vc++課程設(shè)計(jì)報(bào)告---球員管理系統(tǒng)
- vc++軟件課程設(shè)計(jì)報(bào)告
- java同學(xué)錄管理系統(tǒng)
- 同學(xué)錄.doc
- 同學(xué)錄.doc
- 同學(xué)錄.doc
- vc++庫函數(shù)課程設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---同學(xué)錄管理系統(tǒng)
- 同學(xué)錄管理系統(tǒng)設(shè)計(jì)開題報(bào)告
- 同學(xué)錄.doc
- 同學(xué)錄.doc
- 同學(xué)錄.doc
- 同學(xué)錄.doc
- vc++課程設(shè)計(jì)報(bào)告----對(duì)抗游戲
- vc++課程設(shè)計(jì)--工資管理
- vc++課程設(shè)計(jì)報(bào)告--對(duì)抗游戲
評(píng)論
0/150
提交評(píng)論