c語言課程設(shè)計(jì)論文_第1頁
c語言課程設(shè)計(jì)論文_第2頁
c語言課程設(shè)計(jì)論文_第3頁
c語言課程設(shè)計(jì)論文_第4頁
c語言課程設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

C語言課程設(shè)計(jì)論文YUKIwascompiledonthemorningofDecember16,2020《C語言程序設(shè)計(jì)》項(xiàng)目設(shè)計(jì)報(bào)告項(xiàng)目名稱:學(xué)生成績信息管理系統(tǒng)2016年1月13日目錄\o"CurrentDocument"項(xiàng)目分析 0問題描述 0功能需求分析 0\o"CurrentDocument"系統(tǒng)設(shè)計(jì) 1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 1部分功能設(shè)計(jì) 1\o"CurrentDocument"系統(tǒng)實(shí)現(xiàn)源程序 2主函數(shù)設(shè)計(jì) 2添加學(xué)生信息 3姓名學(xué)號(hào)查詢 8成績查詢 10刪除學(xué)生成績信息 11修改學(xué)生成績信息 13\o"CurrentDocument"功能測(cè)試 15菜單測(cè)試 15系統(tǒng)功能測(cè)試 15\o"CurrentDocument"系統(tǒng)設(shè)計(jì)遇到的問題及解決方法 16\o"CurrentDocument"項(xiàng)目設(shè)計(jì)總結(jié) 171項(xiàng)目分析問題描述信息儲(chǔ)存與查詢是計(jì)算機(jī)處理數(shù)據(jù)的優(yōu)勢(shì)之一,目前,學(xué)生信息的管理系統(tǒng)已經(jīng)完全走進(jìn)了校園,其中成績信息的儲(chǔ)存是主要部分,本課題使用C語言實(shí)現(xiàn)學(xué)生成績的儲(chǔ)存,查詢,修改,以及刪除等操作。程序中涉及到數(shù)據(jù)塊和文件指針的操作,包括結(jié)構(gòu)體數(shù)據(jù)定義,使用及文件的讀寫,定位,修改等。功能需求分析學(xué)生成績信息管理系統(tǒng)的主要功能如下:①添加學(xué)生信息:錄入學(xué)生的基本信息,如姓名,學(xué)號(hào),成績②顯示所有學(xué)生成績信息:直接顯示已經(jīng)全部錄入學(xué)生的成績信息③學(xué)號(hào)或姓名查詢:可以根據(jù)學(xué)生的姓名和學(xué)號(hào)直接查詢?cè)撁麑W(xué)生的成績④成績查詢:可以根據(jù)一個(gè)特定的分?jǐn)?shù)來查詢學(xué)生的信息⑤刪除學(xué)生成績信息:可以直接根據(jù)學(xué)號(hào)確定是否刪除對(duì)應(yīng)學(xué)生的成績信息⑥修改學(xué)生成績信息:直接根據(jù)學(xué)生學(xué)號(hào)來修改學(xué)生的姓名,學(xué)號(hào),成績2系統(tǒng)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)structStu //定義結(jié)構(gòu)體類型Charname[10]; //姓名Charnum[10]; //學(xué)號(hào)Charscore[10]; //成績//文件名,使用文件方式信息寫入失敗exit(0);Charwjm[20]; //文件名函數(shù)設(shè)計(jì)表1函數(shù)列表序號(hào)函數(shù)原型功能說明1Voidaddnew()新增學(xué)生姓名,學(xué)號(hào),成績信息2Voidaddold()在原有基礎(chǔ)上繼續(xù)增加其他同學(xué)的信息3voidPrintall()顯示所有已經(jīng)存入學(xué)生的成績等信息4voidSearCh()根據(jù)姓名或者學(xué)號(hào)查詢學(xué)生分?jǐn)?shù)5voidjgsearch()根據(jù)成績查詢對(duì)應(yīng)的同學(xué)6voiddel()刪除學(xué)生信息7voidmodify()修改學(xué)生信息8System(“cls”);清屏部分功能設(shè)計(jì)1.刪除學(xué)生的信息,輸入學(xué)生的學(xué)號(hào)進(jìn)行刪除操作,如果沒有此人,系統(tǒng)將會(huì)提示無此人,如果找到,系統(tǒng)將會(huì)確認(rèn)你是否需要?jiǎng)h除,流程圖如1-2所示。開始NoYeS輸入學(xué)號(hào)在文件里查找圖1-2刪Yes生信息流程圖2.輸入學(xué)號(hào)進(jìn)行查詢對(duì)應(yīng)同學(xué)的成績,流程圖如圖1-3所示。輸入學(xué)號(hào)或姓名在文件中查找No開始J

