順序表——學(xué)生信息管理1_第1頁(yè)
順序表——學(xué)生信息管理1_第2頁(yè)
順序表——學(xué)生信息管理1_第3頁(yè)
順序表——學(xué)生信息管理1_第4頁(yè)
順序表——學(xué)生信息管理1_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、*信息科學(xué)與工程學(xué)院數(shù)據(jù)結(jié)構(gòu)綜合設(shè)計(jì)報(bào)告 順序表-學(xué)生信息管理學(xué)號(hào): *姓名: *專業(yè): * 班級(jí): * 實(shí)驗(yàn)室(中心):*指導(dǎo)老師: * 完成時(shí)間: 2013-04-10目 錄一、實(shí)驗(yàn)課題 03二、實(shí)驗(yàn)?zāi)康?03三、實(shí)驗(yàn)內(nèi)容與要求 03四、各模塊功能說(shuō)明 04 五、程序運(yùn)行效果 05 六、心得與體會(huì) 06七、源代碼 06 教師評(píng)閱意見(jiàn): 簽名: 年 月 日成績(jī):以下為設(shè)計(jì)報(bào)告正文1、 實(shí)驗(yàn)課題 在VC+6.0平臺(tái)下利用順序表完成學(xué)生基本信息的相關(guān)操作 2、 實(shí)驗(yàn)?zāi)康?.掌握順序表結(jié)構(gòu)的實(shí)現(xiàn)方式;2.掌握順序表常用算法的實(shí)現(xiàn);3.熟悉利用順序表解決問(wèn)題的一般思路; 4.領(lǐng)會(huì)順序表結(jié)構(gòu)的優(yōu)點(diǎn)與不

2、足。 3、 實(shí)驗(yàn)內(nèi)容與要求 以學(xué)生信息為數(shù)據(jù)元素建立順序表。一個(gè)學(xué)生的信息包括姓名、專業(yè)和年齡。程序用戶可通過(guò)數(shù)字鍵選擇信息輸入、插入信息、刪除信息等功能。對(duì)程序的具體要求如下: (1)程序啟動(dòng)后,顯示下列選項(xiàng)信息:   1信息輸入     2信息輸出     3刪除信息  4插入信息    5修改信息 6獲取信息 7保存信息 0退出程序 (2)輸入數(shù)字“1”輸入學(xué)生基本信息。此選擇中包括兩種方式:1.從文件中讀入原始數(shù)據(jù),2.重新開(kāi)始輸入。其中

3、用戶可以通過(guò)直接在shunxubiaoin.txt文件中存儲(chǔ)信息,然后在這里直接讀入的程序中。同時(shí)用戶也可以選擇重新開(kāi)始輸入。 (3)輸入數(shù)字“2”進(jìn)入輸出信息功能模塊。程序依次輸出由用戶輸入姓名、專業(yè)和年齡的個(gè)人信息。 (4)輸入數(shù)字“3”進(jìn)入刪除信息功能模塊。程序提示并由用戶輸入學(xué)生序號(hào),最終實(shí)現(xiàn)按照學(xué)生序號(hào)刪除某個(gè)學(xué)生信息。 (5)輸入數(shù)字“4”進(jìn)入插入信息功能模塊。程序提示并由用戶輸入序號(hào),在此序號(hào)的學(xué)生信息后插入要插入的學(xué)生基本信息。最終實(shí)現(xiàn)按照序號(hào)位置來(lái)增加某個(gè)學(xué)生信息。 (6)輸入數(shù)字“5”進(jìn)入修改信息功能模塊。程序提示并由用戶輸入要修改的序號(hào),程序?qū)言撔蛱?hào)學(xué)生的基本信息,按照

4、用戶輸入的進(jìn)行相關(guān)修改。最終實(shí)現(xiàn)按照序號(hào)來(lái)實(shí)現(xiàn)對(duì)相應(yīng)同學(xué)的信息進(jìn)行修改。 (7)輸入數(shù)字“6”進(jìn)入獲取信息功能模塊。程序提示并由用戶輸入要獲取的學(xué)生序號(hào),程序?qū)言撔蛱?hào)學(xué)生的基本信息進(jìn)行獲取并顯示。最終實(shí)現(xiàn)按照序號(hào)來(lái)顯示同學(xué)的信息。 (8)輸入數(shù)字“7”進(jìn)入信息保存功能模塊。程序會(huì)把當(dāng)前順序表中的學(xué)生信息輸出到shunxubiaoout.txt中。 (9)通過(guò)輸入數(shù)字“0”使得程序結(jié)束。同時(shí)退出時(shí)會(huì)提醒用戶是否保存。如果沒(méi)有保存則保存后退出。 (10)當(dāng)用戶執(zhí)行輸入、插入、刪除等功能后,程序應(yīng)繼續(xù)提示用戶通過(guò)數(shù)字鍵選擇相應(yīng)功能,直到用戶輸入數(shù)字“0”程序才結(jié)束。 四:各模塊功能說(shuō)明 (1)輸入

