C語言課程設(shè)計(jì)報(bào)告_學(xué)生學(xué)籍管理系統(tǒng)_第1頁
C語言課程設(shè)計(jì)報(bào)告_學(xué)生學(xué)籍管理系統(tǒng)_第2頁
C語言課程設(shè)計(jì)報(bào)告_學(xué)生學(xué)籍管理系統(tǒng)_第3頁
C語言課程設(shè)計(jì)報(bào)告_學(xué)生學(xué)籍管理系統(tǒng)_第4頁
C語言課程設(shè)計(jì)報(bào)告_學(xué)生學(xué)籍管理系統(tǒng)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、題目:學(xué)生學(xué)籍管理系統(tǒng)目的:1、了解和熟悉Visual C+軟件編程開發(fā)環(huán)境2、熟練掌握結(jié)構(gòu)化程序設(shè)計(jì)的步驟和模塊化設(shè)計(jì)方法3、熟練掌握C語言數(shù)據(jù)類型,熟記字符型數(shù)據(jù)和整形數(shù)據(jù)的定義和使用4、熟練掌握用while語句、dowhile語句和for語句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的方法5、掌握一維數(shù)組、二維數(shù)組的定義、賦值和輸入輸出的方法6、掌握與數(shù)組有關(guān)的算法(特別是排序算法,熟練掌握冒泡排序法)7、熟悉函數(shù)的定義、聲明方法及全局變量和局部變量的概念與用法,掌握函數(shù)的調(diào)用方法8、掌握結(jié)構(gòu)體類型變量的定義和使用及結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用設(shè)計(jì)要求:學(xué)生學(xué)籍信息管理系統(tǒng)設(shè)計(jì)1、需求分析學(xué)生基本信息、學(xué)生成績(jī)

2、基本信息要存入文件當(dāng)中,因而要提供文件的輸入輸出操作;查詢功能要求提供查找和顯示操作;刪除功能要求實(shí)現(xiàn)刪除操作;排序功能要求實(shí)現(xiàn)排序操作;另外還應(yīng)該提供鍵盤式選擇菜單以實(shí)現(xiàn)功能選擇。2、總體設(shè)計(jì) 整個(gè)系統(tǒng)可以設(shè)計(jì)為數(shù)據(jù)錄入模塊、數(shù)據(jù)查詢模塊、數(shù)據(jù)刪除模塊和數(shù)據(jù)排序模塊。3、詳細(xì)設(shè)計(jì) 設(shè)計(jì)學(xué)生基本信息和學(xué)生成績(jī)基本信息結(jié)構(gòu)體數(shù)組。Struct int stuNo; /學(xué)號(hào) char name20; /姓名 char sex2; /性別 int domNum; /宿舍號(hào) int tel; /電話號(hào)碼 StuInfo; /學(xué)生基本信息結(jié)構(gòu)體Struct int stuNo; /學(xué)號(hào) char cou

3、rseNo; /課程編號(hào) char courseName; /課程名稱 int creditHour; /學(xué)分Int triGrade; /平時(shí)成績(jī)Int experiGrade; /實(shí)驗(yàn)成績(jī)Int examGrade; /卷面成績(jī)Float totalGrade; /綜合成績(jī)Float finalCreHour; /實(shí)得學(xué)分StuGraInfo; /學(xué)生成績(jī)基本信息結(jié)構(gòu)體(1)數(shù)據(jù)錄入模塊:學(xué)生基本信息文件可以在磁盤建立,采用寫文件方式錄入學(xué)生成績(jī)基本信息。綜合成績(jī)和實(shí)得學(xué)分通過計(jì)算得到。(2)查詢模塊:通過菜單選擇查詢功能,再選擇學(xué)生基本情況查詢和成績(jī)查詢,若選擇前者,再通過菜單選擇學(xué)號(hào)、

4、姓名或宿舍號(hào)碼,按照基本查找算法查找A.TXT,然后把查找結(jié)果輸出若選擇后者,則先在A.TXT中查找學(xué)號(hào)對(duì)應(yīng)的姓名,再在B.TXT中查找該學(xué)生的課程情況,并統(tǒng)計(jì)科目和實(shí)得總學(xué)分,輸出結(jié)果。(3)刪除模塊:通過菜單選擇刪除學(xué)生的功能,輸入要?jiǎng)h除學(xué)生的學(xué)號(hào),則分別在A.TXT和B.TXT中查找該生信息,刪除之;或者輸入學(xué)生的姓名,先在A.TXT中得到該生的學(xué)號(hào),刪除該生信息,再在B.TXT中刪除該學(xué)號(hào)對(duì)應(yīng)的信息。注意:C語言中沒有直接刪除信息的函數(shù),需要自己實(shí)現(xiàn),可以采取讀出數(shù)據(jù),判斷數(shù)據(jù)(如果不刪除,則進(jìn)入緩沖區(qū),否則刪除),寫入數(shù)據(jù)(把緩沖區(qū)中的數(shù)據(jù)寫入文件)的步驟進(jìn)行。(4)排序模塊:通過菜

