版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 《C語言程序設(shè)計(jì)》</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 題 目: 學(xué)生測(cè)評(píng)系統(tǒng)____</p><p> 院 (系): 信息科學(xué)與工程學(xué)院 </p><p> 專業(yè)班級(jí):___軟件工程
2、1202班___</p><p> 學(xué)生姓名: </p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)教師: </p><p> 20 13 年 6 月 8 日至20 13 年 6 月 21
3、 日</p><p> C語言程序設(shè)計(jì) 課程設(shè)計(jì)任務(wù)書</p><p><b> 目 錄</b></p><p> 1 系統(tǒng)需求分析………………………………………………………………………5</p><p> 1.1系統(tǒng)概述………………………………………………………………………5 </p>&
4、lt;p> 1.2 系統(tǒng)功能分析…………………………………………………………………5</p><p> 2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)…………………………………………………………………………6</p><p> 3 系統(tǒng)實(shí)現(xiàn)………………………………………………………………………………8~21</p><p> 4 系統(tǒng)測(cè)試…………………………………………………………
5、……………………22~28</p><p> 結(jié)論………………………………………………………………………………………29</p><p> ?。ㄒ螅耗夸涱}頭用三號(hào)黑體字居中書寫,隔行書寫目錄內(nèi)容。目錄中各級(jí)題序及題標(biāo)用小四號(hào)黑體字)</p><p><b> 1 系統(tǒng)需求分析</b></p><p><b&g
6、t; 1.1 系統(tǒng)概述</b></p><p> 現(xiàn)代人社會(huì)交往越來越多,紙質(zhì)的測(cè)評(píng)系統(tǒng)已經(jīng)不能滿足我們的要求,更新麻煩,查詢困難,錄入也不方便等缺點(diǎn)是紙質(zhì)測(cè)評(píng)系統(tǒng)所不能克服的。在此情況下,迫切需要一個(gè)電子版的學(xué)生測(cè)評(píng)系統(tǒng)來滿足我們的需求,對(duì)學(xué)生測(cè)評(píng)系統(tǒng)進(jìn)行必要的管理,滿足人們對(duì)記錄提供了極大的方便??紤]到要對(duì)學(xué)生測(cè)評(píng)系統(tǒng)進(jìn)行快速檢索,所以采用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)通訊錄信息管理系統(tǒng)。要求實(shí)現(xiàn)插入、查找、
7、刪除、修改、保存等基本功能,人機(jī)界面友好,使用文字化界面。所以便產(chǎn)生該學(xué)生測(cè)評(píng)系統(tǒng)。</p><p> 1.2 系統(tǒng)功能分析</p><p> 該系統(tǒng)通過結(jié)構(gòu)體數(shù)組或鏈表實(shí)現(xiàn)了對(duì)學(xué)生測(cè)評(píng)信息的批量錄入、瀏覽、修改、刪除、添加、查詢以及考試平均成績(jī)和綜合測(cè)評(píng)總分自動(dòng)計(jì)算功能。具體要求如下:</p><p> 學(xué)生的測(cè)評(píng)信息為:學(xué)號(hào)、姓名、性別、家庭住址、聯(lián)系電話
8、、語文成績(jī)、數(shù)學(xué)成績(jī)、外語成績(jī)、考試平均成績(jī)、同學(xué)互評(píng)分、品德成績(jī)、教師評(píng)分、綜合測(cè)評(píng)總分,試設(shè)計(jì)學(xué)生測(cè)評(píng)信息管理系統(tǒng),使之能提供以下功能:</p><p><b> (1) 基本功能:</b></p><p> ?、傧到y(tǒng)以菜單方式工作:提供一個(gè)字符主菜單使用戶可以選擇不同的字符來實(shí)現(xiàn)系統(tǒng)的各個(gè)功能,各個(gè)功能實(shí)現(xiàn)后又能夠返回到主菜單。</p><
9、p> ?、谂夸浫牍δ埽涸阡浫氲倪^程中,通過詢問用戶是否繼續(xù)錄入的方法來錄入多個(gè)學(xué)生的測(cè)評(píng)信息(每個(gè)學(xué)生考試平均成績(jī)和綜合測(cè)評(píng)總分信息不用錄入)。</p><p> ?、燮骄煽?jī)和綜合測(cè)評(píng)總分自動(dòng)計(jì)算:根據(jù)考試平均成績(jī)=(語文+數(shù)學(xué)+外語)/3 ,計(jì)算出學(xué)生的考試平均成績(jī),根據(jù)綜合測(cè)評(píng)總分=考試成績(jī)*0.6+同學(xué)互評(píng)分*0.1+品德成績(jī)*0.1+老師評(píng)分*0.2,計(jì)算出學(xué)生的綜合測(cè)評(píng)總分。</p>
10、;<p> ?、転g覽功能:按一定的格式顯示所有學(xué)生測(cè)評(píng)信息。</p><p> ?、菪薷墓δ埽狠斎胍薷牡膶W(xué)號(hào),先對(duì)該學(xué)號(hào)進(jìn)行查詢,如果查詢成功,則可以根據(jù)提示對(duì)該學(xué)生測(cè)評(píng)每項(xiàng)信息(學(xué)生考試平均成績(jī)和綜合測(cè)評(píng)總分信息除外)進(jìn)行修改,當(dāng)修改了語文成績(jī)、數(shù)學(xué)成績(jī)、外語成績(jī)、同學(xué)互評(píng)分、品德成績(jī)、教師評(píng)分后,能夠自動(dòng)修改學(xué)生的考試平均成績(jī)和綜合測(cè)評(píng)總分的信息,如果查詢不成功,則顯示相應(yīng)的提示信息。<
11、/p><p> ⑥刪除功能:輸入要?jiǎng)h除的學(xué)號(hào),先對(duì)該學(xué)號(hào)進(jìn)行查詢,如果查詢成功,則刪除該學(xué)生測(cè)評(píng)所有信息,如果查詢不成功,則顯示相應(yīng)的提示信息。</p><p> ?、咛砑庸δ埽狠斎胍砑拥膶W(xué)號(hào),先對(duì)該學(xué)號(hào)進(jìn)行查詢,如果查詢成功,則提示輸入的學(xué)號(hào)已存在的信息,并要求能夠重新輸入,如果查詢不成功,則輸入該學(xué)生測(cè)評(píng)的其他信息(考試平均成績(jī)和綜合測(cè)評(píng)總分信息不添加),并實(shí)現(xiàn)對(duì)考試平均成績(jī)和綜合測(cè)評(píng)
12、總分自動(dòng)計(jì)算,從而完成一個(gè)學(xué)生測(cè)評(píng)信息的錄入。</p><p> ⑧查詢功能:能夠分別按輸入的學(xué)號(hào)和姓名查詢學(xué)生測(cè)評(píng)的信息,如果查詢成功,則按一定的格式顯示查詢結(jié)果,如果查詢不成功,則顯示相應(yīng)的提示信息。</p><p><b> (2)擴(kuò)展功能:</b></p><p> ?、?保存功能:首先提示用戶輸入保存的文件名,將結(jié)構(gòu)體數(shù)組或鏈表中
13、的通訊錄信息保存在指定的文件中。</p><p><b> 2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)</b></p><p><b> 2.1 系統(tǒng)結(jié)構(gòu)圖</b></p><p> 2.2 函數(shù)詳細(xì)說明</p><p> main();主函數(shù) indesk(); 主界面函數(shù)</p>
14、<p> luru();錄入函數(shù) liulan();瀏覽函數(shù)</p><p> update_record();修改函數(shù) delete_record();刪除函數(shù)</p><p> add(); 添加函數(shù) search(); 查找函數(shù)</p><p> save_to_file();保存函數(shù)
15、 read(); 讀取數(shù)據(jù)函數(shù)</p><p> average();求平均值函數(shù) paixu();排序函數(shù)</p><p> Main是主函數(shù),程序首先是從主函數(shù)開始運(yùn)行的。在主函數(shù)中要判斷你是第幾次進(jìn)入系統(tǒng)。</p><p> luru是錄入函數(shù),可以批量錄入學(xué)生的信息,他被主函數(shù)所調(diào)用,也被主界面函數(shù)調(diào)用。</p>
16、<p> Index函數(shù)是顯示主界面的,提供用戶所進(jìn)行的一些操作選項(xiàng)。被反復(fù)調(diào)用,與其他函數(shù)(除主函數(shù))進(jìn)行相互調(diào)用。</p><p> liulan是瀏覽函數(shù),調(diào)用排序函數(shù)按學(xué)號(hào)的從小到大進(jìn)行排序后瀏覽所有的學(xué)生信息。</p><p> Update-record是更新函數(shù),可以修改學(xué)生的信息。</p><p> Deleted-record是刪
17、除函數(shù),可以刪除學(xué)生的信息。</p><p> add是添加函數(shù),可以添加新的學(xué)生信息。</p><p> Save_to_file是保存函數(shù),可以保存用戶所錄入的學(xué)生的信息。</p><p><b> 3 系統(tǒng)實(shí)現(xiàn)</b></p><p> 3.1學(xué)生結(jié)構(gòu)體數(shù)組的定義和基本的頭文件聲明</p>&
18、lt;p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #include<string.h></p><p> #define N 100</p><p> int n=0,t=0;</p><p>
19、 struct student_assess//定義一個(gè)結(jié)構(gòu)體數(shù)組。</p><p> {char num[30];</p><p> char name[30];</p><p> char sex[10];</p><p> char address[30];</p><p> char phonenum
20、ber[30];</p><p> float chinese_score;</p><p> float math_score;</p><p> float english_score;</p><p> float class_a_score;</p><p> float quality_score;
21、</p><p> float te_a_score;</p><p><b> }s[N];</b></p><p><b> 3.2主函數(shù)</b></p><p> 主函數(shù)判斷用戶是否是第一次進(jìn)入系統(tǒng),如果是的話就調(diào)用錄入函數(shù),不是的話就調(diào)用讀入函數(shù)和主界面函數(shù)。</p>
22、<p> void main()//主函數(shù)</p><p><b> { char a;</b></p><p> void luru();</p><p> void indesk();</p><p> void read();</p><p> printf("
23、;你是第一次登陸嗎?< y 是, n 不是>\n");</p><p> scanf("%c",&a);</p><p> if(a=='y') luru();</p><p> if(a=='n') </p><p><b> { read(
24、);</b></p><p><b> indesk();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 3.3 主界面函數(shù)</b></p><p&g
25、t; 顯示系統(tǒng)的所有功能,讓用戶選擇。</p><p> void indesk()//主菜單函數(shù)</p><p> {void luru();</p><p> void liulan();</p><p> void update_record();</p><p> void delete_reco
26、rd();</p><p> void add();</p><p> void search();</p><p> void save_to_file();</p><p><b> int x;</b></p><p> printf("****-----歡迎來到學(xué)生測(cè)評(píng)
27、系統(tǒng)------****\n");</p><p> printf("*--------軟工1202------李偉--------*\n");</p><p> printf("選擇要執(zhí)行的功能\n");</p><p> printf("1 錄入學(xué)生信息\n2 瀏覽所有學(xué)生信息\n3 修改學(xué)生信息
28、\n4 刪除學(xué)生記錄\n5 添加新學(xué)生\n6 查詢學(xué)生信息\n7 保存學(xué)生信息\n8 退出系統(tǒng)\n");</p><p> printf("*----------------------------------*\n");</p><p> scanf("%d",&x);</p><p> if (x=
29、=1) {system("cls");luru();}//錄入學(xué)生信息</p><p> if(x==2) {system("cls");liulan();}//瀏覽所有學(xué)生信息</p><p> if(x==3) {system("cls");update_record();}//修改學(xué)生信息</p><
30、p> if(x==4) delete_record();//刪除學(xué)生記錄</p><p> if(x==5) {system("cls");add();}//添加新學(xué)生</p><p> if(x==6) {system("cls");search();}//查詢學(xué)生信息</p><p> if(x==7) sa
31、ve_to_file();//保存學(xué)生信息</p><p> if(x==8) exit(0);</p><p><b> }</b></p><p><b> 3.4 錄入函數(shù)</b></p><p> 可以批量錄入學(xué)生的信息。</p><p> void lur
32、u()//批量錄入函數(shù)</p><p><b> { int x;</b></p><p> printf("請(qǐng)輸入學(xué)生信息:\n");</p><p> for(;t<N;t++)</p><p> { printf("學(xué)號(hào) 姓名 性別 家庭住址 聯(lián)系電話 語文成績(jī)
33、數(shù)學(xué) 外語 同學(xué)評(píng) 品德 教師評(píng)\n");</p><p> scanf("%s%s%s%s%s%f%f%f%f%f%f",s[t].num,s[t].name,s[t].sex,s[t].address,s[t].phonenumber,&s[t].chinese_score,&s[t].math_score,&s[t].english_score,&am
34、p;s[t].class_a_score,&s[t].quality_score,&s[t].te_a_score);</p><p><b> n=n+1;</b></p><p> printf("請(qǐng)選擇:\n1 繼續(xù)錄入學(xué)生\n2 停止錄入返回主菜單\n");</p><p> scanf(&qu
35、ot;%d",&x);</p><p><b> if(x==1) </b></p><p><b> continue;</b></p><p><b> if(x==2) </b></p><p><b> indesk();</b
36、></p><p><b> }</b></p><p><b> }</b></p><p><b> 3.5瀏覽函數(shù)</b></p><p> 通過調(diào)用排序函數(shù)來按學(xué)號(hào)順序輸出所有學(xué)生的信息。</p><p> void liulan
37、()//瀏覽函數(shù)</p><p><b> { int x;</b></p><p> void paixu();</p><p><b> paixu();</b></p><p> printf("請(qǐng)輸入1可返回主菜單:");</p><p>
38、; scanf("%d",&x);</p><p> if(x==1) indesk();</p><p><b> }</b></p><p><b> 3.6修改函數(shù)</b></p><p> 先查找學(xué)生,然后進(jìn)行修改。</p><p&g
39、t; void update_record()//修改學(xué)生信息函數(shù)</p><p> { int i,g,count;</p><p> char b[30];</p><p> printf("請(qǐng)輸入學(xué)號(hào):");</p><p> scanf("%s",&b);</p>
40、;<p> for(i=0;i<=n;i++)</p><p> { if(strcmp(b,s[i].num)==0)</p><p> { printf("該學(xué)生信息為:學(xué)號(hào):%s 姓名:%s 性別:%s 家庭住址:%s 聯(lián)系電話:%s\n語文成績(jī):%.2f 數(shù)學(xué):%.2f 英語:%.2f 同學(xué)互評(píng):%.2f 品德:%.2f 老師互評(píng):%.2
41、f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score);</p><p><b> count=i;<
42、;/b></p><p> printf("請(qǐng)輸入修改后的學(xué)生信息:(按以上順序輸入)\n");</p><p> scanf("%s%s%s%s%s%f%f%f%f%f%f",s[count].num,s[count].name,s[count].sex,s[count].address,s[count].phonenumber,&
43、;s[count].chinese_score,&s[count].math_score,&s[count].english_score,&s[count].class_a_score,&s[count].quality_score,&s[count].te_a_score);</p><p> average(s[count]);</p><p>
44、; printf("1 返回主菜單");</p><p> scanf("%d",&g);</p><p> if(g==1) indesk();</p><p><b> break;</b></p><p><b> }</b></
45、p><p><b> }</b></p><p><b> if(i>n) </b></p><p> printf("沒有找到學(xué)號(hào)是【%s】的學(xué)生。\n1 返回主菜單",b);</p><p> scanf("%d",&g);</p&
46、gt;<p> if(g==1) indesk();</p><p><b> }</b></p><p><b> 3.7刪除函數(shù)</b></p><p> 先通過學(xué)號(hào)來查詢?nèi)缓髮?shí)現(xiàn)刪除。</p><p> void delete_record()//刪除函數(shù)</p&
47、gt;<p> { void index();</p><p> int i,x,j;</p><p> char g[30];</p><p> system("cls");</p><p> printf("請(qǐng)輸入要?jiǎng)h除的學(xué)號(hào):\n");</p><p
48、> scanf("%s",g);</p><p> for(j=0;j<n;j++)</p><p><b> { </b></p><p> if(strcmp(g,s[j].num)==0)</p><p> { printf("存在該生信息,刪除該生信息:
49、\n");</p><p> for(i=j;i<n;i++)</p><p><b> {</b></p><p> strcpy(s[i].num,s[i+1].num);</p><p> strcpy(s[i].name,s[i+1].name);</p><p>
50、 strcpy(s[i].sex,s[i+1].sex);</p><p> strcpy(s[i].phonenumber,s[i+1].phonenumber);</p><p> strcpy(s[i].address,s[i+1].address);</p><p> strcpy(s[i].address,s[i+1].address);</
51、p><p> s[i].chinese_score=s[i+1].chinese_score;</p><p> s[i].english_score=s[i+1].english_score;</p><p> s[i].math_score=s[i+1].math_score;</p><p> s[i].class_a_score=
52、s[i+1].class_a_score;</p><p> s[i].quality_score=s[i+1].quality_score;</p><p> s[i].te_a_score=s[i+1].te_a_score;</p><p><b> n=n-1;</b></p><p><b>
53、 } </b></p><p> printf("恭喜你刪除成功!\n"); </p><p><b> }</b></p><p> else if(j==n-1)printf("不存在這個(gè)學(xué)生\n");</p><p><b> }</b&g
54、t;</p><p> printf("1 返回主菜單\n 2 繼續(xù)刪除\n");</p><p> scanf("%d",&x);</p><p> if(x==1) indesk();</p><p> else delete_record();</p><p&g
55、t;<b> }</b></p><p><b> 3.8添加函數(shù)</b></p><p> 先查找是否存在該學(xué)生,如果不存在就進(jìn)行添加,存在的話就提示該學(xué)生信息存在不用添加。</p><p> void add()//添加新學(xué)生函數(shù)</p><p> { int i,m,x;&l
56、t;/p><p> char b[30];</p><p> void paixu();</p><p> printf("請(qǐng)輸入要添加學(xué)生的學(xué)號(hào):");</p><p> scanf("%s",&b);</p><p> for(i=0;i<n;i++)&l
57、t;/p><p> {if(strcmp(s[i].num,b)==0) </p><p> {printf("該學(xué)生存在(不用添加)信息為:學(xué)號(hào)%s 姓名%s 性別%s 家庭住址%s 聯(lián)系電話%s\n語文成績(jī)%.2f 數(shù)學(xué)%.2f 英語%.2f 同學(xué)互評(píng)%.2f 品德%.2f 老師互評(píng)%.2f\n",s[i].num,s[i].name,s[i].sex,s[i].
58、address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score);</p><p><b> break;}</b></p><p><b> }<
59、/b></p><p><b> if(i>=n)</b></p><p> { printf("該學(xué)號(hào)不存在可以添加\n");</p><p> printf("請(qǐng)按下列順序輸入\n學(xué)號(hào) 姓名 性別 家庭住址 聯(lián)系電話 語文成績(jī) 數(shù)學(xué) 外語 同學(xué)評(píng)分 品德 教師評(píng)分\n");</
60、p><p> scanf("%s%s%s%s%s%f%f%f%f%f%f",s[n].num,s[n].name,s[n].sex,s[n].address,s[n].phonenumber,&s[n].chinese_score,&s[n].math_score,&s[n].english_score,&s[n].class_a_score,&s[n].
61、quality_score,&s[n].te_a_score);</p><p><b> n=n+1;</b></p><p> printf("共有%d個(gè)學(xué)生\n",n);</p><p><b> }</b></p><p> printf("您可
62、以選擇\n1按學(xué)號(hào)順序查看所有學(xué)生信息。\n2繼續(xù)添加。\n");</p><p> scanf("%d",&m);</p><p><b> if(m==1) </b></p><p> { paixu();</p><p> printf("請(qǐng)輸入1可返回主菜單
63、:");</p><p> scanf("%d",&x);</p><p> if(x==1) indesk();</p><p><b> }</b></p><p> if(m==2) add();</p><p><b> }<
64、/b></p><p><b> 3.9查詢函數(shù)</b></p><p> 可以分別按學(xué)號(hào)和姓名來查詢學(xué)生的信息。</p><p> void search()//查詢函數(shù)</p><p> { int i,x,k;</p><p> char a[20],b[30];</p
65、><p> void average(struct student_assess w);</p><p> printf("請(qǐng)輸入按何種方式查詢:\n1 按學(xué)號(hào)\n2 按姓名\n");</p><p> scanf("%d",&x);</p><p><b> if(x==1)&l
66、t;/b></p><p> { printf("按學(xué)號(hào)查詢,請(qǐng)輸入學(xué)號(hào):\n");</p><p> scanf("%s",a);</p><p> for(i=0;i<n;i++)</p><p><b> { </b></p><p
67、> if(strcmp(a,s[i].num)==0)</p><p><b> {</b></p><p> printf("存在該生信息\n");</p><p> printf("該學(xué)生信息為:學(xué)號(hào)%s 姓名%s 性別%s 家庭住址%s 聯(lián)系電話%s\n語文成績(jī)%.2f 數(shù)學(xué)%.2f 英語%.2
68、f同學(xué)評(píng)%.2f品德%.2f 老師評(píng)%.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score);</p><p>
69、 average(s[i]); </p><p> printf("1 繼續(xù)查找\n2 返回主菜單\n");</p><p> scanf("%d",&k);</p><p> if(k==1) search();</p><p> if(k==2) indesk();</p>
70、;<p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(i>=n) </b></p><p> { printf("沒有
71、找到這個(gè)學(xué)生\n1 繼續(xù)查找\n2 返回主菜單\n");</p><p> scanf("%d",&k);</p><p><b> }</b></p><p> if(k==1) search();</p><p> if(k==2) indesk();</p>
72、<p><b> }</b></p><p><b> if(x==2)</b></p><p> { printf("按姓名查詢,請(qǐng)輸入姓名:");</p><p> scanf("%s",b);</p><p> for(i=0;
73、i<n;i++)</p><p><b> { </b></p><p> if(strcmp(b,s[i].name)==0) </p><p> { printf("存在該生信息\n");</p><p> printf("該學(xué)生信息為:\n學(xué)號(hào)%s 姓名%s 性別%s
74、 家庭住址%s 聯(lián)系電話%s\n語文成績(jī)%.2f 數(shù)學(xué)%.2f 英語%.2f 同學(xué)互評(píng)%.2f 品德%.2f 老師互評(píng)%.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_sco
75、re,s[i].te_a_score);</p><p> average(s[i]);</p><p> printf("1 繼續(xù)查找\n2 返回主菜單\n");</p><p> scanf("%d",&k);</p><p> if(k==1) search();</p>
76、;<p> if(k==2) indesk();</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(i>=n) </b>
77、</p><p> { printf("沒有找到這個(gè)學(xué)生\n1 繼續(xù)查找\n2 返回主菜單\n");</p><p> scanf("%d",&k);</p><p><b> }</b></p><p> if(k==1) search();</p>
78、<p> if(k==2) indesk();</p><p><b> }</b></p><p><b> }</b></p><p><b> 3.10保存函數(shù)</b></p><p> 可以輸入一個(gè)文件名進(jìn)行保存。</p><
79、p> void save_to_file()//保存到文件函數(shù)</p><p><b> {</b></p><p><b> FILE*fp;</b></p><p><b> int i,x;</b></p><p> char filename[30];&
80、lt;/p><p> printf("請(qǐng)輸入文件名(在30個(gè)字符以內(nèi)):\n");</p><p> scanf("%s",filename);</p><p> if((fp=fopen(filename,"wb"))==NULL)</p><p><b> {<
81、;/b></p><p> printf("不能打開該文件\n");</p><p><b> return;</b></p><p><b> }</b></p><p> if(fwrite(&n,sizeof(int),1,fp)!=1)</p&
82、gt;<p> { printf("不能寫入\n");</p><p> printf("請(qǐng)輸入1可返回主菜單:");</p><p> scanf("%d",&x);</p><p> if(x==1) indesk();</p><p><
83、b> }</b></p><p> for(i=0;i<n;i++)</p><p> {if(fwrite(&s[i],sizeof(struct student_assess),1,fp)!=1)</p><p><b> {</b></p><p> printf(&
84、quot;不能寫入\n");</p><p> printf("請(qǐng)輸入1可返回主菜單:");</p><p> scanf("%d",&x);</p><p> if(x==1) indesk();</p><p><b> }</b></p>
85、<p> else printf("保存成功!\n");</p><p><b> }</b></p><p> fclose(fp);</p><p> indesk();</p><p><b> }</b></p><p>
86、<b> 3.11排序函數(shù)</b></p><p> 利用冒泡排序按學(xué)號(hào)從小到大輸出。</p><p> void paixu()//排序函數(shù)</p><p><b> {</b></p><p> int i,j,k;</p><p> char g[30],l
87、[30],m[10],f[30],z[30];</p><p> float r,t,y,u,w,q;</p><p> for(j=0;j<n-1;j++)</p><p><b> {</b></p><p> for(k=j+1;k<n;k++)</p><p><
88、b> { </b></p><p> if(strcmp(s[j].num,s[k].num)>0)</p><p><b> { </b></p><p> strcpy(g,s[j].num);strcpy(s[j].num,s[k].num);strcpy(s[k].num,g);</p>
89、<p> strcpy(l,s[j].name);strcpy(s[j].name,s[k].name);strcpy(s[k].name,l);</p><p> strcpy(m,s[j].sex);strcpy(s[j].sex,s[k].sex);strcpy(s[k].sex,m);</p><p> strcpy(f,s[j].address);strcpy(
90、s[j].address,s[k].address);strcpy(s[k].address,f);</p><p> strcpy(z,s[j].phonenumber);strcpy(s[j].phonenumber,s[k].phonenumber);strcpy(s[k].phonenumber,z);</p><p> r=s[j].math_score;s[j].math_
91、score=s[k].math_score;s[k].math_score=r;</p><p> t=s[j].chinese_score;s[j].chinese_score=s[k].chinese_score;s[k].chinese_score=t;</p><p> y=s[j].english_score;s[j].english_score=s[k].english_s
92、core;s[k].english_score=y;</p><p> u=s[j].quality_score;s[j].quality_score=s[k].quality_score;s[k].quality_score=u;</p><p> w=s[j].class_a_score;s[j].class_a_score=s[k].class_a_score;s[k].clas
93、s_a_score=w;</p><p> q=s[j].te_a_score;s[j].te_a_score=s[k].te_a_score;s[k].te_a_score=q;</p><p><b> }</b></p><p><b> }</b></p><p><b>
94、 }</b></p><p> printf("+---------------------------------------------------------------------------+\n");</p><p> printf("學(xué)號(hào) 姓名 性別 家庭住址 電話號(hào)碼 語文成績(jī) 數(shù)學(xué) 外語 同學(xué)互評(píng) 品德 教師評(píng)分\n"
95、;);</p><p> printf("+---------------------------------------------------------------------------+\n");</p><p> for(i=0;i<n;i++)</p><p> { printf("%s %s %s %s %s
96、 %.2f %.2f %.2f %.2f %.2f %.2f\n",s[i].num,s[i].name,s[i].sex,s[i].address,s[i].phonenumber,s[i].chinese_score,s[i].math_score,s[i].english_score,s[i].class_a_score,s[i].quality_score,s[i].te_a_score); </p>&
97、lt;p> average(s[i]);</p><p><b> }</b></p><p><b> }</b></p><p> 3.12求平均值函數(shù)</p><p> 將結(jié)構(gòu)體數(shù)組的一個(gè)變量傳給該函數(shù),再按公式計(jì)算出學(xué)生的平均分和綜合測(cè)評(píng)成績(jī)。</p><
98、p> void average(struct student_assess w)//計(jì)算平均值函數(shù)</p><p> { float score_1,score_2;</p><p> score_1=(w.chinese_score+w.math_score+w.english_score)/3.0;</p><p> printf("考試
99、平均成績(jī)?yōu)?%.2f",score_1); </p><p> score_2=score_1*0.6+w.class_a_score*0.1+w.quality_score*0.1+w.te_a_score*0.2;</p><p> printf("綜合測(cè)評(píng)總分:%.2f\n",score_2);</p><p><b&g
100、t; }</b></p><p><b> 4 系統(tǒng)測(cè)試</b></p><p> 4.1 主函數(shù)功能測(cè)試</p><p> 在主函數(shù)中,通過詢問用戶是否是第一次進(jìn)入系統(tǒng)。若果用戶是的就會(huì)輸入“y”那么就會(huì)調(diào)用相應(yīng)的批量錄入函數(shù)執(zhí)行結(jié)果如下:</p><p> 如果用戶輸入的“n”就會(huì)調(diào)用read函
101、數(shù)從文件當(dāng)中讀取相應(yīng)的數(shù)據(jù)。</p><p> 4.2 批量錄入函數(shù)功能測(cè)試</p><p> 在批量錄入函數(shù)當(dāng)中有計(jì)算錄入人數(shù)的語句,錄入一條將全局變量n加一。在詢問用戶是否繼續(xù)錄入,具體執(zhí)行結(jié)果如下:</p><p> 4.3瀏覽函數(shù)功能測(cè)試</p><p> 當(dāng)用戶在主菜單選擇2時(shí),就會(huì)按學(xué)號(hào)的大小順序?yàn)g覽所有學(xué)生的信息。并且會(huì)
102、按照表頭順序顯示。</p><p> 4.4主界面函數(shù)功能測(cè)試</p><p> 主界面函數(shù)提供給用戶選擇執(zhí)行相應(yīng)的功能。</p><p> 4.5修改函數(shù)功能測(cè)試</p><p> 當(dāng)執(zhí)行修改函數(shù)時(shí)會(huì)提示用戶請(qǐng)輸入學(xué)號(hào),然后按學(xué)號(hào)查找該學(xué)生是否存在。如果存在就顯示該生信息然后進(jìn)行修改。如果不存在就提醒用戶該生不存在。</p&g
103、t;<p> 4.6刪除函數(shù)功能測(cè)試</p><p> 先查詢,再刪除。執(zhí)行如下:</p><p> 刪除后可以返回主菜單選擇2瀏覽所有學(xué)生信息。如下表:</p><p> 4.7查詢函數(shù)功能測(cè)試</p><p> 執(zhí)行查詢函數(shù)時(shí),用戶可以選擇按學(xué)號(hào)和按姓名兩種不同的方式進(jìn)行查詢,如果不存在就提示沒有這個(gè)學(xué)生。然后在選
104、擇其他功能執(zhí)行,如下圖:</p><p> 如果存在的話,就按一定的格式顯示該學(xué)生的信息。如下圖:</p><p> 4.8添加函數(shù)功能測(cè)試</p><p> 先輸入學(xué)號(hào),按學(xué)號(hào)進(jìn)行查找該學(xué)生是否存在,如果不存在就提示用戶可以添加。執(zhí)行如下:添加之后可以選擇繼續(xù)添加和瀏覽所有學(xué)生信息。</p><p> 如果學(xué)生存在的話就提示用戶該生
105、存在不用添加。</p><p> 4.9保存函數(shù)功能測(cè)試</p><p> 保存函數(shù)可以提示用戶輸入文件名進(jìn)行保存,保存成功之后自動(dòng)返回主界面函數(shù)。</p><p><b> 結(jié)論</b></p><p> 這次課程設(shè)計(jì)的題目是學(xué)生測(cè)評(píng)系統(tǒng)。從看到課程設(shè)計(jì)任務(wù)書書開始我就一心一意的做這個(gè)系統(tǒng),希望把自己今年來所學(xué)
106、到的知識(shí)運(yùn)用到這個(gè)系統(tǒng)上面。我開始就一條一條的寫代碼,一個(gè)字母一個(gè)字母的寫進(jìn)我的程序當(dāng)中。我以為這個(gè)系統(tǒng)很簡(jiǎn)單,只要寫出了代碼就可以實(shí)現(xiàn)各個(gè)功能,但事實(shí)上并非如此。做一個(gè)系統(tǒng)不僅僅是寫代碼的問題,更注重的是考驗(yàn)我們綜合運(yùn)用所有知識(shí)的能力。我們?nèi)绻鰹橐幻嬲能浖ぷ魅藛T,那么我需要做的還有需求分析,最終的系統(tǒng)實(shí)現(xiàn),和客戶的溝通等等。</p><p> 最重要的一點(diǎn)是合作和交流,一個(gè)大型的程序我們一個(gè)的想法肯定
107、是不全面的,一個(gè)人的思路也存在著缺陷。所以要學(xué)會(huì)去借鑒和交流,可能我想出來的你沒有想出了,你想出來的我沒有想出來。通過相互的補(bǔ)充我們的程序才會(huì)接近完美。</p><p> 所以在這次課程設(shè)計(jì)當(dāng)中,我明白了一名合格的程序工作人員需要具備的一些能力。也更加堅(jiān)定了我學(xué)習(xí)的目標(biāo)。</p><p> 在具體的細(xì)節(jié)方面,我認(rèn)為做程序?qū)懘a必須有耐心和毅力,換有細(xì)心。當(dāng)然也要有興趣。這樣才會(huì)堅(jiā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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)報(bào)告--學(xué)生測(cè)評(píng)系統(tǒng)
- 課程設(shè)計(jì)學(xué)生綜合測(cè)評(píng)系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生綜合測(cè)評(píng)系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生綜合測(cè)評(píng)系統(tǒng)
- 《學(xué)生管理系統(tǒng)》課程設(shè)計(jì)報(bào)告
- 學(xué)生管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生選課系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生選課系統(tǒng)-課程設(shè)計(jì)報(bào)告
- 學(xué)生管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生選課系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生考勤系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 學(xué)生選課系統(tǒng)設(shè)計(jì)報(bào)告課程設(shè)計(jì)
- 學(xué)生選課管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告學(xué)生管理系統(tǒng)
- 課程設(shè)計(jì)報(bào)告---學(xué)生信息查詢系統(tǒng)
- uml課程設(shè)計(jì)報(bào)告---學(xué)生管理系統(tǒng)
- java學(xué)生管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生考勤管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)報(bào)告---學(xué)生考試系統(tǒng)
評(píng)論
0/150
提交評(píng)論