




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——校園十大優(yōu)秀青年評(píng)比測驗(yàn)報(bào)告測驗(yàn)課名稱:數(shù)據(jù)布局測驗(yàn)測驗(yàn)名稱:校園十大優(yōu)秀青年評(píng)比班級(jí):20220613學(xué)號(hào):16姓名:施洋時(shí)間:2022-5-25
一、問題描述新一屆校園十大青年評(píng)比開頭了!每一位在校學(xué)生可通過網(wǎng)上評(píng)比系統(tǒng),為自己認(rèn)為優(yōu)秀的學(xué)生提名與投票。請(qǐng)開發(fā)一個(gè)用于該需求的系統(tǒng),得志以下根本功能:
(1)提名優(yōu)秀學(xué)生與投票。
(2)查看提名學(xué)生的根本信息。
(3)顯示各提名學(xué)生的票數(shù)。
(4)顯示排行榜。
根本要求:
(1)采用散列存儲(chǔ),存放提名學(xué)生的相關(guān)信息。
(2)設(shè)計(jì)哈希函數(shù)和沖突解決方法。
(3)提名學(xué)生至少包括以下信息:姓名、票數(shù)、個(gè)人根本信息(如:班級(jí)、專業(yè)、年級(jí)、突出事跡等)。
(4)設(shè)計(jì)輸入提名學(xué)生信息的界面。
(5)完成根本功能。
(6)界面友好,操作簡樸。
(7)設(shè)計(jì)足夠多的測試用例。
(8)查看指定學(xué)生的票數(shù)。
二、數(shù)據(jù)布局設(shè)計(jì)1)用哈希表存儲(chǔ)提名學(xué)生相關(guān)信息。
每位選手即學(xué)生的根本信息含有多個(gè)屬性,為此可根據(jù)學(xué)生信息建立布局體,如下:
structstudent{charname[40];//姓名的拼音+學(xué)號(hào)intnumber;//票數(shù)intClass;//班級(jí)charMajor[50];//專業(yè)charGrade[10];//年級(jí)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:對(duì)指定的選手調(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班級(jí):2\n
\t專業(yè):軟件工程\n
\t年級(jí):二\n
\t突出事跡:全國三好學(xué)生\n;strcpy(stu[s].name,name);cout班級(jí):\t;cinstu[s].Class;cout專業(yè):\t;cin.getline(a,2);cin.getline(stu[s].Major,50);cout年級(jí):\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
請(qǐng)選擇操作:;
intt;
cint;
if(t==1)
{
L.insert(name);
cout提名告成\n;
}(5)
顯示哈希表函數(shù)display
從表頭開頭,若表中記錄已存在,那么輸出該學(xué)生的根本信息:姓名,票數(shù),專業(yè),年級(jí),班級(jí),突出事跡;否那么轉(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],存儲(chǔ)前十名在哈希表中的下標(biāo),并初始化數(shù)組
Step2:從哈希表表頭開頭依次訪問,記錄存在時(shí)即轉(zhuǎn)到Step3
Step3:利用插入法對(duì)舉行記錄舉行排序
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++)//對(duì)前十名輸出
coutstu[a[i]].name"\t"
stu[a[i]].number
endl;
四、界面設(shè)計(jì)***************
1、選手信息
2、選手得票數(shù)
3、投票
4、排行榜
5、退出系統(tǒng)
***************
五、運(yùn)行測試與分析(1)對(duì)記錄不存在的學(xué)生舉行投票,即提名過程
依此模式對(duì)記錄不存在的學(xué)生舉行提名,概括信息如圖(3)所示
(2)對(duì)記錄已存在的選手舉行投票
(3)顯示選手信
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 篷布行業(yè)人才培養(yǎng)規(guī)劃考核試卷
- 海洋油氣開采海域使用權(quán)管理考核試卷
- 礦山開采對(duì)生物多樣性影響考核試卷
- 起點(diǎn)初三語文作文
- 液壓系統(tǒng)在金屬加工中的應(yīng)用考核試卷
- 球類制造技術(shù)與材料創(chuàng)新考核試卷
- 禮儀用品行業(yè)發(fā)展趨勢預(yù)測考核試卷
- 蘭州資源環(huán)境職業(yè)技術(shù)大學(xué)《藥物合成原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省大豐市劉莊鎮(zhèn)三圩初級(jí)中學(xué)2024-2025學(xué)年初三下學(xué)期5月學(xué)情調(diào)研考試化學(xué)試題試卷含解析
- 遼寧商貿(mào)職業(yè)學(xué)院《程序可信分析與構(gòu)造》2023-2024學(xué)年第二學(xué)期期末試卷
- “皖南八校”2024-2025學(xué)年高一第二學(xué)期期中考試-生物(乙)及答案
- 血站安全與衛(wèi)生培訓(xùn)課件
- 人教版四年級(jí)數(shù)學(xué)下冊期中期中測試卷(提優(yōu)卷)(含答案)
- 巖土真實(shí)考試題及答案
- 高考前的“加速度”高三下學(xué)期期中家長會(huì)
- 畢業(yè)設(shè)計(jì)(論文)-板材碼垛機(jī)器人機(jī)械結(jié)構(gòu)設(shè)計(jì)
- 銷售人員合同范文
- 大部分分校:地域文化形考任務(wù)三-國開(CQ)-國開期末復(fù)習(xí)資料
- 2024年全國中學(xué)生生物學(xué)聯(lián)賽試題含答案
- 數(shù)獨(dú)題目高級(jí)50題(后附答案)
- 全媒體運(yùn)營師-國家職業(yè)標(biāo)準(zhǔn)(2023年版)
評(píng)論
0/150
提交評(píng)論