C語言課程設(shè)計(jì)報(bào)告-學(xué)籍信息管理系統(tǒng).doc
《C語言課程設(shè)計(jì)報(bào)告-學(xué)籍信息管理系統(tǒng).doc》由會員分享,可在線閱讀,更多相關(guān)《C語言課程設(shè)計(jì)報(bào)告-學(xué)籍信息管理系統(tǒng).doc(33頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、中 國 地 質(zhì) 大 學(xué)本科生課程論文封面課程設(shè)計(jì)評語對課程論文的評語:平時成績:課程論文成績:總 成 績:評閱人簽名:注:1、無評閱人簽名成績無效;2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效;3、如有平時成績,必須在上面評分表中標(biāo)出,并計(jì)算入總成績。目 錄課程設(shè)計(jì)評語2目 錄31課程論文題目42程序設(shè)計(jì)思路53. 功能模塊圖54數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)75算法設(shè)計(jì)86.程序代碼187程序運(yùn)行結(jié)果268編程中遇到的困難及解決方法309總結(jié)心得及良好建議3110、致謝.311 課程論文題目【要求】:使用下面的數(shù)據(jù),設(shè)計(jì)一個簡單的學(xué)籍信息管理系統(tǒng)。學(xué)生基本信息文件(A.TXT)及其內(nèi)容:(A.TXT文件不需要編
2、程錄入數(shù)據(jù),可用文本文檔編輯工具直接生成)學(xué)號 姓 名 性別 宿舍號碼 電話號碼01 張成成 男 501 8773211102 李成華 女 101 8772311203 王成鳳 女 101 8772311204 張明明 男 502 8773433305 陳 東 男 501 8773211106 李 果 男 502 8773433307 張園園 女 102 87756122學(xué)生成績基本信息文件(B.TXT)及其內(nèi)容:學(xué)號 課程編號 課程名稱 學(xué)分 平時成績 實(shí)驗(yàn)成績 卷面成績 綜合成績 學(xué)分01 A01 大學(xué)物理 3 66 78 8202 B03 高等數(shù)學(xué) 4 78 -1 9001 B03 高等
3、數(shù)學(xué) 4 45 -1 8802 C01 VF 3 65 76 66功能要求及說明:(1)數(shù)據(jù)錄入功能: 對B.TXT進(jìn)行數(shù)據(jù)錄入,只錄入每個學(xué)生的學(xué)號、課程編號、課程名稱、學(xué)分、平時成績、實(shí)驗(yàn)成績、卷面成績共7個數(shù)據(jù)。綜合成績、學(xué)分由程序根據(jù)條件自動運(yùn)算。綜合成績的計(jì)算如下所述。 如果本課程的實(shí)驗(yàn)成績?yōu)?1,則表示無實(shí)驗(yàn),綜合成績=平時成績*30%+卷面成績*70%; 如果實(shí)驗(yàn)成績不為-1,表示本課程有實(shí)驗(yàn),綜合成績=平時成績*15%+實(shí)驗(yàn)成績*.15%+卷面成績*70%。實(shí)得學(xué)分的計(jì)算: 采用等級學(xué)分制。綜合成績在90-100之間 ,應(yīng)得學(xué)分=學(xué)分*100%。綜合成績在80- 90之間 ,應(yīng)
4、得學(xué)分=學(xué)分*80%。綜合成績在70- 80之間 ,應(yīng)得學(xué)分=學(xué)分*75%。綜合成績在60- 70之間 ,應(yīng)得學(xué)分=學(xué)分*60%。綜合成績在60以下 ,應(yīng)得學(xué)分=學(xué)分*0%。(2)查詢功能:分為學(xué)生基本情況查詢和成績查詢兩種。 學(xué)生基本情況查詢:輸入一個學(xué)號或姓名(可實(shí)現(xiàn)選擇),查出此生的基本信息并顯示輸出。輸入一個宿舍號碼,可查詢出本室所有的學(xué)生的基本信息并顯示輸出。成績查詢:輸入一個學(xué)號時,查詢出此學(xué)生的所有課程情況,格式如下:學(xué) 號:x x 姓 名:x x x課程編號:xxx 課程名稱:xxxxx 綜合成績:xxxx 實(shí)得學(xué)分: xx課程編號:xxx 課程名稱:xxxxx 綜合成績:xx
5、xx 實(shí)得學(xué)分: xx課程編號:xxx 課程名稱:xxxxx 綜合成績:xxxx 實(shí)得學(xué)分: xx共修:xx科,實(shí)得總學(xué)分為: xxx (3)刪除功能:當(dāng)在A.TXT中刪除一個學(xué)生時,自動地在B.TXT中刪除此人所有信息。 (4)排序功能:能實(shí)現(xiàn)選擇按綜合成績或?qū)嵉脤W(xué)分升序或降序排序并顯示數(shù)據(jù)。2程序設(shè)計(jì)思路這個C語言課程設(shè)計(jì)題目是關(guān)于學(xué)生學(xué)籍信息管理系統(tǒng)的設(shè)計(jì)。根據(jù)設(shè)計(jì)題目的要求,數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組,是用來提供學(xué)生基本信息和學(xué)生成績基本信息結(jié)構(gòu)體數(shù)組。題目要求能夠完成錄入數(shù)據(jù),查詢,刪除和排序的功能,所以程序依次以主函數(shù)板塊、數(shù)據(jù)錄入功能板塊、查詢功能板塊、刪除功能板塊、排序功能板塊的順
6、序進(jìn)行,另外,程序中還用到輸入和輸出等基本函數(shù)。運(yùn)用函數(shù)實(shí)現(xiàn)要求的各項(xiàng)功能,將各個分函數(shù)依照一定的次序列出,這樣一方面可以使程序易于編寫和閱讀,另一方面還可以很方便地在編程過程中,另行調(diào)試各個分函數(shù),便于檢查在程序設(shè)計(jì)過程中出現(xiàn)的錯誤,并可以及時修改。3. 功能模塊圖根據(jù)以上的需求分析,可以將這個系統(tǒng)分為以下主要功能板塊:主函數(shù)板塊、數(shù)據(jù)錄入功能板塊、查詢功能板塊、刪除功能板塊、排序功能板塊。需要特別說明的兩部分有:系統(tǒng)中的結(jié)構(gòu)體定義和函數(shù)聲明部分再次沒有得到明顯的體現(xiàn),但是在整個程序中所起的基礎(chǔ)性作用是不可替代的,所有的分程序都是在此基礎(chǔ)上進(jìn)行的。讀取數(shù)據(jù)和輸出數(shù)據(jù)函數(shù)在各個分程序中都起著重
7、要作用,屬于公共函數(shù)的范疇。除以上兩部分中所述的定義聲明和部分函數(shù)外,本設(shè)計(jì)題目所要求的其他所有功能均能在以下系統(tǒng)功能板塊中得以體現(xiàn),具體如下所示:學(xué)籍信息管理系統(tǒng)顯示主菜單【DisplayMainMenu()】數(shù)據(jù)錄入【DataInput()】排序功能DataSort()查詢功能DataQuery()刪除功能DataDelete()退出功能 exit()按 學(xué) 號 QueryMark(int )按實(shí)得學(xué)分排序 sort2()按綜合成績排序 sort1()按 學(xué) 號 QueryById(int )按宿舍號碼QueryByRoom(int )成績查詢學(xué)生基本情況查詢4數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)本程序中主要運(yùn)用
8、了兩大結(jié)構(gòu)體數(shù)組,一個是學(xué)生基本信息的結(jié)構(gòu)體數(shù)組(StudentInfo si30),另一個是學(xué)生成績基本基本信息的結(jié)構(gòu)體數(shù)組(MarkInfo mi150)。在程序運(yùn)行過程中,很多子函數(shù)都調(diào)用了這兩個結(jié)構(gòu)體數(shù)組中的信息,或是對其進(jìn)行閱讀輸出,或是對其進(jìn)行其他簡單操作。整個程序自始自終始終緊緊圍繞這兩大結(jié)構(gòu)體數(shù)組進(jìn)行。具體定義如下:利用了組合體的方式定義結(jié)構(gòu)體數(shù)組,提供學(xué)生基本信息,定義如下:typedef struct int Id; /學(xué)號char name10;/姓名char sex6; /性別 int room; /宿舍號int tel; /電話號碼 StudentInfo; /定義學(xué)
9、生信息的結(jié)構(gòu)體類型同時定義了另一結(jié)構(gòu)體數(shù)組,提供學(xué)生成績基本信息,定義如下:typedef struct int Id;char courseNo10; /課程編號char courseName20;/課程名float a; / 課程學(xué)分float b; / 平時成績float c; / 實(shí)驗(yàn)成績float d; / 卷面成績float e; / 綜合成績float f; / 實(shí)際學(xué)分 MarkInfo; /定義課程信息的結(jié)構(gòu)體類型使用以上結(jié)構(gòu)體數(shù)組,使程序變得思路清晰,設(shè)計(jì)過程也變得相對簡單。同時,定義并使用了如下函數(shù),聲明和定義void ReadFile();void DisplayMai
10、nMenu();void DataInput();void DataQuery();void DataDelete();void DataSort();void QueryById(int );void QueryByRoom(int );void QueryMark(int );void sort1();void sort2();void markput();StudentInfo si30; / 學(xué)生信息結(jié)構(gòu)數(shù)組MarkInfo mi150; / 學(xué)生成績結(jié)構(gòu)數(shù)組int sp=0; / 學(xué)生信息結(jié)構(gòu)數(shù)組中學(xué)生數(shù)int mp=0; / 學(xué)生成績結(jié)構(gòu)數(shù)組中成績數(shù)5算法設(shè)計(jì)1.、定義結(jié)構(gòu)體,并且
11、進(jìn)行函數(shù)聲明在這一部分,定義了關(guān)于學(xué)生基本信息和學(xué)生成績信息的兩個結(jié)構(gòu)體數(shù)組,用于存儲數(shù)據(jù),另外對本程序中所用到的函數(shù)進(jìn)行了詳細(xì)地聲明,通過定義數(shù)組和對函數(shù)的聲明為本程序奠定了重要的基礎(chǔ)。#include typedef struct int Id; /學(xué)號char name10;/姓名char sex6; /性別 int room; /宿舍號int tel; /電話號碼 StudentInfo; /定義學(xué)生信息的結(jié)構(gòu)體類型typedef struct int Id;char courseNo10; /課程編號char courseName20;/課程名float a; / 課程學(xué)分float
12、 b; / 平時成績float c; / 實(shí)驗(yàn)成績float d; / 卷面成績float e; / 綜合成績float f; / 實(shí)際學(xué)分 MarkInfo; /定義課程信息的結(jié)構(gòu)體類型 / 定義結(jié)構(gòu)數(shù)組為全局變量StudentInfo si30; / 學(xué)生信息結(jié)構(gòu)數(shù)組MarkInfo mi150; / 學(xué)生成績結(jié)構(gòu)數(shù)組int sp=0; / 學(xué)生信息結(jié)構(gòu)數(shù)組中學(xué)生數(shù)int mp=0; / 學(xué)生成績結(jié)構(gòu)數(shù)組中成績數(shù)void ReadFile();void DisplayMainMenu();void DataInput();void DataQuery();void DataDelete()
13、;void DataSort();void QueryById(int );void QueryByRoom(int );void QueryMark(int );void sort1();void sort2();void markput();2.主函數(shù):主函數(shù)設(shè)計(jì)的很簡潔,只提供輸入,功能處理和輸出部分的函數(shù)的調(diào)用,其中各功能模塊用菜單方式選擇,為我們提供了五個功能選項(xiàng),讓我們可以很方便地通過這五個功能選項(xiàng)來調(diào)用各個功能模塊函數(shù)。顯示一系列功能選項(xiàng)(即主菜單)輸入n,判斷是否1-5根據(jù)n的值調(diào)用各功能模塊函數(shù)定義整型變量X作為功能菜單選項(xiàng)的選擇方式。Void main()int x;Rea
14、dFile(); while (1)DisplayMainMenu();scanf (“%d”,&x);switch (x)case 1 : DataInput(); break; case 2 : DataQuery(); break; case 3 : DataDelete(); break; case 4 : DataSort(); break; case 5 : exit();3.各功能模塊的設(shè)計(jì):模塊功能圖如下所示:所 用 到 的 各 個 子 函 數(shù)讀取數(shù)據(jù)、計(jì)算菜 單 顯 示數(shù) 據(jù) 錄 入排 序查 詢按 實(shí) 際 學(xué) 分按 綜 合 成 績查 詢 成 績查詢 學(xué)生 信息* 讀 取 數(shù)
15、據(jù) 、 計(jì) 算 *在這段功能模塊中,利用指針變量來讀取結(jié)構(gòu)體數(shù)組文件中的相應(yīng)信息,是程序的編寫、閱讀和運(yùn)行變得簡潔明了。此外,在這段程序中,還對文件中的數(shù)據(jù)按照題目的具體要求對綜合成績和學(xué)分做了自動計(jì)算。Void ReadFile( ) 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.name,&sisp.sex,&sisp.room,&sisp.tel);sp+;fclose (fp);fp
16、= fopen(“B.txt”,”r”);while (!feof(fp)fscanf (fp,”%d%s%s%f%f%f%f”,&mimp.Id,mimp.courseNo,mimp.courseName,&mimp.a,&mimp.b,&mimp.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. ) mim
17、p.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+;fclose(fp);* 顯 示 主 菜 單 *這部分是對本程序的主要功能做出的展示,體現(xià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ù) 錄 入 *錄入每個學(xué)生的學(xué)
18、號、課程編號、課程名稱、學(xué)分、平時成績、實(shí)驗(yàn)成績、卷面成績共7個數(shù)據(jù),即對關(guān)于學(xué)生成績基本信息的結(jié)構(gòu)體數(shù)組進(jìn)行輸入,也就是文件B.TXT中的內(nèi)容。Void DataInput()FILE *fp;int I;printf (“學(xué)生的學(xué)號 課程編號 課程名稱 學(xué)分 平時成績 實(shí)驗(yàn)成績 卷面成績n”);while(1)scanf (“%d%s%s%f%f%f%f”,&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 =
19、 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;mp+;fp = fopen(“B.txt”,”r+”);for(i=0;
20、imp;i+)fprintf(fp,”%d%s%s%f%f%f%f”,&mii.Id,mii.courseNo,mii.courseName,&mii.a,&mimp.b,&mii.c, &mii.d);fclose(fp);*查 詢 *此段程序是為實(shí)現(xiàn)信息查詢功能而設(shè)計(jì)的??傮w來講,分為兩大功能模塊,一是學(xué)生基本信息查詢,二是對學(xué)生成績的查詢。在第一種查詢,即對學(xué)生基本信息的查詢中,又提供了兩種查詢方式,一種是按學(xué)號對學(xué)生基本信息進(jìn)行查詢,一種是按宿舍號碼對學(xué)生基本信息進(jìn)行查詢。Void DataQuery()int x,y,z;printf( “n 1) 學(xué)生基本情況查詢n 2) 成績查詢
21、n”);-選擇查詢內(nèi)容scanf(“%d”,&x);if (x = 1) / 查詢學(xué)生信息printf (“1) 按學(xué)號查詢 2) 按宿舍查詢n”);-選擇查詢方式scanf(“%d”,&y);if (y = 1 ) printf ( “ 輸入學(xué)號n”);-按學(xué)生學(xué)號查詢scanf (“%d”,&z);QueryById(z);if (y = 2) printf ( “ 輸入宿舍號n”);-按學(xué)生宿舍號碼進(jìn)行查詢scanf (“%d”,&z);QueryByRoom(z);if ( x =2) / 查詢成績信息-查詢學(xué)生成績(輸入學(xué)號)printf ( “ 輸入學(xué)號n”); scanf (“%
22、d”,&y);QueryMark(y);* 刪 除 *此模塊提供了按學(xué)號實(shí)現(xiàn)刪除學(xué)生信息的功能,當(dāng)在文件A.TXT中刪除一個學(xué)生時,自動地在文件B.TXT中刪除此人所有信息。Void DataDelete()FILE *fp;int x;int i=0;int k,d;printf( “輸入學(xué)號n”);scanf( “%d”,&x);while( sii.Id != x) i+;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 m
23、ik-d = mik;mp = mp d;fp = fopen(“D:B.txt”,”r+”);for(i=0;imp;i+)fprintf(fp,”%d%s%s%f%f%f%f”,&mii.Id,mii.courseNo,mii.courseName,&mii.a,&mii.b,&mii.c, &mii.d);* 按 學(xué) 號 查 詢 *按學(xué)生學(xué)號對學(xué)生基本信息進(jìn)行查詢。Void QueryById(int x)int I;for (i=0;isp;i+)if ( sii.Id = x ) printf (“n 學(xué)號 姓名 性別 宿舍號碼 電話號碼n”);printf (“ %d %s %s
24、%d %dn”,sii.Id,sii.name,sii.sex,sii.room,sii.tel);* 按 宿 舍 號 查 詢 *按宿舍號碼對學(xué)生基本信息進(jìn)行查詢。void QueryByRoom(int x) int i;for (i=0;isp;i+)if ( sii.room = x ) printf (n 學(xué)號 姓名 性別 宿舍號碼 電話號碼n);printf ( %d %s %s %d %dn,sii.Id,sii.name,sii.sex,sii.room,sii.tel);* 成 績 查 詢 * 對成績進(jìn)行查詢要求輸入學(xué)生的學(xué)號就可以查詢出學(xué)生所有的課程成績情況,并且能夠按一定的
25、格式輸出。void QueryMark(int x) int i=0; while(sii.Id!=x) i+; printf(學(xué)號: %d 姓名: %sn,sii.Id,sii.name);for (i=0;i=1;i-)for (j=0;jmij+1.e) t=mij;mij = mij+1;mij+1 = t;markput();* 按 實(shí) 得 學(xué) 分 排 序 *按void sort2()函數(shù)計(jì)算所得的實(shí)得學(xué)分進(jìn)行排序。void sort2() int i,j;MarkInfo t;for (i=mp-1;i=1;i-)for (j=0;jmij+1.f) t=mij;mij = mij
26、+1;mij+1 = t;markput();* 數(shù) 據(jù) 輸 出 *利用函數(shù)void markput()按設(shè)計(jì)題目規(guī)定的格式輸出一定格式的信息void markput()int i;for( i=0;imp;i+)printf(n 學(xué)號 %d 課程編號 %s 課程名稱 %s 學(xué)分 %f 平時成績 %f 實(shí)驗(yàn)成績 %f 卷面成績 %f 綜合成績 %f 實(shí)得學(xué)分 %fn,mii.Id,mii.courseNo,mii.courseName,mii.a,mii.b,mii.c,mii.d,mii.e,mii.f);6.程序代碼#include typedef struct int Id; /學(xué)號ch
27、ar name10; /姓名char sex6; /性別 int room; /宿舍號int tel; /電話號碼 StudentInfo; /定義學(xué)生信息的結(jié)構(gòu)體類型typedef struct int Id;char courseNo10; /課程編號char courseName20;/課程名float a; / 課程學(xué)分float b; / 平時成績float c; / 實(shí)驗(yàn)成績float d; / 卷面成績float e; / 綜合成績float f; / 實(shí)際學(xué)分 MarkInfo; /定義課程信息的結(jié)構(gòu)體類型 / 定義結(jié)構(gòu)數(shù)組為全局變量StudentInfo si30; / 學(xué)生
28、信息結(jié)構(gòu)數(shù)組MarkInfo mi150; / 學(xué)生成績結(jié)構(gòu)數(shù)組int sp=0; / 學(xué)生信息結(jié)構(gòu)數(shù)組中學(xué)生數(shù)int mp=0; / 學(xué)生成績結(jié)構(gòu)數(shù)組中成績數(shù)void ReadFile();void DisplayMainMenu();void DataInput();void DataQuery();void DataDelete();void DataSort();void QueryById(int );void QueryByRoom(int );void QueryMark(int );void sort1();void sort2();void markput();/ 主程序的結(jié)
29、構(gòu)void main()int x;ReadFile(); while (1)DisplayMainMenu();scanf (%d,&x);switch (x)case 1 : DataInput(); break; case 2 : DataQuery(); break; case 3 : DataDelete(); break; case 4 : DataSort(); break; case 5 : exit();void ReadFile( ) FILE *fp;if(fp = fopen(A.txt,r)=NULL)printf(cant open the filen);while
30、 (!feof(fp)fscanf(fp,%d%s%s%d%d, &sisp.Id,sisp.name,&sisp.sex,&sisp.room,&sisp.tel);sp+;fclose (fp);fp = fopen(B.txt,r);while (!feof(fp)fscanf (fp,%d%s%s%f%f%f%f,&mimp.Id,mimp.courseNo,mimp.courseName,&mimp.a,&mimp.b,&mimp.c, &mimp.d);if (mimp.c = -1) mimp.e = 0.3*mimp.b+0.7*mimp.d;else mimp.e = 0.1
31、5*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;mp+;fclose(fp);void DisplayMainMenu()printf (n 1) 數(shù)據(jù)錄入 n 2) 數(shù)據(jù)查詢 n 3) 數(shù)據(jù)刪除 n
32、4) 數(shù)據(jù)排序 n 5) 程序結(jié)束 n );void DataInput()FILE *fp;int i;printf (學(xué)生的學(xué)號 課程編號 課程名稱 學(xué)分 平時成績 實(shí)驗(yàn)成績 卷面成績n);while(1)scanf (%d%s%s%f%f%f%f,&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*m
33、imp.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;mp+;fp = fopen(B.txt,r+);for(i=0;imp;i+)fprintf(fp,%d%s%s%f%f%f%f,&mii.Id,mii.courseNo,mii.c
34、ourseName,&mii.a,&mimp.b,&mii.c, &mii.d);fclose(fp);void DataQuery()int x,y,z;printf( n 1) 學(xué)生基本情況查詢n 2) 成績查詢n);scanf(%d,&x);if (x = 1) / 查詢學(xué)生信息printf (1) 按學(xué)號查詢 2) 按宿舍查詢n);scanf(%d,&y);if (y = 1 ) printf ( 輸入學(xué)號n); scanf (%d,&z);QueryById(z);if (y = 2) printf ( 輸入宿舍號n); scanf (%d,&z);QueryByRoom(z);if
35、 ( x =2) / 查詢成績信息printf ( 輸入學(xué)號n); scanf (%d,&y);QueryMark(y);void DataDelete()FILE *fp;int x;int i=0;int k,d;printf( 輸入學(xué)號n);scanf( %d,&x);while( sii.Id != x) i+;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 = fo
36、pen(D:B.txt,r+);for(i=0;imp;i+)fprintf(fp,%d%s%s%f%f%f%f,&mii.Id,mii.courseNo,mii.courseName,&mii.a,&mii.b,&mii.c, &mii.d);void QueryById(int x)int i;for (i=0;isp;i+)if ( sii.Id = x ) printf (n 學(xué)號 姓名 性別 宿舍號碼 電話號碼n);printf ( %d %s %s %d %dn,sii.Id,sii.name,sii.sex,sii.room,sii.tel);void QueryByRoom(i
37、nt x) int i;for (i=0;isp;i+)if ( sii.room = x ) printf (n 學(xué)號 姓名 性別 宿舍號碼 電話號碼n);printf ( %d %s %s %d %dn,sii.Id,sii.name,sii.sex,sii.room,sii.tel);void QueryMark(int x) int i=0; while(sii.Id!=x) i+; printf(學(xué)號: %d 姓名: %sn,sii.Id,sii.name);for (i=0;i=1;i-)for (j=0;jmij+1.e) t=mij;mij = mij+1;mij+1 = t;
38、markput();void sort2() int i,j;MarkInfo t;for (i=mp-1;i=1;i-)for (j=0;jmij+1.f) t=mij;mij = mij+1;mij+1 = t;markput();void markput()int i;for( i=0;imp;i+)printf(n 學(xué)號 %d 課程編號 %s 課程名稱 %s 學(xué)分 %f 平時成績 %f 實(shí)驗(yàn)成績 %f 卷面成績 %f 綜合成績 %f 實(shí)得學(xué)分 %fn,mii.Id,mii.courseNo,mii.courseName,mii.a,mii.b,mii.c,mii.d,mii.e,mii
39、.f);7程序運(yùn)行結(jié)果顯示主菜單:(1)數(shù)據(jù)錄入功能:對成績進(jìn)行錄入(2)查詢功能:學(xué)生基本情況查詢a、按學(xué)號查詢b、按宿舍查詢學(xué)生成績查詢(輸入學(xué)生學(xué)號)(3)排序功能按綜合成績排序按實(shí)得學(xué)分排序(4)刪除功能(按學(xué)生學(xué)號刪除)(5)退出功能(按任意鍵即可退出)8編程中遇到的困難及解決方法首先就在本程序的編寫過程中出現(xiàn)的問題進(jìn)行說明:首先,對于數(shù)據(jù)的刪除存在一定的問題,這個問題是在老師的指導(dǎo)下又經(jīng)過同學(xué)們的幫助才解決的,其間,我明白了結(jié)構(gòu)體數(shù)組中數(shù)據(jù)刪除的基本原理和刪除的方法;其次,在程序編寫過程中,我忽視了幾個需要注意的基本語法,比如,有的變量忘記了定義和標(biāo)識符的使用等問題,這個是在同學(xué)的
40、幫助下才檢查出來改正的。這屬于C語言運(yùn)用的基礎(chǔ)問題,也是因?yàn)槠綍r的上機(jī)編程實(shí)習(xí)太少所致,以后還有待于改進(jìn);第三,對于數(shù)組中數(shù)據(jù)的存儲原理存在一定的疑問,這個是請同學(xué)講解后才加深的理解;第四,就是在程序開始編寫時,整體思路框架的構(gòu)思感覺無從下手,這是一個長期的問題,需要多多接觸程序,理解更多的程序編寫思路才能做到在白那些之前胸有成竹。這次是請教同學(xué)幫忙才得以解決的。9總結(jié)心得及良好建議這是我第一次相對比較獨(dú)立的編程,從中感受到了小小的進(jìn)步所帶來的喜悅,更重要的是,通過這次C語言課程設(shè)計(jì)我意識到了自己在學(xué)習(xí)上的許多不足,許多感覺會的知識在應(yīng)用時還是有許多不確定,作為計(jì)算機(jī)專業(yè)的一名學(xué)生,動手能力是
41、很重要的,只要通過實(shí)踐才能真正發(fā)現(xiàn)自己的不足,使自己的能力真正有所提高。俗話說:“萬事開頭難?!爆F(xiàn)在既然開頭已經(jīng)過去了,也大致了解了C語言的學(xué)習(xí)規(guī)律,課本雖然學(xué)完了,但自己需要加強(qiáng)與完善的還有很多。首先,從這個程序說起。這個程序的編寫過程中沒有用到很特殊的算法,基本都是老師上課強(qiáng)調(diào)的一些基本算法,讓人做起來感覺還是挺簡單易懂的,這里也體會到了C語言的靈活性。其次,我認(rèn)為我這個程序的亮點(diǎn)在于它的整體結(jié)構(gòu)清晰明朗,首先是兩個結(jié)構(gòu)體,然后就是聲明函數(shù),再往下是主函數(shù)選擇執(zhí)行命令,最后是幾個用到的被調(diào)用函數(shù)。再次,我體會到了計(jì)算機(jī)語言的嚴(yán)謹(jǐn)性,C語言課本上的許多微小知識看似微乎其微,實(shí)則作用巨大,在程
42、序設(shè)計(jì)過程中,一處小小的知識死角就可能會使整個程序無法運(yùn)行,所以計(jì)算機(jī)語言的學(xué)習(xí)容不得半點(diǎn)兒馬虎,留不得半處死角,不能忽視任何一處知識。今后我會繼續(xù)努力,尤其通過學(xué)院組織的ACM集訓(xùn)和各種程序設(shè)計(jì)比賽,使自己的程序設(shè)計(jì)能力有所提高,爭取成為一名更加優(yōu)秀的計(jì)算機(jī)專業(yè)的學(xué)生。此次課程設(shè)計(jì),我在編寫程序,修改程序進(jìn)一步完成作業(yè)的同時,也深深感受到了計(jì)算機(jī)高級語言的清晰的層次性和運(yùn)用的技巧性,我想這一點(diǎn)無論對于我們這些初涉計(jì)算機(jī)語言的學(xué)生而言,還是對于已在計(jì)算機(jī)專業(yè)任教多年的資深教師來說,都是必須認(rèn)識到的。認(rèn)識到這一點(diǎn),計(jì)算機(jī)初學(xué)者可以在鞏固基礎(chǔ)的同時培養(yǎng)探索更加簡潔的思路的意識,資深教師則可以在計(jì)算
43、機(jī)語言教授過程中起到提綱挈領(lǐng),誘思探究新的教學(xué)方法,使學(xué)生在學(xué)習(xí)計(jì)算機(jī)語言的時候抓住重點(diǎn),理解難點(diǎn),掌握要點(diǎn)。10致謝在這次課程設(shè)計(jì)的撰寫過程中,我得到了許多人的幫助。首先我要感謝老師在課程設(shè)計(jì)上給予我的指導(dǎo)、支持和幫助。雖然在檢查運(yùn)行程序的過程中老師提出了問題,但是我能理解老師的用意,老師的目的并不是難為我們,或許可以說老師要的并不是讓我們完成這次課程設(shè)計(jì)的設(shè)計(jì)題目,而是讓我們能夠在課程設(shè)計(jì)的過程中重溫C語言的知識,真正掌握好這門語言。讓我們能把系統(tǒng)做得更加完善。在此期間,我不僅學(xué)到了許多新的知識,而且也開闊了視野,提高了自己的設(shè)計(jì)能力。其次,我要感謝幫助過我的同學(xué),他們也為我解決了不少我不太明白的設(shè)計(jì)過程中的難題,同時也非常感謝學(xué)院為我提供了良好的課程設(shè)計(jì)的機(jī)房環(huán)境。最后再一次感謝所有在此次C語言課程設(shè)計(jì)中曾經(jīng)幫助過我的老師和同學(xué)們! 19209303 任志鋼 2010年7月13日 星期二33
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國早期大腸癌內(nèi)鏡診治專家講座
- Unit One教程
- 老年冠心病患者心臟康復(fù)治療的基本概念
- 血與火的征服與掠奪匯總課件
- 英文數(shù)據(jù)庫檢索(CSA)課件
- 護(hù)理學(xué)基礎(chǔ)病情觀察和搶救
- 葡萄地草銨膦示范實(shí)驗(yàn)效果展示-PPT
- 公共政策案例分析-PPT
- 三角形的分類
- 自然地理環(huán)境的差異性課件--李建華
- 人教版高中政治必修一82征稅和納稅課件
- 局機(jī)關(guān)財(cái)務(wù)處財(cái)務(wù)管理年終個人工作總結(jié)述職報(bào)告課件
- 產(chǎn)業(yè)組織學(xué)導(dǎo)論課件
- MBTI人格測試INTP職業(yè)性格職業(yè)領(lǐng)域建議企業(yè)員工技能培訓(xùn)通用模板課件
- Module-9-Unit-1-Did-he-live-in-New-York(教育精品)