第一篇:課程設(shè)計(jì)報(bào)告 C語(yǔ)言
課 程 報(bào) 告 課 程 名 稱(chēng): 專(zhuān) 業(yè) 班 級(jí) : 學(xué) 生 姓 名 : 學(xué) 號(hào) : 程序設(shè)計(jì)實(shí)踐 ****** 20104683**** 任 課 教 師 : 學(xué) 2010期 :2010-2011 學(xué)年第二學(xué)期 課程報(bào)告任務(wù)書(shū) 課程報(bào)告任務(wù)書(shū) 報(bào)告 題 目 圖書(shū)信息管理系統(tǒng) 開(kāi)發(fā)一個(gè)圖書(shū)信息管理系統(tǒng),圖書(shū)信息包括:圖書(shū)編號(hào)、書(shū)名、作者、出版社、類(lèi)別、出版時(shí)間、價(jià)格等基本信息(也可以根據(jù)自己情況進(jìn)行擴(kuò)充,比如是否借出、庫(kù)存量 等)。使之能提供以下基本功能 基本功能 基本功能:(1)圖書(shū)信息錄入功能(圖書(shū)信息用文件保存)--輸入?(2)圖書(shū)信息瀏覽功能--輸出 主要 內(nèi)容(3)查詢(xún)功能(至少一種查詢(xún)方式)、排序功能(至少一種排序方式): ? ①按書(shū)名查詢(xún) ②按作者名查詢(xún) ③ 按照價(jià)錢(qián)排序 ④按出版時(shí)間排序等等(4)圖書(shū)信息的刪除與修改 擴(kuò)展功能:可以按照自己的程度進(jìn)行擴(kuò)展。比如(1)簡(jiǎn)單的權(quán)限處理(2)報(bào)表打 功能 印功能(3)甚至根據(jù)自己情況,可以加上學(xué)生信息,并擴(kuò)充為圖書(shū)借閱系統(tǒng)。(4)模糊查詢(xún)(5)綜合查詢(xún)(6)統(tǒng)計(jì)功能 比如統(tǒng)計(jì)處某一類(lèi)別的圖書(shū)信息 或 篩 選出小于指定數(shù)量庫(kù)存的圖書(shū)信息等等,總之,可以根據(jù)自己需求進(jìn)行分析功能。
一、提交材料應(yīng)包括:(1)系統(tǒng)源代碼(2)課程報(bào)告
二、整個(gè)設(shè)計(jì)過(guò)程具體要求(1)需求分析 需求分析 任務(wù) 要求 要求學(xué)生對(duì)案例系統(tǒng)進(jìn)行分析,設(shè)計(jì)出需要完成的功能,完善 各個(gè)模塊的調(diào)用關(guān)系;(2)設(shè)計(jì)過(guò)程 要求學(xué)生進(jìn)一步明確各模塊調(diào)用關(guān)系,進(jìn)一步完善模塊函數(shù)細(xì)節(jié) 設(shè)計(jì)過(guò)程(函數(shù)名、參數(shù)、返回值等)(3)實(shí)現(xiàn)過(guò)程 要求學(xué)生養(yǎng)成良好的編碼習(xí)慣、完成各個(gè)模塊并進(jìn)行測(cè)試,最終 實(shí)現(xiàn)過(guò)程 完成系統(tǒng)整體測(cè)試;(4)總結(jié)階段 按照要求完成系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)報(bào)告,并進(jìn)行總結(jié)、答辯??偨Y(jié)階段 報(bào)告撰寫(xiě)情況(報(bào)告撰寫(xiě)情況(30 分)內(nèi)容 規(guī)范程度 程序測(cè)試 20 分 5分 5分 系統(tǒng)完成情況(答辯情況(系統(tǒng)完成情況 30 分)答辯情況(40 分)完成 基本功能 擴(kuò)展功能 自述情況 答辯情況 20 分 10 分 10 分 30 分 成績(jī) 評(píng)定 總分 成績(jī)?cè)u(píng)定教師: 成績(jī)?cè)u(píng)定教師: 教師 1 需求分析 經(jīng)過(guò)大一上學(xué)期的理論學(xué)習(xí),在基礎(chǔ)實(shí)驗(yàn)的基礎(chǔ)上,本學(xué)期我們繼續(xù)開(kāi)設(shè)了 C 語(yǔ)言程序 設(shè)計(jì)實(shí)踐課。課程要求我們對(duì)已經(jīng)學(xué)習(xí)的基礎(chǔ)實(shí)驗(yàn)進(jìn)行整合與銜接處理,并最終形成一個(gè)系 統(tǒng)性質(zhì)的規(guī)模較大的程序。本次課程設(shè)計(jì)要求我們達(dá)到能獨(dú)立完成一個(gè)圖書(shū)管理系統(tǒng),完成后要求實(shí)現(xiàn)的功能有對(duì) 圖書(shū)信息的錄入、刪除、修改,瀏覽(即輸出)按某種方式查詢(xún)(要求至少一種查詢(xún)方式),按某種方式排序(要求至少一種排序方式)。當(dāng)然,我們可以根據(jù)自己的能力對(duì)系統(tǒng)進(jìn)行完善 性的拓展,例如自己加入簡(jiǎn)單的權(quán)限處理,統(tǒng)計(jì)功能,模糊查詢(xún)等,甚至可以拓展為圖書(shū)借 閱系統(tǒng)。通過(guò)整個(gè)程序的開(kāi)發(fā)過(guò)程,最終使我們掌握利用計(jì)算機(jī)解決實(shí)際問(wèn)題的基本方法,熟悉 C 語(yǔ)言開(kāi)發(fā)的全過(guò)程,提高綜合應(yīng)用 C 語(yǔ)言的能力、編程和調(diào)試能力,為學(xué)習(xí)計(jì)算機(jī)和通信 專(zhuān)業(yè)的后續(xù)課程打好專(zhuān)業(yè)基礎(chǔ)。2 概要設(shè)計(jì)(1)圖書(shū)信息及數(shù)據(jù)格式 圖書(shū)信息: 圖書(shū)信息包括圖書(shū)編號(hào)、圖書(shū)類(lèi)別、圖書(shū)書(shū)名、作者、出版社、出版時(shí)間、圖 書(shū)價(jià)格。數(shù)據(jù)格式: 本系統(tǒng)采用單向鏈表來(lái)對(duì)圖書(shū)信息進(jìn)行各項(xiàng)操作。其中圖書(shū)的編號(hào)為整型數(shù) 據(jù),價(jià)格為雙精度浮點(diǎn)型,其余的類(lèi)別、書(shū)名、作者、出版社與出版時(shí)間均為字符 串類(lèi)型 struct tushu_node{ int num;char leibie[20];char name[30];char author[20];char press[20];char time[20];double price;struct tushu_node*next;};一個(gè)結(jié)點(diǎn)的示意圖如下圖所示: num leibie name author press time price next(2)程序的整體框架 主菜單 錄 入(刪 除 修改)按 不 同方 式 查詢(xún) 瀏覽 按 不 同方 式 排序 統(tǒng) 計(jì) 圖書(shū) 數(shù) 目 幫助 退出 創(chuàng) 建 刪 除 修 改 編 書(shū) 價(jià) 號(hào) 名 格 價(jià) 格 出版 時(shí)間 子菜單(3)模塊劃分
1、int quanxian();
2、int inputchioce();
3、void save();
4、void save1();核查權(quán)限的函數(shù) 顯示主菜單的函數(shù) 保存鏈表為文件的函數(shù) 覆蓋以前的信息 保存鏈表為文件的函數(shù) 不覆蓋以前的信息 只在創(chuàng)建時(shí)調(diào)用
5、struct tushu_node* wjtolb();從文件中讀取數(shù)據(jù)并建立圖書(shū)信息的鏈表的函數(shù)
6、int luruxinxi();錄入學(xué)生信息的函數(shù) 創(chuàng)建圖書(shū)信息的函數(shù) 插入圖書(shū)信息的函數(shù)
7、struct tushu_node * luruxinxi_chuangjian();
8、struct tushu_node * luruxinxi_charu();
9、struct tushu_node * luruxinxi_shanchu();
10、struct tushu_node * luruxinxi_xiugai();刪除圖書(shū)信息的函數(shù) 修改圖書(shū)信息的函數(shù)
11、int liulantushu();瀏覽圖書(shū)信息的函數(shù)
12、int chaxuntushu();
13、void chaxuntushu_num();
14、void chaxuntushu_name();
15、void chaxuntushu_price();查詢(xún)圖書(shū)信息的函數(shù) 按編號(hào)查詢(xún)圖書(shū) 按書(shū)名查詢(xún)圖書(shū) 按價(jià)格查詢(xún)圖書(shū)
16、void paixutushu();
17、struct tushu_node* paixutushu_price();
18、struct tushu_node* paixutushu_time();
19、void sfjx();為圖書(shū)排序的函數(shù) 為圖書(shū)按價(jià)格排序的函數(shù) 為圖書(shū)按出版時(shí)間排序的函數(shù) 寫(xiě)個(gè)函數(shù) 判斷是否繼續(xù) 排序中使用 20、int tongjitushu_shumu();統(tǒng)計(jì)圖書(shū)數(shù)目的函數(shù)
21、void shiyongshuoming();使用說(shuō)明的函數(shù) 3 詳細(xì)設(shè)計(jì) 程序的主體設(shè)計(jì)思想是根據(jù)結(jié)構(gòu)化程序設(shè)計(jì)思想分模塊進(jìn)行設(shè)計(jì),有一個(gè)主函數(shù)和多個(gè) 自定義函數(shù)構(gòu)成。主函數(shù) 對(duì)于本程序來(lái)說(shuō),主函數(shù)很簡(jiǎn)單,就是定義了一個(gè)變量 chioce 用來(lái)接受核查用戶(hù)是否 有使用該管理系統(tǒng)的權(quán)限的函數(shù) quanxian()函數(shù)返回的值,若為 1 即用戶(hù)獲得了使用權(quán)限)(,則調(diào)出顯示主菜單的函數(shù)進(jìn)行具體操作 int { int chioce;chioce=quanxian();核查用戶(hù)是否有使用該管理系統(tǒng)的權(quán)限的函數(shù) main()if(chioce==1){ system(“cls”);inputchioce();} exit(0);} 權(quán)限函數(shù) 若取得權(quán)限 則返回值為 1 用來(lái)顯示主菜單的函數(shù) 核查用戶(hù)權(quán)限的函數(shù)使用 do-while 語(yǔ)句來(lái)限制用戶(hù)輸入密碼的次數(shù)僅為三次,并且為了 使界面更具親切感,會(huì)在用戶(hù)輸入密碼錯(cuò)誤時(shí)進(jìn)行提示引起用戶(hù)注意及提示剩余輸入次數(shù)。int quanxian(){ int m=1,n=3,flag=0;char mima[20];do{ printf(“nn 你 好,歡 迎 使 本 圖 書(shū) 信 息 管 理 系 統(tǒng)!n”);printf(“n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n”);printf(“【現(xiàn)在進(jìn)行權(quán)限核查】 次輸入密碼的機(jī)會(huì)!n”);printf(“n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n if(n==2||n==1){printf(”注意:你已輸入錯(cuò)誤%d 次 密碼:“,3-n,n);} if(n==3)printf(”剩余輸入次數(shù): %d 請(qǐng)輸入密碼:“,n);剩余輸入次數(shù): %d ”);請(qǐng)輸入 n--------------------友情提醒:你共有 3 scanf(“%s”,mima);//第一次輸入和輸錯(cuò)密碼后再次輸入顯示的也賣(mài)弄不同 if(strcmp(mima,“chenbo0916”)==0){ flag=1;return flag;} m++;n--;system(“cls”);}while(strcmp(mima,“chenbo0916”)!=0&&m<=3);// 限制輸入次數(shù)在 3 次之內(nèi) printf(“nn 對(duì)不起,你連續(xù)三次輸入密碼錯(cuò)誤,沒(méi)有使用該圖書(shū)管理系統(tǒng)的權(quán)限!n”);exit(0);} 顯示主菜單的函數(shù) 本程序?qū)⒅鞑藛螁为?dú)作為一個(gè)函數(shù)是為了讓用戶(hù)進(jìn)入一次系統(tǒng)可以進(jìn)行多項(xiàng)操作(即為 在每次用戶(hù)完成一個(gè)具體的操作后,都會(huì)有對(duì)是否繼續(xù)或返回主菜單有相應(yīng)的詢(xún)問(wèn),讓用戶(hù) 在想退出系統(tǒng)時(shí)才退出),基本思路是通過(guò)函數(shù)的嵌套調(diào)用來(lái)實(shí)現(xiàn)多項(xiàng)操作。這個(gè)函數(shù)的功能 就是顯示主菜單并對(duì)用戶(hù)進(jìn)行的選擇調(diào)用不同的子菜單函數(shù)或進(jìn)入具體功能 int inputchioce(){ int mychioce,x=-1;printf(“n++++++++++++++歡 迎 你++++++++++++++++++nn”);printf(“**+++++++++++++ 主 菜 單 +++++++++++++++++++++**n”);printf(“**1--錄入(刪除 修改)圖書(shū)信息 ** **2--(按規(guī)則)查詢(xún)圖書(shū)信息 **n”);printf(“** printf(”** printf(“** 3--瀏覽圖書(shū)信息**** 5--統(tǒng)計(jì)圖書(shū)(數(shù)目)0--退出系統(tǒng) 4--為圖書(shū)(按規(guī)則)排序 **** 6--幫助 **n”);**n“);**n”);/* 主菜單 */ ** ** printf(“**++++++++++++++++++++++++++++++++++++++++++++++++++++++++**n”);printf(“n 恭喜你獲得使用權(quán)限,請(qǐng)你選擇:”);scanf(“%d”,&mychioce);switch(mychioce){ case 1: { case 2: { chaxuntushu();break;} luruxinxi();break;} case 3: { case 4: { case 5: { liulantushu();break;} paixutushu();break;} tongjitushu_shumu();printf(“nn 是否繼續(xù)操作? 請(qǐng)選擇(繼續(xù)-1/退出-0)”);scanf(“%d”,&x);if(x==1){ system(“cls”);inputchioce();} if(x==0){ printf(“nn 謝謝你的使用!exit(0);} if(x!=1&&x!=0){ system(”cls“);printf(”選擇有誤,默認(rèn)返回主菜單,請(qǐng)重新選擇: n“);inputchioce();} break;} 再見(jiàn)n”);case 6: { case 0: { printf(“ nn 謝謝你的使用!再見(jiàn) nn”);break;} shiyongshuoming();break;} default: { system(“cls”);printf(“n 選擇有誤,請(qǐng)重新選擇:n”);inputchioce();}break;} } 關(guān)于一些錄入(修改)查詢(xún)、、查詢(xún) 關(guān)于一些錄入(刪除 修改)查詢(xún)、排序等子菜單的原理及實(shí)現(xiàn)方法與主菜單那類(lèi)似、創(chuàng)建(插入)創(chuàng)建(插入)函數(shù) 算法如下圖: num 結(jié)束輸入控制條件 Num!=0 Leibie Name Author Press Time price p->num p->leibie p->name p->author p->press p->time p->price Head 為空 Head=p Head 不 為 空 Tail->next=p 保存為文件 Save()將鏈表數(shù)據(jù)保存為文件的函數(shù) 首先打開(kāi)文件以可讀寫(xiě)(也可以只寫(xiě)的方式打開(kāi) 區(qū)別在于是否覆蓋以前的信息)的方式,p1 作為形參來(lái)接受實(shí)參 head,只要不為空,寫(xiě)入 p1 后,下移一個(gè)節(jié)點(diǎn) void save1(struct tushu_node* p1){ /*將鏈表保存為文件的函數(shù) 不覆蓋前面信息 if((fpp=fopen(“1.txt”,“a”))==NULL){ printf(“打開(kāi)文件失??!”);exit(0);} while(p1!=NULL){ */ fprintf(fpp,“ %d %s %s %s %s %s %lfn”,p1->num,p1->leibie,p1-> name,p1->author,p1->press,p1->time,p1->price);p1=p1->next;} if(fclose(fpp)){ printf(“關(guān)閉文件失敗!n”);exit(0);} } 從文件中讀出數(shù)據(jù)并創(chuàng)建鏈表的函數(shù) 在調(diào)用從文件讀取數(shù)據(jù)創(chuàng)建鏈表的函數(shù)前,先定義 head 鏈表指針并賦值為空作為實(shí)參。打開(kāi)文件后,從文件中讀取一組數(shù)據(jù)賦給已經(jīng)被動(dòng)態(tài)分配內(nèi)存的結(jié)點(diǎn)指針 p 第一次 head 為空時(shí) Head P next p1 第二次以后 head head P1->next p2 P next p1 head P1->next P next p2 p1 刪除函數(shù) 刪除函數(shù)執(zhí)行流程圖及算法如下圖所示: 調(diào)瀏覽函數(shù)瀏覽 全部圖書(shū)方便看 需要?jiǎng)h除那一本 輸入需要?jiǎng)h除圖 書(shū)編號(hào) numm 調(diào)用讀取文件并 形成鏈表的函數(shù) 具體刪除過(guò)程 Head Head=NULL Return Head!=NULL Head->num 相等(即刪除頭結(jié)點(diǎn))Numm 比較 head=head->next 不相等(刪除其他結(jié)點(diǎn))Ptr1=head Ptr2=head->next Ptr2!=NULL(即不是鏈表結(jié)尾 循環(huán)結(jié)束條件)Ptr2->next=ptr1-> next 重新保存 覆蓋 原來(lái)文件中數(shù)據(jù) 選擇是否繼續(xù)操 作返回主菜單 While 循環(huán) Ptr2->num Numm 比較 相等 不相等 Ptr1=ptr2 Ptr2=ptr1->next Save()函數(shù) 重新保存文件 修改函數(shù) 修改函數(shù)執(zhí)行流程圖如下: 先遍歷所有圖書(shū)信息 方便選擇要修改編號(hào) 調(diào)用文件到鏈表函數(shù) 輸出一個(gè)顯示選擇修 改具體成分的界面 輸入需要修改的圖書(shū) 編號(hào) If(Head!=Null)Head->num Numm 比較 不相等 相等 選 擇 具體 修 改成分 while(p!=NULL&&p->n um!=numm){ p=p->next;} 直到相等 Swith 語(yǔ)句 輸入新的成分替 換原有圖書(shū)信息 的成分 Save()保存至文件 是 詢(xún) 問(wèn) 是否 繼 續(xù) 否 返回主菜單 瀏覽遍歷函數(shù) 重新定義一組變量 num、leibie、name、author、press、time、price,將從文件中讀 取一組數(shù)據(jù)后賦給這組變量并輸出它們,使用 while(!feof(fp)),一直執(zhí)行上述過(guò)程實(shí)現(xiàn) 遍歷瀏覽全部文件中的圖書(shū)信息。瀏覽完成后,同樣有對(duì)是否繼續(xù)其他操作的詢(xún)問(wèn),如果選 擇繼續(xù),則會(huì)返回主菜單。int liulantushu(){ int num;char leibie[10];char name[30];char author[20];char press[20];char time[20];double price;int x=-1;/* 瀏覽圖書(shū)信息的函數(shù) */ if((fpp=fopen(“1.txt”,“r”))==NULL){ printf(“ exit(0);} else{ printf(”nn 編號(hào) while(!feof(fpp)){ fscanf(fpp,“%d%s%s%s%s%s%lf”,&num,leibie,name,autho r,press,time,&price);printf(“%d %s %s %s %s %s %lfn 類(lèi)別 書(shū)名 作者 出版社 出版時(shí)間 價(jià)格n”);打開(kāi)文件失?。 ?;”,num,leibie,name,author,press,time,price);} } if(fclose(fpp)){ printf(”關(guān)閉文件失??!n“);exit(0);} printf(”nn 是否繼續(xù)操作? 請(qǐng)選擇(繼續(xù)-1/退出-0)“);scanf(”%d“,&x);if(x==1){ system(”cls“);inputchioce();} if(x==0){ printf(”nn 謝謝你的使用!exit(0);} if(x!=1&&x!=0){ system(“cls”);printf(“選擇有誤,默認(rèn)返回主菜單,請(qǐng)重新選擇:n”);inputchioce();} } 統(tǒng)計(jì)圖書(shū)數(shù)目的函數(shù) 統(tǒng)計(jì)函數(shù)簡(jiǎn)單的實(shí)現(xiàn)了對(duì)圖書(shū)數(shù)目的統(tǒng)計(jì),其實(shí)現(xiàn)思路可以看做在瀏覽函數(shù)的基礎(chǔ)上去 掉一些不必要的輸出而是另外加上一個(gè)變量 n 用在 while 中執(zhí)行一次循環(huán)就 n++一次,就能 統(tǒng)計(jì)出圖書(shū)的數(shù)目了,不再具體敘述。由于 feof()函數(shù)本身的原理,如果每次寫(xiě)入一行數(shù)據(jù) 到文件中時(shí)最后有換行符號(hào),則會(huì)出現(xiàn) n 多加一問(wèn)題或輸出時(shí)最后一行復(fù)制,只要將 n 減一 即為圖書(shū)實(shí)際上的數(shù)目。查詢(xún)函數(shù) 再見(jiàn)n“);查詢(xún)函數(shù)算法如下圖所示: found=0 p=head flag=0 輸入要查詢(xún)的圖書(shū) 的編號(hào)/書(shū)名/價(jià)格 P P!=NULL 比較 P 中相應(yīng)的部分 與要查詢(xún)的是否相 等 不相等 相等 輸出查詢(xún)到的信息 found=1 P=p->next 如果 found 依然為 0,則輸出“未找到某圖書(shū)” 是 詢(xún)問(wèn)是否繼續(xù) 否 返回主菜單 排序函數(shù) 排序函數(shù)算法敘述如下: 排序函數(shù)使用冒泡排序的算法,定義了 i j 兩個(gè)變量來(lái)控制實(shí)現(xiàn)雙層循環(huán),for(i=1;i
第二篇:C語(yǔ)言課程設(shè)計(jì)報(bào)告
C語(yǔ)言課程設(shè)計(jì)報(bào)告
班
級(jí):
10電子本1
學(xué)
號(hào):
10303033122
姓
名:
指導(dǎo)老師:
方文森
完成日期:
溫州大學(xué)城市學(xué)院課程設(shè)計(jì)
目 錄
1、課程設(shè)計(jì)目的和要求.....................................................................................................2
2、課程設(shè)計(jì)任務(wù)內(nèi)容.........................................................................................................2
3、詳細(xì)設(shè)計(jì)說(shuō)明.................................................................................................................3
3.1分析.........................................................................................................................3 3.2軟件設(shè)計(jì).................................................................................................................3 3.3軟件調(diào)試(對(duì)編程中的錯(cuò)誤進(jìn)行記錄,并給出你的解決辦法).....................3
4、軟件使用說(shuō)明.................................................................................................................4
5、課程設(shè)計(jì)心得與體會(huì).....................................................................................................4 附錄1:參考文獻(xiàn)................................................................................................................5 附錄2:部分程序清單(帶有較詳細(xì)的注釋?zhuān)?...............................................................5
溫州大學(xué)城市學(xué)院課程設(shè)計(jì)
C語(yǔ)言課程設(shè)計(jì)報(bào)告
1、課程設(shè)計(jì)目的和要求
目的:(1)鞏固和加深學(xué)生對(duì)C語(yǔ)言課程的基本知識(shí)的理解和掌握(2)掌握C語(yǔ)言編程和程序調(diào)試的基本技能(3)利用C語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì)(4)掌握書(shū)寫(xiě)程序設(shè)計(jì)說(shuō)明文檔的能力(5)提高運(yùn)用C語(yǔ)言解決實(shí)際問(wèn)題的能力 要求:(1)分析課程設(shè)計(jì)題目的要求(2)寫(xiě)出詳細(xì)設(shè)計(jì)說(shuō)明
(3)編寫(xiě)程序代碼,調(diào)試程序使其能正確運(yùn)行(4)設(shè)計(jì)完成的軟件要便于操作和使用(5)設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告
2、課程設(shè)計(jì)任務(wù)內(nèi)容
1)一個(gè)班級(jí)有4個(gè)學(xué)生,共學(xué)習(xí)5門(mén)課程(大學(xué)英語(yǔ)、高等數(shù)學(xué)、C語(yǔ)言程序設(shè)計(jì)、VB程序設(shè)計(jì)、大學(xué)語(yǔ)文)。要求編寫(xiě)程序完成相應(yīng)功能。2)
輸入并保存]5門(mén)課程名稱(chēng);
3)
輸入并保存]4個(gè)學(xué)生的學(xué)號(hào)及其[個(gè)人相關(guān)信息]; 4)
輸入并保存]每個(gè)學(xué)生對(duì)應(yīng)的每門(mén)課程成績(jī); 5)求出每門(mén)功課的平均分;
6)找出有兩門(mén)以上功課不及格的學(xué)生,輸出他們的學(xué)號(hào)和全部課程成績(jī)及該學(xué)生5門(mén)課程的平均成績(jī);
7)找出平均成績(jī)?cè)?0分以上或者全部課程成績(jī)?cè)?5分以上的學(xué)生,輸出他們的學(xué)號(hào)和全部課程成績(jī)及該學(xué)生5門(mén)課程的平均成績(jī);
8)計(jì)算每位學(xué)生的總分,并按總分進(jìn)行排名,按由高到低輸出他們的學(xué)號(hào)及總成績(jī); 9)對(duì)前面問(wèn)題進(jìn)行優(yōu)化,即在一維數(shù)駔的基礎(chǔ)上,考慮采用二維數(shù)組、函數(shù)及其參數(shù)傳遞的方式來(lái)解決相關(guān)問(wèn)題;
10)對(duì)前面問(wèn)題進(jìn)行優(yōu)化,在學(xué)號(hào)的基礎(chǔ)上,增加學(xué)生的其它個(gè)人信息,包括:學(xué)號(hào)、姓名、年齡、性別,并采用結(jié)構(gòu)體形式加以表示; 11)利用文件實(shí)現(xiàn)對(duì)輸入及分析輸出數(shù)據(jù)的存取操作。
12)參照教材P27頁(yè),3-11題引入選擇功能,輸入功能編號(hào)可以實(shí)現(xiàn)以上功能(考慮清屏函數(shù),自查)。
溫州大學(xué)城市學(xué)院課程設(shè)計(jì)
3、詳細(xì)設(shè)計(jì)說(shuō)明
3.1分析
3.2軟件設(shè)計(jì)
開(kāi)始菜單(功能選擇)Key=?Key=1Key=2Key=3Key=4Key=5Key=0Key=99Key=6Key=7Key=8Key=9Key=10寫(xiě)入課程名讀取課程名輸入學(xué)生信息讀取學(xué)生信息建立了學(xué)生信息及課程名稱(chēng)?退出程序讀取課程、學(xué)生、成績(jī)讀取課程成績(jī)輸出功課的平均分兩門(mén)以上功課不及格的學(xué)生輸出高分的學(xué)生總分由高到低排序No保存保存Yes輸入課程成績(jī)(提示)必須輸入課程名稱(chēng)、學(xué)生信息才能建立成績(jī)保存清屏
3.3軟件調(diào)試(對(duì)編程中的錯(cuò)誤進(jìn)行記錄,并給出你的解決辦法)
取地址。
溫州大學(xué)城市學(xué)院課程設(shè)計(jì)
4、軟件使用說(shuō)明
1.2.3.4.5.6.7.8.9.10.11.12.[99]讀取課程、學(xué)生、成績(jī) [1]輸入課程名稱(chēng).[2]讀取課程名稱(chēng).[3]輸入學(xué)生信息.[4]讀取學(xué)生信息.[5]輸入課程成績(jī).[6]讀取課程成績(jī).[7]功課的平均分.[8]兩門(mén)以上功課不及格的學(xué)生 [9]-高分的學(xué)生-.[10]學(xué)生總分排序.[0]退出應(yīng)用程序.5、課程設(shè)計(jì)心得與體會(huì)
在大家的共同努力下,忙碌了兩個(gè)星期,我們順利完成了對(duì)此程序的編譯及試運(yùn)行。在設(shè)計(jì)程序的過(guò)程中,我們了解到要設(shè)計(jì)一個(gè)完整的程序,其中最難的可能就屬設(shè)計(jì)整個(gè)程序的框架,其中可能會(huì)需要經(jīng)過(guò)很多次的修改與調(diào)試,所以必須要有耐心,直至最后設(shè)計(jì)出自己想要的程序。
另外平時(shí)學(xué)習(xí)c語(yǔ)言的基礎(chǔ)也很關(guān)鍵,因?yàn)槿绻綍r(shí)學(xué)得就不怎么樣,那么你面對(duì)這么一個(gè)比較有難度的程序,可能會(huì)望而卻步,看懂他人的程序都是個(gè)難點(diǎn),更別說(shuō)讓自己去設(shè)計(jì)。為了解決此類(lèi)問(wèn)題,最好就是多向同學(xué),老師請(qǐng)教,查找資料。
設(shè)計(jì)一個(gè)程序的過(guò)程就是解決一個(gè)實(shí)際問(wèn)題的過(guò)程,從解決實(shí)際問(wèn)題的角度,我們可以這樣來(lái)看:首先要了解這個(gè)問(wèn)題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;在次我們必須捋清思路,逐一的解決問(wèn)題的各個(gè)方面,即從輸入開(kāi)始入手,著重考慮如何從輸入導(dǎo)出輸出,在這個(gè)過(guò)程中,可確定所需的變量、數(shù)組、函數(shù),然后確定處理過(guò)程--算法。
感謝這次的課程設(shè)計(jì),它使我更加深刻地體會(huì)到c語(yǔ)言程序編寫(xiě)過(guò)程的嚴(yán)謹(jǐn)與細(xì)致,還有就是無(wú)論做任何事都要有耐心。當(dāng)然團(tuán)隊(duì)合作也是非常重要的一個(gè)環(huán)節(jié),這會(huì)使你在學(xué)習(xí)過(guò)程中倍感輕松
總的來(lái)說(shuō),這次程序設(shè)計(jì)讓我獲益匪淺,對(duì)C語(yǔ)言也有了進(jìn)一步的認(rèn)識(shí):C語(yǔ)言功能高、表達(dá)能力強(qiáng)、使用靈活方便、目標(biāo)程序效率高等等。C語(yǔ)言是在國(guó)內(nèi)外廣泛使用的一種計(jì)算機(jī)語(yǔ)言,相信除了以上優(yōu)點(diǎn),還有許多我們還未發(fā)現(xiàn),希望能在以后的學(xué)習(xí)中有更深入的認(rèn)
溫州大學(xué)城市學(xué)院課程設(shè)計(jì)
識(shí)。
附錄1:參考文獻(xiàn)
《C語(yǔ)言程序設(shè)計(jì)與實(shí)踐教程》
附錄2:部分程序清單(帶有較詳細(xì)的注釋?zhuān)?/p>
#include
#define N 4 #define M 5 #define Debug 1
typedef struct { char SNo[5];char SName[10];}Student;
void ScoreRead(float Score[][M],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i 溫州大學(xué)城市學(xué)院課程設(shè)計(jì) void ScoreWrite(float Score[][M],char FileName[],char FileType[]){ int i,j;FILE *fp;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} else { for(i=0;i void CoureseRead(char Cname[][20],char FileName[],char FileType[]){ FILE *fp;int i,j;char ch;fp=fopen(FileName,FileType);if(fp==NULL){ printf(“Errorn”);exit(0);} i=0;j=0;while(1){ ch = fgetc(fp);if(ch==EOF)break;if(ch=='n'){ Cname[i][j]='