5、單選擇排序依據(jù),采用排序算法(冒泡、插入、選擇等)對(duì)數(shù)據(jù)進(jìn)行排序并輸出結(jié)果。 1.2 本程序設(shè)計(jì)的知識(shí)點(diǎn) 陳述開發(fā)過程中用到的知識(shí)點(diǎn),如結(jié)構(gòu)體、數(shù)組、指針等。二、 功能設(shè)計(jì)2.1 總體設(shè)計(jì)其中包含數(shù)據(jù)錄入模塊、查詢模塊、刪除模塊、排序模塊四大功能功能模塊顯示主菜單查詢功能數(shù)據(jù)錄入刪除功能排序功能退出功能 按綜合成績(jī)排序 按實(shí)得學(xué)分排序?qū)W生基本情況查詢成績(jī)查詢按 學(xué) 號(hào)按宿舍號(hào)碼按 學(xué) 號(hào)學(xué)籍信息管理系統(tǒng)2.2 詳細(xì)設(shè)計(jì)2.3分塊設(shè)計(jì)開始數(shù)據(jù)查詢x=1?Y=1?輸入學(xué)號(hào)輸入宿舍號(hào)輸入學(xué)號(hào)結(jié)束顯示一系列功能選項(xiàng)根據(jù)x的值調(diào)用各功能模塊函數(shù)結(jié)束開始開始輸入學(xué)號(hào) 課程編號(hào) 課程名稱 學(xué)分 平時(shí)成績(jī) 實(shí)

6、驗(yàn)成績(jī) 卷面成績(jī)結(jié)束數(shù)據(jù)輸入開始數(shù)據(jù)刪除結(jié)束輸入學(xué)號(hào)三、 程序?qū)崿F(xiàn)利用了組合體的方式定義結(jié)構(gòu)體數(shù)組,提供學(xué)生基本信息,定義如下:typedef struct int Id; /學(xué)號(hào)char name10;/姓名char sex6; /性別 int room; /宿舍號(hào)int tel; /電話號(hào)碼 StudentInfo; /定義學(xué)生信息的結(jié)構(gòu)體類型同時(shí)定義了另一結(jié)構(gòu)體數(shù)組,提供學(xué)生成績(jī)基本信息,定義如下:typedef struct int Id;char courseNo10; /課程編號(hào)char courseName20;/課程名float a; / 課程學(xué)分float b; / 平時(shí)成績(jī)

7、float c; / 實(shí)驗(yàn)成績(jī)float d; / 卷面成績(jī)float e; / 綜合成績(jī)float f; / 實(shí)際學(xué)分 MarkInfo; /定義課程信息的結(jié)構(gòu)體類型void ReadFile(); /讀取文件void DisplayMainMenu(); /顯示主菜單void DataInput(); /數(shù)據(jù)錄入void DataQuery(); /數(shù)據(jù)查詢void DataDelete(); /數(shù)據(jù)刪除void DataSort(); /數(shù)據(jù)排序void QueryById(int ); /按學(xué)號(hào)查詢void QueryByRoom(int ); /按宿舍查詢void QueryMark

8、(int ); /按成績(jī)查詢void sort1(); /按綜合成績(jī)排序void sort2(); /按實(shí)得學(xué)分排序void markput(); /成績(jī)輸出StudentInfo si30; / 學(xué)生信息結(jié)構(gòu)數(shù)組MarkInfo mi150; / 學(xué)生成績(jī)結(jié)構(gòu)數(shù)組int sp=0; / 學(xué)生信息結(jié)構(gòu)數(shù)組中學(xué)生數(shù)int mp=0; / 學(xué)生成績(jī)結(jié)構(gòu)數(shù)組中成績(jī)數(shù)*讀 取 數(shù) 據(jù) 、 計(jì) 算 *在這段功能模塊中,利用指針變量來讀取結(jié)構(gòu)體數(shù)組文件中的相應(yīng)信息,是程序的編寫、閱讀和運(yùn)行變得簡(jiǎn)潔明了。此外,在這段程序中,還對(duì)文件中的數(shù)據(jù)按照題目的具體要求對(duì)綜合成績(jī)和學(xué)分做了自動(dòng)計(jì)算。void ReadF

