版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語言課程設(shè)計(jì)報(bào)告計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)題目學(xué)生信息管理系統(tǒng)學(xué)生姓名胡喬楠學(xué)號(hào)指導(dǎo)教師迓苴學(xué)院信息科學(xué)與工程學(xué)院專業(yè)班級(jí)電氣0821班完成時(shí)間七月四號(hào)目錄第一章項(xiàng)目概述1.1 問題的要求分析與描述1.2 問題的要求和限制第二章項(xiàng)目設(shè)計(jì)2.1 系統(tǒng)程序的組成框圖2.2 :程序的流程圖2.3 詳細(xì)設(shè)計(jì)第三章調(diào)試與結(jié)果3.1 調(diào)試方法3.2 測(cè)試結(jié)果(見附錄A、B)第四章工作總結(jié)附錄A、B;源代碼;參考文獻(xiàn);第一章項(xiàng)目概述1.1 問題的要求分析與描述我設(shè)計(jì)一個(gè)學(xué)生信息管理系統(tǒng)。首先學(xué)生的信息包括:學(xué)號(hào)、姓名、年齡、性別、出生年月、家庭地址、電話號(hào)碼、電子郵件、畢業(yè)學(xué)校等等。這個(gè)管理系統(tǒng)需要實(shí)現(xiàn)以
2、下功能:1 .系統(tǒng)以菜單的方式工作;2 .實(shí)現(xiàn)學(xué)生信息的錄入功能,學(xué)生的信息保存在文件中;3 .實(shí)現(xiàn)學(xué)生信息的輸出功能,輸出功能應(yīng)包括如下算法:3_1:單個(gè)學(xué)生按學(xué)號(hào)查詢功能;3_2:單個(gè)學(xué)生按姓名查詢功能;3_2:全部學(xué)生的瀏覽功能;3_3:全部學(xué)生按學(xué)號(hào)排序?yàn)g覽功能;4 .實(shí)證學(xué)生信息的刪除和修改;1.2 問題的要求和限制1:系統(tǒng)要美觀,有歡迎界面;2:在輸入信息時(shí)要有一定的容錯(cuò)能力,比如年齡輸入為負(fù)數(shù)或者大于150就提示有錯(cuò),要求重新輸入;第二章項(xiàng)目設(shè)計(jì)2.1系統(tǒng)程序的組成框圖如下:歡迎界面ch1=02.2:我坐,辮第其孽醺盟F4:學(xué)生信息刪除;Ch1=1<Ch1=2學(xué)生注冊(cè)Ch1
3、=31:輸入學(xué)生的學(xué)號(hào)、姓名、年齡、性別、出生年月、家庭地址、電話號(hào)碼、電子郵件、育在學(xué)生信息錄入后才能詢學(xué)生信息??梢园磫蝹€(gè)學(xué)生學(xué)好來查詢,也可以按單個(gè)學(xué)生姓先輸臾學(xué)生的W,系統(tǒng)查詢持學(xué)生,如果沒有此學(xué)生,則系統(tǒng)自動(dòng)返回。如果由此學(xué)生細(xì)聲號(hào),系統(tǒng)至%持學(xué)生,兒果沒有此%生,則系統(tǒng)自動(dòng)返回。如果由此學(xué)生細(xì)2.3詳細(xì)設(shè)計(jì)佃系統(tǒng)在visualstudioc+中運(yùn)行,visualstudioc+支持中中苴郊雖大輸山功能。這樣就能作由美觀的界面,并且制汨木作出詳細(xì)在菜單2.3.1 編譯預(yù)處理命令在開頭就調(diào)用了“stdio.h”和“string.h”函數(shù),并且定義了一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組中有一百個(gè)結(jié)構(gòu)體。
4、每個(gè)結(jié)構(gòu)體中有長整型,整型,字符型數(shù)組,還有指針,為以后制定鏈表用。定義了一個(gè)全局變量“i”。此變量來記錄學(xué)生的個(gè)數(shù)。2.3.2 main函數(shù)所有的函數(shù)都寫在main函數(shù)中并給他調(diào)用。Main函數(shù)中首先定義了一些整型數(shù)據(jù),chi、ch2、j、長整型數(shù)據(jù)“number",字符數(shù)組“name”,文件指針。接著“printf”函數(shù)打印由一個(gè)歡迎界面。用死循環(huán)進(jìn)入一個(gè)選擇菜單,用戶輸入選項(xiàng)來運(yùn)行系統(tǒng)。用“scanf”函數(shù)來給chi賦值。接著程序就進(jìn)入一個(gè)多分支if語句中。通過判斷,程序運(yùn)行進(jìn)入相應(yīng)的功能區(qū)。Ch1=0就會(huì)跳由此模塊,返回上一模塊。Ch1=1時(shí),函數(shù)進(jìn)入學(xué)生信息錄入功能,用戶輸
5、入學(xué)生的信息。在輸入信息時(shí)會(huì)有容錯(cuò)能力。比如輸入性別不是男或女,就會(huì)提示輸入錯(cuò)誤,要求用戶重新輸入;使用“fwrite”函數(shù),使學(xué)生的信息保存在C盤中名為“INFORMATION.txt”的文檔中。ch1=2時(shí),函數(shù)進(jìn)入學(xué)生信息查詢功能。用戶根據(jù)菜單輸入信息進(jìn)入相應(yīng)的子功能。用戶可以更具菜單選擇相應(yīng)的功能。Ch3=0,系統(tǒng)就會(huì)返回上一個(gè)功能。Ch3=1,系統(tǒng)就會(huì)按學(xué)生學(xué)號(hào)來查詢學(xué)生信息,用戶輸入學(xué)號(hào)。若學(xué)號(hào)正確,則系統(tǒng)輸由相應(yīng)的學(xué)生信息。若錯(cuò)誤,系統(tǒng)就提示用戶學(xué)號(hào)錯(cuò)誤,請(qǐng)重新輸入。Ch3=2,系統(tǒng)就會(huì)按學(xué)生姓名來查詢學(xué)生信息,用戶輸入姓名。若姓名正確,則系統(tǒng)輸由相應(yīng)的學(xué)生信息。若錯(cuò)誤,系統(tǒng)就提
6、示用戶姓名錯(cuò)誤,請(qǐng)重新輸入。Ch3=3,系統(tǒng)進(jìn)入學(xué)生信息瀏覽功能,同樣有一個(gè)菜單供用戶選擇,1為瀏覽所有學(xué)生的信息。用“for”循環(huán)把所有學(xué)生的信息從文本中用“fread”函數(shù)讀生來,在把所有結(jié)構(gòu)體成員一一打印由來。這時(shí)調(diào)用了一個(gè)“print(intl)”函數(shù)。在主函數(shù)中,把“i”傳給“n”。2為按學(xué)號(hào)的順序來瀏覽所有學(xué)生的信息,調(diào)用“paixu(intn)”函數(shù)。主函數(shù)把“i”的值傳給“n”,實(shí)現(xiàn)學(xué)生的信息排序,并打印由來。同樣,選擇為0時(shí)就返回上一級(jí)菜單。若ch1=3,系統(tǒng)進(jìn)入刪除功能模塊。此時(shí)調(diào)用了“deletes(intn)”,主函數(shù)把“i”的值傳給“n”,實(shí)現(xiàn)學(xué)生信息的刪除功能。若c
7、h1=4,系統(tǒng)進(jìn)入修改功能模塊,此時(shí)調(diào)用了“changes。”,主函數(shù)實(shí)現(xiàn)學(xué)生信息的修改功能。(歡迎界面、開始菜單、容錯(cuò)能力、單個(gè)查詢功能見附錄A)2.3.3 print函數(shù)“print(intl)”函數(shù)中,從主函數(shù)接收變量“i”,并把其值賦給“1”?!皃rint(int1)”函數(shù)用sstructstudents*p1",定義了一個(gè)結(jié)構(gòu)體指針。接著用“printf”函數(shù)打印各個(gè)結(jié)構(gòu)體的成員,“p1->num”等來表示成員。2.3.4 paixu函數(shù)“paixu(intn)”從主函數(shù)接收變量“i”,并把其值賦給“n”。"paixu(intn)”中定義了兩個(gè)整型數(shù)據(jù),用來
8、作為循環(huán)時(shí)的變量。以及兩個(gè)結(jié)構(gòu)體數(shù)組u100和v100,一個(gè)文件指針。函數(shù)先用for循環(huán)和“fread”函數(shù)把文件中的數(shù)據(jù)讀由來并賦值給u100。接著對(duì)u100來進(jìn)行冒泡排序,v100作為中間變量來實(shí)現(xiàn)排序。排完后,把u100中的數(shù)據(jù)用“printf”函數(shù)打印由來。2.3.5 deletes函數(shù)“deletes(intn)”從主函數(shù)接收變量“i”,并把其值賦給“n”。"deletes(intn)”中定義了三個(gè)整型變量“j”、“k”和“chioce”,一個(gè)長整型變量“number”,一個(gè)結(jié)構(gòu)體數(shù)組“structstudentsu100”,一個(gè)文件指針。函數(shù)先判斷有沒有學(xué)生信息被錄入,如
9、果沒有,系統(tǒng)則自動(dòng)返回。如果有,則要求用戶輸入要?jiǎng)h除學(xué)生的學(xué)號(hào)。用“scanf”函數(shù)給“number”賦值,并判斷文本中是否有此學(xué)生的信息,如果此學(xué)生的信息不存在,則系統(tǒng)會(huì)提示用戶學(xué)生不存在,并自動(dòng)返回。如果學(xué)生信息存在,則系統(tǒng)將打印學(xué)生的全部信息,并再一次提示用戶是否要?jiǎng)h除此學(xué)生。當(dāng)用戶選擇1時(shí),系統(tǒng)刪除此學(xué)生信息,選擇否時(shí),系統(tǒng)將自動(dòng)返回,學(xué)生信息改變。2.3.6 changes函數(shù)“changes。"函數(shù)沒有形參,直接對(duì)文件中的結(jié)構(gòu)體進(jìn)行修改?!癱hanges?!焙瘮?shù)中定義了兩個(gè)文件指針“fp1”和“fp2”,一個(gè)長整型數(shù)據(jù)“number",三個(gè)整形數(shù)據(jù)"j
10、”“flag”“choice”。函數(shù)先判斷有沒有學(xué)生信息被錄入,如果沒有,系統(tǒng)則自動(dòng)返回。如果有,則要求用戶輸入要修改學(xué)生的學(xué)號(hào)?!癴p1”指向文本“INFORMATION.txt",“fp2”在c盤中重新建立一個(gè)文本“change.txt"。用“fread”讀生文本中的學(xué)生信息。用“scanf”函數(shù)給“number”賦值,并用“for”循環(huán)來判斷文本中是否有此學(xué)生的信息,如果此學(xué)生的信息不存在,則系統(tǒng)會(huì)提示用戶學(xué)生不存在,并自動(dòng)返回。如果學(xué)生信息存在,則系統(tǒng)將調(diào)用“print(intn)”函數(shù)打印學(xué)生的全部信息,并給用戶選擇要修改的具體內(nèi)容。用“switch”分支語句來判
11、斷并修改用戶所指定的項(xiàng)。不管每個(gè)結(jié)構(gòu)體是否修改,都會(huì)用“fwrite”函數(shù)把讀由來的結(jié)構(gòu)體寫進(jìn)“change.txt”中。For循環(huán)終止后,再把所有的結(jié)構(gòu)體從“change.txt”中寫進(jìn)空的“INFORMATION.txt”中。這樣就能很好的完成修改了。(其中瀏覽、按學(xué)號(hào)排序?yàn)g覽、學(xué)生刪除、學(xué)生修改的具體的執(zhí)行結(jié)果見附錄B)第三章調(diào)試與結(jié)果3.1 調(diào)試方法:visualstudioc+有很好的調(diào)試與查錯(cuò)功能,寫好代碼后首先按“build”鍵來查錯(cuò)。程序會(huì)把所有錯(cuò)誤和警告顯示由來,找到程序有錯(cuò)的地方,參考錯(cuò)誤的原因,仔細(xì)查看程序改寫代碼,確認(rèn)無誤后,再按“build”鍵。若有錯(cuò)誤就再看錯(cuò)誤并改
12、寫原代碼。若無誤就再糾正下一個(gè)錯(cuò)誤。很多錯(cuò)誤就是這樣一個(gè)一個(gè)慢慢地解決。調(diào)試結(jié)果分析與討論:開始寫的代碼是實(shí)現(xiàn)學(xué)生信息錄入與單個(gè)查詢功能,在查詢結(jié)果時(shí),發(fā)現(xiàn)畢業(yè)學(xué)校的信息被重復(fù)打印到了電子郵件里面。接著就查找打印是否有錯(cuò),確認(rèn)無誤后,結(jié)果沒有變。就查找程序開始的賦值是否有錯(cuò),最終發(fā)現(xiàn)了錯(cuò)誤,在“scanf(%s”,&s|j.graduateschool);"中誤加了“&”這個(gè)符號(hào)。修改后,打印結(jié)果正確。對(duì)所有學(xué)生的信息按照學(xué)號(hào)的順序來瀏覽功能中,要用到冒泡排序法,用兩個(gè)“for”循環(huán)來完成,其中的變量有固定的形式要求。并且終止條件也很嚴(yán)格的要求。剛開始我用了錯(cuò)誤的算法
13、,后來通過問老師,得到正確的方法,再經(jīng)過反復(fù)的推敲,實(shí)現(xiàn)了排序功能。在實(shí)現(xiàn)修改功能中,我找不到算法,從書上的找了一個(gè)算法,書寫完后,發(fā)現(xiàn)程序直接跳由修改的選擇信息模塊。經(jīng)檢查后發(fā)現(xiàn)“getchar()”這個(gè)函數(shù)由了問題,最后修改了代碼,刪除“getchar()”函數(shù)。得到了正確結(jié)果主要問題及解決方法1。在書寫長代碼時(shí),要用到很多“”這樣的符號(hào),有時(shí)會(huì)漏掉這個(gè)符號(hào),導(dǎo)致錯(cuò)誤;所以書寫時(shí)一定要非常細(xì)心,嚴(yán)格按照語法來寫2.“”花括號(hào)在莫些地方有很多,在修改程序或者添加程序時(shí)會(huì)很麻煩,不知道應(yīng)該在哪個(gè)地方添加,或者該刪除哪個(gè)“"。所以,凡是有“”的都要用"/*文字*/”來標(biāo)記,以
14、后就不用一個(gè)個(gè)找原來語句了。3。在修改過程中修改了一個(gè)變量,卻沒有發(fā)現(xiàn)其他地方的相應(yīng)程序也要修改,導(dǎo)致查由許多錯(cuò)誤。4。我曾經(jīng)用兩個(gè)指針指向同一個(gè)文件,visualstudioc+并不報(bào)錯(cuò),但是我的排序和修改功能一直實(shí)現(xiàn)不了。最后問老師,才知道一個(gè)指針只能指向同一個(gè)文件。修改了指針及相應(yīng)的程序后,我的功能實(shí)現(xiàn)了。5.使用冒泡排序法時(shí),結(jié)構(gòu)體的個(gè)數(shù)控制得很嚴(yán)格,最終發(fā)現(xiàn)for循環(huán)多走了一步。把“n”減一就解決了問題。3.2 測(cè)試結(jié)果:輸入了學(xué)生的信息后能正確打印。有時(shí)候在字符數(shù)組里面輸入整型數(shù)據(jù)時(shí),后面的“scanf”函數(shù)就不再正確執(zhí)行。把整型數(shù)據(jù)改為字符型后,就能正確運(yùn)行程序了。有時(shí)候排序功不
15、正確,是在終止結(jié)果里面由了錯(cuò)誤。所有的程序運(yùn)行數(shù)據(jù)和結(jié)果都在附錄A、B中。第四章工作總結(jié)這次課程設(shè)計(jì)的任務(wù)原本要求是以十個(gè)人為一組一起合作完成,但是作為一個(gè)已經(jīng)選了計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的學(xué)生,應(yīng)該具備很強(qiáng)的編程能力。為了好好鍛煉自己的編程能力,我毅然決定一個(gè)人獨(dú)立完成此次課程設(shè)計(jì)。剛開始我只知道要用文件來做這個(gè)課程設(shè)計(jì),但是我的文件那塊掌握得不好,就看老師給我們講的文件的程序。先是復(fù)習(xí),再去寫程序。按照課程設(shè)計(jì)的要求,我先定義結(jié)構(gòu)體,再把所有的知識(shí)都運(yùn)用上去。前四天,我把學(xué)生信息錄入功能、學(xué)生信息按學(xué)號(hào)當(dāng)個(gè)查詢功能做好了。在按學(xué)生姓名查詢的時(shí)候,要用到“#include<string.h
16、>”這個(gè)函數(shù)。并且字符串處理函數(shù)都忘了,接著就看書把“strcmp”這個(gè)函數(shù)的功能及用法掌握。最后完成了按學(xué)生姓名查詢功能??粗约和瓿傻某绦颍闹泻芨吲d。還拿了同學(xué)的信息來做實(shí)驗(yàn)。當(dāng)時(shí)信心大增,想著用一個(gè)星期就能完成任務(wù)。沒想到后面的程序是如此的困難。因?yàn)榍八奶煳覍懙某绦蜻€不長,所用到的知識(shí)和算法都還相對(duì)簡(jiǎn)單。到了瀏覽學(xué)生信息的哪一個(gè)功能,我就幾天都實(shí)現(xiàn)不了了。在這之前,我編寫的程序都沒有用模塊化編寫,一個(gè)主函數(shù)就包括了上述所有的功能。我就開始編寫功能函數(shù)。把排序功能全寫到一個(gè)"paixu(intn)”中。我到處查閱資料,向老師請(qǐng)教,問同學(xué)。終于搞清楚了算法。就是用冒泡排序法
17、。我按照這個(gè)思路去做也沒有得由正確結(jié)果。一連兩三天,我都找不由錯(cuò)誤的原因,反復(fù)修改也不行。編譯環(huán)境也沒有報(bào)錯(cuò)。在找老師查看我的源代碼之后,發(fā)現(xiàn)我用了兩個(gè)文件指針指向了同一個(gè)文件,書上沒有這樣講過,但也沒有說這樣不對(duì)。我自認(rèn)為是對(duì)的,卻花了我這么多時(shí)間去改他。這次教訓(xùn)中,我深刻的體會(huì)到。要想運(yùn)用一個(gè)新知識(shí),必須的問問老師或者在行的人是否能用,不能擅作主張。我經(jīng)快修改完程序,并且調(diào)試、查錯(cuò)。實(shí)現(xiàn)了排序的功能,我當(dāng)時(shí)高興的跳起來。這就是編程中的快樂。參考文獻(xiàn)很重要。在做修改的功能時(shí),我找不到算法。但在一本書中,我找到類似的算法,經(jīng)過反復(fù)推敲。我決定引用其中的算法。編寫的函數(shù)很長,并且那段代碼必須經(jīng)過
18、修改才能在我的程序中實(shí)現(xiàn)修改功能。因?yàn)橛袇⒖迹@個(gè)功能還是相對(duì)容易實(shí)現(xiàn)的。最后就是刪除功能了,算法了解后,就直接開始編程。找到要?jiǎng)h除的學(xué)生,接著把所有的結(jié)構(gòu)體都后移一位。但是在循環(huán)體中,哪個(gè)變量因該是多少,會(huì)不會(huì)多了一1,或者少了一個(gè)1,這需要自己去耐心調(diào)試??傮w來說,變成是很麻煩的。中途我就又放棄的念頭,因?yàn)槟鞘沁B程序的一般都沒有完成,但是一個(gè)功能就花了我?guī)讉€(gè)下午的時(shí)間,卻沒有一點(diǎn)進(jìn)展。還好我沒有放棄,畢竟大學(xué)里面的學(xué)習(xí)機(jī)會(huì)十分寶貴。四年也只有一次這樣系統(tǒng)的C語言編程技巧的時(shí)間。這次獨(dú)立完成,對(duì)以后的學(xué)習(xí)和編程也會(huì)有很大的幫助。自己感到慚愧的是,老師教C語言的時(shí)候沒有把它學(xué)得很通。在寫程序的
19、時(shí)候經(jīng)常有很多與發(fā)行的錯(cuò)誤,還有在運(yùn)用一些簡(jiǎn)單的語句時(shí),忘記了其中的格式。語法中經(jīng)常有筆誤,都是平時(shí)訓(xùn)練少,對(duì)自己要求不嚴(yán)格的結(jié)果。還有參考文獻(xiàn),虛心向別人請(qǐng)教。很多問題,也許看看書,問問老師之后就會(huì)迎刃而解。讀程序多了之后,就會(huì)對(duì)編程很有感覺,編程的速度會(huì)提高、質(zhì)量會(huì)變高、思路也會(huì)越來越清晰。附錄A:歡迎界面和開始菜單:輸入信息時(shí)的容錯(cuò)能力:學(xué)生信息的錄入功能:按學(xué)號(hào)來查詢學(xué)生,以及選擇菜單時(shí)的容錯(cuò)能力:按姓名來單個(gè)查詢的功能:附錄B:按時(shí)間順尋來瀏覽所有學(xué)生的信息:按學(xué)號(hào)的大小來瀏覽所有學(xué)生的信息:對(duì)學(xué)生的姓名進(jìn)行修改:緊接著修改學(xué)生的年齡修改完后,查詢學(xué)生的信息是否被修改:查詢結(jié)果刪除學(xué)
20、生信息的功能:查看是否已經(jīng)被成功刪除:以下是源代碼:#include<stdio.h>#include<string.h>voidprintstarts()printf(”*n");structstudentslongnum;charname15;intage;charsex4;charbirthdate15;charaddress30;charphonenumber15;charemail20;chargraduateschool20;structstudents*next;s100,*p;/*定一個(gè)有一百個(gè)成員的結(jié)構(gòu)體數(shù)組*/inti=0;/*定義一個(gè)全局
21、變量,記錄被錄入學(xué)生的個(gè)數(shù)*/voidprint(intl);voidpaixu(intn);voiddeletes(intn);voidchanges。;/*先定義所有的功能函數(shù),供主函數(shù)中調(diào)用*/voidmain()intch1,ch2,ch3,ch4,ch5,ch6,ch7,flag1=0;intflag2=0,j,choice=1;intch0=0;longnumber;charname20;FILE*fp;printf("nnnnnn");printf("ttn");printf("tt歡迎進(jìn)入學(xué)生信息管理系統(tǒng)n");pri
22、ntf("tt6n");printf("tt胡喬楠n");printf("tt6n");printf("tt2009年7月3日+'n");/*美觀的歡迎printf("ttn");界面*/printf("nnnn");while(1)printf("n");printf("n");printf("n");printf("tt學(xué)生信息管理系統(tǒng)n");printf("tt=n&quo
23、t;);printf("tt1.添加學(xué)生信息n");printf("tt2.查詢學(xué)生信息n");printf("tt3.刪除學(xué)生信息n");printf("tt4.修改學(xué)生信息n");printf("tt0.退出系統(tǒng)n");printf("n");printf("nnt請(qǐng)按鍵選擇功能(04):");scanf("%d",&ch1);if(ch1=0)break;elseif(ch1=1)while(choice=1)fp=fop
24、en("c:INFORMATION.txt","a+");printf("請(qǐng)輸入學(xué)號(hào):");scanf("%ld",&si.num);printf("請(qǐng)輸入姓名:");scanf("%s",);printf(”請(qǐng)輸入年齡:");scanf("%d”,&si.age);/*加入容錯(cuò)能力*/if(si.age<=0|si.age>=150)printf("輸入錯(cuò)誤,請(qǐng)重新輸入n");break;pr
25、intf("請(qǐng)輸入性別(男/女):");scanf("%s",si.sex);if(strcmp(si.sex,"男")!=0&&strcmp(si.sex,"女")!=0)printf("請(qǐng)輸入出生日期 printf("請(qǐng)輸入家庭地址 printf("請(qǐng)輸入電話號(hào)碼printf("請(qǐng)輸入電子郵件 printf("請(qǐng)輸入畢業(yè)學(xué)校printf("輸入錯(cuò)誤,請(qǐng)重新輸入n");break;:");scanf("%s&
26、quot;,si.birthdate);:");scanf("%s",si.address);:");scanf("%s",si.phonenumber);:");scanf("%s",si.email);:");scanf("%s",si.graduateschool);fwrite(&si,sizeof(structstudents),1,fp);fclose(fp);printf("tt添加成功!n");*/i+;/*輸入一個(gè)學(xué)生就加一次pr
27、intf("n");printf("tt是否再添加?n");printf("tt1:添加n");printf("tt0:不添加n");scanf("%d",&choice);if(choice=0)break;elseif(choice=1)continue;elsechoice=2;printf("選擇錯(cuò)誤!!系統(tǒng)自動(dòng)返回n");break;/*ch1=1*/elseif(ch1=2)/*此處是查詢功能的菜單 */*check*/while(1)printf(&qu
28、ot;tt1.按單個(gè)學(xué)號(hào)來查詢n");printf("tt2.按學(xué)生姓名來查詢n");printf("tt3.查詢所有學(xué)生信息n");printf("tt0.返回上一級(jí)菜單n");scanf("%d”,&ch2);if(ch2=0)break;elseif(ch2=1)while(1)printf("tt1.繼續(xù)服務(wù)n");printf("tt0.返回上一級(jí)菜單n");printf("nnt請(qǐng)按鍵選擇:");scanf("%d”,&
29、;ch3);if(ch3=0)break;elseif(ch3=1)fp=fopen("c:INFORMATION.txt","r");/*用學(xué)號(hào)來查*/printf("請(qǐng)輸入學(xué)號(hào):");scanf("%ld",&number);for(j=0;j<i;j+)fread(&sj,sizeof(structstudents),1,fp);if(sj.num=number)flag1=1;print(j);fclose(fp);if(flag1=0)printf("號(hào)碼不存在!n&quo
30、t;);break;/*if*/*for*/*ch3=1*/elseprintf("選擇錯(cuò)誤!!系統(tǒng)自動(dòng)返回n");/*while(1)*/*ch2=1*/elseif(ch2=2)/*ch4*/while(1)printf("tt1.繼續(xù)服務(wù)n");printf("tt0.返回上一級(jí)菜單n");printf("nnt請(qǐng)按鍵選擇:");scanf("%d",&ch4);if(ch4=0)break;elseif(ch4=1)printf("請(qǐng)輸入名字:");/*用學(xué)生
31、姓名來查詢*/scanf("%s",name);fp=fopen("c:INFORMATION.txt","r");for(j=0;j<=i;j+)fread(&sj,sizeof(structstudents),1,fp);if(strcmp(name,)=0)flag2=1;printf("查詢成功!!n");print(j);fclose(fp);if(flag2=0)printf("名字不存在!");break;/*if*/*for*/*ch4=1*/else
32、printf("選擇錯(cuò)誤!系統(tǒng)自動(dòng)返回n");/*3while(1)*/*ch2=2*/elseif(ch2=3)while(1)printf("tt1.按時(shí)間循序來查詢所有學(xué)生信息n");printf("tt2.按學(xué)號(hào)來查詢所有學(xué)生信息n");printf("tt0.返回上一級(jí)菜單n");printf("nnt請(qǐng)按鍵選擇:");scanf("%d”,&ch5);/*ch5*/if(ch5=0)break;elseif(ch5=1)for(j=0;j<i;j+)/*按照時(shí)
33、間的先后順序*/fread(&sj,sizeof(structstudents),1,fp);print(j);/*調(diào)用打印函數(shù)*/*/*ch5=1*/*bynumber*/elseif(ch5=2)/*調(diào)用排序函數(shù),按照學(xué)號(hào)的順序來瀏覽paixu(i);/*ch5=2*/elseprintf("選擇錯(cuò)誤!!系統(tǒng)自動(dòng)返回n");/*while(1)*/*ch2=3*/*2while(1)*/*ch1=2*/elseif(ch1=3)while(1)printf("tt1.繼續(xù)服務(wù)n");/*刪除學(xué)生的菜單*/printf("tt0.返回
34、上一級(jí)菜單n");printf("nnt請(qǐng)按鍵選擇:");scanf("%d”,&ch6);if(ch6=0)break;elseif(ch6=1)deletes(i);/*刪除學(xué)生*/elseprintf("選擇錯(cuò)誤!!系統(tǒng)自動(dòng)返回n");/*while*/*ch1=3*/elseif(ch1=4)while(1)printf("tt1.繼續(xù)服務(wù)n");printf("tt0.返回上一級(jí)菜單n");printf("nnt請(qǐng)按鍵選擇:");scanf("%d
35、”,&ch7);if(ch7=0)break;elseif(ch7=1)changes。;/*修改學(xué)生信息*/elseprintf("選擇錯(cuò)誤!!系統(tǒng)自動(dòng)返回n");elseprintf("選擇錯(cuò)誤!!系統(tǒng)自動(dòng)返回n");/*1while(1)*/*main*/voidprint(intl)/*此處是打印函數(shù),用了指針*/structstudents*p1;p1=&sl;printf("第d個(gè)是:學(xué)號(hào):ldn姓名:sn年齡:%dn性別:sn出生日期:sn家庭地址:sn電話號(hào)碼:sn電子郵件:sn畢業(yè)學(xué)校:snn",l,
36、p1->num,p1->name,p1->age,p1->sex,p1->birthdate,p1->address,p1->phonenumber,p1->email,p1->graduateschool);voiddeletes(intn)/*此處為刪除函數(shù)*/intj,k;intchoice=0;longnumber;structstudentsu100;FILE*fp1;if(fp1=fopen("c:INFORMATION.txt","r")=NULL)printf("沒有學(xué)生被記
37、錄,按任意鍵返回");getchar();return;fp1=fopen("c:INFORMATION.txt","r");/*先賦值給uk,再拿uk進(jìn)行比較*/for(k=0;k<n;k+)fread(&sk,sizeof(structstudents),1,fp1);uk.num=sk.num;strcpy(,);uk.age=sk.age;strcpy(uk.sex,sk.sex);strcpy(uk.birthdate,sk.birthdate);strcpy(uk.address,sk.ad
38、dress);strcpy(uk.phonenumber,sk.phonenumber);strcpy(uk.email,sk.email);strcpy(uk.graduateschool,sk.graduateschool);fclose(fpl);printf("輸入學(xué)號(hào):");scanf("%ld",&number);for(k=0;k<n;k+)if(uk.num=number)printf("要?jiǎng)h除的學(xué)生信息如下n");printf("第d個(gè)是:學(xué)號(hào):ldn姓名:sn年齡:dn性另U:%sn出生日期
39、:sn家庭地址:sn電話號(hào)碼:sn電子郵件:sn畢業(yè)學(xué)校:snn",k,uk.num,,uk.age,uk.sex,uk.birthdate,uk.address,uk.phonenumber,uk.email,uk.graduateschool);printf("是否要?jiǎng)h除n1:是tt2:否n");scanf("%d",&choice);break;if(choice=0)/*判斷是否存在*/printf("選擇錯(cuò)誤!!系統(tǒng)自動(dòng)返回n");return;elseif(choice=2)return;e
40、lseif(choice=1)if(k!=n-1)for(j=k;j<n-1;j+)uj.num=uj+1.num;strcpy(,uj+1.name);uj.age=uj+1.age;strcpy(uj.sex,uj+1.sex);strcpy(uj.birthdate,uj+1.birthdate);strcpy(uj.address,uj+1.address);strcpy(uj.phonenumber,uj+1.phonenumber);strcpy(uj.email,uj+1.email);strcpy(uj.graduateschool,uj+1.graduat
41、eschool);i-;/*學(xué)生刪除,個(gè)數(shù)減少一個(gè)*/elsei-;fp1=fopen("c:INFORMATION.txt","r");if(j!=n-1)for(j=0;j<n-1;j+)fread(&sj,sizeof(structstudents),1,fp1);/*刪除完后,在賦值給sk*/sj.num=uj.num;strcpy(,);sj.age=uj.age;strcpy(sj.sex,u|j.sex);strcpy(sj.birthdate,u|j.birthdate);strcpy(sj.ad
42、dress,u|j.address);strcpy(sj.phonenumber,uj.phonenumber);strcpy(sj.email,uj.email);strcpy(sj.graduateschool,u|j.graduateschool);/*for*/fclose(fpl);/*if*/elsefread(&sj,sizeof(structstudents),1,fp1);sj.num=uj.num;strcpy(,);sj.age=uj.age;strcpy(sj.sex,uj.sex);strcpy(sj.birthdate,uj.bi
43、rthdate);strcpy(sj.address,uj.address);strcpy(sj.phonenumber,uj.phonenumber);strcpy(sj.email,uj.email);strcpy(sj.graduateschool,u|j.graduateschool);fclose(fpl);elseprintf("選擇錯(cuò)誤!!系統(tǒng)自動(dòng)返回n");voidpaixu(intn)/*此為排序函數(shù)*/intj,k;structstudentsu100,v100;FILE*fp1;fp1=fopen("c:INFORMATION.txt&quo
44、t;,"r");for(k=0;k<n;k+)/*先賦值給uk*/fread(&sk,sizeof(structstudents),1,fp1);uk.num=sk.num;strcpy(,);uk.age=sk.age;strcpy(uk.sex,sk.sex);strcpy(uk.birthdate,sk.birthdate);strcpy(uk.address,sk.address);strcpy(uk.phonenumber,sk.phonenumber);strcpy(uk.email,sk.email);strcpy(u
45、k.graduateschool,sk.graduateschool);fclose(fpl);/*用uk進(jìn)行冒泡排序,vk為中間變量*/for(j=0;j<n-1;j+)for(k=0;k<n-j-1;k+)if(uk.num>uk+1.num)vk.num=uk.num;uk.num=uk+1.num;uk+1.num=vk.num;strcpy(,);strcpy(,uk+1.name);strcpy(uk+1.name,);vk.age=uk.age;uk.age=uk+1.age;uk+1.age=vk.age
46、;strcpy(vk.sex,uk.sex);strcpy(uk.sex,uk+1.sex);strcpy(uk+1.sex,vk.sex);strcpy(vk.birthdate,uk.birthdate);strcpy(uk.birthdate,uk+1.birthdate);strcpy(uk+1.birthdate,vk.birthdate);strcpy(vk.address,uk.address);strcpy(uk.address,uk+1.address);strcpy(uk+1.address,vk.address);strcpy(vk.phonenumber,uk.phon
47、enumber);strcpy(uk.phonenumber,uk+1.phonenumber);strcpy(uk+1.phonenumber,vk.phonenumber);strcpy(vk.email,uk.email);strcpy(uk.email,uk+1.email);strcpy(uk+1.email,vk.email);strcpy(vk.graduateschool,uk.graduateschool);strcpy(uk.graduateschool,uk+1.graduateschool);strcpy(uk+1.graduateschool,vk.graduates
48、chool);for(k=0;k<n;k+)printf("第個(gè)是:學(xué)號(hào):ldn姓名:sn年齡:%dn性另U:%sn出生日期:sn家庭地址:sn電話號(hào)碼:sn電子郵件:sn畢業(yè)學(xué)校:snn",k,uk.num,,uk.age,uk.sex,uk.birthdate,uk.address,uk.phonenumber,uk.email,uk.graduateschool);fclose(fpl);voidchanges()/*此處為修改函數(shù)*/FILE*fp1,*fp2;longnumber;intj,flag=0;intchoice;if(fp1=fop
49、en("c:INFORMATION.txt","r")=NULL)printf("學(xué)生信息沒有被錄入,按任意鍵返回:n");getchar();return;fp1=fopen("c:INFORMATION.txt","r");fp2=fopen("c:change.txt","w");printf("請(qǐng)輸入學(xué)號(hào)n");scanf("%ld",&number);for(j=0;fread(&sj,si
50、zeof(structstudents),1,fp1)!=0;j+)if(sj.num=number)/*判斷該學(xué)生是否出在*/printf("學(xué)生的信息如下:n");print(j);printf("n");prinlf("lln");printf("tt1.修改學(xué)生姓名n");printf("tt2.修改學(xué)生年齡n");printf("tt3.修改學(xué)生性別n");printf("tt4.修改學(xué)生出生日期n");printf("tt5.修改學(xué)生家庭地址n");printf("tt6.修改學(xué)生電話號(hào)碼n");printf(&q
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年(2023-2025)黑龍江中考語文真題分類匯編:專題08 名著閱讀(原卷版)
- 生產(chǎn)計(jì)劃員崗位職責(zé)(3篇)
- 車險(xiǎn)入門知識(shí)培訓(xùn)課件
- 車間防護(hù)安全工作培訓(xùn)課件
- 車間職工安全培訓(xùn)課件
- 酒店客房維修與保養(yǎng)制度
- 酒店市場(chǎng)營銷策略制度
- (2025)前端開發(fā)崗位頁面性能提升與跨端適配工作心得(2篇)
- 預(yù)付賬款控制制度
- 《積的近似值》數(shù)學(xué)課件教案
- 2026年內(nèi)蒙古白音華鋁電有限公司招聘?jìng)淇碱}庫帶答案詳解
- 2025年玉溪市市直事業(yè)單位選調(diào)工作人員考試筆試試題(含答案)
- 2026年涉縣輔警招聘考試備考題庫附答案
- 2026湖南株洲市蘆淞區(qū)人民政府征兵辦公室兵役登記參考考試題庫及答案解析
- 2026年高考語文備考之18道病句修改專練含答案
- 私域流量課件
- 2025年杭州余杭水務(wù)有限公司招聘36人筆試備考試題及答案解析
- GB/T 7251.5-2025低壓成套開關(guān)設(shè)備和控制設(shè)備第5部分:公用電網(wǎng)電力配電成套設(shè)備
- 機(jī)器人手術(shù)術(shù)后引流管管理的最佳實(shí)踐方案
- 枕骨骨折的護(hù)理課件
- 2025年產(chǎn)品質(zhì)量復(fù)盤與2026年品控升級(jí)指南
評(píng)論
0/150
提交評(píng)論