版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
武漢理工大學(xué)《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)說明書PAGE25考務(wù)管理程序的設(shè)計(jì)與實(shí)現(xiàn)摘要考務(wù)管理是學(xué)校考務(wù)管理的重要部分,需要面對(duì)大量的學(xué)生信息,采用人工處理將浪費(fèi)大量的人力、物力和時(shí)間,且數(shù)據(jù)的準(zhǔn)確性低,考試日程安排是考務(wù)管理系統(tǒng)的核心部分。主要功能由考場安排、時(shí)間安排、監(jiān)考教師安排及自動(dòng)安排組成,功能基本涵蓋普通教務(wù)管理業(yè)務(wù)范圍,本文論述了考務(wù)管理的背景、需求分析、系統(tǒng)設(shè)計(jì)和系統(tǒng)實(shí)現(xiàn)。主要介紹了考務(wù)管理系統(tǒng)中考試日程安排的實(shí)現(xiàn)方案,并在此基礎(chǔ)上給出了關(guān)鍵模塊的實(shí)現(xiàn)算法,著重論述了系統(tǒng)中考試安排功能模塊的設(shè)計(jì)思想、實(shí)現(xiàn)方法、及相關(guān)技術(shù)。最后對(duì)系統(tǒng)的應(yīng)用及進(jìn)一步完善作了總結(jié)。關(guān)鍵字:考務(wù)管理系統(tǒng);考試日程;DesignandImplementationofExaminationScheduleinExaminationManagementSystemabstractExaminationmanagementistheimportantpartofschoolexaminationmanagement,needtofaceplentyofstudentinformations,willwasteplentyofmanpower,materialresourcesandtimewithartificialhandling,andtheaccuracyofdatalows.Examinationprogrammearrangementisthekeypartofexaminationmanagementsystem.Itconsistsoffoursubsystems,theyarethearrangementofexaminationclassroom,arrangementofexaminationtime,arrangementofexaminationteacherandautomaticalarrangement.Thefunctionscanmeetthedemandsofit,thelevelofexammanagingrapidlyThispaperhasdiscusseddemandandthebackgroundofexaminationmanagementtoanalyse,systemdesignandsystemimplementation.Haveintroducedmainlytheimplementationofexaminationprogrammearrangementinexaminationmanagementsystemthatrealizesschemeandhasgivencrucialmodularonthisfoundationalgorithm,havediscussedtheexaminationarrangementinsystememphaticallythedesignideological,implementationmethodoffunctionmodular,andrelatedtechnology.Perfectfinallyandfurtherforsystematicapplicationandhavemadesummary.Keywords:Examinationmanagementsystem;ExamProgramme.考務(wù)管理程序的設(shè)計(jì)與實(shí)現(xiàn)1引言隨著知識(shí)經(jīng)濟(jì)時(shí)代的到來,信息化程度越來越高,知識(shí)總量劇增,知識(shí)更新的速度也越來越快,這使得教育管理的負(fù)擔(dān)越來越重。目前,很多高等學(xué)校還應(yīng)用手工式或單機(jī)式的方法進(jìn)行考務(wù)管理,這無疑給教育者帶來很多不必要的重復(fù)工作量。但同時(shí),我們也欣喜地看到很多學(xué)校已組建或正在組建校園網(wǎng)。許多教師也在學(xué)習(xí)現(xiàn)代教育理論,用于輔助教學(xué)的現(xiàn)代教育媒體的種類越來越豐富,功能也越來越完善,而新的教育媒體在不斷地研制,這無疑為解決這一難題帶來了更好的條件和手段。隨著高校辦學(xué)規(guī)模的不斷擴(kuò)大,教學(xué)資源顯得非常緊張,每年期中、期末期間都要安排數(shù)量眾多的考試,因?yàn)榘嗉?jí)眾多,考試科目繁多,監(jiān)考人員數(shù)量大等原因,如何準(zhǔn)確高效地安排考務(wù)工作,使教學(xué)資源達(dá)到最佳配置,是高校教務(wù)管理部門亟待解決的問題。2系統(tǒng)需求分析2.1系統(tǒng)功能需求分析(1)各個(gè)班學(xué)生課程和考試教室的安排;(2)排出考試日程表;(3)考試日程表的查詢??紙霭才殴δ苤饕糜趯?duì)考場信息進(jìn)行管理,實(shí)現(xiàn)考場安排,及時(shí)對(duì)所安排的課程進(jìn)行沖突檢測,以避免同一間考場在同一時(shí)間內(nèi)同時(shí)安排了兩門或兩門以上課程。對(duì)考場進(jìn)行查找、添加、刪除時(shí),要方便教務(wù)員操作,使其在最短時(shí)間內(nèi)對(duì)所需考場進(jìn)行安排。時(shí)間安排功能主要用于對(duì)課程進(jìn)行時(shí)間安排,并及時(shí)對(duì)所安排的課程進(jìn)行沖突檢測,以避免同一時(shí)間在相同的考場內(nèi)同時(shí)安排了兩門或兩門以上課程;實(shí)用性要求所需業(yè)務(wù)能實(shí)時(shí)處理,數(shù)據(jù)集中管理,充分利用系統(tǒng)資源;高效率要求:①確保每次操作數(shù)據(jù)及時(shí)傳遞到數(shù)據(jù)庫中。②確保每次考試安排快速準(zhǔn)確,在技術(shù)上優(yōu)先考慮系統(tǒng)的可靠性,保證系統(tǒng)具有良好的容錯(cuò)性。③保證系統(tǒng)的功能正常;在系統(tǒng)的建設(shè)中,要在有經(jīng)濟(jì)條件的前提下多采用適用的先進(jìn)技術(shù),以保證系統(tǒng)的后繼建設(shè)能夠順利進(jìn)行,保護(hù)系統(tǒng)的有效性;在考務(wù)管理系統(tǒng)的設(shè)計(jì)中應(yīng)充分考慮系統(tǒng)的靈活性和可擴(kuò)展性。系統(tǒng)的維護(hù)都不應(yīng)對(duì)系統(tǒng)的運(yùn)行造成太大影響。系統(tǒng)設(shè)計(jì)時(shí),從系統(tǒng)的功能和結(jié)構(gòu)設(shè)計(jì)都充分考慮這一需求,保證系統(tǒng)的擴(kuò)展和維護(hù)。建設(shè)易于擴(kuò)展的系統(tǒng)結(jié)構(gòu),保證系統(tǒng)的擴(kuò)展和維護(hù)??紕?wù)管理系統(tǒng)的信息涉及學(xué)校和學(xué)生的基本信息,具有特殊性和重要性。系統(tǒng)應(yīng)對(duì)個(gè)人基本信息有良好的安全保護(hù)措施。對(duì)于通過網(wǎng)絡(luò)訪問的用戶應(yīng)有完善的權(quán)限設(shè)置策略,對(duì)用戶的操作進(jìn)行全面的審核。通過數(shù)據(jù)庫本身安全機(jī)制、系統(tǒng)的安全設(shè)置、嚴(yán)格管理等多種技術(shù)和管理手段,保證數(shù)據(jù)的使用安全。作為系統(tǒng)本身,最寶貴的財(cái)富就是在系統(tǒng)中存儲(chǔ)的數(shù)據(jù),應(yīng)建立有效、快速的數(shù)據(jù)備份和恢復(fù)系統(tǒng),保證數(shù)據(jù)的存儲(chǔ)安全。2.2可行性分析本系統(tǒng)開發(fā)所使用的軟件都是免費(fèi)的,硬件要求也不是很高,目前高校中很多學(xué)生都已擁有個(gè)人PC,并且接入校園網(wǎng),所以開發(fā)投入和使用耗資都是極少的,因此開發(fā)系統(tǒng)在經(jīng)濟(jì)上是完全可行的。大多數(shù)高校學(xué)生早已使用過微軟的Windows操作平臺(tái),而考務(wù)管理系統(tǒng)正是基于微軟Windows操作平臺(tái)來開發(fā)的客戶端,相信在學(xué)過計(jì)算機(jī)基礎(chǔ)的同學(xué)們眼中,熟悉這樣一個(gè)簡單的系統(tǒng)是件非常容易的事。而且本系統(tǒng)友好的用戶界面設(shè)計(jì),能夠引導(dǎo)用戶很快地掌握系統(tǒng)的使用方。本系統(tǒng)使用MicrosoftVisualStudio2008、MicrosoftSQLServer2005、Office2007等軟件,結(jié)合C#、ASP.NET技術(shù)進(jìn)行開發(fā),都是微軟的產(chǎn)品,軟件友好、操作簡單的用戶界面一直得到業(yè)界開發(fā)人員的好評(píng)。所以這樣的結(jié)合無疑是較為成功的解決方案。MicrosoftSQLServer2005數(shù)據(jù)庫不會(huì)像ORACLE那樣耗資源,在于高校這種數(shù)據(jù)量不是巨大的環(huán)境下足以應(yīng)付。而ASP.NET是目前B/S模式中較為流行的技術(shù),穩(wěn)定性也很好,技術(shù)支持資料容易查找,所以在技術(shù)實(shí)現(xiàn)上應(yīng)該是相對(duì)容易的。2.3系統(tǒng)設(shè)計(jì)目標(biāo)考務(wù)管理系統(tǒng)以學(xué)生、老師為主要服務(wù)對(duì)象核心開發(fā)思想是實(shí)現(xiàn)考場安排,以考務(wù)管理為核心,提供多種形式的考務(wù)信息查詢功能。為了達(dá)到預(yù)期的效果。最基本的要求是系統(tǒng)能夠運(yùn)行起來,實(shí)現(xiàn)資源共享。輔助高校處理考務(wù)管理工作,優(yōu)化資源配置,實(shí)現(xiàn)管理現(xiàn)代化、信息化的目的。3結(jié)構(gòu)設(shè)計(jì)3.1功能結(jié)構(gòu)的設(shè)計(jì)考場安排考場安排Test_room.asp時(shí)間安排Test_time.asp考試安排(MANAGE)已排課程Yp_lesson.asp3.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)采用單鏈表的存儲(chǔ)方式,進(jìn)行學(xué)生數(shù)據(jù)的依次存儲(chǔ),以此來實(shí)現(xiàn)動(dòng)態(tài)存儲(chǔ)的目的;并進(jìn)行一定量的查找操作。typedefstruct{//存儲(chǔ)學(xué)生信息的節(jié)點(diǎn)結(jié)構(gòu) intnum; charname[20]; chartestID[9];}Student;typedefstructStuNode{//表示學(xué)生單鏈表節(jié)點(diǎn)的結(jié)構(gòu)體 Studentstudent; structStuNode*next;}StudentNode;typedefstruct{//表示學(xué)生單鏈表結(jié)構(gòu)體 StudentNode*firstNode;StudentNode*endNode;intlength;}StudentChain;4主要算法設(shè)計(jì)其中只有這么幾個(gè)主要的算法:(1)建立學(xué)生信息單鏈表;(2)輸入節(jié)點(diǎn)信息;(3)顯示節(jié)點(diǎn)信息;(4)生成準(zhǔn)考證號(hào)。StudentChain*CreateStudentChain(){//建立學(xué)生信息單鏈表StudentChain*stuChain=(StudentChain*)malloc(sizeof(StudentChain));if(NULL==stuChain)returnNULL;else{stuChain->firstNode=NULL;stuChain->length=0;}returnstuChain;}intInputStudentInfo(int*num,charname[20]) {//輸入節(jié)點(diǎn)信息 intch=0; intquit='\0'; name[0]='\0'; printf(">"); scanf("%d,%s",num,name); CLEAR_INPUT_BUFF(ch); if(*num<10){ printf("輸入錯(cuò)誤!\n"); return-1; } if(strlen(name)==0) { printf("emptyname!\n"); return-1; } printf("保存成功,是否繼續(xù)錄入?(y/n)"); quit=getchar(); CLEAR_INPUT_BUFF(ch); if(quit!='y'&&quit!='Y') return0; return1; }voidDisplayStuInfo(StudentChain*stuChain){//顯示節(jié)點(diǎn)信息 StudentNode*curNode=NULL; chartestId[9]; if(NULL==stuChain||stuChain->length==0) {printf("當(dāng)前沒有任何考生信息!請(qǐng)輸入:\n"); return; } printf("**********************************************************\n"); printf("考號(hào)\t姓名\t準(zhǔn)考證號(hào)\t考場號(hào)\t座位號(hào)\n"); printf("\n"); for(curNode=stuChain->firstNode;curNode!=NULL;curNode=curNode->next) { strncpy(testId,curNode->student.testID,9); if('\0'==testId[0]) { printf("%d\t%s\t%s\t%s\t%s",curNode->student.num,curNode->,"","","\n"); } else { printf("%d\t%s\t%s\t%c%c\t%c%c\n",curNode->student.num,curNode->,curNode->student.testID,curNode->student.testID[0],curNode->student.testID[1],curNode->student.testID[6],curNode->student.testID[7]); } }}intCreateTestId(StudentChain*stuChain,intmaxStuCount) {//生成準(zhǔn)考證號(hào) inti=0,j=0; intmaxExamRoom=0; int*seats=NULL; intarranged=0; intremain=0; intcurRoomStus=0; charnum[20]; StudentNode*tmpStuNode=NULL; if(NULL==stuChain||maxStuCount<=0) return-1; seats=((int*)malloc(sizeof(int)*maxStuCount)); if(NULL==(seats=(int*)malloc(sizeof(int)*maxStuCount))) return-2; maxExamRoom=stuChain->length/maxStuCount; remain=stuChain->length%maxStuCount; if(remain>0)maxExamRoom++; for(i=1;i<=maxExamRoom;i++) { remain=stuChain->length-arranged; curRoomStus=(remain>maxStuCount?maxStuCount:remain); if(CreateRandNums(1,curRoomStus,seats,curRoomStus)>=0) {for(j=0;j<curRoomStus;j++) { if((tmpStuNode=GetStudentNodeByIndex(stuChain,arranged))!=NULL) { num[sprintf(num,"%d",tmpStuNode->student.num)]='\0'; if(strlen(num)<2)continue; sprintf(tmpStuNode->student.testID,"%02d%02d%c%c%02d",i,CODE,num[0],num[1],seats[j]); arranged++; } } } }free(seats); return0; }5程序?qū)崿F(xiàn)及測試5.1調(diào)試程序使用VC編譯環(huán)境開發(fā),各種功能選項(xiàng)一目了然,操作起來比較方便快捷,易于上手,起初編譯之后出現(xiàn)了許多錯(cuò)誤,基本都是在函數(shù)定義,結(jié)構(gòu)體定義的地方,畢竟是電腦語言,不能有絲毫的差錯(cuò),否則電腦就不能識(shí)別,也就無法通過編譯,不過程序還存在一些安全性問題,比如安全性問題(區(qū)別教師及學(xué)生的登錄權(quán)限等),密碼設(shè)置方面等等。5.2測試在按照登陸界面的要求一一輸入學(xué)生信息后,程序會(huì)自動(dòng)將已經(jīng)輸入的學(xué)生信息進(jìn)行保存,以便之后進(jìn)行查詢刪除等操作,而日期查詢功能則就是一個(gè)switch語句,以此可以查詢?cè)撊盏目荚囌n程。測試結(jié)果基本符合任務(wù)書的基本要求,只是在安全性托展功能方面,欠缺了一些考慮,程序還有待完善。6設(shè)計(jì)體會(huì)經(jīng)過幾天的設(shè)計(jì)和開發(fā),考務(wù)管理系統(tǒng)基本開發(fā)完畢。其功能基本符合用戶需求,能夠完成學(xué)生考試安排。并提供部分系統(tǒng)維護(hù)功能,使用戶方便進(jìn)行數(shù)據(jù)備份和恢復(fù)、數(shù)據(jù)刪除。該應(yīng)用系統(tǒng)已經(jīng)通過試運(yùn)行,基本可以替代人工的部分工作,具有較好的應(yīng)用價(jià)值,實(shí)現(xiàn)了預(yù)定的設(shè)計(jì)目標(biāo)。但是該系統(tǒng)還有許多有待改進(jìn)的地方,如用戶界面操作便捷性,程序的執(zhí)行效率等??粗约鹤龅南到y(tǒng),自己就會(huì)又欣慰又難過,欣慰的是自己終于把它做出來了,而且,做的還好,難過的是自己知道還有很多的不足,但是,由于認(rèn)識(shí)的有限,無法去完善,才知道“書到用時(shí)方恨少”結(jié)束語這幾天的課程設(shè)計(jì),時(shí)間有點(diǎn)緊張,讓我明白了計(jì)算機(jī)語言的神奇之處,也明白了數(shù)據(jù)結(jié)構(gòu)這門課對(duì)于我們的重要性,非常感謝幾位研究生學(xué)長的幫助和支持,才能讓我的程序得以完美運(yùn)行。通過這次課設(shè),我加深了對(duì)于考務(wù)管理系統(tǒng)的認(rèn)識(shí),“不僅要知其然,還要知其所以然”,是這次我的又一心得。課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié)這次課程設(shè)計(jì)雖然很累,但我學(xué)到了不少東西,對(duì)軟件的設(shè)計(jì)過程和方法有了更深入的了解,培養(yǎng)了我們的團(tuán)隊(duì)精神,鍛煉了我們的溝通和表達(dá)能力。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。實(shí)踐出真知,通過親自動(dòng)手制作,使我們掌握的知識(shí)不再是紙上談兵。在整個(gè)設(shè)計(jì)過程中,通過怎樣對(duì)把各個(gè)管理信息連接起來的分析,鍛煉了我們對(duì)事情的分析能力,通過怎樣解決過程中出現(xiàn)的問題,提高了我們查找文獻(xiàn)的能力、對(duì)網(wǎng)絡(luò)資源的利用能力。課程設(shè)計(jì)誠然是一門專業(yè)課,給我很多專業(yè)知識(shí)以及專業(yè)技能上的提升,同時(shí),設(shè)計(jì)讓我感觸很深,使我對(duì)抽象的理論有了具體的認(rèn)識(shí)?;仡櫰鸫苏n程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。參考文獻(xiàn)[1]齊向明.通用考務(wù)管理系統(tǒng)的需求分析與系統(tǒng)設(shè)計(jì)[J].遼寧工程技術(shù)大學(xué)學(xué)報(bào)(社會(huì)科學(xué)版),2003[2]王竹萍,陳翔.計(jì)算機(jī)應(yīng)用能力考核考務(wù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].杭州師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2005[3]張海藩.軟件工程導(dǎo)論[M].北京:清華大學(xué)出版社,2005[4]李傳偉,陳建明.考務(wù)管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2004[5]譚浩強(qiáng).C++面向?qū)ο蟪绦蛟O(shè)計(jì)清華大學(xué)出版社2006.01[6]嚴(yán)蔚敏、吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)清華大學(xué)出版社2011-11[7]百度百科、維基百科-自由的百科全書附錄(源代碼):#include<stdio.h>#include<string.h>#include<malloc.h>#include<conio.h>#include<stdlib.h>#include<time.h>#defineQUIT0#defineCLEAR_INPUT_BUFF(c)while((c=getchar())!=EOF&&c!='\n')#defineCODE18typedefstruct{//存儲(chǔ)學(xué)生信息的節(jié)點(diǎn)結(jié)構(gòu) intnum; charname[20]; chartestID[9];}Student;typedefstructStuNode{//表示學(xué)生單鏈表節(jié)點(diǎn)的結(jié)構(gòu)體 Studentstudent; structStuNode*next;}StudentNode;typedefstruct{//表示學(xué)生單鏈表結(jié)構(gòu)體 StudentNode*firstNode;StudentNode*endNode;intlength;}StudentChain;StudentChain*CreateStudentChain(){//建立學(xué)生信息單鏈表StudentChain*stuChain=(StudentChain*)malloc(sizeof(StudentChain));if(NULL==stuChain)returnNULL;else{stuChain->firstNode=NULL;stuChain->length=0;}returnstuChain;}StudentNode*CreateStudentNode(intnum,charname[]){//動(dòng)態(tài)創(chuàng)建StudentNode節(jié)點(diǎn)并返回StudentNode*stuNode=(StudentNode*)malloc(sizeof(StudentNode));if(NULL==stuNode)returnNULL;else{stuNode->student.num=num;strncpy(stuNode->,name,20);stuNode->[19]='\0';stuNode->student.testID[0]='\0';stuNode->next=NULL;}returnstuNode;};voidChainAppendNode(StudentChain*stuChain,StudentNode*node){//把學(xué)生節(jié)點(diǎn)信息加到表尾 if(NULL==stuChain||NULL==node) return; if(stuChain->length==0){ stuChain->firstNode=node; stuChain->endNode=node; stuChain->length=1;}else{ stuChain->endNode->next=node; stuChain->endNode=node; stuChain->length++;}}StudentNode*GetStudentNodeByIndex(StudentChain*stuChain,intindex){//返回學(xué)生信息節(jié)點(diǎn)指針 inti=0; StudentNode*tmpP=NULL; if(NULL==stuChain||index<0||stuChain->length<=index)returnNULL; tmpP=stuChain->firstNode; for(;i<index;i++) { tmpP=tmpP->next; }returntmpP;}voidDestoryChain(StudentChain*stuChain){//回收節(jié)點(diǎn)空間、釋放內(nèi)存 StudentNode*tmpNode=NULL; StudentNode*curNode=NULL; if(NULL==stuChain||stuChain->length==0) return; curNode=stuChain->firstNode; tmpNode=curNode->next; for(;curNode!=NULL;) { free(curNode); curNode=tmpNode; tmpNode=curNode->next; } free(stuChain);}intSelectCommand(){//選擇功能號(hào)碼,進(jìn)行創(chuàng)建學(xué)生鏈表 intcmdNum=0; intch=0; printf("\n"); printf("[1]輸入考生信息:\n"); printf("[2]生成準(zhǔn)考證號(hào)并顯示:\n"); printf("[3]考試日程表查詢:\n"); printf("[0]退出!\n"); scanf("%d",&cmdNum); CLEAR_INPUT_BUFF(ch); if(cmdNum!=1&&cmdNum!=2&&cmdNum!=0&&cmdNum!=3) {printf("輸入的功能編號(hào)不對(duì)!\n\n"); } else returncmdNum;}voidDisplayStuInfo(StudentChain*stuChain){//顯示節(jié)點(diǎn)信息 StudentNode*curNode=NULL; chartestId[9]; if(NULL==stuChain||stuChain->length==0) {printf("當(dāng)前沒有任何考生信息!請(qǐng)輸入:\n"); return; } printf("**********************************************************\n"); printf("考號(hào)\t姓名\t準(zhǔn)考證號(hào)\t考場號(hào)\t座位號(hào)\n"); printf("\n"); for(curNode=stuChain->firstNode;curNode!=NULL;curNode=curNode->next) { strncpy(testId,curNode->student.testID,9); if('\0'==testId[0]) { printf("%d\t%s\t%s\t%s\t%s",curNode->student.num,curNode->,"","","\n"); } else { printf("%d\t%s\t%s\t%c%c\t%c%c\n",curNode->student.num,curNode->,curNode->student.testID,curNode->student.testID[0],curNode->student.testID[1],curNode->student.testID[6],curNode->student.testID[7]); } }}intInputStudentInfo(int*num,charname[20]) {//輸入節(jié)點(diǎn)信息 intch=0; intquit='\0'; name[0]='\0'; printf(">"); scanf("%d,%s",num,name); CLEAR_INPUT_BUFF(ch); if(*num<10){ printf("輸入錯(cuò)誤!\n"); return-1; } if(strlen(name)==0) { printf("emptyname!\n"); return-1; } printf("保存成功,是否繼續(xù)錄入?(y/n)"); quit=getchar(); CLEAR_INPUT_BUFF(ch); if(quit!='y'&&quit!='Y') return0; return1; }intRandNum(intsNum,inteNum) { intnum=-1; if(sNum<0||eNum<0||eNum<sNum)returnnum; if(sNum==eNum)returnsNum; num=rand()%(eNum-sNum+1)+sNum; returnnum; } intIndexOf(intfindNum,int*nums,intcount) { inti=0; if(NULL==nums||count<=0)return-1; for(;i<count;i++) { if(findNum==nums[i])returni; } return-1; }intCreateRandNums(intsNum,inteNum,int*nums,intcount) { inti=0; int*tmpNums=NULL; inttmpRandNum=-1; if(sNum<0||eNum<0||eNum<sNum||count<0||NULL==nums||eNum-sNum+1<count) return-1; if(NULL==(tmpNums=(int*)malloc(sizeof(int)*count))) return-2; for(;i<count;i++) { tmpRandNum=RandNum(sNum,eNum); if(-1==IndexOf(tmpRandNum,tmpNums,count)) { tmpNums[i]=tmpRandNum; } elsei--; }memcpy(nums,tmpNums,sizeof(int)*count); free(tmpNums); return0; } intCreateTestId(StudentChain*stuChain,intmaxStuCount) {//生成準(zhǔn)考證號(hào) inti=0,j=0; intmaxExamRoom=0; int*seats=NULL; intarranged=0; intremain=0; intcurRoomStus=0; charnum[20]; StudentNode*tmpStuNode=NULL; if(NULL==stuChain||maxStuCount<=0) return-1; seats=((int*)malloc(sizeof(int)*maxStuCount)); if(NULL==(seats=(int*)malloc(sizeof(int)*maxStuCount))) return-2; maxExamRoom=stuChain->length/maxStuCount; remain=stuChain->length%maxStuCount; if(remain>0)maxExamRoom++; for(i=1;i<=maxExamRoom;i++) { remain=stuChain->length-arranged; curRoomStus=(remain>maxStuCount?maxStuCount:remain); if(CreateRandNums(1,curRoomStus,seats,curRoomStus)>=0) {for(j=0;j<curRoomStus;j++) { if((tmpStuNode=GetStudentNodeByIndex(stuChain,arranged))!=NULL) { num[sprintf(num,"%d",tmpStuNode->student.num)]='\0'; if(strlen(num)<2)continue; sprintf(tmpStuNode->student.testID,"%02d%02d%c%c%02d",i,CODE,num[0],num[1],seats[j]); arranged++; } } } }free(seats); return0; }intmain(){ intcmdNum=0; intt; interrorCode=0; intnum=0; charname[20]; intmaxStuCount=0; intch=0; StudentChain*stuChain=CreateStudentChain(); if(NULL==stuChain) return1; while((cmdNum=SelectCommand())!=QUIT) {switch(cmdNum) {case1: printf("\n考生信息錄入(輸入格式:學(xué)號(hào),姓名)\n"); while(1) { errorCode=InputStudentInfo(&num,name); if(errorCode==-1) break; else { Student
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版回遷住宅買賣協(xié)議樣本版B版
- 2024年施工設(shè)計(jì)合同范本版B版
- 2024年度餐飲服務(wù)勞務(wù)分包公司管理規(guī)范合同3篇
- 志愿服務(wù)活動(dòng)計(jì)劃方案范文
- 中班月工作計(jì)劃
- 2022學(xué)校教學(xué)工作計(jì)劃
- 2025年中國連續(xù)纖維材料市場供需預(yù)測及投資戰(zhàn)略研究咨詢報(bào)告
- 房屋租賃合同范文合集十篇
- 《畫》-探索繪畫的奧秘與魅力
- 教師個(gè)人師德師風(fēng)學(xué)習(xí)計(jì)劃
- 中南大學(xué)《大學(xué)物理C(3)(一)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024新人教版英語七年級(jí)上單詞默寫表(小學(xué)部分)
- 電力拖動(dòng)教學(xué)講義
- 2024社保費(fèi)測試(五)專項(xiàng)試卷
- 招商會(huì)會(huì)議流程綱要
- 安全生產(chǎn)工作年終總結(jié)
- 2024-2025學(xué)年人教版七年級(jí)英語上冊(cè)各單元重點(diǎn)句子
- 信息技術(shù)行業(yè)數(shù)據(jù)安全HSE方案
- 中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-氣管切開非機(jī)械通氣患者氣道護(hù)理
- 四川省成都市武侯區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期1月期末語文試卷
- 兒科護(hù)理安全警示教育
評(píng)論
0/150
提交評(píng)論