程序設(shè)計(jì)學(xué)生選修課程系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第1頁(yè)
程序設(shè)計(jì)學(xué)生選修課程系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第2頁(yè)
程序設(shè)計(jì)學(xué)生選修課程系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第3頁(yè)
程序設(shè)計(jì)學(xué)生選修課程系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第4頁(yè)
程序設(shè)計(jì)學(xué)生選修課程系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

通達(dá)學(xué)院程序設(shè)計(jì)(2017/2018學(xué)年 第1學(xué)期)題 目:學(xué)生選修課程系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 專 業(yè) 計(jì)算機(jī)科學(xué)于技術(shù)(嵌入式) 學(xué) 生 姓 名 班 級(jí) 學(xué) 號(hào) 指 導(dǎo) 教 師 徐小龍 指 導(dǎo) 單 位 計(jì)算機(jī)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系日 期 2017年10月27日 南京郵電大學(xué)通達(dá)學(xué)院程序設(shè)計(jì)指導(dǎo)教師成績(jī)?cè)u(píng)定表題目學(xué)生姓名班級(jí)學(xué)號(hào)專業(yè)評(píng)分內(nèi)容評(píng)分標(biāo)準(zhǔn)優(yōu)秀良好中等差平時(shí)成績(jī)認(rèn)真對(duì)待課程設(shè)計(jì),遵守實(shí)驗(yàn)室規(guī)定,上機(jī)不遲到早退,不做和設(shè)計(jì)無(wú)關(guān)的事。設(shè)計(jì)成果設(shè)計(jì)的科學(xué)、合理性功能豐富、符合設(shè)題目要求 界面友好、外觀漂亮、大方設(shè)計(jì)的原創(chuàng)性設(shè)計(jì)報(bào)告設(shè)計(jì)報(bào)告正確合理、反映系統(tǒng)設(shè)計(jì)流程文檔內(nèi)容詳實(shí)程度文檔格式規(guī)范、排版美觀答辯簡(jiǎn)練、準(zhǔn)確闡述設(shè)計(jì)內(nèi)容,能準(zhǔn)確有條理回答各種問(wèn)題,系統(tǒng)演示順利。評(píng)分等級(jí)指導(dǎo)教師簽名日期2017-10-27備注評(píng)分等級(jí)有五種:優(yōu)秀、良好、中等、及格、不及格一、 課題內(nèi)容和要求學(xué)生選修課程系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)假定有n門課程,每門課程有課程編號(hào),課程名稱,課程性質(zhì),總學(xué)時(shí),授課學(xué)時(shí),實(shí)驗(yàn)或上機(jī)學(xué)時(shí),學(xué)分,開課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少于60)自由選課。試設(shè)計(jì)一選修課程系統(tǒng),使之能提供以下功能:(1) 系統(tǒng)以菜單方式工作(2) 課程信息錄入功能(課程信息用文件保存)輸入(3) 課程信息瀏覽功能輸出(4) 查詢功能:按學(xué)分查詢、按課程性質(zhì)查詢(5) 學(xué)生可以選修課程2、 需求分析開 始本系統(tǒng)的功能模塊如圖所示 主 函 數(shù)進(jìn)入選課操作統(tǒng)計(jì)選課情況瀏覽課程信息錄入課程信 息查詢課程信息從選課文件中統(tǒng)計(jì)信 息輸入學(xué)號(hào)姓名進(jìn)行選 開課課瀏覽文件中的課程信 息將課程信息輸入文件 中按 照課 程性 質(zhì)查 詢課 程按照學(xué)分查詢課程信 息1. 使系統(tǒng)以菜單方式工作:輸出個(gè)菜單,用于顯示以從文件中加載的課程信息和若干個(gè)可選的功能選項(xiàng)。根據(jù)客戶輸入的選項(xiàng)來(lái)運(yùn)行不同的功能,運(yùn)行不同的函數(shù)。2. 錄入課程信息:使用戶可以將課程信息輸入文件3. 瀏覽課程信息:使用戶可以按照學(xué)分或者課程性質(zhì)瀏覽文件中的課程信息4. 進(jìn)入選課操作:輸入學(xué)號(hào),姓名進(jìn)行選課5. 統(tǒng)計(jì)選課情況:從選課文件中統(tǒng)計(jì)信息3、 概要設(shè)計(jì)(1)主函數(shù)的設(shè)計(jì) 在主函數(shù)中按照提示輸入相對(duì)應(yīng)數(shù)字進(jìn)入相應(yīng)的操作,同時(shí),在輸入序號(hào)數(shù)字錯(cuò)誤時(shí),會(huì)自動(dòng)提示“輸入錯(cuò)誤,請(qǐng)重新輸入”,然后,重新輸入一個(gè)數(shù)字,繼續(xù)進(jìn)行相應(yīng)的操作。(注:輸入的數(shù)字要在05之內(nèi))算法設(shè)計(jì)如下:S1: 從鍵盤上輸入一個(gè)05的數(shù)字,進(jìn)入相應(yīng)的操作S2: 如果選擇序號(hào)1,則進(jìn)入課程信息錄入操作S3: 如果選擇序號(hào)2,則進(jìn)入瀏覽課程信息操作S4: 如果選擇序號(hào)3,則進(jìn)入查詢課程信息操作S5: 如果選擇序號(hào)4,則進(jìn)入學(xué)生選擇課程操作S6: 如果選擇序號(hào)5,則進(jìn)入統(tǒng)計(jì)選課情況操作S7: 如果選擇序號(hào)0,則退出學(xué)生選課管理系統(tǒng)S8: 如果選擇除05的其他操作,則提示“輸入錯(cuò)誤,請(qǐng)重新輸入”然后返回S1具體流程圖如下:開 始 主 函 數(shù)輸入05相 應(yīng)的操作對(duì)應(yīng)的數(shù)字進(jìn)行相應(yīng)的操作是 否 繼 續(xù) 是 否結(jié) 束(2) 錄入函數(shù)的設(shè)計(jì)對(duì)于錄入函數(shù),就是在D盤建立一個(gè)“course.txt”文件,然后通過(guò)scanf從鍵盤上輸入課程信息,再通過(guò)fprintf將輸入的信息保存在文件中,關(guān)閉文件。算法設(shè)計(jì)如下:S1: 在D盤建立“course.txt”文件S2: 提示讓學(xué)生輸入選課門數(shù)S3: 從鍵盤上輸入課程信息并保存S4: 當(dāng)指針指向文件尾部,返回S3 具體流程圖如下: 開 始創(chuàng)建文件 輸入課程門數(shù)結(jié) 束輸入課程信息保存課程信息是否指向尾 部 是結(jié) 束(3) 瀏覽函數(shù)的設(shè)計(jì)對(duì)于瀏覽函數(shù),通過(guò)fscanf讀取文件中的課程信息,然后再通過(guò)printf將信息輸出算法設(shè)計(jì)如下:S1: 打開“course.txt”文件S2: 讀取文件中的信息S3: 輸出信息S4: 當(dāng)指針未指向文件尾部,返回S2具體流程圖如下:開 始打開文件輸出課程信息讀取課程信息 否是否指向尾 部是結(jié) 束(4) 查詢函數(shù)的設(shè)計(jì)對(duì)于查詢函數(shù),輸入1或2選擇查詢方式,如果不是,則重新輸入。對(duì)于不同方式的查詢,如果輸入的方式與文件中有相符的,則輸出查詢結(jié)果算法設(shè)計(jì)如下:S1: 選擇查詢方式S2: 如果方式是學(xué)分查詢,輸入想查詢的學(xué)分,打開文件,未指向文件尾部,如果文件中存在,則輸出查詢結(jié)果S3: 如果方式是課程性質(zhì)查詢,輸入想查詢的課程性質(zhì),打開文件,未指向文件尾部,讀取文件信息,如果文件中存在,則輸出查詢結(jié)果S4: 如果方式數(shù)字不存在,則退出查詢具體流程圖如下:開 始選擇查詢方式數(shù)字不正確按課程性質(zhì)按學(xué)分查詢打開文件讀取打開文件讀取只 顯示 課程 編號(hào)、課程 名稱 信息,不顯 示結(jié) 果是否存在信息是否存在信息是是 否 否是否指向尾 部是否指向尾 部是是是是退出課程查詢系統(tǒng)輸出課程信息輸出課程信息結(jié) 束結(jié) 束(5) 選課函數(shù)的設(shè)計(jì)對(duì)于選課函數(shù),先從鍵盤上輸入學(xué)號(hào),姓名,課程編號(hào),課程名稱,打開“course.txt”文件,如果,課程存在,則進(jìn)入下一步,建立“student.txt”文件,將選課信息保存在文件中,退出。算法設(shè)計(jì)如下:S1: 輸入選課信息,包括學(xué)號(hào),姓名,課程編號(hào),課程名稱S2: 打開文件“course.txt”S3: 如果課程存在,則進(jìn)行下一步S4: 建立“student.txt”文件S5: 保存選課信息 具體流程圖如下開 始:輸入選課信息打開課程文件是否存在課程建立選課文件讀取選課信息保存讀取選課信息保存 否是否指向尾 部結(jié) 束(6) 統(tǒng)計(jì)函數(shù)的設(shè)計(jì)對(duì)于統(tǒng)計(jì)函數(shù),打開“student.txt”文件,讀取文件中的選課信息,輸出文件中的選課信息,計(jì)數(shù),關(guān)閉文件算法設(shè)計(jì)如下:S1: 打開“student.txt”文件S2: 當(dāng)未指向文件尾部,讀取文件中的選課信息S3: 輸出選課信息同時(shí)計(jì)數(shù)S4: 輸出人數(shù)S5: 結(jié)束具體流程圖如下:開 始打開選課文件讀取選課信息輸出選課信息計(jì)數(shù)否是否指向尾 部結(jié) 束四、詳細(xì)設(shè)計(jì)1.主函數(shù):構(gòu)造void main(),實(shí)現(xiàn)調(diào)用各個(gè)功能模塊:學(xué)生選課系統(tǒng)執(zhí)行主流程如圖所示,先執(zhí)行主函數(shù)中顯示菜單函數(shù),通過(guò)循環(huán)和按鍵操作來(lái)執(zhí)行相應(yīng)的操作。按鍵的有效鍵值為05之間的任意數(shù)值,其他按鍵為無(wú)效輸入,會(huì)提示“輸入錯(cuò)誤,請(qǐng)重新輸入”,同時(shí),再次用scanf創(chuàng)造再次輸入的機(jī)會(huì)。各個(gè)按鍵的執(zhí)行功能為: “1”:錄入選修課課程信,調(diào)用函數(shù)luru(); “2”:瀏覽錄入的課程信息,調(diào)用函數(shù)liulan(); “3”:查詢課程信息,調(diào)用函數(shù)chaxun(); “4”:進(jìn)入選課操作,調(diào)用函數(shù)chaxun(); “5”:統(tǒng)計(jì)選課信息,調(diào)用函數(shù)tongji(); “0”:退出系統(tǒng);int main()int n;int menu();int f1();int luru();int liulan();int chaxun();int xuanke();int tongji();printf(n * *);printf(nn * 歡迎進(jìn)入學(xué)生選課系統(tǒng)! *);menu();printf(n);printf( * the end *n);printf(n * *);printf(nn 請(qǐng) 先 選 擇 1 進(jìn) 行 課 程 信 息 錄 入:);scanf(%d,&n);for(;n5|n0&n5|n0;)printf(nn);printf(n 輸 入 錯(cuò) 誤 ! 請(qǐng) 重 新 輸 入 !n );scanf(%d,&n);system(cls); if(n=0)printf( nnnnnnn);printf( * 謝謝使用! *n ); printf(nnnnn);exit(0);return 0; 2. 定義menu函數(shù),f1函數(shù)方便調(diào)用函數(shù)函數(shù)功能及實(shí)現(xiàn):此函數(shù)為輸出菜單,進(jìn)入系統(tǒng)后提示可根據(jù)供選擇的項(xiàng)目進(jìn)行后續(xù)操作。int menu()int n;printf(nnnn);printf( 1. 錄 入 課 程 信 息nn); printf( 2. 瀏 覽 課 程 信 息nn); printf( 3. 查 詢 課 程 信 息nn); printf( 4. 進(jìn) 入 選 課 操 作nn);printf( 5. 統(tǒng) 計(jì) 選 課 情 況nn);printf( 0. 退 出 選 課 系 統(tǒng)nn); return 0;3. 定義課程、選課結(jié)構(gòu)體變量struct courseint num;char name20;char kind20;int ttime,mark,term;c;struct student int snum;int cnum;char cnam20;char snam20;s500;4. 定義錄入函數(shù),課程信息函數(shù)功能及實(shí)現(xiàn):此函數(shù)錄入課程信息,在查詢、瀏覽、進(jìn)入選課,查看選課信息等函數(shù)之前。定義指向文件的指針變量*fp,課程信息結(jié)構(gòu)體c通過(guò)fopen函數(shù)建立文件”course.txt”,后輸入錄入課程的門數(shù),打印表頭,通過(guò)for循環(huán),用scanf函數(shù)從屏幕讀取課程信息,并通過(guò)fprintf函數(shù)將課程信息錄入到文件“course.txt”中,最后輸出主菜單,返回主程序。int luru()FILE *fp;struct course c;int count;int i;if(fp=fopen(D:/course.txt,w)=NULL)printf(cannot open filen);exit(0);printf(n 請(qǐng) 輸 入 選 擇 的 課 程 門 數(shù):);scanf(%d,&count);printf(nnn);f1();for(i=0;icount;i+)scanf(%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term);fprintf(fp,%dt%st%st%dt%dt%dt,c.num,,c.kind,c.ttime,c.mark,c.term);fclose(fp);printf(n 錄 入 成 功!nn);menu();return 0;5. 定義瀏覽函數(shù),瀏覽錄入的課程信息函數(shù)功能及實(shí)現(xiàn):此函數(shù)先定義指向文件的指針*fp,課程結(jié)構(gòu)體變量c,通過(guò)if語(yǔ)句判斷文件是否存在,在調(diào)用函數(shù)f1(),輸出表頭信息,通過(guò)for循環(huán)并使用fscanf函數(shù)將文件中的課程信息讀出并通過(guò)printf打印到屏幕上,再通過(guò)fclose函數(shù)關(guān)閉文件。int liulan()/瀏覽函數(shù)int i=0;FILE *fp;struct course c;if(fp=fopen(D:/course.txt,r)=NULL)printf(ncannot open course!n);exit(0);f1();while(!feof(fp)&icount)fscanf(fp,%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term);printf(%7d%11s%10s%9d%9d%8dn,c.num,,c.kind,c.ttime,c.mark,c.term);i+;fclose(fp);menu();return 0;6. 定義查詢函數(shù),按照學(xué)分和課程性質(zhì)查詢函數(shù)功能及實(shí)現(xiàn):先定義學(xué)生結(jié)構(gòu)體變量s,打印相關(guān)可供選擇的選項(xiàng),通過(guò)scanf函數(shù)讀取輸入字符,打印表頭,再使用if語(yǔ)句進(jìn)行相關(guān)選擇。如果數(shù)“1”,則是按學(xué)分查詢課程,符合第一個(gè)if語(yǔ)句,輸入想要查詢的學(xué)分,程序通過(guò)for循環(huán)從文件中讀取課程信息,并通過(guò)printf函數(shù)輸出滿足要求的課程信息;如選擇“2”,符合第二個(gè)if語(yǔ)句,則按照課程性質(zhì)查詢,輸入課程性質(zhì),程序通過(guò)for循環(huán)從文件中讀取課程信息,并通過(guò)printf函數(shù)輸出滿足要求的課程信息;如輸入“3”,符合第二個(gè)if語(yǔ)句,則按照課程名稱查詢,輸入要課程名稱,程序通過(guò)for循環(huán)從文件中讀取課程信息,并通過(guò)printf函數(shù)輸出滿足要求的課程信息;查詢完成后通過(guò)fclose 函數(shù)關(guān)閉文件,打印主菜單,返回主函數(shù)。int chaxun()FILE *fp;struct course c;int score;int b,i=0;char kind20;printf(n 1.按 學(xué) 分 查 詢n);printf(n 2.按 課 程 性 質(zhì) 查 詢);printf( 請(qǐng) 選 擇 查 詢 方 式 nn 輸 入 選 項(xiàng) 數(shù) 字:);scanf(%d,&b);for(;b2;)printf(n 輸 入 錯(cuò) 誤 !請(qǐng) 重 新 輸 入 !n );scanf(%d,&b);if(b=1)printf(n 輸 入 你 要 查 詢 的 學(xué) 分: );scanf(%d,&score);if(fp=fopen(D:/course.txt,r)=NULL)printf(ncannot open course!n);exit(0);f1();while(!feof(fp)&icount)fscanf(fp,%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term);if(c.mark=score)printf(%7d%11s%10s%9d%9d%8dn,c.num,,c.kind,c.ttime,c.mark,c.term);i+;else if(b=2)printf(nn 輸 入 你 要 查 詢 的 課 程 性 質(zhì):);scanf(%s,kind);if(fp=fopen(D:/course.txt,r)=NULL)/打開文件course.txtprintf(ncannot open course!n);f1();while(!feof(fp)&icount)fscanf(fp,%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term);if(strcmp(c.kind,kind)=0)printf(%7d%11s%10s%9d%9d%8dn,c.num,,c.kind,c.ttime,c.mark,c.term);i+;elseprintf(輸入錯(cuò)誤!);exit(1);fclose(fp);menu();return 0;7. 定義選課函數(shù),進(jìn)入選課操作函數(shù)功能及實(shí)現(xiàn):進(jìn)入此函數(shù)可進(jìn)行自由選課,首先定義了學(xué)生結(jié)構(gòu)體變量s,和課程結(jié)構(gòu)體變量c。選課學(xué)生輸入自己的學(xué)號(hào)和要選的課程,通過(guò)for循環(huán)打開文件并找到所要選擇的課程,通過(guò)break跳出循環(huán),關(guān)閉課程文件“course.txt”并將學(xué)生選課信息存入文件“student.txt”中。打印菜單信息,返回主函數(shù)。int xuanke()int t=0,flag;int i;/*struct course c;FILE *fp;doprintf(n 請(qǐng) 輸 入 學(xué) 號(hào) 姓 名 課 程 編 號(hào) 及 課 程 名 稱 :); scanf(%d%s%d%s,&st.snum,st.snam,&um,am);if(fp=fopen(D:/course.txt,r)=NULL)/打開文件course.txtprintf(ncannot open course!n);exit(0);while(!feof(fp)fscanf(fp,%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term); if(um=c.num)&(am=)t+;break;fclose(fp);printf(n 是 否 繼 續(xù) ,是 1,否 0 n );scanf(%d,&flag);if(fp=fopen(D:/student.txt,a+)=NULL)printf(ncannot open student!n);exit(0); for(i=0;it;i+);fprintf(fp,%dt%st%dt%stn,st.snum,st.snam,um,am); fclose(fp);while(flag);printf(n * 恭喜選課成功!*n);menu();return 0;8定義統(tǒng)計(jì)函數(shù),統(tǒng)計(jì)學(xué)生選課信息函數(shù)功能及實(shí)現(xiàn):此函數(shù)為查看選修課被選擇的情況。定義了變量total為了統(tǒng)計(jì)選課人數(shù),通過(guò)if語(yǔ)句判斷是否存在文件“student.txt”,通過(guò)for循環(huán)打印出所有已選課學(xué)生的學(xué)號(hào)、選課課程編號(hào)和所選課程的名稱,通過(guò)計(jì)數(shù)變量total輸出已選課的人數(shù)信息。然后打印菜單,返回主函數(shù)。int tongji()/統(tǒng)計(jì)函數(shù)int total=0;int t,i=0;FILE *fp;if(fp=fopen(D:/student.txt,r)=NULL)printf(ncannot open student!n);exit(0);printf(n 學(xué)號(hào) 姓名 課程編號(hào)及課程名稱n);while(!feof(fp)fscanf(fp,%d%s%d%sn,&si.snum,si.snam,&um,am);total+;i+;t=i;for(i=0;it;i+)printf(%5d%6s%7d%10sn,si.snum,si.snam,um,am);printf(n 選課學(xué)生總?cè)藬?shù)為:%d人,total);fclose(fp);menu();return 0;源程序代碼:#include#include#includestruct courseint num;char name20;char kind20;int ttime,mark,term;c;struct student int snum;int cnum;char cnam20;char snam20;s500;int count;/全局變量int main()/主函數(shù)int n;int menu();int f1();int luru();int liulan();int chaxun();int xuanke();int tongji();printf(n * *);printf(nn * 歡迎進(jìn)入學(xué)生選課系統(tǒng)! *);menu();printf(n);printf( * the end *n);printf(n * *);printf(nn 請(qǐng) 先 選 擇 1 進(jìn) 行 課 程 信 息 錄 入:);scanf(%d,&n);/防止錯(cuò)誤,請(qǐng)重新輸入for(;n5|n0&n5|n0;)printf(nn);printf(n 輸 入 錯(cuò) 誤 ! 請(qǐng) 重 新 輸 入 !n );scanf(%d,&n);/防止錯(cuò)誤,提示重新輸入system(cls);/清屏 if(n=0)printf( nnnnnnn);printf( * 謝謝使用! *n ); printf(nnnnn);exit(0);/退出選課系統(tǒng)return 0; int menu()/菜單函數(shù)int n;printf(nnnn);printf( 1. 錄 入 課 程 信 息nn); printf( 2. 瀏 覽 課 程 信 息nn); printf( 3. 查 詢 課 程 信 息nn); printf( 4. 進(jìn) 入 選 課 操 作nn);printf( 5. 統(tǒng) 計(jì) 選 課 情 況nn);printf( 0. 退 出 選 課 系 統(tǒng)nn); return 0;int f1()printf(n 課程編號(hào) 課程名稱 課程性質(zhì) 總學(xué)時(shí) 學(xué)分 開課學(xué)期:n);return 0;int luru()/錄入函數(shù)FILE *fp;/定義指向文件的指針struct course c;int i;if(fp=fopen(D:/course.txt,w)=NULL)/建立文件course.txtprintf(cannot open filen);exit(0);printf(n 請(qǐng) 輸 入 選 擇 的 課 程 門 數(shù):);scanf(%d,&count);printf(nn);f1();for(i=0;icount;i+)scanf(%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term);fprintf(fp,%dt%st%st%dt%dt%dt,c.num,,c.kind,c.ttime,c.mark,c.term);fclose(fp);/關(guān)閉文件printf(n * 錄入成功!*n);menu();return 0;int liulan()/瀏覽函數(shù)int i=0;FILE *fp;/定義指向文件的指針struct course c;/定義課程結(jié)構(gòu)體變量if(fp=fopen(D:/course.txt,r)=NULL)/打開文件course.txtprintf(ncannot open course!n);exit(0);f1();while(!feof(fp)&icount)fscanf(fp,%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term);printf(%7d%11s%10s%9d%9d%8dn,c.num,,c.kind,c.ttime,c.mark,c.term);i+;fclose(fp);/關(guān)閉文件menu();return 0;int chaxun()/查詢函數(shù)FILE *fp;/定義指向文件的指針struct course c;/定義課程結(jié)構(gòu)體變量int score;int b,i=0;char kind20;printf(n 1.按 學(xué) 分 查 詢n);printf(n 2.按 課 程 性 質(zhì) 查 詢);printf( 請(qǐng) 選 擇 查 詢 方 式 nn 輸 入 選 項(xiàng) 數(shù) 字:);scanf(%d,&b);/防止錯(cuò)誤,提示重新輸入for(;b2;)printf(n 輸 入 錯(cuò) 誤 !請(qǐng) 重 新 輸 入 !n );scanf(%d,&b);/按學(xué)分查詢if(b=1)printf(n 輸 入 你 要 查 詢 的 學(xué) 分: );scanf(%d,&score);if(fp=fopen(D:/course.txt,r)=NULL)printf(ncannot open course!n);exit(0);f1();while(!feof(fp)&icount)/當(dāng)沒有指向文件尾部,讀取文件“course.txt”中的數(shù)據(jù)fscanf(fp,%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term);if(c.mark=score)/比較輸入的分?jǐn)?shù)和結(jié)構(gòu)體中的分?jǐn)?shù),如果相同,輸出那組數(shù)據(jù)printf(%7d%11s%10s%9d%9d%8dn,c.num,,c.kind,c.ttime,c.mark,c.term);i+;else if(b=2)/按課程性質(zhì)查詢printf(nn 輸 入 你 要 查 詢 的 課 程 性 質(zhì):);scanf(%s,kind);if(fp=fopen(D:/course.txt,r)=NULL)/打開文件course.txtprintf(ncannot open course!n);f1();while(!feof(fp)&icount)/當(dāng)沒有到達(dá)文件尾部,讀取“course.txt”中的數(shù)據(jù)fscanf(fp,%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term);if(strcmp(c.kind,kind)=0)/比較輸入的字符串與原文件中的課程性質(zhì),如果相同,輸出那組數(shù)據(jù)printf(%7d%11s%10s%9d%9d%8dn,c.num,,c.kind,c.ttime,c.mark,c.term); i+;elseprintf(輸入錯(cuò)誤!);/選擇錯(cuò)誤,就退出exit(1);fclose(fp);menu();return 0;int xuanke()/選課函數(shù)int t=0,flag;int i;FILE *fp;/定義指向文件的指針doprintf(n 請(qǐng) 輸 入 學(xué) 號(hào) 姓 名 課 程 編 號(hào) 及 課 程 名 稱 :); scanf(%d%s%d%s,&st.snum,st.snam,&um,am);if(fp=fopen(D:/course.txt,r)=NULL)/打開文件course.txtprintf(ncannot open course!n);exit(0);while(!feof(fp)/如果課程編號(hào)和課程名稱與學(xué)生所選一致,就跳出,執(zhí)行下一步fscanf(fp,%d%s%s%d%d%d,&c.num,,c.kind,&c.ttime,&c.mark,&c.term); if(um=c.num)&(am=)t+;break;fclose(fp);printf(n 是 否 繼 續(xù) ,是 1,否 0 n );scanf(%d,&flag);if(fp=fopen(D:/student.txt,a+)=NULL)/建立文件“student.txt”printf(ncannot open student!n);exit(0); /建立,并將學(xué)生選課信息輸入student.txtfor(i=0;it;i+);fprintf(fp,%dt%st%dt%stn,st.snum,st.snam,um,am); fclose(fp);/關(guān)閉選課文件course.txtwhile(flag);printf(n * 恭喜選課成功!*n);menu();return 0;int tongji()/統(tǒng)計(jì)函數(shù)int total=0;int t,i=0;FILE *fp;if(fp=fopen(D:/student.txt,r)=NULL)/打開文件“student.txt”printf(ncannot open student!n);exit(0);printf(n 學(xué)號(hào) 姓名 課程編號(hào)及課程名稱n);while(!feof(fp)/計(jì)數(shù)fscanf(fp,%d%s%d%sn,&si.snum,si.snam,&um,am);/讀取文件“student.txt”total+;i+;t=i;for(i=0;iy);在if后面是不用加分號(hào)的 6. 不能超過(guò)數(shù)組的最大值使用,在引用數(shù)組元素時(shí),下標(biāo)從0開始,即下標(biāo)的下限是0,而下標(biāo)的上限值是數(shù)組定義時(shí)元素個(gè)數(shù)減1。 7. 在switch語(yǔ)句的各分支中未使用break語(yǔ)句。 如:switch(n) case 1:luru();break;/錄入課程信息 case 2:liulan();break;/瀏覽課程信息 case 3:chaxun();break;/查詢課程信息 case 4:xuanke();break;/進(jìn)入選課操作 case 5:tongji();break;/統(tǒng)計(jì)選課情況 8. 統(tǒng)計(jì)時(shí)出現(xiàn)中文(2) 解決問(wèn)題1.對(duì)于語(yǔ)法中的錯(cuò)誤,可以通過(guò)系統(tǒng)自動(dòng)查出。2.像邏輯錯(cuò)誤,即算法中的問(wèn)題,要通過(guò)不斷檢驗(yàn)算法,觀察它邏輯中的錯(cuò)誤。同時(shí)對(duì)于運(yùn)行中出現(xiàn)中文的問(wèn)題,是因?yàn)閷?duì)于數(shù)組的未初始化或者定義空間過(guò)小等出現(xiàn)的。3.對(duì)于可以創(chuàng)建,但是無(wú)法鏈接的問(wèn)題,可能是未關(guān)閉運(yùn)行窗口,或出現(xiàn)拼寫中的錯(cuò)誤,還有,像字符串的前面是不用加地址符的。 4.還有,出現(xiàn)最后一行多輸出一次的問(wèn)題,那就是在循環(huán)里面,應(yīng)該先檢查它所在的文件中是否多有一行,如果文件中多一行,那就是保存時(shí)出現(xiàn)問(wèn)題,如果是文件中是正確的,那問(wèn)題就可能出現(xiàn)在輸出函數(shù)時(shí),循環(huán)中多進(jìn)行一次7、 課程設(shè)計(jì)總結(jié)為了更好的復(fù)習(xí)C語(yǔ)言的基礎(chǔ)知識(shí),進(jìn)一步加深對(duì)C語(yǔ)言編程的理解,老師給每個(gè)人布置了完成一個(gè)操作系統(tǒng)的任務(wù)。這對(duì)于我們來(lái)說(shuō),無(wú)疑是一個(gè)巨大的挑戰(zhàn)。因?yàn)殒湵硎莿倓倢W(xué)習(xí)的,還不太熟練,我選擇了用結(jié)構(gòu)體和數(shù)組來(lái)構(gòu)建我的系統(tǒng)。我知道,對(duì)于鏈表,我們應(yīng)該熟練掌握,但是,在以后,我會(huì)多看書,加深對(duì)鏈表的理解。而且,通過(guò)這次作業(yè),我懂得了如何做一個(gè)完整的系統(tǒng),我明白一個(gè)好的系統(tǒng),是要分成很多模塊,而

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論