9、ile( ) FILE *fp;if(fp = fopen(A.txt,r)=NULL)printf(cant open the filen);while (!feof(fp)fscanf(fp,%d%s%s%d%d, &sisp.Id,,&sisp.sex,&sisp.room,&sisp.tel);sp+;fclose (fp);fp = fopen(B.txt,r);while (!feof(fp)fscanf (fp,%d%s%s%d%d%d%d,&mimp.Id,mimp.courseNo,mimp.courseName,&mimp.a,&mimp.b,&mimp.

10、c, &mimp.d);if (mimp.c = -1) mimp.e = 0.3*mimp.b+0.7*mimp.d;else mimp.e = 0.15*mimp.b+0.15*mimp.c+0.7*mimp.d;if ( mimp.e = 90. ) mimp.f = mimp.a;else if ( mi mp.e = 80. ) mimp.f = mimp.a *0.8;else if ( mimp.e = 70. )mimp.f = mimp.a *0.75;else if ( mimp.e = 60. ) mimp.f = mimp.a *0.6;else mimp.f = 0;

11、mp+;fclose(fp);* 顯 示 主 菜 單 *這部分是對(duì)本程序的主要功能做出的展示,體現(xiàn)了本程序的五大功能,簡(jiǎn)潔明白,一目了然。Void DisplayMainMenu()printf (“n 1) 數(shù)據(jù)錄入 n 2) 數(shù)據(jù)查詢 n 3) 數(shù)據(jù)刪除 n 4) 數(shù)據(jù)排序 n 5) 程序結(jié)束 n “);* 數(shù) 據(jù) 錄 入 模 塊 *錄入每個(gè)學(xué)生的學(xué)號(hào)、課程編號(hào)、課程名稱、學(xué)分、平時(shí)成績(jī)、實(shí)驗(yàn)成績(jī)、卷面成績(jī)共7個(gè)數(shù)據(jù),即對(duì)關(guān)于學(xué)生成績(jī)基本信息的結(jié)構(gòu)體數(shù)組進(jìn)行輸入,也就是文件B.TXT中的內(nèi)容。void DataInput()FILE *fp;int i;printf (學(xué)生的學(xué)號(hào) 課程編號(hào)

12、 課程名稱 學(xué)分 平時(shí)成績(jī) 實(shí)驗(yàn)成績(jī) 卷面成績(jī)n);while(1)scanf (%d%s%s%d%d%d%d,&mimp.Id,mimp.courseNo,mimp.courseName,&mimp.a,&mimp.b,&mimp.c, &mimp.d);if(mimp.Id=-1)break;if (mimp.c = -1) mimp.e = 0.3*mimp.b+0.7*mimp.d;else mimp.e = 0.15*mimp.b+0.15*mimp.c+0.7*mimp.d;if ( mimp.e = 90. ) mimp.f = mimp.a;else if ( mi mp.e

13、= 80. ) mimp.f = mimp.a *0.8;else if ( mimp.e = 70. )mimp.f = mimp.a *0.75;else if ( mimp.e = 60. ) mimp.f = mimp.a *0.6;else mimp.f = 0;mp+;fp = fopen(B.txt,r+);for(i=0;imp;i+)fprintf(fp,%d%s%s%d%d%d%d,&mii.Id,mii.courseNo,mii.courseName,&mii.a,&mimp.b,&mii.c, &mii.d);fclose(fp);* 查 詢 模 塊*此段程序是為實(shí)現(xiàn)信

14、息查詢功能而設(shè)計(jì)的??傮w來講,分為兩大功能模塊,一是學(xué)生基本信息查詢,二是對(duì)學(xué)生成績(jī)的查詢。在第一種查詢,即對(duì)學(xué)生基本信息的查詢中,又提供了兩種查詢方式,一種是按學(xué)號(hào)對(duì)學(xué)生基本信息進(jìn)行查詢,一種是按宿舍號(hào)碼對(duì)學(xué)生基本信息進(jìn)行查詢。 Void DataQuery()int x,y,z;printf( “n 1) 學(xué)生基本情況查詢n 2) 成績(jī)查詢n”);-選擇查詢內(nèi)容scanf(“%d”,&x);if (x = 1) / 查詢學(xué)生信息printf (“1) 按學(xué)號(hào)查詢 2) 按宿舍查詢n”);-選擇查詢方式scanf(“%d”,&y);if (y = 1 ) printf ( “ 輸入學(xué)號(hào)n”)

15、;-按學(xué)生學(xué)號(hào)查詢scanf (“%d”,&z);QueryById(z);if (y = 2) if ( x =2) / 查詢成績(jī)信息-查詢學(xué)生成績(jī)(輸入學(xué)號(hào))printf ( “ 輸入學(xué)號(hào)n”); scanf (“%d”,&y);QueryMark(y);* 刪 除 模 塊 *此模塊提供了按學(xué)號(hào)實(shí)現(xiàn)刪除學(xué)生信息的功能,當(dāng)在文件A.TXT中刪除一個(gè)學(xué)生時(shí),自動(dòng)地在文件B.TXT中刪除此人所有信息。void DataDelete()FILE *fp;int x;int i=0;int k,d;printf( 輸入學(xué)號(hào)n);scanf( %d,&x);while( sii.Id != x) i+

16、;if (isp-1) for ( k=i; ksp-1; k+)sik = sik+1; if ( isp) sp-;d = 0; for (k=0;kmp;k+)if ( mik.Id = x ) d+;else mik-d = mik;mp = mp - d;fp = fopen(D:B.txt,r+);for(i=0;i=1;i-)for (j=0;jmij+1.e) t=mij;mij = mij+1;mij+1 = t;markput();四、 測(cè)試分析4.1 測(cè)試結(jié)果及分析顯示主菜單 數(shù)據(jù)錄入功能。 對(duì)成績(jī)進(jìn)行錄入(2)查詢功能,按學(xué)號(hào)進(jìn)行查詢(3)排序功能按綜合成績(jī)排序(4)刪除功能退出程序五、 總結(jié)這次學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠

溫馨提示

  • 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)論