第一篇:c語(yǔ)言課程設(shè)計(jì)心得體會(huì)
c語(yǔ)言課程設(shè)計(jì)心得體會(huì)
第二篇:C語(yǔ)言程序課程設(shè)計(jì)心得體會(huì)
C語(yǔ)言程序課程設(shè)計(jì)心得體會(huì)
學(xué)習(xí)c語(yǔ)言不能停留在學(xué)習(xí)它的語(yǔ)法規(guī)則,而是利用學(xué)到的知識(shí)編寫c語(yǔ)言程序,解決實(shí)際問題。那么,現(xiàn)在就來看看,以下兩篇關(guān)于C語(yǔ)言程序課程設(shè)計(jì)心得體會(huì)的范文!C語(yǔ)言程序課程設(shè)計(jì)心得體會(huì)1 在科技高度發(fā)展的今天,計(jì)算機(jī)在人們之中的作用越來越突出。而c語(yǔ)言作為一種計(jì)算機(jī)的語(yǔ)言,我們學(xué)習(xí)它,有助于我們更好的了解計(jì)算機(jī),與計(jì)算機(jī)進(jìn)行交流,因此,c語(yǔ)言的學(xué)習(xí)對(duì)我們尤其重要。
在這個(gè)星期里,我們專業(yè)的學(xué)生在專業(yè)老師的帶領(lǐng)下進(jìn)行了c語(yǔ)言程序?qū)嵺`學(xué)習(xí)。在這之前,我們已經(jīng)對(duì)c語(yǔ)言這門課程學(xué)習(xí)了一個(gè)學(xué)期,對(duì)其有了一定的了解,但是也僅僅是停留在了解的范圍,對(duì)里面的好多東西還是很陌生,的在運(yùn)用起來的時(shí)候還是感到很棘手,畢竟,萬事開頭難嘛。
由于時(shí)間的關(guān)系,我們的這次實(shí)踐課程老師并沒有給我們?cè)敿?xì)的介紹,只是給我們簡(jiǎn)單的介紹了幾個(gè)比較重要的實(shí)際操作。包括了程序模塊處理。簡(jiǎn)單界面程序。高級(jí)界面程序。程序的添加修改。用程序做一元線性回歸處理以及用c語(yǔ)言程序來畫粒度分布圖等這幾樣比較重要的時(shí)間操作。
上機(jī)實(shí)驗(yàn)是學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言必不可少的實(shí)踐環(huán)節(jié),特別是c語(yǔ)言靈活、簡(jiǎn)潔,更需要通過編程的實(shí)踐來真正掌握它。對(duì)于程序設(shè)計(jì) 語(yǔ)言的學(xué)習(xí)目的,可以概括為學(xué)習(xí)語(yǔ)法規(guī)定、掌握程序設(shè)計(jì)方法、提高程序開發(fā)能力,這些都必須通過充分的實(shí)際上機(jī)操作才能完成。
學(xué)習(xí)c程序設(shè)計(jì)語(yǔ)言除了課堂講授以外,必須保證有不少于課堂講授學(xué)時(shí)的上機(jī)時(shí)間。因?yàn)閷W(xué)時(shí)所限,課程不能安排過多的統(tǒng)一上機(jī)實(shí)驗(yàn),所以希望學(xué)生有效地利用課程上機(jī)實(shí)驗(yàn)的機(jī)會(huì),盡快掌握用c語(yǔ)言開發(fā)程序的能力,為今后的繼續(xù)學(xué)習(xí)打下一個(gè)良好的基礎(chǔ)。為此,我們結(jié)合課堂講授的內(nèi)容和進(jìn)度,安排了12次上機(jī)實(shí)驗(yàn)。課程上機(jī)實(shí)驗(yàn)的目的,不僅僅是驗(yàn)證教材和講課的內(nèi)容、檢查自己所編的程序是否正確,課程安排的上機(jī)實(shí)驗(yàn)的目的可以概括為如下幾個(gè)方面:
1、加深對(duì)課堂講授內(nèi)容的理解
課堂上要講授許多關(guān)于c語(yǔ)言的語(yǔ)法規(guī)則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語(yǔ)言這個(gè)工具解決實(shí)際問題,又必須掌握它。通過多次上機(jī)練習(xí),對(duì)于語(yǔ)法知識(shí)有了感性的認(rèn)識(shí),加深對(duì)它的理解,在理解的基礎(chǔ)上就會(huì)自然而然地掌握c語(yǔ)言的語(yǔ)法規(guī)定。對(duì)于一些內(nèi)容自己認(rèn)為在課堂上聽懂了,但上機(jī)實(shí)踐中會(huì)發(fā)現(xiàn)原來理解的偏差,這是由于大部分學(xué)生是初次接觸程序設(shè)計(jì),缺乏程序設(shè)計(jì)的實(shí)踐所致。
學(xué)習(xí)c語(yǔ)言不能停留在學(xué)習(xí)它的語(yǔ)法規(guī)則,而是利用學(xué)到的知識(shí)編寫c語(yǔ)言程序,解決實(shí)際問題。即把c語(yǔ)言作為工具,描述解決實(shí)際問題的步驟,由計(jì)算機(jī)幫助我們解題。只有通過上機(jī)才能檢驗(yàn)自己是否掌握c語(yǔ)言、自己編寫的程序是否能夠正確地解題。
通過上機(jī)實(shí)驗(yàn)來驗(yàn)證自己編制的程序是否正確,恐怕是大多數(shù)同 學(xué)在完成老師作業(yè)時(shí)的心態(tài)。但是在程序設(shè)計(jì)領(lǐng)域里這是一定要克服的傳統(tǒng)的、錯(cuò)誤的想法。因?yàn)樵谶@種思想支配下,可能你會(huì)想辦法去“掩蓋”程序中的錯(cuò)誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。自己編好程序上機(jī)調(diào)試運(yùn)行時(shí),可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對(duì)c語(yǔ)言的理解和程序開發(fā)能力。
2、熟悉程序開發(fā)環(huán)境、學(xué)習(xí)計(jì)算機(jī)系統(tǒng)的操作方法
一個(gè)c語(yǔ)言程序從編輯、編譯、連接到運(yùn)行,都要在一定的外部操作環(huán)境下才能進(jìn)行。所謂“環(huán)境”就是所用的計(jì)算機(jī)系統(tǒng)硬件、軟件條件,只有學(xué)會(huì)使用這些環(huán)境,才能進(jìn)行程序開發(fā)工作。通過上機(jī)實(shí)驗(yàn),熟練地掌握c語(yǔ)言開發(fā)環(huán)境,為以后真正編寫計(jì)算機(jī)程序解決實(shí)際問題打下基礎(chǔ)。同時(shí),在今后遇到其它開發(fā)環(huán)境時(shí)就會(huì)觸類旁通,很快掌握新系統(tǒng)的使用。
3、學(xué)習(xí)上機(jī)調(diào)試程序
完成程序的編寫,決不意味著萬事大吉。你認(rèn)為萬無一失的程序,實(shí)際上機(jī)運(yùn)行時(shí)可能不斷出現(xiàn)麻煩。如編譯程序檢測(cè)出一大堆錯(cuò)誤。有時(shí)程序本身不存在語(yǔ)法錯(cuò)誤,也能夠順利運(yùn)行,但是運(yùn)行結(jié)果顯然是錯(cuò)誤的。開發(fā)環(huán)境所提供的編譯系統(tǒng)無法發(fā)現(xiàn)這種程序邏輯錯(cuò)誤,只能靠自己的上機(jī)經(jīng)驗(yàn)分析判斷錯(cuò)誤所在。程序的調(diào)試是一個(gè)技巧性很強(qiáng)的工作,對(duì)于初學(xué)者來說,盡快掌握程序調(diào)試方法是非常重要的。有時(shí)候一個(gè)消耗你幾個(gè)小時(shí)時(shí)間的小小錯(cuò)誤,調(diào)試高手一眼就看出錯(cuò)誤所在。通過這次為數(shù)不多的幾天計(jì)算機(jī)實(shí)踐學(xué)習(xí),我們了解了一些關(guān)于c語(yǔ)言的知識(shí),理解鞏固了我們c語(yǔ)言的理論知識(shí),著對(duì)我們將來到社會(huì)工作將會(huì)有莫大的幫助。同時(shí)它讓我知道,只要你努力,任何東西都不會(huì)太難。
c語(yǔ)言課程設(shè)計(jì)心得體會(huì)2 本學(xué)期我們開設(shè)了《模擬電路》與《數(shù)字電路》課,這兩門學(xué)科都屬于電子電路范疇,與我們的專業(yè)也都有聯(lián)系,且都是理論方面的指示。正所謂“紙上談兵終覺淺,覺知此事要躬行?!睂W(xué)習(xí)任何知識(shí),僅從理論上去求知,而不去實(shí)踐、探索是不夠的,所以在本學(xué)期暨模電、數(shù)電剛學(xué)完之際,緊接著來一次電子電路課程設(shè)計(jì)是很及時(shí)、很必要的。這樣不僅能加深我們對(duì)電子電路的任職,而且還及時(shí)、真正的做到了學(xué)以致用。
這兩周的課程設(shè)計(jì),先不說其他,就天氣而言,確實(shí)很艱苦。受副熱帶高氣壓影響,江南大部這兩周都被高溫籠罩著。人在高溫下的反應(yīng)是很遲鈍的,簡(jiǎn)言之,就是很難靜坐下來動(dòng)腦子做事。天氣本身炎熱,加之機(jī)房里又沒有電扇、空調(diào),故在上機(jī)仿真時(shí),真是艱熬,坐下來才一會(huì)會(huì),就全身濕透,但是炎炎烈日擋不住我們求知、探索的欲望。通過我們不懈的努力與切實(shí)追求,終于做完了課程設(shè)計(jì)。
在這次課程兼職設(shè)計(jì)過程中,我也遇到了很多問題。比如在三角波、方波轉(zhuǎn)換成正弦波時(shí),我就弄了很長(zhǎng)時(shí)間,先是遠(yuǎn)離不清晰,這直接導(dǎo)致了我無法很順利地連接電路,然后翻閱了大量書籍,查資料,終于在書中查到了有關(guān)章節(jié),并參考,并設(shè)計(jì)出了三角波、方波轉(zhuǎn)換 成正弦波的電路圖。但在設(shè)計(jì)數(shù)字頻率計(jì)時(shí)就不是那么一帆風(fēng)順了。我同樣是查閱資料,雖找到了原理框圖,但電路圖卻始終設(shè)計(jì)不出來,最后實(shí)在沒辦法,只能用數(shù)字是中來代替。在此,我深表遺憾!這次課程設(shè)計(jì)讓我學(xué)到了很多,不僅是鞏固了先前學(xué)的模電、數(shù)電的理論知識(shí),而且也培養(yǎng)了我的動(dòng)手能力,更令我的創(chuàng)造性思維得到拓展。希望今后類似這樣課程設(shè)計(jì)、類似這樣的鍛煉機(jī)會(huì)能更多些!c語(yǔ)言
第三篇:C語(yǔ)言課程設(shè)計(jì)心得體會(huì)[最終版]
第一篇:c語(yǔ)言課程設(shè)計(jì)心得體會(huì)
課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。
回顧起此次單片機(jī)課程設(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ì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說三極管PNP管腳不懂怎么放置,不懂分得二極管的正負(fù)極,對(duì)單片機(jī)匯編語(yǔ)言掌握得不好通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)重新溫故。
這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多編程問題,最后在梁強(qiáng)老師的辛勤指導(dǎo)下,終于游逆而解。同時(shí),在梁強(qiáng)老師的身上我學(xué)得到很多實(shí)用的知識(shí),在次我表示感謝!同時(shí),對(duì)給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!
第二篇:c語(yǔ)言課程設(shè)計(jì)心得體會(huì)
本學(xué)期我們開設(shè)了《模擬電路》與《數(shù)字電路》課,這兩門學(xué)科都屬于電子電路范疇,與我們的專業(yè)也都有聯(lián)系,且都是理論方面的指示。正所謂紙上談兵終覺淺,覺知此事要躬行。學(xué)習(xí)任何知識(shí),僅從理論上去求知,而不去實(shí)踐、探索是不夠的,所以在本學(xué)期暨模電、數(shù)電剛學(xué)完之際,緊接著來一次電子電路課程設(shè)計(jì)是很及時(shí)、很必要的。這樣不僅能加深我們對(duì)電子電路的任職,而且還及時(shí)、真正的做到了學(xué)以致用。
這兩周的課程設(shè)計(jì),先不說其他,就天氣而言,確實(shí)很艱苦。受副熱帶高氣壓影響,江南大部這兩周都被高溫籠罩著。人在高溫下的反應(yīng)是很遲鈍的,簡(jiǎn)言之,就是很難靜坐下來動(dòng)腦子做事。天氣本身炎熱,加之機(jī)房里又沒有電扇、空調(diào),故在上機(jī)仿真時(shí),真是艱熬,坐下來才一會(huì)會(huì),就全身濕透,但是炎炎烈日擋不住我們求知、探索的欲望。通過我們不懈的努力與切實(shí)追求,終于做完了課程設(shè)計(jì)。
在這次課程兼職設(shè)計(jì)過程中,我也遇到了很多問題。比如在三角波、方波轉(zhuǎn)換成正弦波時(shí),我就弄了很長(zhǎng)時(shí)間,先是遠(yuǎn)離不清晰,這直接導(dǎo)致了我無法很順利地連接電路,然后翻閱了大量書籍,查資料,終于在書中查到了有關(guān)章節(jié),并參考,并設(shè)計(jì)出了三角波、方波轉(zhuǎn)換成正弦波的電路圖。但在設(shè)計(jì)數(shù)字頻率計(jì)時(shí)就不是那么一帆風(fēng)順了。我同樣是查閱資料,雖找到了原理框圖,但電路圖卻始終設(shè)計(jì)不出來,最后實(shí)在沒辦法,只能用數(shù)字是中來代替。在此,我深表遺憾!
這次課程設(shè)計(jì)讓我學(xué)到了很多,不僅是鞏固了先前學(xué)的模電、數(shù)電的理論知識(shí),而且也培養(yǎng)了我的動(dòng)手能力,更令我的創(chuàng)造性思維得到拓展。
第四篇:C語(yǔ)言課程設(shè)計(jì)心得體會(huì)-心得體會(huì)
C語(yǔ)言課程設(shè)計(jì)心得體會(huì)-心得體會(huì)
課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。
回顧起此次單片機(jī)課程設(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ì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說三極管PNP管腳不懂怎么放置,不懂分得二極管的正負(fù)極,對(duì)單片機(jī)匯編語(yǔ)言掌握得不好……通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識(shí)重新溫故。
這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多編程問題,最后在梁強(qiáng)老師的辛勤指導(dǎo)下,終于游逆而解。同時(shí),在梁強(qiáng)老師的身上我學(xué)得到很多實(shí)用的知識(shí),在次我表示感謝!同時(shí),對(duì)給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠心的感謝!
第五篇:C語(yǔ)言課程設(shè)計(jì)
#include
int num1;
char name1[20];
int score;
int nelepeo;//課程已選人數(shù)
int Melepeo;//課程人數(shù)上限
struct couse * next;};
int student();
//學(xué)生登陸 int teacher();
//教師登陸 struct student//學(xué)生信息結(jié)構(gòu)體 {
int num2;
char name2[20];
int nelenum[50];//已選課程編號(hào)
int nelen;//已選課程數(shù)量
struct student * next;};
void Ms(){
for(kk1=0;kk1<1100;kk1++)
for(kk2=0;kk2<1200;kk2++)
for(kk3=0;kk3<1200;kk3++);} void keyboardc()//錄入課程子函數(shù)(從鍵盤錄入){ void intoc();struct couse *p1,*p2;N1=0;p1=p2=(struct couse*)malloc(sizeof(struct couse));printf(“n課程編號(hào):”);fflush(stdin);scanf(“%d”,&p1->num1);printf(“n課程名稱:”);scanf(“%s”,p1->name1);printf(“n學(xué)分:”);scanf(“%d”,&p1->score);printf(“n課程人數(shù)上限:”);scanf(“%d” ,&p1->Melepeo);printf(“ntttt輸入成功!”);p1->nelepeo=0;head1=NULL;while(p1->num1!=0){
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse *)malloc(sizeof(struct couse));
printf(“n-----------------------------”);
printf(“n課程編號(hào):(輸入0結(jié)束)”);scanf(“%d”,&p1->num1);printf(“n課程名稱:”);scanf(“%s”,p1->name1);printf(“n學(xué)分:”);scanf(“%d”,&p1->score);printf(“n課程人數(shù)上限:”);scanf(“%d” ,&p1->Melepeo);
p1->nelepeo=0;
printf(“ntttt輸入成功!”);} p2->next=NULL;intoc();}
void filec()//錄入鍵盤子函數(shù)(從文件錄入){ void intoc();
FILE * fp;
char filepath[20];
struct couse *p1,*p2;
N1=0;
printf(“輸入要讀入的文件路徑:”);
getchar();
gets(filepath);
if((fp=fopen(filepath,“r”))==NULL)
{
printf(“找不到%s文件!n”,filepath);
exit(0);
}
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fscanf(fp,“%d%s%d%d%d”,&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
head1=NULL;
while(!feof(fp))
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse *)malloc(sizeof(struct couse));
fscanf(fp,“%d%s%d%d%d”,&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
}
p2->next=NULL;
intoc();}
void inputc()//錄入課程主函數(shù) {
int i;
printf(“ttt錄入課程信息n”);
printf(“n1.從鍵盤錄入n”);
printf(“2.從文件錄入n”);
printf(“3.返回主菜單n”);
printf(“請(qǐng)選擇(1~3):n”);
scanf(“%d”,&i);
switch(i)
{
case(1):keyboardc();break;
case(2):filec();break;
case(3):system(“cls”);return;break;
//return
} }
void insertc(struct couse *incouse)//課程管理子函數(shù)(增加課程){ void intoc();
struct couse *p0,*p1,*p2;
p1=head1;
p0=incouse;
if(head1==NULL)
{
head1=p0;
p0->next=NULL;
}
else
{
while((p0->num1 > p1->num1)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num1 <= p1->num1)
{
if(head1==p1)head1=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N1=N1+1;
intoc();}
void delc(int num1)//課程管理子函數(shù)(刪除課程){ void intoc();
struct couse *p1,*p2;
if(head1==NULL)
{
printf(“n沒有課程,無法刪除!n”);
goto end;
}
p1=head1;
while(num1!=p1->num1 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num1==p1->num1)
{
if(p1==head1)head1=p1->next;
else p2->next=p1->next;
printf(“已刪除該編號(hào)課程!n”);
N1=N1-1;
}
else printf(“無該編號(hào)的課程!n”);
end:;
intoc();}
void managementc()//課程管理主函數(shù) {
struct couse * incouse;
struct couse *p1;
int i,num1;
printf(“ttt課程管理n”);
printf(“1.新增課程n”);
printf(“2.刪除課程n”);
printf(“3.返回主菜單n”);
printf(“請(qǐng)選擇(1~3):n”);
scanf(“%d”,&i);
switch(i)
{
case(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
printf(“n課程編號(hào):”);
fflush(stdin);
scanf(“%d”,&p1->num1);
printf(“n課程名稱:”);
scanf(“%s”,p1->name1);
printf(“n學(xué)分:”);
scanf(“%d”,&p1->score);
printf(“n課程人數(shù)上限:”);
scanf(“%d” ,&p1->Melepeo);
printf(“ntttt輸入成功!”);
incouse->nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf(“請(qǐng)輸入要?jiǎng)h除課程的編號(hào):n”);
scanf(“%d”,&num1);
delc(num1);
break;
}
case(3):system(“cls”);return;break;
} }
void keyboards()//錄入學(xué)生信息子函數(shù)(從鍵盤錄入){
void intos();
int i;
struct student *p1,*p2;
N2=0;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf(“n學(xué)生學(xué)號(hào):”);
scanf(“%d”,&p1->num2);
printf(“n學(xué)生姓名:”);
scanf(“%s”,p1->name2);
p1->nelen=0;
for(i=0;i<50;i++)p1->nelenum[i]=0;
head3=NULL;
while(p1->num2!=0)
{
N2=N2+1;
if(N2==1)head3=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(sizeof(struct student));
//return
printf(“n學(xué)生學(xué)號(hào):(輸入0結(jié)束!)”);
scanf(“%d”,&p1->num2);
printf(“n學(xué)生姓名:”);
scanf(“%s”,p1->name2);
p1->nelen=0;
for(i=0;i<50;i++)p1->nelenum[i]=0;
}
p2->next=NULL;
intos();return;} void files()//錄入學(xué)生信息子函數(shù)(從文件錄入){
int i=0;
FILE * fp;
char filepath[20];
struct student *p1,*p2;
N2=0;
printf(“輸入要讀入的文件路徑:”);
getchar();
gets(filepath);
if((fp=fopen(filepath,“r”))==NULL)
{
printf(“找不到%s文件!n”,filepath);
exit(0);
}
p1=p2=(struct student*)malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
head3=NULL;
while(!feof(fp))
{
i=0;
N2=N2+1;
if(N2==1)head3=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
}
p2->next=NULL;}
void inputs()//錄入學(xué)生信息主函數(shù) {
int i;
printf(“nttt錄入學(xué)生信息n”);
printf(“n1.從鍵盤錄入n”);
printf(“2.從文件錄入n”);
printf(“3.返回主菜單n”);
printf(“請(qǐng)選擇(1~3):n”);
scanf(“%d”,&i);
switch(i)
{
case(1):keyboards();break;
case(2):files();break;
case(3):system(“cls”);return;break;
}
return 0;}
void inserts(struct student * incouse)//學(xué)生信息管理子函數(shù)(填加學(xué)生信息){ void intos();
struct student *p0,*p1,*p2;
p1=head3;
p0=incouse;
if(head3==NULL)
{
head3=p0;
p0->next=NULL;
}
else
{
while((p0->num2 > p1->num2)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num2 <= p1->num2)
{
if(head3==p1)head3=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
//return
p1->next=p0;
p0->next=NULL;
}
}
N2=N2+1;
intos();}
void dels(int num2)//學(xué)生信息管理子函數(shù)(刪除學(xué)生信息){ void intos();
struct student *p1,*p2;
if(head3==NULL)
{
printf(“n沒有該學(xué)生信息,無法刪除!n”);
goto end;
}
p1=head3;
while(num2!=p1->num2 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num2==p1->num2)
{
if(p1==head3)head3=p1->next;
else p2->next=p1->next;
printf(“已刪除該學(xué)生信息!n”);
N2=N2-1;
}
else printf(“無該學(xué)號(hào)的學(xué)生!n”);
intos();
end:;}
void managements()//學(xué)生信息管理主函數(shù) {
struct student * incouse;
int i,num2;
printf(“ttt學(xué)生信息管理n”);
printf(“1.新增學(xué)生信息n”);
printf(“2.刪除學(xué)生信息n”);
printf(“3.返回主菜單n”);
printf(“請(qǐng)選擇(1~3):n”);
scanf(“%d”,&i);
switch(i)
{
case(1):
{
incouse=(struct student *)malloc(sizeof(struct student));
incouse->nelen=0;
incouse->nelenum[0]=0;
printf(“學(xué)生學(xué)號(hào)t學(xué)生姓名n”);
scanf(“%d%s”,&incouse->num2,incouse->name2);
inserts(incouse);
break;
}
case(2):
{
printf(“請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):n”);
scanf(“%d”,&num2);
dels(num2);
break;
}
case(3):system(“cls”);return;break;
//return
} }
void elect(struct student * s)//選課 {
void intos();
struct couse * p;
int num1,i;
printf(“請(qǐng)輸入要選課的編號(hào):n”);
scanf(“%d”,&num1);
for(i=0;s->nelenum[i]!=0;i++);
s->nelenum[i]=num1;
(s->nelen)++;
p=head1;
while(p->num1!=num1)p=p->next;
(p->nelepeo)++;
intos();} void cheak()//學(xué)生選課子函數(shù)(查詢可選課程){
char e;
struct couse * c;
struct student * s;
int num2,i,j=0,t=0;
printf(“請(qǐng)輸入你的學(xué)號(hào):”);
scanf(“%d”,&num2);
s=head3;
while((s->num2!=num2)&&(s->next!=NULL))s=s->next;
if(s->num2!=num2)
{
printf(“不存在你的信息,請(qǐng)進(jìn)入主菜單錄入你的信息!n”);
goto end;
}
c=head1;
printf(“你的可選課程編號(hào):n”);
while(c!=NULL)
{
for(t=0,i=0;s->nelenum[i]!=0;i++)
{
if(c->num1==s->nelenum[i])t=1;
}
if(t==0 &&(c->nelepeo!=c->Melepeo))
{
printf(“%dn”,c->num1);
j++;
}
c=c->next;
}
if(j==0)
{
printf(“你已選完所有課程,無法再多選!n”);
goto end;
}
printf(“選課(y/n)?:n”);
getchar();
e=getchar();
i=0;
while((e=='y')||(e=='Y'))
{
elect(s);
printf(“繼續(xù)選課(y/n)?:n”);
getchar();
e=getchar();
}
end:;} void back(struct student * p)//退課 {
void intos();
struct couse * p1;
int num1,i,j;
printf(“請(qǐng)輸入你要退掉的課程編號(hào):n”);
scanf(“%d”,&num1);
p1=head1;
while(p1->num1!=num1)p1=p1->next;
for(i=0;p->nelenum[i]!=num1;i++);
for(j=i;p->nelenum[j]!=0;j++)p->nelenum[j]=p->nelenum[j+1];
p->nelenum[--j]=0;
(p1->nelepeo)--;
printf(“退課成功!n”);
intos();} void hcheak()//學(xué)生選課子函數(shù)(查詢已選課程){
char c;
struct couse * p0;
struct student * p;
int num2,i,f=0;
printf(“請(qǐng)輸入學(xué)號(hào):n”);
scanf(“%d”,&num2);
p=head3;
while(p->num2!=num2 && p!=NULL)p=p->next;
if(p==NULL)
{
printf(“不存在你的信息,請(qǐng)回主菜單錄入信息:n”);
goto end;
}
printf(“已選課程編號(hào):n”);
if(p->nelenum[0]==0)
{
printf(“你還沒選課!n”);
goto end;
}
for(i=0;p->nelenum[i]!=0;i++)
{
printf(“%dn”,p->nelenum[i]);
p0=head1;
while(p0->num1!=p->nelenum[i])p0=p0->next;
f=f+p0->score;
}
printf(“總學(xué)分:%dn”,f);
printf(“是否進(jìn)行退課(y/n)?”);
getchar();
c=getchar();
while((c=='y')||(c=='Y'))
{
back(p);
printf(“繼續(xù)退課(y/n)?”);
getchar();
c=getchar();
(p->nelen)--;
}
end:;} void elective()//學(xué)生選課主函數(shù) {
int i;
printf(“ttt學(xué)生選課n”);
printf(“1.查詢可選課程n”);
printf(“2.查詢已選課程n”);
printf(“3.返回主菜單n”);
printf(“請(qǐng)輸入(1~3):n”);
scanf(“%d”,&i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3): system(“cls”);return;break;
// return
} } void listc()//輸出課程信息 {
struct couse * p;
p=head1;
printf(“課程編號(hào)
課程名稱
學(xué)分
課程已選人數(shù)
課程人數(shù)上限n”);
while(p!=NULL)
{
printf(“%-8d%10s%6d%8d%12dn”,p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
} }
void lists()//輸出學(xué)生信息 {
struct student * p;
p=head3;
printf(“學(xué)生學(xué)號(hào)
學(xué)生姓名
已選課程數(shù)量n”);
while(p!=NULL)
{
printf(“%-4d %10s %6dn”,p->num2,p->name2,p->nelen);
p=p->next;
} } void intoc()//存儲(chǔ)課程信息 {
FILE * fp;
struct couse * p;
char filepath[30];
if((fp=fopen(“課程信息.dat”,“a+”))==NULL)
{
printf(“n保存失敗!”);
exit(0);
}
p=head1;
while(p!=NULL)
{
fprintf(fp,“%d %s %d %d %dn”,p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
fclose(fp);
printf(“課程信息已保存成功!n”);} void intos()//存儲(chǔ)學(xué)生信息 { int i;
FILE * fp;
struct student * p;
char filepath[30];
if((fp=fopen(“學(xué)生信息.dat”,“a+”))==NULL)
{
printf(“n保存失敗!”);
exit(0);
}
p=head3;
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p->next;
}
fclose(fp);
printf(“學(xué)生信息已保存成功!n”);
printf(“ntttt選擇菜單:”);
printf(“ntttt1.繼續(xù)添加ntttt2.返回主菜單:”);
printf(“請(qǐng)選擇:”);
scanf(“%d”,&i);
switch(i)
{
case 1:inputs();break;
case 2:teacher();break;
default:printf(“n輸入有誤!n”);} }
void store()//信息主函數(shù) {
int i;
printf(“tt系統(tǒng)信息查看及存儲(chǔ)n”);
printf(“1.查看課程信息n”);
printf(“2.查看學(xué)生信息n”);
printf(“3.返回主菜單n”);
printf(“請(qǐng)輸入(1~3):n”);
scanf(“%d”,&i);
switch(i)
{
case(1):listc();break;
case(2):lists();break;
case(3):system(“cls”);return;break;
} }
int main()//主函數(shù)
//retuen
{
int i;
FILE *fp;
printf(“nttt歡迎使用學(xué)生選課系統(tǒng)!n”);
printf(“n請(qǐng)選擇菜單:”);
printf(“ntttt1.教師登陸ntttt2.學(xué)生登陸n”);
printf(“請(qǐng)選擇:”);
scanf(“%d”,&i);
switch(i)
{
case 1:teacher();break;
case 2:student();break;
default:printf(“輸入有誤!”);
} }
int student()
{
int i;
printf(“ntttt1.學(xué)生選課n”);
printf(“ntttt2.系統(tǒng)信息查看及存儲(chǔ)n”);
printf(“ntttt3.退出系統(tǒng)n”);
printf(“請(qǐng)選擇:”);
scanf(“%d”,&i);
switch(i)
{
case 1:
{
system(“cls”);
elective();
break;
}
case 2:
{
system(“cls”);
store();
break;
}
default:printf(“輸入有誤!”);
}
}
int teacher()
{
FILE *fp;
int i;
printf(“菜單:n”);
printf(“1.錄入課程信息n”);
printf(“2.課程管理n”);
printf(“3.錄入學(xué)生信息n”);
printf(“4.學(xué)生信息管理n”);
printf(“5.系統(tǒng)信息查看n”);
printf(“6.退出系統(tǒng)n”);
if((fp=fopen(“課程信息.dat”,“rb”))==NULL)
{
printf(“n打開系統(tǒng)文件失?。?/p>
n”);
//fp=fopen(“信息.dat”,“rb”));
// }
// if(feof(fp))
// {
printf(“n還未添加課程信息,請(qǐng)?zhí)砑诱n程信息!n”);
inputc();
}
while(!feof(fp))
{
emp1=(struct couse*)malloc(sizeof(struct couse));
if(emp1==NULL)
{
printf(“n分配內(nèi)存失?。”);
return;
}
fread(emp1,sizeof(struct couse),1,fp);
if(feof(fp))break;
if(head1==NULL)
{
head1=emp1;
head2=emp1;
}
else{
head2->next=emp1;
head2=emp1;
}
head2->next=NULL;
}
fclose(fp);
fp==NULL;
if((fp=fopen(“學(xué)生信息.dat”,“rb”))==NULL)
printf(“n打開系統(tǒng)文件失??!n”);
//
//if(feof(fp)==1)
// {
printf(“還未添加學(xué)生信息,請(qǐng)?zhí)砑訉W(xué)生信息!”);
inputs();
while(!feof(fp))
{
emp1=(struct student*)malloc(sizeof(struct student));
if(emp2==NULL)
{
printf(“n分配內(nèi)存失??!n”);
return;
}
fread(emp2,sizeof(struct student),1,fp);
if(feof(fp))break;
if(head3==NULL)
{
head3=emp2;
head4=emp2;
}
else{
head4->next=emp2;
head4=emp2;
}
head4->next=NULL;
}
fclose(fp);
fp==NULL;
printf(“n請(qǐng)輸入菜單選項(xiàng)(1~6):n”);
scanf(“%d”,&i);
switch(i)
{
case(1):
{
system(“cls”);
inputc();
break;
}
case(2):
{
system(“cls”);
managementc();
break;
}
case(3):
{
system(“cls”);
inputs();
break;
}
case(4):
{
system(“cls”);
managements();
break;
}
case(5):
{
system(“cls”);
store();
break;
}
case(6):
{
system(“cls”);
printf(“感謝使用本系統(tǒng)!nn再見!n”);
}
}
return 1;
}