課程設(shè)計(jì)C:學(xué)生信息管理系統(tǒng)

課程設(shè)計(jì)報(bào)告書庵佣;

在經(jīng)過漫長的c/cpp語言學(xué)習(xí)后,我的課程設(shè)計(jì)終于有了那么一點(diǎn)眉目(當(dāng)然也只是一點(diǎn)眉目)

我選擇的課程設(shè)計(jì)是學(xué)生信息管理系統(tǒng)撞芍,目前為止實(shí)現(xiàn)的功能也只有可憐的增秧了、刪、改序无、查验毡,想要實(shí)現(xiàn)的功能有很多奈何功力精力不夠只能留到以后慢慢實(shí)現(xiàn)衡创,采用的是最基本的單向鏈表:首先定義一個(gè)結(jié)構(gòu)體,通過返回結(jié)構(gòu)體指針函數(shù)用以新增學(xué)生信息

定義結(jié)構(gòu)體產(chǎn)生鏈表

返回的是該生結(jié)構(gòu)體指針型的數(shù)據(jù)晶通。然后我們來創(chuàng)建這個(gè)鏈表:


image.png

首先我們定義一個(gè)頭結(jié)點(diǎn):STUDENT *g_head; 然后把我們輸入的新生信息插入到這最后一個(gè)節(jié)點(diǎn)的后邊璃氢,對(duì)的我使用的是尾插法,不斷的找到最后的節(jié)點(diǎn)然后把想要加入這個(gè)鏈表的數(shù)據(jù)加入到最后一個(gè)節(jié)點(diǎn):


image.png

刪改學(xué)生信息

因?yàn)槲覀冏龅氖且粋€(gè)單向鏈表只能從上往下查狮辽,那么當(dāng)我們需要找到一個(gè)指定的學(xué)生信息的節(jié)點(diǎn)并修改或是對(duì)這個(gè)節(jié)點(diǎn)做一些其他的操作我們就不得不需要?jiǎng)?chuàng)作一個(gè)新的函數(shù)讓他能找到當(dāng)前節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)從而從上往下一步一步找到我們想要的那個(gè)節(jié)點(diǎn)一也;首先我們知道學(xué)號(hào)是不會(huì)有相同的,從學(xué)號(hào)入手從頭結(jié)點(diǎn)開始查喉脖,往下一直下刷到所要操作的節(jié)點(diǎn)的學(xué)號(hào)椰苟,讓該節(jié)點(diǎn)成為他的下一個(gè)節(jié)點(diǎn),則調(diào)用該函數(shù)函數(shù)中所提到的節(jié)點(diǎn)自然成為了該節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)树叽,具體操作如圖示:


image.png

顯示學(xué)生信息應(yīng)該不用多說什么舆蝴,,题诵,就是縮進(jìn)要注意............

關(guān)于如何修改學(xué)生信息先調(diào)用之前的那個(gè)GetPrevAddr()函數(shù)找到他的頭一個(gè)節(jié)點(diǎn)然后對(duì)之進(jìn)行操作洁仗。當(dāng)然,這世界上總會(huì)有那些吃飽了沒事干去搞事的人性锭,這時(shí)候就就要先去看看是否有這個(gè)學(xué)生而非是沒有這個(gè)學(xué)生就開始在鏈表上修改信息赠潦,修改不能是創(chuàng)建這點(diǎn)一定要注意,草冈,她奥,,疲陕,方淤。

如下圖示:


image.png

本來是不用這么多事的,但是袁隆平實(shí)在是養(yǎng)活了太多的人蹄殃,吃飽了沒事干的人太多携茂,結(jié)果讓我們?cè)趯懘a的時(shí)候就好考慮很多的不確定因素,诅岩,讳苦,。(比如說王某)有些人會(huì)沒事亂點(diǎn)東西吩谦,要是他不想進(jìn)行這個(gè)操作因?yàn)橐粫r(shí)手欠直接就做了無法挽回的失誤那豈不是不美鸳谜,所以我們就要給他們一個(gè)反悔的機(jī)會(huì)。式廷。咐扭。有些人會(huì)為這個(gè)專門做一個(gè)函數(shù)有的是基本的int型返回?cái)?shù)值來判斷還有的會(huì)采取bool型來返回選擇的結(jié)果,我們這個(gè)小程序沒幾個(gè)函數(shù)就直接寫在函數(shù)里就行了。做到這里我們做代碼的已經(jīng)算是仁至義盡了吧他要是還是繼續(xù)進(jìn)行剛才的玩心跳那就不是我們的責(zé)任了蝗肪,袜爪,,薛闪。

然后就是我們的刪除學(xué)生信息功能的實(shí)現(xiàn)辛馆,比如說某個(gè)學(xué)生觸碰到了學(xué)校的底線然后學(xué)校要開除他,刪除這個(gè)學(xué)生在校的信息豁延。首先依然是使用GetPrevAddr()函數(shù)找到這個(gè)想要?jiǎng)h除的學(xué)生的前一個(gè)節(jié)點(diǎn)然后開始對(duì)這個(gè)節(jié)點(diǎn)操作昙篙,我們之前的空間使用的是malloc函數(shù)申請(qǐng)到一塊內(nèi)存空間,這時(shí)候我們可以有兩個(gè)思路:先將這個(gè)節(jié)點(diǎn)從鏈表中斷開然后讓他的上一個(gè)節(jié)點(diǎn)的末尾鏈接到他下一個(gè)節(jié)點(diǎn)的開頭诱咏,讓這個(gè)節(jié)點(diǎn)成為游離的一個(gè)狀態(tài)苔可,然后使用free函數(shù)將之從堆內(nèi)存中釋放。如圖所示:


