版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、河南城建學(xué)院課程設(shè)計(jì)報(bào)告書專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題 目:宿舍管理查詢軟件班 級(jí):0814102班學(xué)號(hào):081410222姓名:孟學(xué)豐同 組 人 員: 李照耀指 導(dǎo) 老 師:張延紅 張芳芳 楊斌完 成 時(shí) 間:2012年2月17日摘要在校學(xué)生的信息管理是校園管理中的一個(gè)重要內(nèi)容,隨著國(guó)家擴(kuò)招政策的繼續(xù)實(shí)施,學(xué)生數(shù)量也不斷增加、信息的不斷細(xì)化、各個(gè)行業(yè)間聯(lián)系的不斷密切,對(duì)人事管理的要求也不斷提高。如何記錄和管理好學(xué)生的信息,對(duì)學(xué)生實(shí)施高效的宏觀管理,對(duì)學(xué)生出入宿舍以及學(xué)生注入和遷出的信息的靈活的記錄及更新,是一項(xiàng)繁重而艱巨的任務(wù)。 關(guān)鍵詞:C+;數(shù)據(jù)庫(kù)表;宿舍信息
2、查詢;宿舍信息管理目錄目錄1第一章開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具11.1C#語(yǔ)言簡(jiǎn)介11.2 開(kāi)發(fā)背景11.3 開(kāi)發(fā)環(huán)境1 第二章 算法思想32.1 系統(tǒng)需求分析32.2 系統(tǒng)總體設(shè)計(jì)32.2.1 系統(tǒng)設(shè)計(jì)目標(biāo)32.2.2 開(kāi)發(fā)設(shè)計(jì)思想32.2.3 系統(tǒng)功能模塊設(shè)計(jì)42.3 算法思想描述4第三章算法實(shí)現(xiàn)53.1 數(shù)據(jù)結(jié)構(gòu)53.2 程序模塊53.3 各模塊之間的調(diào)用關(guān)系63.4 源程序代碼6第四章測(cè)試與分析144.1 測(cè)試數(shù)據(jù)選擇144.2 測(cè)試結(jié)果分析16總 結(jié)18心得體會(huì)19參考文獻(xiàn)20第一章 開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具1.1 C/ C +語(yǔ)言簡(jiǎn)介C+標(biāo)準(zhǔn)可分為兩部分, C+語(yǔ)言本身和C+標(biāo)準(zhǔn)庫(kù)。C+標(biāo)準(zhǔn)庫(kù)對(duì)于
3、Visual C+是相當(dāng)新的,實(shí)際上微軟只是在發(fā)布Visual C+ 5.0時(shí)去除了一些“bug”。標(biāo)準(zhǔn)庫(kù)提供了標(biāo)準(zhǔn)的輸入/輸出、字符串、容器(如矢量、列表和映射等)、非數(shù)值運(yùn)算(如排序、搜索和合并等)和對(duì)數(shù)值計(jì)算的支持。應(yīng)該說(shuō), C/C+包含了相對(duì)少的關(guān)鍵字,而且很多最有用的函數(shù)都來(lái)源于庫(kù),C+標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)容器和算法的部分就是STL。 STL是數(shù)據(jù)結(jié)構(gòu)和算法的一個(gè)框架,數(shù)據(jù)結(jié)構(gòu)包括矢量、列表和映射等,算法包括這些數(shù)據(jù)結(jié)構(gòu)的查找、拷貝和排序等。1994年7月,ANSI/ISO C+標(biāo)準(zhǔn)委員會(huì)投票決定接受STL為C+標(biāo)準(zhǔn)庫(kù)的一部分,這個(gè)建議是根據(jù)Alex Stepanov、Meng Lee和Dav
4、id Musser這三人的編程和軟件庫(kù)研究提出的。STL的產(chǎn)生是為了滿足通用性的設(shè)計(jì)目標(biāo),而不是為了提高性能。 1.2 開(kāi)發(fā)背景 隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們所深刻認(rèn)識(shí),它己進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。采用計(jì)算機(jī)進(jìn)行信息化管理已成為衡量企業(yè)管理科學(xué)化和現(xiàn)代化的重要標(biāo)志,而人事管理的全面自動(dòng)化、信息化則是其中重要的組成部分。人事管理的好壞對(duì)于企業(yè)的決策者和管理者來(lái)說(shuō)都至關(guān)重要,在很大程度上影響著企業(yè)的經(jīng)濟(jì)效益和社會(huì)效益。因此,本文所研究的人事管理信息系統(tǒng)具有一定的使用價(jià)值和現(xiàn)實(shí)意義。1.3 開(kāi)發(fā)環(huán)境本文所采用的開(kāi)發(fā)環(huán)境主要是在一般的PC硬件
5、環(huán)境和Windouws Vista/2003/XP系統(tǒng)由Visual+6.0編寫而成,在用到Microsoft Visual C+6.0中c語(yǔ)言的情況下,對(duì)于查詢采用了逐個(gè)查詢法,程序通過(guò)調(diào)試運(yùn)行實(shí)現(xiàn)了設(shè)計(jì)目標(biāo),并且經(jīng)過(guò)適當(dāng)完善后,將可以應(yīng)用在實(shí)際中解決問(wèn)題。第二章 算法思想2.1 系統(tǒng)需求分析從總體分析可知,該宿舍管理系統(tǒng)必須滿足用戶以下基本需求:<1> 可對(duì)入住學(xué)生可進(jìn)行信息錄入;<2>可對(duì)新入學(xué)生的信息進(jìn)行插入<3>可按學(xué)號(hào),姓名,房間號(hào)等任意一種方式查詢學(xué)生的信息<4>可按學(xué)號(hào),房間號(hào)來(lái)進(jìn)行排序2.2 系統(tǒng)總體設(shè)計(jì)2.2.1 系統(tǒng)設(shè)計(jì)目標(biāo)
6、1 本文研究:為宿舍管理人員編寫一個(gè)宿舍管理查詢軟件, 程序設(shè)計(jì)要求:1.1.1 采用交互工作方式1.1.2 建立數(shù)據(jù)文件 ,數(shù)據(jù)文件按關(guān)鍵字(姓名、學(xué)號(hào)、房號(hào))進(jìn)行排序(分別用冒泡、選擇、插入排序?qū)崿F(xiàn))2 查詢菜單: (用二分查找實(shí)現(xiàn)以下操作)2.1.1 按姓名查詢2.1.2 按學(xué)號(hào)查詢2.1.3 按房號(hào)查詢3 打印任一查詢結(jié)果并可以連續(xù)操作。2.2.2 開(kāi)發(fā)設(shè)計(jì)思想 基于以上系統(tǒng)設(shè)計(jì)目標(biāo),本文在開(kāi)發(fā)人事管理信息系統(tǒng)時(shí)遵循了以下開(kāi)發(fā)設(shè)計(jì)思想: 采用現(xiàn)有的軟硬件環(huán)境及先進(jìn)的管理系統(tǒng)開(kāi)發(fā)方案,從而達(dá)到充分利用現(xiàn)有資源,提高系統(tǒng)開(kāi)發(fā)水平和應(yīng)用效果的目的。盡量達(dá)到操作過(guò)程中的直觀、方便、實(shí)用、安全等
7、要求。系統(tǒng)采用模塊化程序設(shè)計(jì)方法,既便于系統(tǒng)功能的各種組合和修改,又便于未參與開(kāi)發(fā)的技術(shù)維護(hù)人員補(bǔ)充、維護(hù)。系統(tǒng)應(yīng)具備數(shù)據(jù)庫(kù)維護(hù)功能,及時(shí)根據(jù)用戶需求進(jìn)行數(shù)據(jù)的添加、查找、顯示、排序等操作。2.2.3 系統(tǒng)功能模塊設(shè)計(jì) 本系統(tǒng)分為四個(gè)模塊:查找子菜單、信息錄入、信息顯示、查找功能子菜單。得到如圖3-1所示的系統(tǒng)功能模塊圖學(xué)生宿舍管理錄入后顯示學(xué)生信息顯示學(xué)生信息錄入學(xué)生信息插入學(xué)生信息查詢按姓名查詢按學(xué)號(hào)查詢按房間號(hào)查詢查詢時(shí)顯示插入后顯示圖3-1系統(tǒng)功能模塊2.3 算法思想描述 該程序的由多種函數(shù)實(shí)現(xiàn),每個(gè)函數(shù)具有不同的功能,主要有主菜單函數(shù),插入功能子菜單函數(shù),查找功能子菜單函數(shù),學(xué)生信息
8、錄入函數(shù),顯示函數(shù),排序函數(shù),插入函數(shù)以及查找函數(shù)。在每個(gè)區(qū)域中會(huì)調(diào)用不同的函數(shù)來(lái)實(shí)現(xiàn)主要的功能。比如,在學(xué)生顯示這個(gè)功能里調(diào)用顯示函數(shù);在插入功能里調(diào)用子菜單函數(shù);在顯示信息時(shí)調(diào)用排序函數(shù)先對(duì)需要輸出的信心進(jìn)行排序,然后再輸出;在查找功能里會(huì)調(diào)用查找函數(shù)來(lái)進(jìn)行查找,包括按照性別,學(xué)號(hào),姓名,房間號(hào)等查詢。 而最主要的函數(shù)有 <1>插入函數(shù),它用尾插法來(lái)實(shí)現(xiàn); <2>排序函數(shù),用快速排序函數(shù)來(lái)實(shí)現(xiàn); <3>查找函數(shù),用逐個(gè)查找法;第三章 算法實(shí)現(xiàn)3.1 數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢系統(tǒng)是一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),學(xué)生的學(xué)號(hào)姓名房間號(hào)和性別等信息都保存在數(shù)據(jù)庫(kù)中。然后可以通
9、過(guò)程序來(lái)查找學(xué)生的各種信息。該程序所用的數(shù)學(xué)模型為線型結(jié)構(gòu)。 3.2 程序模塊 根據(jù)用戶需求不同,將系統(tǒng)劃分了不同的功能模塊,而依據(jù)不同的功能模塊編寫不同的程序模塊,具體如下:<1>信息錄入模塊(即為程序中的shuru()函數(shù))<2>信息插入模塊(即為charu()函數(shù))<3>信息查詢模塊(即為程序中的chazhao()函數(shù),包括chazaho1(),chazaho2(),chazaho3()三個(gè)子函數(shù))<4>信息顯示模塊(即為程序中的sort()函數(shù))而各個(gè)函數(shù)之間由一個(gè)switch結(jié)構(gòu)聯(lián)系起來(lái),而學(xué)生信息的連續(xù)輸入或者連續(xù)查找則由相應(yīng)的do-
10、while結(jié)構(gòu)來(lái)實(shí)現(xiàn),從而實(shí)現(xiàn)各個(gè)模塊之間的緊密銜接。 3.3 各模塊之間的調(diào)用關(guān)系是否繼續(xù)輸入“學(xué)號(hào),姓名,性別,房間號(hào)”顯示“宿舍管理查詢系統(tǒng)主菜單”插入功能子菜單查找功能子菜單 “信息錄入”“信息顯示”輸出已錄入的學(xué)生信息插入學(xué)生信息分別進(jìn)行查詢輸入“4”返回上一級(jí)菜單輸入“5”退出輸入“3”返回上一級(jí)菜單Y N結(jié)束3.4 源程序代碼#include <stdio.h> #include<iomanip> #include<fstream> # include <stdlib.h> #include<iostre
11、am.h># define N 20 /*自定義函數(shù)聲明部分*/ void showheader(); /聲明顯示表頭部分 int menu(); /聲明主菜單函數(shù) int menu3(); /聲明插入功能子菜單函數(shù) int menu5(); /聲明查找功能子菜單函數(shù) /int quanxian(); /聲明用戶權(quán)限管理函數(shù) /void SavePass(); /密碼顯示為"*"的函數(shù)struct student shuru(); /聲明學(xué)生信息錄入函數(shù) void display(struct student); /聲明顯示函數(shù) void sort(struct st
12、udent stuN,int,int); /聲明排序函數(shù) void charu(struct student stuN,int); /聲明插入函數(shù) void chazhao1(struct student stuN,int i); /聲明按照學(xué)號(hào)查找函數(shù) void chazhao2(struct student stuN,int i); /聲明按照姓名查找函數(shù) void chazhao3(struct student stuN,int i);/聲明按照房間號(hào)查找/*定義結(jié)構(gòu)體*/ struct student /* 構(gòu)造結(jié)構(gòu)成員 */int ID; char name15; char sex;
13、 int roomnum; float score3; char *getSex() if(sex='g') return "女" else return "男" ; /*主函數(shù)開(kāi)始*/ void main() struct student stuN; int count=0,m=0,j; char ch,ch1; int choice,choice3,choice4; /菜單選項(xiàng)及子菜單選項(xiàng) do /此循環(huán)體控制返回主菜單 ch1='n' /如果用戶將主菜單選擇錯(cuò)誤,可用此變量控制是否重輸 choice=menu();
14、switch(choice) /此條件結(jié)構(gòu)控制選擇菜單功能后的操作 case 1: /輸入學(xué)生信息 do /此循環(huán)體控制是否繼續(xù)輸入 cout<<"* 學(xué)員信息錄入 *n" cout<<"請(qǐng)輸入第"<<count+1<<"個(gè)學(xué)員的信息nn" stucount=shuru(); /調(diào)用輸入函數(shù) /cout<<"是否繼續(xù)(y/n)" fflush(stdin);/ 刷新標(biāo)準(zhǔn)輸入緩沖區(qū),把輸入緩沖區(qū)里的東西丟棄 ch=getchar(); count+; whi
15、le(ch='y'); break; case 2: /顯示排序好的學(xué)生信息 cout<<"* 學(xué)員信息顯示 *n" cout<<"n排序后的信息如下:n" sort(stu,0,count-1);/調(diào)用排序函數(shù) showheader(); for(j=0;j<count;j+) display(stuj); /調(diào)用顯示函數(shù) break; case 3:/插入功能 if(choice3!=3) /此循環(huán)體控制是否退出子菜單 choice3=menu3(); /調(diào)用子菜單函數(shù) if(choice3=1) /此條
16、件結(jié)構(gòu)控制子菜單選項(xiàng) do /此循環(huán)體判斷是否繼續(xù)插入 cout<<"* 學(xué)員信息插入 *n" charu(stu,count); /調(diào)用插入函數(shù) count+; cout<<"是否繼續(xù)插入?(y/n)" fflush(stdin); ch=getchar(); while(ch='y'); if (choice3=2) /此條件結(jié)構(gòu)控制子菜單選項(xiàng) cout<<"nn插入學(xué)生信息后如下:n" sort(stu,0,count-1);/調(diào)用排序函數(shù) showheader(); for(
17、j=0;j<count;j+) display(stuj); /調(diào)用顯示函數(shù) else menu(); break; case 4:/查找功能 if(choice4!=4) /控制是否繼續(xù)查找 choice4=menu5(); /調(diào)用查找子菜單函數(shù) if(choice4=1) /控制按照學(xué)號(hào)查找 chazhao1(stu,count);/調(diào)用按照學(xué)號(hào)查找的函數(shù) if(choice4=2) /控制按照姓名查找 chazhao2(stu,count);/調(diào)用按照姓名查找的函數(shù) if(choice4=3) /控制按照房間查找 chazhao3(stu,count);/調(diào)用按照房間查找的函數(shù) e
18、lse menu(); break; case 5:/退出 cout<<"確認(rèn)退出?(y/n)" /讓用戶確認(rèn)是否退出 fflush(stdin); ch=getchar(); break; default: cout<<"aa警告:您輸入錯(cuò)誤,是否重輸!(y/n)" fflush(stdin); ch1=getchar(); break; while(ch='n'|ch1='y');/控制是否要退出系統(tǒng) /*主函數(shù)結(jié)束*/ /*自定義輸入函數(shù)*/ struct student shuru() st
19、ruct student stu; cout<<"學(xué)號(hào):" cin>>stu.ID;cout<<"姓名:" cin>>;cout<<"性別(g/b):" fflush(stdin); cin>>stu.sex;cout<<"房間號(hào):"cin>>stu.roomnum;cout<<"是否繼續(xù)?(Y/N)"<<endl;return stu; /*自定義顯示函數(shù)*/
20、 void display(struct student stu) cout<<"t"<<stu.ID<<"t" cout<<<<"t"cout<<stu.getSex()<<"t"cout<<stu.roomnum<<"t"<<endl; /*自定義排序函數(shù)*/ void sort(struct student stuN,int i,int l) int ke
21、y; struct student temp;key=stui.ID;while(i<l)while(i<l&&stul.ID>=key)-l; temp=stul; stul=stui; stui=temp;while(i<l&&stui.ID<=key)+i; temp=stul; stul=stui; stui=temp; /*自定義插入函數(shù)*/ void charu(struct student stuN,int k) int i,l; struct student in ; in=shuru();/調(diào)用輸入函數(shù) for(i
22、=0;i<k;i+) for(l=k;l>i;l-) stul=stul-1; stui=in; /*自定義主菜單函數(shù)*/ int menu() int choice; cout<<"tt*nnttt 歡迎進(jìn)入學(xué)生宿舍管理查詢系統(tǒng) nntt*nn" cout<<"ttt*主菜單*nn" cout<<"tttt1> 學(xué)生信息錄入nn" cout<<"tttt2> 學(xué)生信息顯示nn" cout<<"tttt3> 插入學(xué)生
23、信息nn" cout<<"tttt4> 查找學(xué)生信息nn" cout<<"tttt5> 退出n" cout<<"nn請(qǐng)選擇功能選項(xiàng):" cin>>choice;return choice; /*自定義插入功能子菜單函數(shù)*/ int menu3() cout<<"t*這里顯示的是插入功能子菜單*nn" cout<<"tttt1、插入學(xué)生信息nn" cout<<"tttt2、顯示插入后
24、的學(xué)生信息nn" cout<<"tttt3、退出子菜單,返回上一級(jí)菜單nn" cout<<"nn請(qǐng)選擇功能選項(xiàng):" int choice3; cin>>choice3;return choice3; /*自定義按照學(xué)號(hào)查找函數(shù)*/ void chazhao1(struct student stuN,int i) int select,j; char ch; cout<<"t*您選擇的是按照學(xué)號(hào)查找:*nn" do cout<<"nn請(qǐng)輸入學(xué)號(hào):"
25、 cin>>select;for(j=0;j<i;j+) if(select=stuj.ID) break; if(j<i) showheader(); display(stuj); else cout<<"你查找的信息不存在n" fflush(stdin); ch=getchar(); while(ch='y'); /*自定義按照姓名查找函數(shù)*/ void chazhao2(struct student stuN,int i) int j; char name15; char ch; cout<<"
26、t*您選擇的是按照姓名查找:*nn" do cout<<"nn請(qǐng)輸入姓名:" cin>>name;for(j=0;j<i;j+) if(strcmp(name,)=0) break; if(j<i) showheader(); display(stuj); else cout<<"你查找的信息不存在n" fflush(stdin); ch=getchar(); while(ch='y'); /按照房間號(hào)查找void chazhao3(struct student
27、stuN,int i)int j,room;char ch;cout<<"t*您選擇的是按照房間號(hào)查找:*nn" do cout<<"nn請(qǐng)輸入房間號(hào):" cin>>room;for(j=0;j<i;j+) if(room=stuj.roomnum) break; if(j<i) showheader(); display(stuj); else cout<<"你查找的信息不存在n" cout<<"是否繼續(xù)查找?(y/n)" fflush(st
28、din); ch=getchar(); while(ch='y'); /*自定義查找功能子菜單函數(shù)*/ int menu5() cout<<"t*這里顯示的是查找功能子菜單*nn" cout<<"tttt1、按照學(xué)號(hào)查找nn" cout<<"tttt2、按照姓名查找nn" cout<<"tttt3、按照房間號(hào)查找nn"cout<<"tttt4、退出子菜單,返回上一級(jí)菜單nn" cout<<"nn請(qǐng)選
29、擇功能選項(xiàng):" int choice4; cin>>choice4;return choice4; void showheader() cout<<"nnt*n" cout<<"t學(xué)號(hào)t姓名t性別t房間號(hào)tn" cout<<"t*n" 第四章 測(cè)試與分析4.1 測(cè)試數(shù)據(jù)選擇學(xué)號(hào)姓名性別房間號(hào)18李東洋男22822李照耀男22728邵光光男23245曾廣海男228 4.2 測(cè)試結(jié)果分析主菜單顯示:信息錄入界面:信息顯示界面:插入學(xué)生信息界面:查找學(xué)生信息界面:由源程序及測(cè)試結(jié)果分
30、析可知:該程序主要功能有以下幾個(gè)函數(shù)來(lái)實(shí)現(xiàn):<1>插入函數(shù),其時(shí)間復(fù)雜度為o(n);<2>查找函數(shù),其時(shí)間復(fù)雜度為o(n);<3>排序函數(shù),其時(shí)間復(fù)雜度為knln(n);總 結(jié)經(jīng)過(guò)一個(gè)假期的放松,以前對(duì)許多知識(shí)都有點(diǎn)陌生,通過(guò)這次的課程設(shè)計(jì)使我明白了許多東西,翻閱了大量的書籍以及上網(wǎng)查了很多的相關(guān)資料,也從中學(xué)會(huì)了不少東西,它使我知識(shí)更加的系統(tǒng)化、全面化。在實(shí)驗(yàn)的過(guò)程中也讓我體會(huì)到了做任何事情都是要付出一定的努力的。一份努力一分收獲,每當(dāng)自己?jiǎn)为?dú)的成功解決某些問(wèn)題時(shí),都會(huì)感覺(jué)很興奮,也很有成就感。雖然設(shè)計(jì)完成了,但是我覺(jué)得其中還是由一些不足之處:1. 警告句
31、。程序中缺少一些警告句,例如:“是否真的退出(y/n)?”。2. 重名的情況。由于考慮的不周全,沒(méi)有設(shè)計(jì)遇到重名的情況該怎么處理。3. 選擇單一。我們?cè)O(shè)計(jì)的程序中,只設(shè)計(jì)了按名字選擇,進(jìn)行操作,忽略了重名的情況。整個(gè)程序完成了,還有很多不完善的地方,希望自己以后辦事的時(shí)候要認(rèn)真,仔細(xì),考慮周全。一個(gè)實(shí)驗(yàn)需要很多次的調(diào)試,我剛開(kāi)始寫好的程序出現(xiàn)了很多錯(cuò)誤,例如:由于數(shù)據(jù)類型不匹配而出現(xiàn)的結(jié)果不能正常顯示,由于沒(méi)有使用n以至于在運(yùn)行時(shí)界面顯示的沒(méi)規(guī)則,很零亂等等。通過(guò)不停的調(diào)試,所有的這些小問(wèn)題也最終都得到了解決。另外,功能也不是很完善,應(yīng)該對(duì)管理用戶名單做更清晰的判斷,分類。學(xué)生信息還不夠完整,
32、如:學(xué)生宿舍的舍長(zhǎng),費(fèi)用和成績(jī)等相關(guān)信息還要詳細(xì)。 在這次課程設(shè)計(jì)中,我體會(huì)到要想開(kāi)發(fā)應(yīng)該系統(tǒng)軟件,不僅需要相當(dāng)?shù)膶I(yè)技術(shù)知識(shí),還要有嚴(yán)謹(jǐn)縝密的思維能力。只有思想上清晰了,編程才有意義,否則就是白費(fèi)力氣。同時(shí)還要善于捕捉細(xì)小的方面,因?yàn)槟峭沁@個(gè)程序的致命因素。通過(guò)這次程序設(shè)計(jì),培養(yǎng)了我的細(xì)心和耐心嗎,也樹(shù)立一種正確的求知態(tài)度。在今后的工作、學(xué)習(xí)中我將認(rèn)真總結(jié)經(jīng)驗(yàn)教訓(xùn),努力使自己成為一名技術(shù)過(guò)硬、工作嚴(yán)謹(jǐn)、思維活躍的工程人員,為提高人們的生活質(zhì)量做出更大的貢獻(xiàn)。心得體會(huì)經(jīng)過(guò)這次課程設(shè)計(jì),我感到以后若要做比較復(fù)雜的程序,一定不能夠急于下手,而首先贏冷靜下來(lái),從總體上把握題目的要求,現(xiàn)根據(jù)題目的
33、要求將流程圖畫出來(lái),然后仔細(xì)想想程序的大致構(gòu)架是什么,用哪個(gè)結(jié)構(gòu)更能迅速準(zhǔn)確的將題目的要求表達(dá)出來(lái),對(duì)于我們這一學(xué)期實(shí)際學(xué)到的內(nèi)容的檢驗(yàn),在課程設(shè)計(jì)的同時(shí)不僅鞏固了以前所學(xué)過(guò)的知識(shí),而且還學(xué)到了很多在書本上沒(méi)有學(xué)到的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)際相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正的掌握,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。要學(xué)好數(shù)據(jù)結(jié)構(gòu)這門課程,不僅要認(rèn)真的閱讀課本知識(shí),更重要的是通過(guò)上機(jī)實(shí)驗(yàn)才能增強(qiáng)和鞏固對(duì)課本知識(shí)的理解。首先通過(guò)實(shí)踐我發(fā)現(xiàn)了自己的許多的不足,尤其是露出了對(duì)C語(yǔ)言知識(shí)基礎(chǔ)的掌握不好,
34、許多簡(jiǎn)單的東西都不知道。在課本上看到的各種算法感覺(jué)都很簡(jiǎn)單,但是真正的讓自己去寫一個(gè)算法感覺(jué)很困難,。即使是課本上的源程序算法,自己寫起來(lái)都感覺(jué)有點(diǎn)生疏。在調(diào)試過(guò)程中經(jīng)常出現(xiàn)的錯(cuò)誤也不是很熟悉。通過(guò)實(shí)踐,使我在這幾個(gè)方面的認(rèn)識(shí)有所提高,通過(guò)實(shí)踐的學(xué)習(xí),我認(rèn)識(shí)到學(xué)好計(jì)算機(jī)要重視實(shí)踐操作,不僅僅是數(shù)據(jù)結(jié)構(gòu),在其他的課程中都會(huì)注重實(shí)踐。所以在今后的學(xué)習(xí)過(guò)程中,我會(huì)更加注視實(shí)踐操作,使自己更好的學(xué)好計(jì)算機(jī)。回顧起此次數(shù)據(jù)機(jī)構(gòu)課程設(shè)計(jì),至今我仍然感慨頗多,的確,從選題到定稿,從理論到實(shí)踐,遇到了許多問(wèn)題,但是我也學(xué)到了許多東西雖然程序中不是很完美,但是對(duì)我而言已經(jīng)是很辛苦得來(lái)的成績(jī),我以后還需要繼續(xù)努力
35、!主抓枝干,捕捉細(xì)節(jié),樹(shù)立科學(xué)的學(xué)習(xí)態(tài)度,認(rèn)真努力!參考文獻(xiàn) 1王子恢,戴建鵬.c+語(yǔ)言大全(第四版).電子工業(yè)出版社 2003.42譚浩強(qiáng).c程序設(shè)計(jì)(第三版).清華大學(xué)出版社.3嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言版)清華大學(xué)出版社4皮德常.c+程序設(shè)計(jì)教程.機(jī)械工業(yè)出版社5赫伯特 c+語(yǔ)法大全 電子工業(yè)出版社河南城建學(xué)院課程設(shè)計(jì)報(bào)告書專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題 目:宿舍管理查詢軟件班 級(jí):0814102班學(xué)號(hào):081410222姓名:孟學(xué)豐同 組 人 員: 李照耀指 導(dǎo) 老 師:張延紅 張芳芳 楊斌完 成 時(shí) 間:2012年2月17日摘要在校學(xué)生的信息管理是校園管理中
36、的一個(gè)重要內(nèi)容,隨著國(guó)家擴(kuò)招政策的繼續(xù)實(shí)施,學(xué)生數(shù)量也不斷增加、信息的不斷細(xì)化、各個(gè)行業(yè)間聯(lián)系的不斷密切,對(duì)人事管理的要求也不斷提高。如何記錄和管理好學(xué)生的信息,對(duì)學(xué)生實(shí)施高效的宏觀管理,對(duì)學(xué)生出入宿舍以及學(xué)生注入和遷出的信息的靈活的記錄及更新,是一項(xiàng)繁重而艱巨的任務(wù)。 關(guān)鍵詞:C+;數(shù)據(jù)庫(kù)表;宿舍信息查詢;宿舍信息管理目錄目錄1第一章開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具11.1C#語(yǔ)言簡(jiǎn)介11.2 開(kāi)發(fā)背景11.3 開(kāi)發(fā)環(huán)境1 第二章 算法思想32.1 系統(tǒng)需求分析32.2 系統(tǒng)總體設(shè)計(jì)32.2.1 系統(tǒng)設(shè)計(jì)目標(biāo)32.2.2 開(kāi)發(fā)設(shè)計(jì)思想32.2.3 系統(tǒng)功能模塊設(shè)計(jì)42.3 算法思想描述4第三章算法實(shí)現(xiàn)53
37、.1 數(shù)據(jù)結(jié)構(gòu)53.2 程序模塊53.3 各模塊之間的調(diào)用關(guān)系63.4 源程序代碼6第四章測(cè)試與分析144.1 測(cè)試數(shù)據(jù)選擇144.2 測(cè)試結(jié)果分析16總 結(jié)18心得體會(huì)19參考文獻(xiàn)20第二章 開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具1.2 C/ C +語(yǔ)言簡(jiǎn)介C+標(biāo)準(zhǔn)可分為兩部分, C+語(yǔ)言本身和C+標(biāo)準(zhǔn)庫(kù)。C+標(biāo)準(zhǔn)庫(kù)對(duì)于Visual C+是相當(dāng)新的,實(shí)際上微軟只是在發(fā)布Visual C+ 5.0時(shí)去除了一些“bug”。標(biāo)準(zhǔn)庫(kù)提供了標(biāo)準(zhǔn)的輸入/輸出、字符串、容器(如矢量、列表和映射等)、非數(shù)值運(yùn)算(如排序、搜索和合并等)和對(duì)數(shù)值計(jì)算的支持。應(yīng)該說(shuō), C/C+包含了相對(duì)少的關(guān)鍵字,而且很多最有用的函數(shù)都來(lái)源于庫(kù),C
38、+標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)容器和算法的部分就是STL。 STL是數(shù)據(jù)結(jié)構(gòu)和算法的一個(gè)框架,數(shù)據(jù)結(jié)構(gòu)包括矢量、列表和映射等,算法包括這些數(shù)據(jù)結(jié)構(gòu)的查找、拷貝和排序等。1994年7月,ANSI/ISO C+標(biāo)準(zhǔn)委員會(huì)投票決定接受STL為C+標(biāo)準(zhǔn)庫(kù)的一部分,這個(gè)建議是根據(jù)Alex Stepanov、Meng Lee和David Musser這三人的編程和軟件庫(kù)研究提出的。STL的產(chǎn)生是為了滿足通用性的設(shè)計(jì)目標(biāo),而不是為了提高性能。 1.2 開(kāi)發(fā)背景 隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們所深刻認(rèn)識(shí),它己進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。采用計(jì)算機(jī)進(jìn)行信息化管理已成為衡量企業(yè)
39、管理科學(xué)化和現(xiàn)代化的重要標(biāo)志,而人事管理的全面自動(dòng)化、信息化則是其中重要的組成部分。人事管理的好壞對(duì)于企業(yè)的決策者和管理者來(lái)說(shuō)都至關(guān)重要,在很大程度上影響著企業(yè)的經(jīng)濟(jì)效益和社會(huì)效益。因此,本文所研究的人事管理信息系統(tǒng)具有一定的使用價(jià)值和現(xiàn)實(shí)意義。1.3 開(kāi)發(fā)環(huán)境本文所采用的開(kāi)發(fā)環(huán)境主要是在一般的PC硬件環(huán)境和Windouws Vista/2003/XP系統(tǒng)由Visual+6.0編寫而成,在用到Microsoft Visual C+6.0中c語(yǔ)言的情況下,對(duì)于查詢采用了逐個(gè)查詢法,程序通過(guò)調(diào)試運(yùn)行實(shí)現(xiàn)了設(shè)計(jì)目標(biāo),并且經(jīng)過(guò)適當(dāng)完善后,將可以應(yīng)用在實(shí)際中解決問(wèn)題。第二章 算法思想2.1 系統(tǒng)需求分析
40、從總體分析可知,該宿舍管理系統(tǒng)必須滿足用戶以下基本需求:<1> 可對(duì)入住學(xué)生可進(jìn)行信息錄入;<2>可對(duì)新入學(xué)生的信息進(jìn)行插入<3>可按學(xué)號(hào),姓名,房間號(hào)等任意一種方式查詢學(xué)生的信息<4>可按學(xué)號(hào),房間號(hào)來(lái)進(jìn)行排序2.2 系統(tǒng)總體設(shè)計(jì)2.2.1 系統(tǒng)設(shè)計(jì)目標(biāo)4 本文研究:為宿舍管理人員編寫一個(gè)宿舍管理查詢軟件, 程序設(shè)計(jì)要求:4.1.1 采用交互工作方式4.1.2 建立數(shù)據(jù)文件 ,數(shù)據(jù)文件按關(guān)鍵字(姓名、學(xué)號(hào)、房號(hào))進(jìn)行排序(分別用冒泡、選擇、插入排序?qū)崿F(xiàn))5 查詢菜單: (用二分查找實(shí)現(xiàn)以下操作)5.1.1 按姓名查詢5.1.2 按學(xué)號(hào)查詢5.1
41、.3 按房號(hào)查詢6 打印任一查詢結(jié)果并可以連續(xù)操作。2.2.2 開(kāi)發(fā)設(shè)計(jì)思想 基于以上系統(tǒng)設(shè)計(jì)目標(biāo),本文在開(kāi)發(fā)人事管理信息系統(tǒng)時(shí)遵循了以下開(kāi)發(fā)設(shè)計(jì)思想: 采用現(xiàn)有的軟硬件環(huán)境及先進(jìn)的管理系統(tǒng)開(kāi)發(fā)方案,從而達(dá)到充分利用現(xiàn)有資源,提高系統(tǒng)開(kāi)發(fā)水平和應(yīng)用效果的目的。盡量達(dá)到操作過(guò)程中的直觀、方便、實(shí)用、安全等要求。系統(tǒng)采用模塊化程序設(shè)計(jì)方法,既便于系統(tǒng)功能的各種組合和修改,又便于未參與開(kāi)發(fā)的技術(shù)維護(hù)人員補(bǔ)充、維護(hù)。系統(tǒng)應(yīng)具備數(shù)據(jù)庫(kù)維護(hù)功能,及時(shí)根據(jù)用戶需求進(jìn)行數(shù)據(jù)的添加、查找、顯示、排序等操作。2.2.3 系統(tǒng)功能模塊設(shè)計(jì) 本系統(tǒng)分為四個(gè)模塊:查找子菜單、信息錄入、信息顯示、查找功能子菜單。得到如圖
42、3-1所示的系統(tǒng)功能模塊圖學(xué)生宿舍管理錄入后顯示學(xué)生信息顯示學(xué)生信息錄入學(xué)生信息插入學(xué)生信息查詢按姓名查詢按學(xué)號(hào)查詢按房間號(hào)查詢查詢時(shí)顯示插入后顯示圖3-1系統(tǒng)功能模塊2.3 算法思想描述 該程序的由多種函數(shù)實(shí)現(xiàn),每個(gè)函數(shù)具有不同的功能,主要有主菜單函數(shù),插入功能子菜單函數(shù),查找功能子菜單函數(shù),學(xué)生信息錄入函數(shù),顯示函數(shù),排序函數(shù),插入函數(shù)以及查找函數(shù)。在每個(gè)區(qū)域中會(huì)調(diào)用不同的函數(shù)來(lái)實(shí)現(xiàn)主要的功能。比如,在學(xué)生顯示這個(gè)功能里調(diào)用顯示函數(shù);在插入功能里調(diào)用子菜單函數(shù);在顯示信息時(shí)調(diào)用排序函數(shù)先對(duì)需要輸出的信心進(jìn)行排序,然后再輸出;在查找功能里會(huì)調(diào)用查找函數(shù)來(lái)進(jìn)行查找,包括按照性別,學(xué)號(hào),姓名,房
43、間號(hào)等查詢。 而最主要的函數(shù)有 <1>插入函數(shù),它用尾插法來(lái)實(shí)現(xiàn); <2>排序函數(shù),用快速排序函數(shù)來(lái)實(shí)現(xiàn); <3>查找函數(shù),用逐個(gè)查找法;第五章 算法實(shí)現(xiàn)3.1 數(shù)據(jù)結(jié)構(gòu)宿舍管理查詢系統(tǒng)是一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),學(xué)生的學(xué)號(hào)姓名房間號(hào)和性別等信息都保存在數(shù)據(jù)庫(kù)中。然后可以通過(guò)程序來(lái)查找學(xué)生的各種信息。該程序所用的數(shù)學(xué)模型為線型結(jié)構(gòu)。 3.2 程序模塊 根據(jù)用戶需求不同,將系統(tǒng)劃分了不同的功能模塊,而依據(jù)不同的功能模塊編寫不同的程序模塊,具體如下:<1>信息錄入模塊(即為程序中的shuru()函數(shù))<2>信息插入模塊(即為charu()函數(shù))
44、<3>信息查詢模塊(即為程序中的chazhao()函數(shù),包括chazaho1(),chazaho2(),chazaho3()三個(gè)子函數(shù))<4>信息顯示模塊(即為程序中的sort()函數(shù))而各個(gè)函數(shù)之間由一個(gè)switch結(jié)構(gòu)聯(lián)系起來(lái),而學(xué)生信息的連續(xù)輸入或者連續(xù)查找則由相應(yīng)的do-while結(jié)構(gòu)來(lái)實(shí)現(xiàn),從而實(shí)現(xiàn)各個(gè)模塊之間的緊密銜接。 3.3 各模塊之間的調(diào)用關(guān)系是否繼續(xù)輸入“學(xué)號(hào),姓名,性別,房間號(hào)”顯示“宿舍管理查詢系統(tǒng)主菜單”插入功能子菜單查找功能子菜單 “信息錄入”“信息顯示”輸出已錄入的學(xué)生信息插入學(xué)生信息分別進(jìn)行查詢輸入“4”返回上一級(jí)菜
45、單輸入“5”退出輸入“3”返回上一級(jí)菜單Y N結(jié)束3.4 源程序代碼#include <stdio.h> #include<iomanip> #include<fstream> # include <stdlib.h> #include<iostream.h># define N 20 /*自定義函數(shù)聲明部分*/ void showheader(); /聲明顯示表頭部分 int menu(); /聲明主菜單函數(shù) int menu3(); /聲明插入功能子菜單函數(shù) int menu5(); /聲明查找功能子菜單函數(shù) /int quanx
46、ian(); /聲明用戶權(quán)限管理函數(shù) /void SavePass(); /密碼顯示為"*"的函數(shù)struct student shuru(); /聲明學(xué)生信息錄入函數(shù) void display(struct student); /聲明顯示函數(shù) void sort(struct student stuN,int,int); /聲明排序函數(shù) void charu(struct student stuN,int); /聲明插入函數(shù) void chazhao1(struct student stuN,int i); /聲明按照學(xué)號(hào)查找函數(shù) void chazhao2(struct
47、 student stuN,int i); /聲明按照姓名查找函數(shù) void chazhao3(struct student stuN,int i);/聲明按照房間號(hào)查找/*定義結(jié)構(gòu)體*/ struct student /* 構(gòu)造結(jié)構(gòu)成員 */int ID; char name15; char sex; int roomnum; float score3; char *getSex() if(sex='g') return "女" else return "男" ; /*主函數(shù)開(kāi)始*/ void main() struct student
48、 stuN; int count=0,m=0,j; char ch,ch1; int choice,choice3,choice4; /菜單選項(xiàng)及子菜單選項(xiàng) do /此循環(huán)體控制返回主菜單 ch1='n' /如果用戶將主菜單選擇錯(cuò)誤,可用此變量控制是否重輸 choice=menu(); switch(choice) /此條件結(jié)構(gòu)控制選擇菜單功能后的操作 case 1: /輸入學(xué)生信息 do /此循環(huán)體控制是否繼續(xù)輸入 cout<<"* 學(xué)員信息錄入 *n" cout<<"請(qǐng)輸入第"<<count+1&l
49、t;<"個(gè)學(xué)員的信息nn" stucount=shuru(); /調(diào)用輸入函數(shù) /cout<<"是否繼續(xù)(y/n)" fflush(stdin);/ 刷新標(biāo)準(zhǔn)輸入緩沖區(qū),把輸入緩沖區(qū)里的東西丟棄 ch=getchar(); count+; while(ch='y'); break; case 2: /顯示排序好的學(xué)生信息 cout<<"* 學(xué)員信息顯示 *n" cout<<"n排序后的信息如下:n" sort(stu,0,count-1);/調(diào)用排序函數(shù) s
50、howheader(); for(j=0;j<count;j+) display(stuj); /調(diào)用顯示函數(shù) break; case 3:/插入功能 if(choice3!=3) /此循環(huán)體控制是否退出子菜單 choice3=menu3(); /調(diào)用子菜單函數(shù) if(choice3=1) /此條件結(jié)構(gòu)控制子菜單選項(xiàng) do /此循環(huán)體判斷是否繼續(xù)插入 cout<<"* 學(xué)員信息插入 *n" charu(stu,count); /調(diào)用插入函數(shù) count+; cout<<"是否繼續(xù)插入?(y/n)" fflush(stdin); ch=getchar(); while(ch='y'
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 垃圾清運(yùn)服務(wù)合同報(bào)價(jià)
- 預(yù)制構(gòu)件購(gòu)買協(xié)議書
- 抽樣誤差與假設(shè)檢驗(yàn)
- 九年級(jí)化學(xué)上冊(cè) 3.2 制取氧氣 氧氣的制取教案2 (新版)粵教版
- 二年級(jí)品德與生活下冊(cè) 快樂(lè)的六一 2教案 人教新課標(biāo)版
- 高中信息技術(shù)《走近人工智能》教學(xué)設(shè)計(jì)
- 2024-2025學(xué)年高中歷史 第8單元 第27課 世紀(jì)之交的世界格局教案 新人教版必修1
- 廣東省廉江市實(shí)驗(yàn)學(xué)校高中政治 11.1 面對(duì)經(jīng)濟(jì)全球化教案(必修1)
- 2024秋八年級(jí)英語(yǔ)上冊(cè) Module 2 My home town and my country Unit 3 Language in use教學(xué)設(shè)計(jì)(新版)外研版
- 租賃空窗期合同(2篇)
- 動(dòng)脈瘤栓塞術(shù)術(shù)后護(hù)理
- 2024年煤礦主要負(fù)責(zé)人安全考試題庫(kù)(濃縮500題)
- 2024年全新公司股權(quán)期權(quán)協(xié)議書
- 口腔牙科診所技工室工作制度
- 英語(yǔ)KET官方樣題Test1- Test 2
- 七年級(jí)語(yǔ)文上冊(cè)15梅嶺三章課件
- 財(cái)務(wù)管理考試試題及答案
- Unit 4 The Earth【速記清單】含答案解析
- 【課件】第七單元能源的合理利用與開(kāi)發(fā)新版教材單元分析-九年級(jí)化學(xué)人教版(2024)上冊(cè)
- 《新能源汽車維護(hù)與保養(yǎng)》課件-任務(wù)2 新能源汽車二級(jí)維護(hù)
- 第一單元《圓》(單元測(cè)試)-2024-2025學(xué)年六年級(jí)上冊(cè)數(shù)學(xué)北師大版
評(píng)論
0/150
提交評(píng)論