版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——校園十大優(yōu)秀青年評比測驗(yàn)報(bào)告測驗(yàn)課名稱:數(shù)據(jù)布局測驗(yàn)測驗(yàn)名稱:校園十大優(yōu)秀青年評比班級:20220613學(xué)號:16姓名:施洋時(shí)間:2022-5-25
一、問題描述新一屆校園十大青年評比開頭了!每一位在校學(xué)生可通過網(wǎng)上評比系統(tǒng),為自己認(rèn)為優(yōu)秀的學(xué)生提名與投票。請開發(fā)一個(gè)用于該需求的系統(tǒng),得志以下根本功能:
(1)提名優(yōu)秀學(xué)生與投票。
(2)查看提名學(xué)生的根本信息。
(3)顯示各提名學(xué)生的票數(shù)。
(4)顯示排行榜。
根本要求:
(1)采用散列存儲,存放提名學(xué)生的相關(guān)信息。
(2)設(shè)計(jì)哈希函數(shù)和沖突解決方法。
(3)提名學(xué)生至少包括以下信息:姓名、票數(shù)、個(gè)人根本信息(如:班級、專業(yè)、年級、突出事跡等)。
(4)設(shè)計(jì)輸入提名學(xué)生信息的界面。
(5)完成根本功能。
(6)界面友好,操作簡樸。
(7)設(shè)計(jì)足夠多的測試用例。
(8)查看指定學(xué)生的票數(shù)。
二、數(shù)據(jù)布局設(shè)計(jì)1)用哈希表存儲提名學(xué)生相關(guān)信息。
每位選手即學(xué)生的根本信息含有多個(gè)屬性,為此可根據(jù)學(xué)生信息建立布局體,如下:
structstudent{charname[40];//姓名的拼音+學(xué)號intnumber;//票數(shù)intClass;//班級charMajor[50];//專業(yè)charGrade[10];//年級charHonour[100];//突出事跡};
(2)設(shè)計(jì)哈希函數(shù),并用開放定址線性探測法處理沖突。
(3)設(shè)計(jì)一個(gè)投票系統(tǒng)類:votesystemclassvotesystem{private:
student*stu;
intcount;//當(dāng)前元素個(gè)數(shù)
intsizeindex;//哈希表長public:
votesystem(){stu=NULL;count=0;sizeindex=0;}
~votesystem(){delete[]stu;count=0;}
voidInitHashTable(intn);//初始化哈希表
intHash(char*name);//哈希函數(shù)
voidcollision(ints){s=s++;}//開放定址線性探測法處理沖突
intsearch(char*name,intk);//查找
voidinsert(char*name);//插入
intvote(char*name);//投票
voiddisplay();//顯示哈希表
voidshowvote(intk);//按哈希表下標(biāo)顯示票數(shù)
voidshowrank();//顯示排行榜};三、算法設(shè)計(jì)votesystem成員函數(shù)細(xì)致設(shè)計(jì):
(1)哈希函數(shù)Hash根據(jù)實(shí)現(xiàn)要點(diǎn)提示設(shè)計(jì)哈希函數(shù)intvotesystem::Hash(char*name)//哈希函數(shù){
char*p=name;
intkey=0;
while(*p)
{
key+=int(*p);
p++;
}
returnkey%sizeindex;}
(2)查找函數(shù)search
Step1:對指定的選手調(diào)用哈希函數(shù)求值
Step2:用開放定址線性探測法處理沖突,在哈希表中查找k=Hash(name);//哈希函數(shù)定位while(stu[k].name[0]!="\0"strcmp(stu[k].name,name))
collision(k);//處理沖突
Step3:若找到返回1;否那么返回0if(!strcmp(stu[k].name,name))return1;//找到
elsereturn0;
(3)插入函數(shù)insert
Step1:調(diào)用查找函數(shù)search,找到插入信息的位置
Step2:按照提名學(xué)生信息例如格式輸入學(xué)生的信息voidvotesystem::insert(char*name){ints;chara[2];search(name,s);cout提名學(xué)生信息格式如下:\n
\t班級:2\n
\t專業(yè):軟件工程\n
\t年級:二\n
\t突出事跡:全國三好學(xué)生\n;strcpy(stu[s].name,name);cout班級:\t;cinstu[s].Class;cout專業(yè):\t;cin.getline(a,2);cin.getline(stu[s].Major,50);cout年級:\t;cin.getline(stu[s].Grade,10);cout突出事跡:\t;cin.getline(stu[s].Honour,100);
Step3:提名即為投一票,同時(shí)當(dāng)前元素個(gè)數(shù)加1
stu[s].number=1;//提名即為投一票
count++;//當(dāng)前人數(shù)加1}
(4)投票函數(shù)voteStep1:
記錄已存在時(shí)調(diào)用search函數(shù)intvotesystem::vote(char*name)
{
ints;
intf;
f=search(name,s);//定位
if(f){stu[s].number++;return1;}//投票告成
elsereturn0;//投票失敗}Step2:
記錄不存在時(shí),轉(zhuǎn)到提名或返回
cout無此記錄!\n;
cout
1、提名該學(xué)生\n
2、返回\n
請選擇操作:;
intt;
cint;
if(t==1)
{
L.insert(name);
cout提名告成\n;
}(5)
顯示哈希表函數(shù)display
從表頭開頭,若表中記錄已存在,那么輸出該學(xué)生的根本信息:姓名,票數(shù),專業(yè),年級,班級,突出事跡;否那么轉(zhuǎn)到下一個(gè)。
voidvotesystem::display(){
for(inti=0;isizeindex;i++)
if(stu[i].name[0]!="\0")
coutstu[i].name""
stu[i].number票""
stu[i].Major""
stu[i].Grade
stu[i].Class班""
stu[i].Honour"\t"
endl;}
(6)顯示排行榜函數(shù)showrank
Step1:定義一個(gè)數(shù)組a[11],存儲前十名在哈希表中的下標(biāo),并初始化數(shù)組
Step2:從哈希表表頭開頭依次訪問,記錄存在時(shí)即轉(zhuǎn)到Step3
Step3:利用插入法對舉行記錄舉行排序
Step4:將哈希表下標(biāo)保存到數(shù)組a中inta[11];//定義一個(gè)數(shù)組存放前十名在哈希表中的下標(biāo)
for(inti=0;i10;i++)a[i]=-1;
for(i=0;isizeindex;i++)//遍歷哈希表
{
if(stu[i].name[0]!="\0")
{
for(intk=9;k=0;k--)//利用插入法舉行排序
{
if(a[k]-1)
{
if(stu[a[k]].numberstu[i].number)
a[k+1]=a[k];
elsebreak;
}
}
a[k+1]=i;
}
}Step5:根據(jù)數(shù)組a中排序結(jié)果,依次輸出前十名選手的姓名,票數(shù)for(i=0;i10a[i]-1;i++)//對前十名輸出
coutstu[a[i]].name"\t"
stu[a[i]].number
endl;
四、界面設(shè)計(jì)***************
1、選手信息
2、選手得票數(shù)
3、投票
4、排行榜
5、退出系統(tǒng)
***************
五、運(yùn)行測試與分析(1)對記錄不存在的學(xué)生舉行投票,即提名過程
依此模式對記錄不存在的學(xué)生舉行提名,概括信息如圖(3)所示
(2)對記錄已存在的選手舉行投票
(3)顯示選手信
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省學(xué)軍中學(xué)2025屆高一物理第一學(xué)期期中統(tǒng)考試題含解析
- 上海市復(fù)興中學(xué)2025屆物理高三第一學(xué)期期中預(yù)測試題含解析
- 2025屆甘肅省白銀市平川區(qū)中恒學(xué)校高一物理第一學(xué)期期中檢測模擬試題含解析
- 西南名校聯(lián)盟2025屆物理高一上期中達(dá)標(biāo)檢測模擬試題含解析
- 湖北省隨州一中2025屆物理高一上期中質(zhì)量檢測試題含解析
- 2025屆廣東省佛山市第四中學(xué)物理高三第一學(xué)期期中統(tǒng)考模擬試題含解析
- 2025屆河南省開封市、商丘市九校物理高一上期末質(zhì)量檢測試題含解析
- 2025屆甘肅省蘭州市聯(lián)片辦學(xué)物理高二上期中質(zhì)量檢測試題含解析
- 2025屆云南省曲靖市宜良縣第八中學(xué)物理高三上期末達(dá)標(biāo)檢測模擬試題含解析
- 福建省永安市一中2025屆物理高二上期末達(dá)標(biāo)測試試題含解析
- 江蘇省蘇州市蘇州園區(qū)五校聯(lián)考2024-2025學(xué)年上學(xué)期八年級數(shù)學(xué)期中試題
- 顱骨缺損護(hù)理
- 2023年齊齊哈爾富裕縣招聘警務(wù)輔助人員筆試真題
- 2024-2030年瓷磚行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報(bào)告
- 2024年度一級注冊消防工程師考試復(fù)習(xí)題庫及答案(共1000題)
- 《人工智能基礎(chǔ)》課件-AI的前世今生:她從哪里來
- 人教八年級上冊英語第六單元《Section A (1a-2d)》教學(xué)課件
- 食品工業(yè)技術(shù)經(jīng)濟(jì)學(xué)智慧樹知到期末考試答案章節(jié)答案2024年西華大學(xué)
- 家校攜手 同心共育 四年期中考試家長會 課件
- 正確使用網(wǎng)絡(luò)流行語+課件-2022-2023學(xué)年主題班會
- (完整word版)高考英語作文練習(xí)紙(標(biāo)準(zhǔn)答題卡)
評論
0/150
提交評論