5、函數(shù)包括從文件中直接讀取void input(fstream in);和直接進(jìn)行輸入void input(); (2)輸出函數(shù):void output(); (3) 刪除函數(shù):bool Remove(int i, T& x); /刪除第i個(gè)表項(xiàng),通過(guò)x返回表項(xiàng)的值。 (4)插入函數(shù):bool Insert(int i, T& x); /插入x在第i個(gè)表項(xiàng)之后。 (5)修改函數(shù):void setData(int i,T& x) /用x修改第i個(gè)表現(xiàn)的值。 (6)獲取函數(shù):bool getData(int i,T& x)const 。 (7) 保存函數(shù):void o

6、utput(fstream out);五:程序運(yùn)行效果六:心得與體會(huì) 實(shí)驗(yàn)難點(diǎn)分析:這個(gè)實(shí)驗(yàn)相對(duì)容易,利用類與結(jié)構(gòu)體和數(shù)組,能有一個(gè)很清晰的邏輯。我覺(jué)得難點(diǎn)是在根據(jù)輸入的學(xué)號(hào)進(jìn)行替換和文件操作,尤其是要求在從文件中讀入數(shù)據(jù),這些地方很容易混了,而且挺麻煩的; 進(jìn)一步的工作:我覺(jué)得改進(jìn)的地方是應(yīng)該把插入的程序?qū)懙母?jiǎn)單,實(shí)現(xiàn)的功能更強(qiáng)大,以及當(dāng)表滿后的相應(yīng)操作。個(gè)人希望:在編的過(guò)程中有些小細(xì)節(jié)導(dǎo)致了速度偏慢,我希望能通過(guò)更多的練習(xí)來(lái)強(qiáng)化自己的能力,以得到更大的提升。七:源代碼:1.main()函數(shù)#include<iostream.h>#include<stdlib.h>

7、#include"choice.h"void main()choice c;c.ch();2.Choice.h代碼#include<iostream.h>#include<fstream.h>#include<stdlib.h>#include"student.h"#include"SeqList.h"class choiceprivate:int i;public:void ch();void choice:ch()fstream filein,fileout; filein.open("

8、;shunxubiaoin.txt",ios:in|ios:out|ios:app); fileout.open("shunxubiaoout.txt",ios:out|ios:trunc);int x,choice;cout<<"請(qǐng)輸入順序表的最大空間:x="cin>>x;SeqList<student> se(x);char ch='y' cout<<"1.輸入"<<endl;cout<<"2.輸出"<<

9、;endl;cout<<"3.刪除"<<endl;cout<<"4.插入"<<endl;cout<<"5.修改"<<endl;cout<<"6.獲取"<<endl;cout<<"7.保存"<<endl;cout<<"0.退出"<<endl;docout<<"請(qǐng)輸入您的選擇:"cin>>cho

10、ice;switch(choice)case 1:cout<<"1.從文件中讀入原始數(shù)據(jù)"<<endl;cout<<"2.重新開(kāi)始輸入"<<endl;cout<<"請(qǐng)選擇:"int i;cin>>i;switch(i)case 1:se.input(filein);break;case 2:se.input();break;default:cout<<"輸入有誤!"<<endl;break; break;case 2:s

11、e.output(); break;case 3:student a; int x;cout<<"x="cin>>x; se.Remove(x,a); break;case 4:student a;cout<<"請(qǐng)輸入要插入學(xué)生的信息:"<<endl;cout<<"姓名:"cin>>;cout<<"專業(yè):"cin>>a.subject;cout<<"年齡:"cin>>