image.png

文件的寫入

如此一來增刪改查就差不多完成了然后就是一個(gè)難點(diǎn)寫入文件袋狞。在這里我做了一個(gè)叫COUNT()硕蛹,的函數(shù)用來記錄學(xué)生信息的數(shù)量以此來驗(yàn)證最后寫入的學(xué)生信息是否是我們想要的。我們采用二進(jìn)制的輸入法(“wb”)FILE結(jié)構(gòu)體是頭文件stdio.h中自帶的一個(gè)結(jié)構(gòu)體我們可以直接使用定義一個(gè)結(jié)構(gòu)體類型的指針硕并。我們采用一個(gè)while循環(huán)寫入文件不斷找到它的下一個(gè)節(jié)點(diǎn)直到NULL,fwrite寫入信息秧荆,注意while循環(huán)最終要讓學(xué)生信息結(jié)構(gòu)體指針變量指向她的下一個(gè)節(jié)點(diǎn)否則while循環(huán)將成為一個(gè)死循環(huán)倔毙,最后我們來驗(yàn)證一下,while循環(huán)寫入++i實(shí)現(xiàn)每寫入一個(gè)學(xué)生信息i就加1乙濒,最后判斷i ==陕赃? count,假如說不等那么我們從頭縷一遍看看是代碼的錯(cuò)誤還是一些其他的因素颁股。有圖有真相:


image.png

到此為止我們的學(xué)生信息管理系統(tǒng)的基本的增刪改查文件的寫入就基本實(shí)現(xiàn)了么库,至于一些其他的排序啊,給字上顏色啊什么的以后我們會(huì)慢慢實(shí)現(xiàn)甘有,诉儒,,亏掀,忱反,,滤愕。温算。

說一點(diǎn)題外話,各位可能看見了我寫的東西讓使用者輸入的東西很少间影,而且當(dāng)答案是在幾個(gè)固定結(jié)果間選擇時(shí)我就不會(huì)讓他們自己去輸入注竿。。。巩割。在我剛開始寫這個(gè)課程設(shè)計(jì)的時(shí)候我舍友一臉奸笑的走過來跟我說他能讓我這個(gè)程序炸掉裙顽,我當(dāng)時(shí)當(dāng)然是不信的,然后就有了這個(gè)結(jié)果:
圖片.png

對(duì)吧本來讓你輸三個(gè)數(shù)字你老老實(shí)實(shí)輸數(shù)字不就沒那么多事了喂分,顯然我低估了人吃飽飯沒事干后的可怕程度锦庸。。蒲祈。痛定思痛我就弄了一個(gè)if判斷語句而且但凡是我可以幫使用者決定的答案都不會(huì)讓他們自己去輸入讓他們?nèi)ミx擇就好了甘萧,,梆掸,扬卷。至于說姓名我們也沒辦法,畢竟他要是非管自己叫狗蛋酸钦,貓屎啥的我們也沒權(quán)利管對(duì)吧怪得,至少我們的程序不會(huì)炸了。卑硫。徒恋。。欢伏。入挣。

第一次寫寫的是啥自己也不太清楚,如有錯(cuò)誤還請(qǐng)大佬斧正硝拧。径筏。。障陶。滋恬。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市抱究,隨后出現(xiàn)的幾起案子恢氯,更是在濱河造成了極大的恐慌,老刑警劉巖媳维,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酿雪,死亡現(xiàn)場離奇詭異,居然都是意外死亡侄刽,警方通過查閱死者的電腦和手機(jī)指黎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來州丹,“玉大人醋安,你說我怎么就攤上這事杂彭。” “怎么了吓揪?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵亲怠,是天一觀的道長。 經(jīng)常有香客問我柠辞,道長团秽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任叭首,我火速辦了婚禮习勤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焙格。我一直安慰自己图毕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布眷唉。 她就那樣靜靜地躺著予颤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冬阳。 梳的紋絲不亂的頭發(fā)上蛤虐,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音肝陪,去河邊找鬼笆焰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛见坑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捏检,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼荞驴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贯城?” 一聲冷哼從身側(cè)響起熊楼,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎能犯,沒想到半個(gè)月后鲫骗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踩晶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年执泰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渡蜻。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡术吝,死狀恐怖计济,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情排苍,我是刑警寧澤沦寂,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站淘衙,受9級(jí)特大地震影響传藏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜彤守,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一毯侦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遗增,春花似錦叫惊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至饰及,卻和暖如春蔗坯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背燎含。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工宾濒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人屏箍。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓绘梦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赴魁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子无埃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 文/鄧榮 在林界烂叔,它們有獨(dú)特的紋數(shù)是不被人類獲知的昆庇,但是它們?cè)敢夂挽`魂相遇相知嘲更。誰活在靈魂的世界,它們是知道的潘拱。它...
    鄧榮閱讀 419評(píng)論 0 0
  • 十八之際 新的征程 轉(zhuǎn)眼間疹鳄,十八年光陰一閃即逝。至今依然記得自己曾經(jīng)上幼兒園的畫面芦岂,仿佛剛過去不久瘪弓。那...
    清澈與明亮閱讀 370評(píng)論 0 0
  • 《恭喜你,謝謝你們禽最!》 10天10本書杠茬,3月份的清單主題營活動(dòng)月褥,子安,恭喜你瓢喉,你完成了當(dāng)初的誓言宁赤,可以沒...
    子安好閱讀 217評(píng)論 7 5
  • 《楂阿决左,多想和你見一面》 那位名叫楂阿的姑娘 多想和你見一面 告訴你我的名字 還有 我的故事 那位身在遠(yuǎn)方的姑娘...
    冷侯閱讀 212評(píng)論 0 5