C語(yǔ)言設(shè)計(jì)心得
C語(yǔ)言設(shè)計(jì)心得
程序設(shè)計(jì),大學(xué)之前,對(duì)我們來(lái)說(shuō),一個(gè)很陌生、很神秘的東西!以前接觸電腦,覺(jué)得電腦玩游戲很好玩,可是從來(lái)沒(méi)有想過(guò),設(shè)計(jì)一個(gè)游戲是多么困難啊,當(dāng)我對(duì)C語(yǔ)言有一定了解的時(shí)候,才開(kāi)始佩服那些設(shè)計(jì)游戲的人,一個(gè)小小的C語(yǔ)言程序,可以讓很多大一點(diǎn)學(xué)生痛苦難當(dāng)!可是他們卻可以完成一個(gè)游戲的設(shè)計(jì),真的很不容易!
經(jīng)過(guò)C語(yǔ)言的學(xué)習(xí)和這次實(shí)習(xí)設(shè)計(jì)程序,讓我對(duì)C語(yǔ)言有了一個(gè)更深刻的了解和認(rèn)識(shí)!
以前長(zhǎng)輩給我們說(shuō),學(xué)習(xí)知識(shí)才是你們以后好的生活的保證,我總是不以為然,覺(jué)得沒(méi)有知識(shí),也是可以很好的生活,也就邊玩邊學(xué),可是通過(guò)這次C語(yǔ)言的程序設(shè)計(jì),我認(rèn)識(shí)到,沒(méi)有扎實(shí)的知識(shí)做基礎(chǔ),很難完成很多工作,想想也對(duì)啊,現(xiàn)在是一個(gè)科技高度發(fā)達(dá)的社會(huì),沒(méi)有科學(xué)文化知識(shí)做基礎(chǔ),我們?nèi)绻芎芎玫耐瓿梢豁?xiàng)工作呢?作為當(dāng)代大學(xué)生,努力學(xué)習(xí)文化知識(shí),才是我們現(xiàn)在的任務(wù),只有讓自己更有實(shí)力,以后才會(huì)對(duì)社會(huì)有貢獻(xiàn)!
我是一個(gè)自我中心的人,從前總認(rèn)為,不管什么事情,只要我一個(gè)人就可以做好,做完,可是通過(guò)這次的程序設(shè)計(jì),讓我認(rèn)識(shí)到自己的不足,一個(gè)大的工程,一個(gè)人是沒(méi)有辦法獨(dú)立完成的,雖然這個(gè)程序不是很大,但是我還是遇到了很多的困難,有很多我不會(huì)的地方,開(kāi)始的時(shí)候我覺(jué)得一個(gè)人找資料也是可以解決的,可是后來(lái)才發(fā)現(xiàn),那樣我的效率很低,很多問(wèn)題我不懂,我周圍有很多人懂,只要我問(wèn)一下,很快就可以解決,也讓我改變了想法,應(yīng)該和周圍的人合作,努力的讓自己更有實(shí)力,辦事效率也會(huì)提高!
這次我主要設(shè)計(jì)的是一個(gè)關(guān)于學(xué)生成績(jī)統(tǒng)計(jì)的程序,這個(gè)程序的特點(diǎn)就是簡(jiǎn)便、快捷!讓你可以很快的進(jìn)行添加學(xué)生成績(jī),一個(gè)一目了然的主菜單,讓你可以看好的找到你要操作的項(xiàng)目!進(jìn)而可以加快做事效率,添加、刪除,都可以很好的做到,也可以讓你查看所有的學(xué)生成績(jī)!
這個(gè)程序唯一的缺點(diǎn)就是不能分科輸入學(xué)生成績(jī),只能輸入一項(xiàng),也就是不能讓你了解學(xué)生的各門(mén)成績(jī),只能了解到一個(gè)總分!是我想的太復(fù)雜了,如果修改這個(gè)缺點(diǎn),可能要?jiǎng)雍芏嗟牡胤,還沒(méi)有想到一個(gè)很好的辦法改進(jìn)這個(gè)!
擴(kuò)展閱讀:C語(yǔ)言編程課程設(shè)計(jì)心得
河南城建學(xué)院
《C語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
適用專業(yè)工程管理專業(yè)課程名稱C語(yǔ)言程序設(shè)計(jì)指導(dǎo)教師趙軍民、魏新紅、張芳芳
設(shè)計(jì)人:051409112王田
201*年6月
一、設(shè)計(jì)目的和要求
1.通過(guò)課程設(shè)計(jì)全面掌握《C語(yǔ)言程序設(shè)計(jì)》關(guān)鍵知識(shí)點(diǎn),掌握C語(yǔ)言中數(shù)組、指針、結(jié)構(gòu)體、文件等方面的基本知識(shí)。
2.通過(guò)課程設(shè)計(jì)了解并掌握C語(yǔ)言程序設(shè)計(jì)的方法,熟悉C程序設(shè)計(jì)的開(kāi)發(fā)環(huán)境及C程序的調(diào)試過(guò)程。
3.培養(yǎng)查閱參考資料、手冊(cè)的自學(xué)能力,通過(guò)獨(dú)立思考深入鉆研有關(guān)問(wèn)題,學(xué)會(huì)自己分析、解決問(wèn)題的方法。
二、內(nèi)容與設(shè)計(jì)思想
1、系統(tǒng)功能描述
(1)編譯時(shí),主菜單為如下:
0、輸入記錄1、顯示記錄2、按姓名查找3、按電話號(hào)碼查找4、插入記錄5、按姓名排序6、刪除記錄7、記錄保存文件8、Quit(2)各項(xiàng)功能:0、輸入記錄:將所要記錄的人的信息輸入。
1、顯示記錄:將所輸入的記錄一一顯示。2、按姓名查找:從所記錄中輸入姓名查找其信息。3、按電話號(hào)碼查找:輸入學(xué)生的號(hào)碼查找其信息。4、插入記錄:在所記錄中插入需要記錄的人的信息。5、按姓名排序:對(duì)已有的記錄按姓名第一個(gè)字母的
ASCII碼大小排列,并一一顯示。
6、刪除記錄:從記錄中刪除某學(xué)生的信息。7、記錄保存文件:對(duì)輸入的學(xué)生的信息進(jìn)行保存。8、退出程序。2、總體設(shè)計(jì)思想
運(yùn)用所學(xué)知識(shí)編寫(xiě)一個(gè)簡(jiǎn)單的學(xué)生通訊錄管理系統(tǒng)的程序,使它具有以下的功能:輸入學(xué)生的學(xué)號(hào),姓名,班級(jí),電話號(hào)碼,地址,顯示學(xué)生記錄,增加學(xué)生記錄,按照學(xué)生姓名進(jìn)行排序,刪除學(xué)生記錄,查找學(xué)生記錄,保存學(xué)生記錄。其主要結(jié)構(gòu)用如下圖示表示:
三、程序具體分析及操作時(shí)問(wèn)題。
1、程序具體分析。
(1)文件名的使用:include稱為文件包含命令,被包含的文件通常是由系統(tǒng)提供的,其擴(kuò)展名為.h.stdio為standardinputoutput
的縮寫(xiě),意為“標(biāo)準(zhǔn)輸入輸出”.代碼中只要有用到printfscanf等函數(shù),頭文件就要寫(xiě)#include這個(gè)在代碼中必不可少的,因?yàn)榫帉?xiě)代碼就是為了輸出結(jié)果;用到像getch()這種鍵盤(pán)輸入函數(shù)的話,就需要用到#include;用到系統(tǒng)標(biāo)準(zhǔn)輸出函數(shù)的話,就用到#include;用到字符數(shù)組就要用#inciude。
(2)指針使用:如FILE*fp、定義1個(gè)文件型指針變量,指針變量名字分別叫fp,定義后fp是指向FILE類型結(jié)構(gòu)體的指針。可以使他指向某個(gè)文件的結(jié)構(gòu)體變量,從而通過(guò)該結(jié)構(gòu)體變量中的文件信息能夠訪問(wèn)該文件。
指針是地址變量:它的值有兩種:其一是地址,其二是內(nèi)容。不同的表達(dá)方式可以取不同的值。
指針是可以運(yùn)算的,它的運(yùn)算法則與變量是一致的。
(3)結(jié)構(gòu)體:如structLinkList定義結(jié)構(gòu)體為L(zhǎng)inkList。當(dāng)結(jié)構(gòu)體成員為指針的時(shí)候,每當(dāng)給這個(gè)成員賦值之前必須先為這個(gè)結(jié)構(gòu)體成員分配一個(gè)內(nèi)存空間。
(4)字符數(shù)組的比較:如strcmp(student[i].name,name)==0,strcmp(student[i].phone,phone)==0
,strcmp(student[i].phone,phone)==NULL都是用來(lái)比較輸入的與原有的,當(dāng)相等時(shí)即為0.
(5)實(shí)現(xiàn)文件的打開(kāi)和輸入:除有scanf和printf以外還涉及到其他的,如fp=fopen("student.bin","wb"))==NULL用fopen()函數(shù)來(lái)實(shí)
現(xiàn)打開(kāi)文件;fwrite(&student[i],sizeof(structrecord),1,fp)!=1fwrite用于二進(jìn)制的文件輸入輸出也用于讀寫(xiě)記錄這里的記錄是指一串固定長(zhǎng)度的字節(jié)。
(6)C語(yǔ)言中的一些結(jié)構(gòu)。如for(j=i;j
while(a8);returna;2.操作時(shí)問(wèn)題分析
編好后進(jìn)行運(yùn)行時(shí),有一些遺漏問(wèn)題,如大括號(hào)的使用是否對(duì)起;語(yǔ)句的使用是否錯(cuò)誤;對(duì)一個(gè)變量是否定義;輸出是否有遺漏;數(shù)據(jù)的使用是否符合規(guī)定,定義是否正確等。對(duì)于調(diào)試,要看程序是否運(yùn)行且達(dá)到預(yù)期效果,按照思路能夠正確的使用。開(kāi)始時(shí)在姓名輸入上出了問(wèn)題,但是是小問(wèn)題,修改一下便可實(shí)現(xiàn)姓名、學(xué)號(hào)、班級(jí)、電話號(hào)碼、地址的正常輸出。
四、個(gè)人任務(wù)
得到正確的程序后,并對(duì)其進(jìn)行調(diào)試、測(cè)試成功后,進(jìn)行分組任務(wù),而我得到的任務(wù)如下程序及解釋:
list()/*顯示記錄中的信息*/{
inti;/*定義整形變量i*/system("cls");/*清屏*/
if(num!=0)/*如果信息記錄不為0*/{
printf("\\n\\t\\t***************以下為通訊錄所有信息************");
for(i=0;i
}printf("\\n\\t\\t************************************************");}else
printf("\\n\\t\\t通訊錄中無(wú)任何紀(jì)錄");printf("\\n\\t\\t按任意鍵返回主菜單:");getch();
return(0);/*返回0*/}
search()/*尋找信息*/{
intmark=0;inti;inta=0;
printf("\\n\\t\\t*****************按姓名查找*******************");
charname[20];/*定義名字為20個(gè)字符*/printf("\\n\\t\\t請(qǐng)輸入姓名:");scanf("%s",name);
for(i=a;i
getch();return(0);}}}
if(mark!=0)/*{
printf("\\n\\t\\t沒(méi)有相同姓名的用戶紀(jì)錄");printf("\\n\\t\\t按任意鍵返回主菜單");getch();return(0);}else{
printf("\\n\\t\\t沒(méi)有相同姓名的用戶紀(jì)錄");printf("\\n\\t\\t按任意鍵返回主菜單");getch();return(0);}}
五、心得體會(huì)
這次的課程設(shè)計(jì)實(shí)驗(yàn)是對(duì)我們進(jìn)入大學(xué)以來(lái)學(xué)習(xí)C語(yǔ)言結(jié)果的一次大考驗(yàn)。自己動(dòng)手,發(fā)現(xiàn)問(wèn)題和解決問(wèn)題。并發(fā)現(xiàn)了許多自己的不足,平時(shí)沒(méi)掌握的知識(shí)在實(shí)踐中暴漏,經(jīng)過(guò)不斷的思考,查閱書(shū)籍和上網(wǎng)查資料及上機(jī)運(yùn)行,解決了大部分問(wèn)題,還稍微有些小問(wèn)題。但是,我相信在今的學(xué)習(xí)中,一定能把它解決好。當(dāng)今計(jì)算機(jī)應(yīng)用在生活中可以說(shuō)得是無(wú)處不在。因此作為二十一世紀(jì)的大學(xué)來(lái)說(shuō)掌握程序開(kāi)發(fā)技術(shù)是十分重要的,而C語(yǔ)言又是最常見(jiàn),功能最強(qiáng)大的一種高級(jí)語(yǔ)言,因此做好C語(yǔ)言課程設(shè)計(jì)是十分必要的。
我不僅鞏固《C語(yǔ)言程序設(shè)計(jì)》課程學(xué)習(xí)的內(nèi)容,掌握設(shè)計(jì)的基本方法,強(qiáng)化上機(jī)動(dòng)手能力,還進(jìn)一步掌握以下了知識(shí):數(shù)據(jù)類型、分支控制、循環(huán)控制、函數(shù)的定義及調(diào)用、結(jié)構(gòu)體及數(shù)組、指針、文
件操作、編譯預(yù)處理等;通過(guò)課程設(shè)計(jì),掌握了程序的局部測(cè)試、調(diào)試方法,建立程序系統(tǒng)調(diào)試、測(cè)試的基本概念和思想,學(xué)會(huì)較大程序的系統(tǒng)測(cè)試和調(diào)試方法。
當(dāng)我選擇學(xué)生通訊錄管理系統(tǒng)時(shí),首先系統(tǒng)分析主要思路及框架,與同學(xué)討論,聯(lián)系所學(xué)知識(shí),盡管一些文件要同組幫助找,也還有一些循環(huán)語(yǔ)句要具體分析,了解其運(yùn)行路線,尤其是for,while,if等的使用。我知道書(shū)上和老師講的有限,故上網(wǎng)搜也是一種利用資源的表現(xiàn)。在編程中,特別是結(jié)構(gòu)體,指針的部分,幾乎是一片空白。不過(guò)經(jīng)過(guò)幾天的努力,大體上把課本上的知識(shí)點(diǎn)看了一遍,知識(shí)點(diǎn)也都基本是撐握了,所以下一步就是開(kāi)始正式的編程序了。當(dāng)讀懂了C語(yǔ)言編程的基本過(guò)程和方法。經(jīng)過(guò)一波三折,終于開(kāi)始正式編程。
團(tuán)隊(duì)精神不可少,分工合作也是必須的,身為組長(zhǎng)就要以身作則,帶領(lǐng)好小組,做好各項(xiàng)工作。在開(kāi)始,對(duì)本組人員進(jìn)行整理,分析其特點(diǎn),再分配任務(wù),然后進(jìn)行綜合應(yīng)用,最后對(duì)所需資料及要編的程序進(jìn)行整理得出最后程序。
通過(guò)這次課程設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。
在課程設(shè)計(jì)過(guò)程中,收獲知識(shí),提高能力的同時(shí),我也學(xué)到了很多人生的哲理,懂得怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過(guò)程中怎么樣去克服心理上的不良情緒。因此在以后的生活和學(xué)習(xí)的過(guò)程中,我一定會(huì)把課程設(shè)計(jì)的精神帶到生活中,是生活也更加好。
六、源代碼為:
#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"#include"stdlib.h"#definenull0structrecord{
charname[20];charphone[20];charadress[40];charclassnumber[10];charnumber[30];}
student[500];structLinkList{
structrecordUS;structLinkList*next;}
a;structLinkList*head=null;intnum=0;FILE*fp;
intmenu_select();intadduser();intlist();intsearch();intdisplay();intadd();intlistbyname();intdele();intsave();intexit();voidmain(){
system("cls");for(;;){
switch(menu_select()){
case0:adduser();break;case1:list();break;case2:search();break;case3:display();break;case4:add();break;case5:listbyname();break;case6:dele();break;case7:save();break;case8:exit(0);
}}}
menu_select(){
chars[80];inta;
printf("*_*pressanykeyentermenu!*_*\\n");getch();system("cls");
printf("\\t\\t********************MENU*********************\\n\\n");
printf("\\t\\t0.輸入記錄\\n");printf("\\t\\t1.顯示記錄\\n");printf("\\t\\t2.按姓名查找\\n");printf("\\t\\t3.按電話號(hào)碼查找\\n");printf("\\t\\t4.插入記錄\\n");printf("\\t\\t5.按姓名排序\\n");printf("\\t\\t6.刪除記錄\\n");printf("\\t\\t7.記錄保存文件\\n");printf("\\t\\t8.Quit\\n");
printf("\\t\\t***********************************************\\n");do{
printf("\\nEnteryouchoice(0~8):");scanf("%s",s);a=atoi(s);}
while(a8);returna;}
adduser(){
printf("\\n\\t\\t********************************\\n");printf("\\n\\t\\t輸入姓名:");
scanf("%s",&student[num].name);printf("\\n\\t\\t輸入電話號(hào)碼:");scanf("%s",&student[num].phone);printf("\\n\\t\\t輸入地址:");
scanf("%s",&student[num].adress);printf("\\n\\t\\t輸入班級(jí):");
scanf("%s",&student[num].classnumber);printf("\\n\\t\\t輸入學(xué)號(hào):");
scanf("%s",&student[num].number);num++;
printf("\\n\\t\\t是否繼續(xù)添加?(Y/N):");if(getch()=="y")adduser();return(0);}list(){inti;
system("cls");if(num!=0){
請(qǐng)輸入用戶信息
printf("\\n\\t\\t***************以下為通訊錄所有信息************");for(i=0;i
inta=0;
printf("\\n\\t\\t************************************");charname[20];
printf("\\n\\t\\t請(qǐng)輸入姓名:");scanf("%s",name);for(i=a;i
}else{
printf("\\n\\t\\t按任意鍵返回主菜單");getch();return(0);}}}
if(mark!=0){
printf("\\n\\t\\t沒(méi)有相同姓名的用戶紀(jì)錄");printf("\\n\\t\\t按任意鍵返回主菜單");getch();return(0);}else{
printf("\\n\\t\\t沒(méi)有相同姓名的用戶紀(jì)錄");printf("\\n\\t\\t按任意鍵返回主菜單");getch();return(0);}}
display(){
intmark=0;inti;inta=0;
printf("\\n\\t\\t******************按電話查找******************");charphone[10];
printf("\\n\\t\\t請(qǐng)輸入電話號(hào)碼:");scanf("%s",phone);for(i=0;i
}add(){inti;
if((fp=fopen("student.bin","wb"))==NULL){
printf("\\n\\t\\t文件打開(kāi)失敗");}
for(i=0;i
adduser();return(0);}
fclose(fp);
printf("\\n\\t\\t通訊錄文件已保存");printf("\\n\\t\\t按任意鍵退出程序\\n\\t\\t");exit(0);return(0);}
voiddeletebyphone(){inti,j;
intdeletemark=0;charphone[20];
printf("\\n\\t\\t請(qǐng)輸入要?jiǎng)h除用戶電話號(hào)碼:");scanf("%s",phone);if(num==0){
printf("\\n\\t\\t對(duì)不起,文件中無(wú)任何紀(jì)錄");printf("\\n\\t\\t按任意鍵返回主菜單");getch();return;}
for(i=0;i
printf("\\n\\t\\t電話:%s",student[i].phone);printf("\\n\\t\\t地址:%s",student[i].adress);printf("\\n\\t\\t學(xué)號(hào):%s",student[i].number);printf("\\n\\t\\t是否刪除?(y/n)");if(getch()=="y"){
for(j=i;j
}voiddeletebyname(){inta=0;intfindmark=0;intj;
intdeletemark=0;inti;
charname[20];
printf("\\n\\t\\t請(qǐng)輸入要?jiǎng)h除用戶姓名:");scanf("%s",name);for(i=a;i
deletemark++;
printf("\\n\\t\\t刪除成功");if((i+1)
{printf("\\n\\t\\t沒(méi)有該用戶的紀(jì)錄");printf("\\n\\t\\t是否繼續(xù)刪除?(y/n)");if(getch()=="y")deletebyphone();return;return;}
elseif(findmark!=0){
printf("\\n\\t\\t沒(méi)有重名信息");printf("\\n\\t\\t沒(méi)有該用戶的紀(jì)錄");printf("\\n\\t\\t是否繼續(xù)刪除?(y/n)");if(getch()=="y")deletebyphone();return;return;}}dele(){
charchoic;
printf("\\n\\t\\t1-按電話號(hào)碼刪除2-按姓名刪除");printf("\\n\\t\\t請(qǐng)選擇:");choic=getch();switch(choic){
case"1":deletebyphone();break;case"2":deletebyname();break;
}return(0);}
listbyname(){inti,j;
structrecordtmp;for(i=1;i
intj;FILE*fp;
fp=fopen("student.txt","w");if(fp==NULL)
printf("can"topenthefile.");if(num!=0){
for(j=0;j
友情提示:本文中關(guān)于《C語(yǔ)言設(shè)計(jì)心得》給出的范例僅供您參考拓展思維使用,C語(yǔ)言設(shè)計(jì)心得:該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。