12、;a.age;int x;cout<<"請(qǐng)輸入插入到的學(xué)生的序號(hào)x="cin>>x; se.Insert(x,a); break;case 5:int i;student a;cout<<"請(qǐng)輸入修改學(xué)生的序號(hào)i="cin>>i;cout<<"請(qǐng)輸入要修改學(xué)生的信息:"cout<<"姓名:"cin>>;cout<<"專業(yè):"cin>>a.subject;cout<<

13、"年齡:"cin>>a.age;se.setData(i,a);case 6:int i;student a;cout<<"請(qǐng)輸入獲取的學(xué)生序號(hào)i="cin>>i;se.getData(i,a);cout<<"該學(xué)生的信息:"cout<<"姓名:"cin>>;cout<<"專業(yè):"cin>>a.subject;cout<<"年齡:"cin>>a.

14、age;case 7:se.output(fileout);break;case 0: cout<<"是否將結(jié)果保存到文件中?(Y/y)" char ch; cin>>ch; if(ch='Y'|ch='y') se.output(fileout); exit(1); break;default:cout<<"您輸入的操作有問(wèn)題!"<<endl;break;/cout<<"是否繼續(xù)輸入(y/n)?"<<endl;/cin>&g

15、t;ch;while(1);/while(ch='Y'|ch='y');filein.close();fileout.close();3.Student.h代碼:#include<iostream.h>struct studentchar name10; char subject20;int age;bool operator =(student &stu2)if(this->age=stu2.age)return true;else return false;4.Seqlist.h代碼:#include<iostream.h&g

16、t;#include<fstream.h>template<class T>class SeqListprotected:T *data; /存放數(shù)組int maxSize;private:int last;public:SeqList()SeqList()SeqList(int x)maxSize=x;void input();/void output(); /void input(fstream in);void output(fstream out);int Size()constreturn maxSize; /計(jì)算表的最大可容納表項(xiàng)個(gè)數(shù)int Length()

17、constreturn last+1; /計(jì)算表的長(zhǎng)度int Search(T& x)const; /搜索x在表中的位置bool getData(int i,T& x)constif(i>0&&i<=last+1)x=datai-1;return true; else return false;void setData(int i,T& x) /用x修改第i個(gè)表現(xiàn)的值if(i>0&&i<=last+1)datai-1=x;int Locate(int i) const; /定位第i歌表項(xiàng),函數(shù)返回表項(xiàng)序號(hào)bool

18、IsEmpty()return(last=-1)true:false; /判斷表空否bool IsFull()return(last=maxSize-1)?true:false; /判斷表滿否bool Insert(int i, T& x); /插入x在第i個(gè)表項(xiàng)之后bool Remove(int i, T& x); /刪除第i個(gè)表項(xiàng),通過(guò)x返回表項(xiàng)的值;template <class T>void SeqList<T>:input()int x;cout<<"請(qǐng)輸入學(xué)生人數(shù):"<<" "c

19、in>>x; if(x>maxSize) cout<<"輸入錯(cuò)誤!"<<endl; else last=x-1;data=new Tx-1;for(int i=0;i<x;i+)cout<<"請(qǐng)輸入第"<<i+1<<"個(gè)學(xué)生的信息:"<<endl;cout<<"姓名:"<<" "cin>>;cout<<"專業(yè):"&

20、lt;<" "cin>>datai.subject;cout<<"年齡:"<<" "cin>>datai.age; template <class T>void SeqList<T>:input(fstream in)int x;in>>x; if(x>maxSize) cout<<"內(nèi)存分配錯(cuò)誤!請(qǐng)修改!"<<endl; else last=x-1;data=new Tx-1;for(int i

21、=0;i<x;i+)in>>>>datai.subject>>datai.age; template <class T>void SeqList<T>:output( )if(last<=0)cout<<"表為空表!"<<endl;else for(int i=0;i<last+1;i+) cout<<"第"<<i+1<<"個(gè)學(xué)生的信息:" cout<<"姓

22、名:"<<" " cout<<<<" " cout<<"專業(yè):"<<" " cout<<datai.subject<<" " cout<<"年齡:"<<" " cout<<datai.age<<" " cout<<endl; template <class T

23、>void SeqList<T>:output(fstream out)if(last<=0)out<<"表為空表!"<<endl;else for(int i=0;i<last+1;i+) out<<"第"<<i+1<<"個(gè)學(xué)生的信息:" out<<"姓名:"<<" " out<<<<" " out<<"專業(yè):"<<" " out<<datai.subject<<" " out<<"年齡:"&l

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論