圖1—3[查詢功能流程圖3系統(tǒng)實(shí)現(xiàn)源程序 昱 r I主函數(shù)設(shè)計(jì)voidmain()

{intx;YesF-是否找到...11

do —一{ “ ,歡迎使用學(xué)生成績信息管理系統(tǒng)輸出姓名,學(xué) 輸出文件無此添加學(xué)生信息I—顯示所有學(xué)生成績信息學(xué) 學(xué)號(hào)或姓名查詢/— ■■■■、結(jié)束J成績查詢刪除學(xué)生成績信息修改學(xué)生成績信息退出請(qǐng)您選擇:choice:switch(x){case1:add();break;case2:printall();break;case3:search();break;case4:jgsearch();break;case5:del();break;case6:modify();break;case0:break;錯(cuò)誤的選擇,請(qǐng)重新選擇:choice;}}while(x!=0);歡迎再次使用學(xué)生成績管理系統(tǒng)}添加學(xué)生信息/*學(xué)生成績信息管理系統(tǒng)*/#include<>#include<>#include<>intc,j,t;structstu /*定義結(jié)構(gòu)體類型*/{charname[10];charnum[10];charscore[10];}student[100],newstudent[100];/*添加學(xué)生個(gè)人信息*/voidaddnew(){inta,b,k;FILE*fp,*fp1,*fp2;/*FILE類型指針變量的定義形式*/for(a=0;a<200;a++){歡迎使用學(xué)生成績管理系統(tǒng)錄入學(xué)生信息輸入學(xué)生姓名輸入學(xué)生學(xué)號(hào)輸入學(xué)生成績輸入‘1’繼續(xù),‘0’結(jié)束 /*判斷輸入是否結(jié)束*/if(b==0){c=a;break;}}/*文件名,使用文件方式*/信息寫入失敗exit(0);}信息寫入失敗exit(0);}信息寫入失敗exit(0);}j=sizeof(structstu);for(a=0;a<=c;a++){if(fwrite(&student[a],j,1,fp)!=1)存入失敗}for(a=0;a<=c;a++){fwrite(&student[a],j,1,fp1);}else{fwrite(&student[a],j,1,fp2);}}添加成功!請(qǐng)輸入'0'返回fclose(fp1);fclose(fp2);fclose(fp);if(k==0)}/*繼續(xù)添加成員*/voidaddold(){inta,b,k,p,q;charwjm[20];FILE*fp;j=sizeof(structstu);歡迎使用學(xué)生成績信息管理系統(tǒng)錄入學(xué)生信息存儲(chǔ)文件名有請(qǐng)輸入想繼續(xù)添加的文件名:for(a=0;a<200;a++){輸入學(xué)生姓名輸入學(xué)生學(xué)號(hào)輸入學(xué)生成績輸入‘1’繼續(xù),‘0’結(jié)束ame,newstudent[q].name);strcpy(student[p].num,newstudent[q].num);strcpy(student[p].score,newstudent[q].score);}{文件打開失?。xit(0);}for(a=0;a<=t+c;a++){if(fwrite(&student[a],j,1,fp)!=1)存入失敗}添加成功!請(qǐng)輸入'0'返回fclose(fp);if(k==0)}voidadd(){intx;歡迎使用學(xué)生成績信息管理系統(tǒng)添加學(xué)生信息重新添加信息繼續(xù)添加信息返回請(qǐng)選擇:choice:switch(x){case1:addnew();break;case2:addold();break;case0:break;錯(cuò)誤的選擇,請(qǐng)重新選擇:gotochoice;}}/*顯示所有學(xué)生的成績*/voidprintall(){inta,b;FILE*fp,*fp1,*fp2;歡迎使用學(xué)生成績信息管理系統(tǒng)全部已錄入學(xué)生信息姓名學(xué)號(hào)成績j=sizeof(structstu);打開失敗exit(0);}信息寫入失敗exit(0);}信息寫入失敗exit(0);}a=0;while(!feof(fp)){if(fread(&student[a],j,1,fp)==1)a++;}}a=0;while(!feof(fp1)){if(fread(&student[a],j,1,fp1)==1)a++;}}a=0;while(!feof(fp2)){if(fread(&student[a],j,1,fp2)==1)a++;}}fclose(fp);fclose(fp1);fclose(fp2);返回上級(jí)請(qǐng)輸入‘0’if(b==0){}}姓名學(xué)號(hào)查詢voidsearch(){intk,b,a;charcx[20];FILE*fp;j=sizeof(structstu);do{歡迎使用學(xué)生成績信息管理系統(tǒng)查找已錄入學(xué)生成績信息k=0;{打開失敗exit(0);}請(qǐng)輸入學(xué)號(hào)或姓名:if((cx[0]<'0')||(cx[0]>'9')){ a=0;while(!feof(fp)){fread(&student[a],j,1,fp);if(strcmp(student[a].name,cx)==0){已查到,該記錄為姓名學(xué)號(hào)成績k=1;}a++;}}if('0'<=cx[0]<='9'){ a=0;while(!feof(fp)){fread(&student[a],j,1,fp);if(strcmp(student[a].num,cx)==0){已查到,該記錄為姓名學(xué)號(hào)成績k=1;}a++;}}if(!k)文件中無此人的記錄。fclose(fp);輸入“1”繼續(xù)查找,“0”結(jié)束}while(b!=0);}成績查詢voidjgsearch(){intb,a;charcx[20];FILE*fp;j=sizeof(structstu);do{歡迎使用學(xué)生成績信息管理系統(tǒng)查找學(xué)生成績信息{打開失敗exit(0);}請(qǐng)輸入學(xué)生成績:a=0;while(!feof(fp)){fread(&student[a],j,1,fp);if(strcmp(cx,student[a].score)==0){姓名學(xué)號(hào)成績}a++;}fclose(fp);輸入“1”繼續(xù)查找,“0”結(jié)束}while(b!=0);}刪除學(xué)生成績信息voiddel(){intm=0,k=0,b,a,q,p;charxh[20],wjm[20];FILE*fp;j=sizeof(structstu);do{歡迎使用學(xué)生成績信息管理系統(tǒng)刪除學(xué)生成績信息存儲(chǔ)文件名有k=0;請(qǐng)輸入學(xué)號(hào):請(qǐng)輸入欲刪除的文件名:{文件打開失敗exit(0);}a=0;while(!feof(fp)){fread(&student[a],j,1,fp); um)==0){k=1;break;}if(a==t)文件中無此人的記錄。}if(k==1){已查到,該記錄為姓名學(xué)號(hào)成績確實(shí)要?jiǎng)h除記錄,請(qǐng)按1;不刪除記錄,請(qǐng)按0:if(m){for(p=a,q=a+1;p<t,q<=t;q++,p++){strcpy(student[p].name,student[q].name);strcpy(student[p].num,student[q].num);strcpy(student[p].score,student[q].score);}}}{文件打開失敗exit(0);}for(a=0;a<t;a++)fwrite(&student[a],j,1,fp);if(m)刪除成功fclose(fp);輸入“1”繼續(xù),“0”結(jié)束}while(b!=0);}修改學(xué)生成績信息voidmodify(){intk=0,b,a;charxh[20],wjm[20];FILE*fp;j=sizeof(structstu);do{歡迎使用學(xué)生成績信息管理系統(tǒng)修改學(xué)生成績信息存儲(chǔ)文件名有請(qǐng)輸入學(xué)號(hào):請(qǐng)輸入欲修改文件名:{打開失敗exit(0);}a=0;while(!feof(fp)){fread(&student[a],j,1,fp);a++;}fclose(fp);t=a-1;for(a=0;a<=t;a++){if(strcmp(xh,student[a].num)==0){k=1;break;}if(a==t)文件中無此人的記錄。}if(k==1){已查到,該記錄為姓名學(xué)號(hào)成績請(qǐng)輸入新的姓名:請(qǐng)輸入新的學(xué)號(hào):請(qǐng)輸入新的成績:{文件打開失敗exit(0);}for(a=0;a<t;a++)fwrite(&student[a],j,1,fp);修改成功fclose(fp);}輸入“1”繼續(xù),“0”結(jié)束}while(b!=0);}4功能測(cè)試菜單測(cè)試學(xué)生成績管理系統(tǒng)運(yùn)行后的主菜單界面如圖4-1所示。圖4-1系統(tǒng)主界面系統(tǒng)功能測(cè)試1.添加學(xué)生信息在主菜單按1后,會(huì)顯示圖4-2,再按2添加學(xué)生的信息如圖4-3所示,如果按1的話那么所有以前的保存的信息都將被清除,接著再重新輸入數(shù)據(jù)。圖4-2學(xué)生信息輸入界面

圖4-3學(xué)生信息輸入界面2.顯示所有學(xué)生成績信息在系統(tǒng)菜單上面按2,則所有的學(xué)生成績都會(huì)顯示如圖4-4所示。圖4-4學(xué)生成績?yōu)g覽學(xué)號(hào)或姓名查詢?cè)谥鞑藛紊陷斎?,然后在根據(jù)姓名或者學(xué)號(hào),可以查到該同學(xué)的分?jǐn)?shù),如圖4-5和4-6圖所示。圖4-5根據(jù)學(xué)號(hào)查詢分?jǐn)?shù)

