




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(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é)生提名與投票。請開發(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:對指定的選手調(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
請選擇操作:;
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:利用插入法對舉行記錄舉行排序
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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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é)導(dǎo)數(shù)考試題庫及答案
- 中醫(yī)藥師考試題及答案
- 浙江省金華市金華十校2024-2025學(xué)年化學(xué)高二下期末檢測模擬試題含解析
- 云南省曲靖市宣威九中2025年高二生物第二學(xué)期期末綜合測試試題含解析
- 生態(tài)循環(huán)經(jīng)濟(jì)車間廠房租賃與節(jié)能減排合同
- 倉儲(chǔ)配送與供應(yīng)鏈金融服務(wù)合同范本
- 在海外舉辦中外合資經(jīng)營企業(yè)章程(19篇)
- 2025年四年級(jí)語文下學(xué)期教學(xué)工作總結(jié)范文(5篇)
- 百日沖刺演講稿范文錦集(16篇)
- 社區(qū)干部培訓(xùn)心得體會(huì)(17篇)
- 吊車起重吊裝專項(xiàng)施工方案
- 定制家具工裝合同模板
- 氣壓傳動(dòng)課件 項(xiàng)目七任務(wù)二 H400型加工中心氣動(dòng)換刀系統(tǒng)
- 云南省普通高中學(xué)生綜合素質(zhì)評(píng)價(jià)方案
- 數(shù)學(xué)家華羅庚課件
- 西藏事業(yè)單位統(tǒng)一招聘考試真題
- FGFR3在膀胱尿路上皮癌中的表達(dá)及對臨床意義的研究分析
- 自行車棚修建合同
- 食堂餐飲經(jīng)營合同在線制作
- 代建項(xiàng)目回購合同范本
- 第三方支付對農(nóng)行雙塔山支行業(yè)務(wù)影響研究
評(píng)論
0/150
提交評(píng)論