版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計報告課程名稱《數(shù)據(jù)結(jié)構(gòu)》課題名稱_學(xué)生成績管理系統(tǒng)專業(yè)計算機(jī)科學(xué)與技術(shù)專業(yè)班級計算機(jī)學(xué)號姓名***指導(dǎo)教師***2023年12月9日前言設(shè)計課題八三十:學(xué)生成績管理系統(tǒng)一、問題描述:現(xiàn)有學(xué)生成績信息文件1〔1.txt〕,內(nèi)容如下姓名學(xué)號語文數(shù)學(xué)英語張明明01677882李成友02789188張輝燦03688256王露04564577陳東明05673847….......…學(xué)生成績信息文件2〔2.txt〕,內(nèi)容如下:姓名學(xué)號語文數(shù)學(xué)英語陳果31576882李華明32889068張明東33484256李明國34504587陳道亮35475877….試編寫一管理系統(tǒng),要求如下:1)實(shí)現(xiàn)對兩個文件數(shù)據(jù)進(jìn)行合并,生成新文件3.txt2)抽取出三科成績中有補(bǔ)考的學(xué)生并保存在一個新文件4.txt3)對合并后的文件3.txt中的數(shù)據(jù)按總分降序排序(至少采用兩種排序方法實(shí)現(xiàn))4)輸入一個學(xué)生姓名后,能查找到此學(xué)生的信息并輸出結(jié)果(至少采用兩種查找方法實(shí)現(xiàn))5)要求使用結(jié)構(gòu)體,鏈或數(shù)組等實(shí)現(xiàn)上述要求.二、功能要求:1、實(shí)現(xiàn)對兩個文件數(shù)據(jù)進(jìn)行合并,生成新文件3.txt。2、本系統(tǒng)顯示這樣的菜單:請選擇系統(tǒng)功能項(xiàng):0.退出1.顯示學(xué)生信息2.顯示按學(xué)號排序后的學(xué)生信息3.顯示按總分排序后的學(xué)生信息4.按學(xué)號查學(xué)生各科分?jǐn)?shù)和總分5.按姓名查學(xué)生各科分?jǐn)?shù)和總分6.抽取出三科成績中有補(bǔ)考的學(xué)生并保存三、算法提示:數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類型數(shù)組數(shù)據(jù)庫結(jié)構(gòu):下表構(gòu)成該系統(tǒng)的根本數(shù)據(jù)庫。姓名學(xué)號語文數(shù)學(xué)英語Charintintintint四、測試數(shù)據(jù):學(xué)生人數(shù)N=10五、其它:對該系統(tǒng)有興趣的同學(xué)可以在實(shí)現(xiàn)上述根本功能后,完善系統(tǒng)的其它功能。目錄緒論第一節(jié)課程背景第二節(jié)本文所做工作需求分析總體設(shè)計詳細(xì)設(shè)計測試使用說明總結(jié)附錄A源代碼附錄B參考資料第一章緒論學(xué)生成績管理系統(tǒng)是一個教育單位不可缺少的局部,它的內(nèi)容對于學(xué)校的決策者和管理者來說都至關(guān)重要,所以學(xué)生成績管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?學(xué)生檔案管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),經(jīng)過分析如此情況,我們用code#blocks開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具和功能強(qiáng)大的SQL(結(jié)構(gòu)化查詢語言)。第一節(jié)課程背景在我國,各大中小學(xué)校的各類信息管理系統(tǒng)并非一個新的課題,但也有的學(xué)校根本就沒有信息任何管理系統(tǒng),所有的工作幾乎還是手工操作來完成。計算機(jī)技術(shù)在日新月異的開展,但是有的很多學(xué)校,特別是在西部貧困地區(qū),學(xué)校的種類管理都依然由手工操作來完成,這十分落后,效率極低,本錢很大,而且極異出錯。隨著社會的開展,信息化是社會進(jìn)程的必然趨勢,學(xué)校管理只有只有快,準(zhǔn),精才能發(fā)揮其價值。所以機(jī)器代替人力是必然的歷史開展趨勢,只有領(lǐng)導(dǎo)的重視和支持才能從人工操作改為計算機(jī)的自動化系統(tǒng)。人工操作必將被計算機(jī)代替。有些學(xué)校雖使用了計算機(jī),甚至管理系統(tǒng),但是仍然存在很多問題,問題一日不解決,效率就一日提不上去。第二節(jié)本文所做工作本系統(tǒng)是將現(xiàn)代化的計算機(jī)技術(shù)和傳統(tǒng)的教學(xué)、教務(wù)工作相結(jié)合,按照學(xué)院的工作流程設(shè)計完成的。為了使系統(tǒng)在學(xué)院的管理中發(fā)揮更大的作用,實(shí)現(xiàn)工作過程的計算機(jī)化,提高工作效率和工作質(zhì)量,現(xiàn)提出如下的系統(tǒng)開發(fā)目標(biāo):〔1〕系統(tǒng)管理員進(jìn)入學(xué)生成績管理系統(tǒng)學(xué)生檔案管理的主要功能是:實(shí)現(xiàn)添加學(xué)生的根本信息、修改學(xué)生的根本信息、查詢學(xué)生的根本信息、刪除學(xué)生的根本信息等根本功能?!?〕系統(tǒng)管理員進(jìn)入學(xué)生成績管理系統(tǒng)學(xué)生成績管理的主要功能是:實(shí)現(xiàn)學(xué)生成績的錄入、學(xué)生成績的修改與保存等根本功能。〔3〕系統(tǒng)管理員進(jìn)行學(xué)生成績管理系統(tǒng)查詢與統(tǒng)計的主要功能是:實(shí)現(xiàn)根據(jù)某個學(xué)生的根本信息查詢他的成績,還可以根據(jù)學(xué)生成績的上下進(jìn)行排序等根本功能。1.1編寫目的本需求的編寫目的在于研究學(xué)生成績管理系統(tǒng)軟件的開發(fā)途徑和應(yīng)用方法?1.2背景及范圍本工程的名稱:學(xué)生成績管理系統(tǒng)?本軟件根本上能具體化?合理化的管理學(xué)生的學(xué)籍檔案,用結(jié)構(gòu)化的思維方式去了解計算機(jī)的根本工作原理和高級程序設(shè)計語言?1.3功能主要功能:學(xué)生成績錄入?學(xué)生信息和成績修改?查詢成績?第二章系統(tǒng)需求分析可以使用戶錄入學(xué)生信息,并在系統(tǒng)中顯示出來,還能對錄入的信息進(jìn)行保存,當(dāng)需要時還可以對信息進(jìn)行修改和刪除,還能分別用學(xué)號、姓名、性別、年齡對學(xué)生信息進(jìn)行查詢,用戶進(jìn)入系統(tǒng)需要輸入密碼。第三章總體設(shè)計structstudent:一個結(jié)構(gòu)體類型,他能存放姓名、學(xué)號、語文、數(shù)學(xué)、英語等成績等不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu)。voidmain():主函數(shù)。FILE*fp:定義一個指向文件的指針變量fp.fp=fopen("學(xué)生成績","w+"):將fopen函數(shù)的返回值賦給指針變量fp,或者說,fp指向了學(xué)生信息這個文件。如果文件不存在,那么建立一個新的文本文件。Fscanf,fprintf:用格式化的方式讀寫文件。Strcmp:字符串比擬函數(shù)。Strcpy:字符串復(fù)制函數(shù)。程序中還用到當(dāng)型循環(huán)、swith分支語句、if語句等。system("cls");:清屏函數(shù),使界面更簡潔。第四章系統(tǒng)調(diào)試系統(tǒng)主界面顯示學(xué)生信息顯示按學(xué)號排序后的學(xué)生信息〔按升序〕顯示按總分排序后的學(xué)生信息按學(xué)號查學(xué)生各科分?jǐn)?shù)和總分按姓名查學(xué)生各科分?jǐn)?shù)和總分抽取出三科成績中有補(bǔ)考的學(xué)生并保存第五章使用說明利用結(jié)構(gòu)體函數(shù)類型,使函數(shù)顯得沒那么繁瑣,利用文件指針,輸入的信息將保存在文件中,以便下次查詢和修改,使用“w+〞方式讀寫文件,當(dāng)指定那個文件不存在時,將建立一個文件,不會出現(xiàn)出錯信息。利用fscanf和fprintf實(shí)現(xiàn)對文件的讀寫。缺乏之處:錄入的信息沒能保存,每次便已運(yùn)行需要重新輸入數(shù)據(jù),對所學(xué)的東西沒有合理結(jié)合。第七章總結(jié)當(dāng)剛開始聽到要課程設(shè)計時,心里有點(diǎn)怕怕的,因?yàn)楫吘箘偨佑|c語言,雖說也學(xué)到了一些皮毛,但當(dāng)聽到要自己去編寫程序時,才發(fā)現(xiàn)自己不會的不懂的還多著呢,要編寫一個程序還是有一些困難的,當(dāng)真的讓我去編寫程序時,真的是有點(diǎn)怕怕的感覺。剛?cè)雽W(xué)時,聽到要學(xué)習(xí)c語言時,我是非常的感興趣,也非常快樂,因?yàn)槟怯螒颉④浖家胏語言來實(shí)現(xiàn),我想探究一下那到底是怎么實(shí)現(xiàn)的,能到達(dá)那樣的效果,所以剛開始我很有激情,每節(jié)課我都認(rèn)真聽講,雖然剛開始聽起來有點(diǎn)困難,但是我相信功夫不負(fù)有心人,我知道課堂上的知識是不夠的,所以我利用課下時間,積極搜尋與之相關(guān)的信息,去圖書館借閱相關(guān)資料和習(xí)題,來增長自己的知識。當(dāng)程序?qū)懲炅?,我終于可以松口氣了,經(jīng)過一個思考,查資料,寫源程序,上機(jī)調(diào)試.現(xiàn)在終于告一段落了.看到自己的勞動成果,心中不免有些驚喜,沒想到自己還能獨(dú)立完成初次的課程設(shè)計,雖然不敢說這個程序都是我一個人寫的,但其中大局部都是我的成果,另外我還參考了別人的意見,對自己的程序進(jìn)行修改和完善。這種課程設(shè)計對我們是非常有好處的,對C這門程序語言的掌握卻有非常大的作用.從開始對題目的分析,就注定擺在我這樣一個對C了解不多的新手面前的是一段艱難的旅程.但最終很慶幸的是我居然能夠堅持下來,而且完成了設(shè)計工作.C語言是很難學(xué)的,這也許是因人而異,但對我來說確實(shí)是一個障礙。如今要自己完成一個課程設(shè)計,無疑是對自己的一個挑戰(zhàn).先是上網(wǎng)查找有關(guān)的資料,分析題目所需的數(shù)據(jù),要用到哪些函數(shù)等等,星期二上網(wǎng)初步調(diào)試,將函數(shù)用些結(jié)構(gòu)和語句連接起來,做這個工作時,又將書本翻閱了一遍,重新獲得許多東西。如帶參函數(shù)的特點(diǎn),以及一些語句的運(yùn)用及特點(diǎn)等等。將工作分配到每塊是我完成這個設(shè)計的主要方法,然而將每塊都完成看起來比擬輕松,但實(shí)際操作起來卻是比擬麻煩的.由于平時對C知識的積累較為匱乏,(這可能是最主要的原因了),所以操作起來真是寸步難行,沒方法,只有拿出課本找到相應(yīng)的知識點(diǎn),臨陣磨槍.費(fèi)了一番功夫,再上機(jī)調(diào)試時就是最痛苦的時候了,錯誤一大堆,要一個一個的修改。經(jīng)過幾翻調(diào)試修改之后終于可以執(zhí)行了,那時還興奮了好長時間呢!然而執(zhí)行出來的結(jié)果是不令人滿意的,界面不美觀不說,最重要的是輸入太煩瑣,而且受到的限制太多,如只能以某種方式輸入,且個數(shù)受限制。于是又發(fā)費(fèi)了大量時間去修改,終于比擬滿意了,但也到了星期五了,也就是辯論的時間。辯論的時候我才發(fā)現(xiàn)還有好多知識是我不會的,老師問了我一些問題,我答復(fù)出來的卻不多,我體會到我還要很努力的學(xué)習(xí),在C的學(xué)習(xí)上我還有很長的一段路要走。今天不管怎樣把這個設(shè)計作出來是件很快樂的事情,不過能夠把這個設(shè)計順利完成要?dú)w功于我的指導(dǎo)老師,幫了我很多忙,也讓我發(fā)現(xiàn)了我有好多欠缺的地方,真的很感謝你們,謝謝!不管怎么說,我還是完成了這個設(shè)計.雖說累了點(diǎn),但我想這對我們進(jìn)一步掌握C,并為下學(xué)期的C二級考試是有很大的幫助的.能夠編出程序,其實(shí)本身就是對自己的一種肯定,是對自己前面一段時間學(xué)習(xí)C綜合水平的一個檢閱.當(dāng)然完成后的興喜,只有經(jīng)歷過了才能體會到,而我體會到了.C語言課程設(shè)計是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)開展的日新日異,當(dāng)今計算機(jī)應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握計算機(jī)開發(fā)技術(shù)是十分重要的。從拿到題目到完成整個編程,從理論到實(shí)踐,在整整一個星期的日子里,可以學(xué)到很多很多的的東西,同時不僅可以穩(wěn)固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會效勞,從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的缺乏之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比方說結(jié)構(gòu)體……通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。這次課程設(shè)計我最要感謝的就是我們的幾位指導(dǎo)老師,老師們每天都不辭勞苦為我們效勞,不管我們有什么問題,他們都耐心的為我們解答,我們有什么錯誤他們都積極給我們指正出來,雖然有時也批評一下,但這對我們是有很大幫助的,有這么多優(yōu)秀的指導(dǎo)老師,我想我以后的學(xué)習(xí)會更上一層樓。附錄A源代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#include<stdbool.h>#include<math.h>#include<conio.h>#defineeps1;typedefstruct{charname[50];intnum;intChinese;intMath;intEnglish;intsum;}Node;Nodestudent[1000];intn;chartext[50];intcmp(constvoid*a,constvoid*b){return(*(Node*)b).sum>(*(Node*)a).sum?1:-1;}intcmpnum(constvoid*a,constvoid*b){return(*(Node*)a).num>(*(Node*)b).num?1:-1;}voidshowstudent(){inti; printf("\t姓名\t學(xué)號\t語文\t數(shù)學(xué)\t英語\t總分\n"); for(i=0;i<n;i++) { printf("\t%s\t%d\t%d\t%d\t%d\t%d\n",student[i].name,student[i].num,student[i].Chinese,student[i].Math,student[i].English,student[i].sum); }getch();menu();}voidsortnum(){inti,j,k; chara[55]; for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) { if(student[j].num>student[j+1].num) { k=student[j].num; student[j].num=student[j+1].num; student[j+1].num=k; k=student[j].Chinese; student[j].Chinese=student[j+1].Chinese; student[j+1].Chinese=k; k=student[j].Math; student[j].Math=student[j+1].Math; student[j+1].Math=k; k=student[j].English; student[j].English=student[j+1].English; student[j+1].English=k; k=student[j].sum; student[j].sum=student[j+1].sum; student[j+1].sum=k; strcpy(a,student[j].name); strcpy(student[j].name,student[j+1].name); strcpy(student[j+1].name,a); } } } showstudent();getch();menu();}voidsortsum(){qsort(student,n,sizeof(Node),cmp);showstudent();getch();menu();}voidsearchnum(intnumber){intmin=0,max=n-1,mid;boolescape=false;qsort(student,n,sizeof(Node),cmpnum);while(min<=max){mid=(min+max)/2;if(student[mid].num>number){max=mid-eps;}elseif(student[mid].num<number){min=mid+eps;}else{escape=true;printf("\t姓名\t學(xué)號\t語文\t數(shù)學(xué)\t英語\t總分\n");printf("\t%s\t%d\t%d\t%d\t%d\t%d\n",student[mid].name,student[mid].num,student[mid].Chinese,student[mid].Math,student[mid].English,student[mid].sum);break;}}if(!escape){printf("\t查無此人");}getch();menu();}voidsearchname(){inti; for(i=0;i<n;i++) { if(strcmp(text,student[i].name)==0) { printf("\t姓名\t學(xué)號\t語文\t數(shù)學(xué)\t英語\t總分\n");printf("\t%s\t%d\t%d\t%d\t%d\t%d\n",student[i].name,student[i].num,student[i].Chinese,student[i].Math,student[i].English,student[i].sum); break; } } if(i>=n) { printf("\t查無此人\n"); }getch();menu();}voidsave(){FILE*fp; fp=fopen("4.txt","w"); inti; fprintf(fp,"\t姓名\t學(xué)號\t語文\t數(shù)學(xué)\t英語\t總分\n"); for(i=0;i<n;i++) { if(student[i].Chinese<60||student[i].Math<60||student[i].English<60) { printf("\t%s\t%d\t%d\t%d\t%d\n",student[i].name,student[i].num,student[i].Chinese,student[i].Math,student[i].English); fprintf(fp,"\t%s\t%d\t%d\t%d\t%d\n",student[i].name,student[i].num,student[i].Chinese,student[i].Math,student[i].English); } } printf("\n"); printf("┏━━━━┓\n");printf("┃保存成功┃\n");printf("┗━━━━┛\n");getch();menu();}voidmenu(){intchoice;system("cls");printf("菜單\n");printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("┃0.退出┃\n");printf("┃1.顯示學(xué)生信息┃\n");printf("┃2.顯示按學(xué)號排序后的學(xué)生信息┃\n");printf("┃3.顯示按總分排序后的學(xué)生信息┃\n");printf("┃4.按學(xué)號查學(xué)生各科分?jǐn)?shù)和總分┃\n");printf("┃5.按姓名查學(xué)生各科分?jǐn)?shù)和總分┃\n");printf("┃6.抽取出三科成績中有補(bǔ)考的學(xué)生并保存┃\n");printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf("選擇代碼〔0,1,2,3,4,5,6〕:");scanf("%d",&choice);switch(choice){case0:{system("cls");printf("謝謝使用!\n");exit(0);}case1:{system("cls");showstudent();}case2:{system("cls");sortnum();}case3:{system("cls");sortsum();}case4:{system("cls");intnum;printf("\t請輸入要查找學(xué)生的學(xué)號:");scanf("%d",&num);searchnum(num);}case5:{system("cls");printf("\t請輸入要查找學(xué)生的姓名:");scanf("%s",text);searchname();}case6:{system("cls");
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度食品加工行業(yè)蟲害預(yù)防與控制合同3篇
- 2025年湘教版九年級歷史下冊月考試卷含答案
- 2025年度特色餐廳廚師臨時用工合同范本2篇
- 2025年冀教版八年級地理上冊階段測試試卷
- 2025年浙教版七年級生物上冊階段測試試卷
- 2025個人擔(dān)保買賣合同
- 2025車庫買賣的合同范本
- 2025年度智慧社區(qū)現(xiàn)場咨詢服務(wù)合同范本2篇
- 2025委托拍賣合同
- 2025建筑安裝工程承包合同2
- 《新生兒預(yù)防接種》課件
- 中國減肥連鎖行業(yè)市場調(diào)查研究及投資戰(zhàn)略研究報告
- 2025年1月八省聯(lián)考高考綜合改革適應(yīng)性測試-高三化學(xué)(陜西、山西、寧夏、青海卷) 含解析
- 2024年03月內(nèi)蒙古中國銀行內(nèi)蒙古分行春季校園招考筆試歷年參考題庫附帶答案詳解
- 鏈家、貝殼專業(yè)租房協(xié)議、房屋租賃合同、房屋出租協(xié)議
- 大學(xué)生職業(yè)規(guī)劃大賽生涯發(fā)展報告
- 礦山安全培訓(xùn)課件-地下礦山開采安全技術(shù)
- 維克多高中英語3500詞匯
- 幼兒教師干預(yù)幼兒同伴沖突的行為研究 論文
- 湖南省省級溫室氣體排放清單土地利用變化和林業(yè)部分
- simotion輪切解決方案與應(yīng)用手冊
評論
0/150
提交評論