圖4-6根據(jù)姓名查詢分?jǐn)?shù)成績查詢?cè)谥鞑藛紊陷斎?,可以得到圖4-7所示,這是根據(jù)分?jǐn)?shù)來確定學(xué)生。圖4-7根據(jù)分?jǐn)?shù)來確定學(xué)生刪除學(xué)生成績信息在主菜單上按5,選擇需要?jiǎng)h除的對(duì)應(yīng)文檔里的該學(xué)生的成績信息,可以得到圖4-8所示。圖4-8刪除學(xué)生信息修改學(xué)生的信息在主菜單上按6,選擇需要修改的人的學(xué)號(hào),再進(jìn)行一系列的修改,可以得到圖4-9所示。圖4-9修改學(xué)生信息系統(tǒng)設(shè)計(jì)遇到的問題及解決方法.*和[]在定義時(shí)只是說明作用,不能誤解為運(yùn)算符&、*、[]是C語言提供的三種運(yùn)算符,分別是取地址運(yùn)算符、指針運(yùn)算符和下標(biāo)運(yùn)算符,其中,&與*互為逆運(yùn)算。在表達(dá)式中它們的意義很明確,但是在定義中*、[]只是起說明作用,不能看作運(yùn)算符。例如:intnumber=10;Int*pt=&number;Int*pt=a;在這里,我們?nèi)菀妆缓髢蓚€(gè)語句迷惑,之所以迷惑,就是把*當(dāng)作了運(yùn)算符,其實(shí)在這里Int*共同來修飾指針變量pt,定義一個(gè)指向整型變量的指針變量,自然會(huì)把一個(gè)地址&number賦值給pt。因此,上述后面兩個(gè)賦值語句中,第一個(gè)是正確的。2、用整數(shù)值直接給指針賦值指針值就是指針?biāo)赶虻牡刂?,在程序運(yùn)行中,指針的值其實(shí)就是一個(gè)整數(shù)值,但是決不能在程序語句中把一個(gè)整數(shù)值當(dāng)作指針的值直接賦給指針。例如:intnum;Int*pt;num=72781;p=num;最后一個(gè)語句目的是使指針指向地址72781(十進(jìn)制),編譯時(shí)系統(tǒng)就會(huì)提示這個(gè)語句有錯(cuò)誤。3、字符串的讀入當(dāng)要求從鍵盤讀入一字符串時(shí),若選用輸入的函數(shù)不當(dāng),也容易造成錯(cuò)誤,而且難以發(fā)現(xiàn)。例如:#include<>main(){charstr[20];scanf(“%s”,str);printf(“%s”,str);}運(yùn)行該程序,從鍵盤鍵入“IloveChina”字符串,結(jié)果其程序結(jié)果顯示單個(gè)字符I,而不是字符串“IloveChina"。這說明Scanf函數(shù)并沒有讀入整個(gè)字符串,而只讀入了單個(gè)字符I,這是因

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論