


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗報告學生學籍管理系統(tǒng)專業(yè):信息管理與信息系統(tǒng)班級:學號: 姓名:學生學籍管理系統(tǒng)一、實驗要求:一個班級有若干名學生 不超過10名),共有三門課程,分別是語文、數(shù) 學、英語,要求編寫一個成績的管理系統(tǒng),每個學生要求有學號、姓名、性 別、三門課的成績以及平均成績,要實現(xiàn)從鍵盤上輸入學號 必須為數(shù)字)、姓名、性別、三門課程的成績,并求每一位學生的平均成績 即每一行的平均值)、每一位學生的最高分 每一行的最大值),求每一門課程的平均分 即每 一列的平均值)、每一門課的最高分 即每一列的最大值),并輸出全部結(jié)果。 根據(jù)學生的平均成績進行排序,對語文、數(shù)學、英語成績進行排序,并輸出排 序結(jié)果,排序必須
2、使用冒泡排序法。并且具有如下的菜單:學生學籍管理系統(tǒng)* MENU *1、Enter new data2、Browse all3、Search by num4、Order by average5、Exit*用戶可以根據(jù)菜單來選擇操作,菜單的含義如下:1、Enter new data 輸入新數(shù)據(jù)2、Browse al瀏覽所有數(shù)據(jù)3、Search by num 根據(jù)學號查詢學生信息4、Order by average 根據(jù)平均成績排序5、Exit退出系統(tǒng)實驗步驟:二、實驗?zāi)康?、了解和熟悉 Visual C+ 軟件編程開發(fā)環(huán)境2、熟練掌握結(jié)構(gòu)化程序設(shè)計的步驟和模塊化設(shè)計方法3、熟練掌握 C 語言數(shù)據(jù)
3、類型,熟記字符型數(shù)據(jù)和整形數(shù)據(jù)的定義和使用4、熟練掌握用while語句、dowhile語句和for語句實現(xiàn)循環(huán)結(jié)構(gòu)程序設(shè) 計的方法5、掌握一維數(shù)組、二維數(shù)組的定義、賦值和輸入輸出的方法6、掌握與數(shù)組有關(guān)的算法 特別是排序算法,熟練掌握冒泡排序法)7、熟悉函數(shù)的定義、聲明方法及全局變量和局部變量的概念與用法,掌握 函數(shù)的調(diào)用方法8、掌握結(jié)構(gòu)體類型變量的定義和使用及結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用三、實驗步驟1、分析設(shè)計題目: 根據(jù)題目要求,可以使用結(jié)構(gòu)體數(shù)組來存儲學生的信息,包括學號、姓名、性別、各科成績、平均成績五個成員,分別使用字符數(shù)組、整型數(shù)組、浮點型變量來表示。在主函數(shù)之外,分別編寫菜單函數(shù)m
4、enu(、輸入函數(shù)enter(、瀏覽函數(shù) browse(、查找函數(shù) search(排序函數(shù) order(等 函數(shù),通過主函數(shù)調(diào)用menu來實現(xiàn)。2、實驗流程圖:結(jié)束3、實驗?zāi)K:輸入模塊、瀏覽模塊、查找模塊、排序模塊、退出系統(tǒng)4、程序的調(diào)試與測試:所謂程序調(diào)試是指對程序的查錯與排錯。在編寫完一個源程序之后,不 要立即進行編譯,而應(yīng)對程序進行全面的人工檢查一遍,檢查無誤后,可 以開始進行程序調(diào)試。由編譯系統(tǒng)進行檢查、發(fā)現(xiàn)錯誤,根據(jù)編譯系統(tǒng)提 示的錯誤類型和警告及出現(xiàn)的位置,我們可以定位到錯誤地點進行修改, 然后再編譯,如此反復(fù)進行,直至不再出現(xiàn)錯誤位置,最后才進行程序的 連接于運行。調(diào)試完以后,
5、下一步就是對程序進行測試,運行程序,向程 序中輸入數(shù)據(jù),根據(jù)輸出結(jié)果是否正確 <是否符合自己的想法)來判斷程序 是否正確,如果不正確或不符合自己的目的,就需要對程序進行修改。然 后再調(diào)試,再測試,直至結(jié)果無誤或符合要求后,測試才算結(jié)束,此時, 程序才算是滿足題目要求的正確程序。5、運行結(jié)果:<1)運行結(jié)果界面如下:ExL Ent er new data 2. Browse all3一 Stidfrli by niunA. Order by average5, Exit.ti .*. lj % J. ii iJj hJ«= Jp. .屯l/j hL-.'. Jjt
6、iAivj* »lz lu* !sld *t, *w* °* 1/" hLi y!/ ii %l> 9> iAi .*.=屯“麗平!苓蘋千予可i不弄i喬帀予曹夯千平誓呼喬喬砰喬卒存脊可i千平苓不町奇卒平弄脊乎平不岳平千 那弄蘋干皙嚇千平Choice yam、mmber(1 5) : T»B/S鼻琲投狗拼音性k- >_ f fttfiffl1 Atr-v l-kuufedL'F. Bl'J fQrt'liWlGpQiiiNwintfL rtrtjs<2)選擇1號菜單,輸入10名同學信息,運行結(jié)果如下:rwlo
7、w many students(0-100)?: 10Knter data nowscore1:002:783:922th student record.+(»耶.備號捜狗拼音和NO 01 02 03 04 05 06 07 08 0910ChineseE08S767477676978 fifi89Math787886B484旳甜6987781592的鈕時907197&4純66S1El83.33 朋.0075.3375.3363.67眥0090.6770.3386,弟77.67MdJiL course929286fJ4906797789089ave_chitiese ave
8、Math ave.EtielishB2.60 Si.2079.40MaA_Chines LUii_Math Mai_Enjlish89B797wui ±There are 10 record.段腳拼音半:P 曙 農(nóng) <B wr-也卻軒"二 'J11.一 昌 23口<4)選擇3號菜單,按學號查找學生信息,例如查找學號為03的同德信息,輸入格式如下:甘 田甲盛fia沖n.arcywiiyJwmg&B*xi. 出六們.F3 叫科 抄占<5)查詢學號為03的同學的信息運行結(jié)果如下:NO :hfUBGChineseMathE nlisliaverag
9、eMax course03 :李鳳768675,3366返凹主菜草情按數(shù)字Dnua:0<3Lnter tiaunc that you wane to search!<6)選擇4號菜單,進入學生成績排序功能菜單,運行結(jié)果如下:B或H mm: P G& / 曲Msh 知闊 IHTA"fl* -S 粵月 2S凱<7)選擇1號功能菜單,按每位學生的平均成績從小到大排序,運行結(jié) 果如下:- 岸d-畑EdLJft. a J,KrWAriSra* - v,gjn逹 ZxdL nr”.:目 rf* fl. JS5J!<8)選擇2號功能菜單,按語文成績從小到大排序,運行
10、結(jié)果如下:i 4 6 7 8 o 7 8 8 .9 9 h 7 7 7 7 8 B 8 B B 6 恥fljue晨園陽磊夏政殊柳畫寒 績;n劉李孫李華主藏劉南韓 :+ * : T + :”;: 段N00403Q5胸010602腫0710返旦上一級請按數(shù)宇0MR t IMU:'JEj| 盤建 l+u-ab-ri Wnm ««w®u財 3 i ftIXffl采結(jié)畤ttl冊J1at6978787882e48486eG87大到r腫噸番師夏寒孜陽展鳳堯測繾n豐蠱華韓工和劉豐南劉瀟NOQ302M10060-5M030709返回上一級請按數(shù)宇口超狽拼音半:- 射寸黛g
11、BW -畑fdL 介宀皿門協(xié)U自H逹 *f Zl *tr.目 JJfla ZSS3<10)選擇4號功能菜單,按英語成績從小到大排序,運行結(jié)果如下:X.En64e466祠門9090929297濟NO0308LO04060905020107近回上一級請按數(shù)宇QR卜4射4 A體 nav/fl - He.:dk4L血SI J.Kpww* 目UH嗨型駒拼音半:MLT5 + (MCma*和*柑呻檔*賓*杓*杓*柑呻輯*事ftiENU*”*帖*虹*”*粉密*4呻 l. Elittr nen fixta.2r Browse al I3. Searcti by nunJ.Order by average5
12、.Exit* *耳 * iM * 44 * 呉 * 4u|£ * 4* * 宜 * *宜 * 4cHc * dKHc * :k* * m: * icHc * 4o|£Choice your Humher(1-S): -h4 八F 4 Am i心-訶麗叩pt.旦I'tcraidt WAr.世.訃 u,.型殉拼音半:J- MW t Ml?<12)選擇5號菜單,退出系統(tǒng),按任意鍵結(jié)束程序,運行結(jié)果如下:S I*w>z<ngipj!>ivLI.L*bugingna.:-'*事*審*車*申耳減理柑e*軍*寡*宜*典*皇*審鬧狀*沖*耳:*章*軍
13、*冀*_*單L. Enter new rldt.A玄Browse al I3.Search by numL Order by tiYertiKe5. Exit*事*14(卑申耳韋*理卑耳!*璋*鼻*:宣*寮*:4*!4(甲40卑沖卡耳!來沖*冒*賈*冀*冀*柑£蕈Choice your number(1-5):51Press any key to conti叮ue.四、實驗體會通過完成這個綜合的設(shè)計實例,從中我熟悉了Visual C+開發(fā)環(huán)境,熟練掌握了在Visual C+軟件環(huán)境下編寫和調(diào)試程序。通過對程序的調(diào)試,我從學 到了許多知識,根據(jù)編譯時系統(tǒng)提供的錯誤提示,我能很快地找到錯
14、誤并排除 這些錯誤,是程序能正確運行。通過這個環(huán)節(jié)的不斷練習,我積累了豐富的經(jīng) 驗,為以后編程和調(diào)試程序奠定了基礎(chǔ)。通過運行程序,對程序不斷改動,仔 細觀察和分析所出現(xiàn)的情況,鍛煉了我對立思考的能力,而且增強了我對C語 言應(yīng)用這門課程的興趣。五、源程序 #include<stdio.h>/*頭文件 */#include<string.h> #include<stdlib.h>#define N 100 #define M 3typedef struct student /*定義學生結(jié)構(gòu)體 */ char num11。char name20。char sex3
15、。 int scoreM 。float Max_course。 STU。STU stuN,stu_ChineseN,stu_MathN,stu_EnglishN 。 int MaxM 。float ave_Chinese。float ave_Math。float ave_E n。/* 實際存儲的學生個數(shù) */void no_input(int i,int n>/*i 表示第 i 個的學生信息, n 表示比較到第 n 個學 生*/ int j,k,w1 。do w1=0。 printf("NO.:"> 。 scanf("
16、;%s",&stui.num> 。for(j=0。stui.numj!='O'。j+>/* 學號輸入函數(shù),作了嚴格規(guī)定 */ if(stui.numj<'0'|stui.numj>'9'>/* 判斷學號是否為數(shù)字 */ puts("Input error! Only be made up of (O-9>.Please reinput!n">。w1=1。 break。 if(w1!=1>for(k=0。 k<n。 k+>/*比較到第n個學生*/ if
17、(k!=i&&strcmp(stuk.num,stui.num>=O> puts("This record is exist.Pleasereinput!n"> 。w1=1。 break。 while(w1=1> 。void input(int i>/* 輸入一個記錄函數(shù) */ int j,sum 。 no_input(i,i> 。/* 調(diào)用學號輸入函數(shù) */ printf("name:"> 。 scanf("%s",&>。 printf(&qu
18、ot;sex:"> 。 scanf("%s",&stui.sex> 。for(j=0 o j<M。j+> printf("score %d:",j+1> 。 scanf("%d",&stui.scorej> 。for(sum=0,j=0。 j<M 。 j+> sum+ =stui.sco rej 。stui.ave=sum*1.0/M 。 /* 每一行的平均值,即每位同學的三門課總的平 均分 */void menu(> 。 /* 函數(shù)聲明 */void e
19、nter(>/* 輸入模塊 */int i,j,f。system("CLS">。 /*清屏*/printf("How many students(0-%d>?:",N>。 /*要輸入的記錄個數(shù) */ scanf("%d",&n> 。printf("nEnter data nownn">。 for(i=0。 i<n。 i+> printf("nInput %dth student record.n",i+1> 。 input(i>
20、。 /*調(diào)用輸入函數(shù) */for(i=0 。 i<n。 i+>/* 求每一行的最大值,即求每一位學生的三門課中的 最高分*/ stui.Max_course=stui.score0 。for(j=1 。 j<M 。 j+> if(stui.Max_course<stui.scorej>stui.Max_course=stui.scorej 。for(i=0 。 i<n 。 i+>/* 把 輸 入 的 信 息 分 別 復(fù) 制 到 stu_ChineseN,stu_MathN,stu_EnglishN 中*/ stu_Chinesei=stui。 s
21、tu_Mathi=stui 。 stu_Englishi=stui 。printf(" 返回主菜單請按數(shù)字 0n">。do scanf("%d",&f> 。 if(f=0> menu(>。 break。else printf("輸入有誤,請重新輸入:">。while(f!=0> 。void printf_one(int i>/* 顯示一個記錄函數(shù) */int j。printf("%3s :%3s",stui.num,> 。for(j=0 。
22、j<M 。 j+> printf("%10d",stui.scorej> 。printf("%10.2f",stui.ave> 。 printf("%9dn",stui.Max_course> 。void browse(> /* 瀏覽模塊 */int i,j,f,k=0 。 system("CLS">。 /* 清屏*/ for(i=0。 i<n。 i+>/* 求第一列的平均值,即求語文平均成績 */ k=k+stui.score0 。 ave_Chinese=(
23、k*1.0>/n。k=0。for(i=0。 i<n。 i+>/* 求第二列的平均值,即求數(shù)學平均成績 */ k=k+stui.score1 。ave_Math=(k*1.0>/n。k=0。for(i=0。i<n。i+>/*求第三列的平均值,即求英語平均成績 */ k=k+stui.score2。 ave_English=(k*1.0>/n。Max0=stu0.score0 。 /*第一列的最大值,即語文成績最高分 */ for(i=1。 i<n。 i+> if(Max0<stui.score0>Max0=stui.score0
24、。Max1=stu0.score1 。 /*第二列的最大值,即數(shù)學成績最高分 */ for(i=1。 i<n。 i+> if(Max1<stui.score1> Max1=stui.score1 。Max2=stu0.score2 。 /*第三列的最大值,即英語成績最高分 */ for(i=1。 i<n。 i+> if(Max2<stui.score2> Max2=stui.score2 。puts("n">。printf("n NO : name Chinese Math English average Ma
25、x_coursen">。for(i=0。 i<n。 i+> if(i!=0>&&(i%10=0>>/* 目的是分屏顯示 */ printf("nnPass any key to continue.">。 getchar(>。 puts("nn">。 printf_one(i> 。 /*調(diào)用顯示一個記錄函數(shù) */ puts("n">。printf(" ave_Chinese ave_Math ave_Englishn">
26、。 printf("%10.2f%10.2f%10.2fn",ave_Chinese,ave_Math,ave_English>。 /* 顯 示語文、數(shù)學、英語平均成績 */puts("n">。printf(" Max_Chinese Max_Math Max_Englishn"> 。 printf("%10d%10d%10dn",Max0,Max1,Max2> 。/* 顯示語文、 英語成績 */puts("n">。printf("ntThere are
27、%d record.n",n>。puts("n">。printf(" 返回主菜單請按數(shù)字 0n">。do scanf("%d",&f> 。 if(f=0> menu(>。 break。else printf("輸入有誤,請重新輸入:">。while(f!=0> 。 void search(>/*查找模塊 */int i,k,f。struct student s。k=-1。system("CLS">。 /*清屏*/ pr
28、intf("nnEnter name that you wang to search! num:">。 scanf("%s",&s.num>。 /*輸入要查找的學生的學號 */ printf("n NO :name Chinese Math English Max_coursen">。for (i=0。 i<n。 i+>/* 查找信息 */ if(strcmp(s.num,stui.num>=0> k=i。/*找到要查找的學生記錄 */printf_one(k>。 /* 調(diào)用顯示
29、一個記錄函數(shù) */ break。 if(k=-1> printf("nnNO exist!"> 。 printf(" 返回主菜單請按數(shù)字 0n">。數(shù)學、averagedo scanf("%d",&f> 。 if(f=0>menu(>。break。else printf("輸入有誤,請重新輸入:"> while(f!=0> 。/*函數(shù)聲明 */void order_ave(>。void order_Chinese(>。void order_Math
30、(>。void order_English(>。 void order(>/* 排序模塊 */int i,j,f,m,w1 。struct student s。system("CLS">。dosystem("CLS">。puts("ttt 學生成 績排序nn">。puts("t*ORDER*n">。puts("ttt1.對每一位學生的平均成績排序n" puts("ttt2.對語文課成績排序n"。puts("ttt3.對數(shù)學課
31、成績排序n"。puts("ttt4.對英語課成績排序n"。 puts("ttt5.返回主菜單 n"。puts("t*n"printf("Choice your number(1-5>: bb"> 。 scanf("%d",&m> 。if(m<0|m>5> w1=1 。printf("your choice is not between 1 and 5,Please input again:">。getchar(>
32、;。else w1=0。while(w1=1> 。 switch(m> /*選擇功能 */case 1:order_ave(>。 break。case 2:order_Chinese(> break。case 3:order_Math(> break。case 4:order_English(>。 break。case 5:menu(>。printf("The ordered data is:n">。browse(>。void order_ave(>/*對平均成績從小到大進行冒泡排序法 */int i,j,f 。s
33、truct student s。system("CLS">。for(i=0。 i<n。 i+>for(j=i 。 j<n 。 j+>if(stui.ave>stuj.ave>s=stui。stui=stuj 。stuj=s。puts("n">。printf(" 每位學生的平均成績從小到大的排序結(jié)果 n">。printf(" NO : name average n">。for(i=0。 i<n。 i+>printf("%3s :%3s
34、%11fn",stui.num,,stui.ave> 。 puts("n">。printf(" 返回上一級請按數(shù)字 0n">。doscanf("%d",&f> 。if(f=0>order(>。 break。else printf("輸入有誤,請重新輸入:">。while(f!=0> 。void order_Ch in ese(>/*對語文成績從小到大進行冒泡排序法*/int i,j,f 。struct student s。sy
35、stem("CLS">。for(i=0。 i<n。 i+>for(j=i 。 j<n。 j+>if(stu_Chinesei.score0>stu_Chinesej.score0>s=stu_Chinesei。 stu_Chinesei=stu_Chinesej。 stu_Chinesej=s。puts("n">。printf(" 語文成績從小到大的排序結(jié)果 n">。printf(" NO : nameChinese n">。for(i=0。 i<n
36、。 i+>printf("%3s :%5s %6dn",stu_Chinesei.num,stu_C,stu_Chin esei.score0>。puts("n">。printf(" 返回上一級請按數(shù)字 0n">。doscanf("%d",&f> 。if(f=0>order(>。break。else printf("輸入有誤,請重新輸入:">。while(f!=0> 。void order_Math(>/
37、*對數(shù)學成績從小到大進行冒泡排序法*/int i,j,f。struct student s。system("CLS">。for(i=0。 i<n。 i+>for(j=i 。 j<n。 j+>if(stu_Mathi.score1>stu_Mathj.score1>s=stu_Mathi。 stu_Mathi=stu_Mathj 。 stu_Mathj=s。puts("n">。printf(" 數(shù)學成績從小到大的排序結(jié)果 n">。printf(" NO : name Mat
38、h n"> 。for(i=0 。 i<n。 i+>printf("%3s :%5s %6dn",stu_Mathi.num,stu_M,stu_Mathi.sc ore1> 。puts("n">。printf(" 返回上一級請按數(shù)字 0n">。doscanf("%d",&f> 。if(f=0>order(>。break。else printf("輸入有誤,請重新輸入:">。while(f!=0> 。void order_English(>/* 對英語成績從小到大進行冒泡排序法 */int i,j,f。struct student s。system("CLS">。for(i=0。 i<n。 i+>for(j=i 。 j<n。 j+>if(stu_Englishi.score2>s
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 包藥機智能控制算法-洞察闡釋
- 水產(chǎn)加工品品質(zhì)安全監(jiān)管-洞察闡釋
- 紙漿行業(yè)環(huán)境影響報告的編制與分析-洞察闡釋
- 數(shù)字經(jīng)濟與就業(yè)模式革新-洞察闡釋
- 基于VRAR技術(shù)的建筑裝飾創(chuàng)新設(shè)計方法研究-洞察及研究
- 內(nèi)蒙古師范大學《酒店活動策劃與管理》2023-2024學年第二學期期末試卷
- 瀘州醫(yī)療器械職業(yè)學院《文學選讀》2023-2024學年第二學期期末試卷
- 南寧理工學院《現(xiàn)代交換與路由技術(shù)》2023-2024學年第二學期期末試卷
- 廣州工程技術(shù)職業(yè)學院《中東歐國家概論》2023-2024學年第二學期期末試卷
- 浙江警官職業(yè)學院《數(shù)學文化選講》2023-2024學年第二學期期末試卷
- 敏感肌膚的護理方法
- 移動通信汛期安全課件
- 2025年江西江銅集團招聘筆試參考題庫含答案解析
- 阿爾茨海默病源性輕度認知障礙診療中國專家共識2024解讀
- 2025年免疫規(guī)劃工作計劃
- 2024年-2025年公路養(yǎng)護工理論知識考試題庫
- 針刺傷預(yù)防與處理-2024中華護理學會團體標準
- 四年級校本課程教材-全冊(自編教材)
- 酒店與代理合作協(xié)議書范文模板
- 天然氣的高壓物性課件
- 多模態(tài)數(shù)據(jù)融合方法
評論
0/150
提交評論