




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、學(xué)生信息管理系統(tǒng) 本題目設(shè)計(jì)目的是訓(xùn)練學(xué)生的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語(yǔ)言的文件和單鏈表的各種基本操作。本程序中涉及結(jié)構(gòu)體、單鏈表、文件等方面的知識(shí)。通過本程序的訓(xùn)練,使學(xué)生能對(duì)C語(yǔ)言的文件操作有一個(gè)更深刻的了解,掌握利用單鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)對(duì)學(xué)生成績(jī)管理的原理,為進(jìn)一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅(jiān)實(shí)的基礎(chǔ)。1、問題定義創(chuàng)建一個(gè)學(xué)生成績(jī)管理系統(tǒng)。假設(shè)系統(tǒng)中每個(gè)學(xué)生記錄只包括學(xué)生學(xué)號(hào)、學(xué)生姓名、年齡、性別、出生年月、電話等信息。程序的運(yùn)行效果如下圖所示,選擇任意菜單后,實(shí)現(xiàn)相應(yīng)功能。在問題定義階段要考慮題目的可行性和需求分析,接下來進(jìn)入開發(fā)階段,完成系統(tǒng)設(shè)計(jì)和系統(tǒng)實(shí)現(xiàn)的任
2、務(wù)。2、系統(tǒng)設(shè)計(jì)21 總體設(shè)計(jì)采用模塊化的程序設(shè)計(jì)方法,即將較大的任務(wù)按照一定的原則分為一個(gè)個(gè)較小的任務(wù),然后分別設(shè)計(jì)各個(gè)小任務(wù)。需要注意的是劃分出來的模塊應(yīng)該相對(duì)獨(dú)立但又相關(guān),且容易理解??梢杂媚K化層次結(jié)構(gòu)來分析其任務(wù)的劃分,一般從上到下進(jìn)行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細(xì)化描述。本成績(jī)管理系統(tǒng)要求采用數(shù)組實(shí)現(xiàn),它由如下六大功能模塊組成:l 輸入學(xué)生記錄。l 查詢學(xué)生記錄。l 刪除學(xué)生記錄。l 顯示所有學(xué)生記錄。l 統(tǒng)計(jì)學(xué)生人數(shù)。刷新當(dāng)前信息。22 詳細(xì)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)l 學(xué)生個(gè)人信息結(jié)構(gòu)體結(jié)構(gòu)體struct student將用于存儲(chǔ)學(xué)生的基本信息,它將作為單鏈表的數(shù)據(jù)
3、域。struct record /*結(jié)構(gòu)體*/char codeLEN+1; /* 學(xué)號(hào) */char nameLEN+1; /* 姓名 */int age; /* 年齡 */char sex3; /* 性別 */char dateLEN+1; /* 出生年月 */char telLEN+1; /* 電話號(hào)碼 */stuN;輸入記錄模塊void readfile()/* 建立信息 */char *p="student.txt"FILE *fp;int i=0;if (fp=fopen("student.txt","r")=NULL)
4、printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);while(fscanf(fp,"%s %s %d %s %s %s",stui.code,,&stui.age,stui.sex,stui.date,stui.tel)=8)i+;i=i;fclose(fp);n=i;printf("錄入完畢!n");查詢記錄模塊void seek() /*查找*/int i,item,flag;
5、char s121; /* 以姓名和學(xué)號(hào)最長(zhǎng)長(zhǎng)度+1為準(zhǔn) */printf("-n");printf("-1.按學(xué)號(hào)查詢-n");printf("-2.退出本菜單-n");printf("-n");while(1)printf("請(qǐng)選擇子菜單編號(hào):");scanf("%d",&item);flag=0;switch(item)case 1:printf("請(qǐng)輸入要查詢的學(xué)生的學(xué)號(hào):n");scanf("%s",s1);for(i
6、=0;i<n;i+)if(strcmp(stui.code,s1)=0)flag=1;printf("學(xué)生學(xué)號(hào) 學(xué)生姓名 年齡 性別 出生年月 電話 n");printf("-n");printf("%6s %7s %6d %5s %9s %10sn",stui.code,,stui.age,stui.sex,stui.date,stui.tel);if(flag=0)printf("該學(xué)號(hào)不存在!n"); break;case 2:return;default:printf("請(qǐng)
7、在1-2之間選擇n");刪除記錄模塊void del()int i,j,flag=0;char s1LEN+1;printf("請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.code,s1)=0) flag=1;for(j=i;j<n-1;j+)stuj=stuj+1;if(flag=0)printf("該學(xué)號(hào)不存在!n");if(flag=1)printf("刪除成功,顯示結(jié)果請(qǐng)選擇菜單6n");n-;顯示所有學(xué)生記
8、錄模塊void display() int i;printf("所有學(xué)生的信息為:n");printf("學(xué)生學(xué)號(hào) 學(xué)生姓名 年齡 性別 出生年月 電話 n");printf("-n");for(i=0;i<n;i+) printf("%6s %7s %5d %5s %8s %10sn",stui.code,,stui.age,stui.sex,stui.date,stui.tel); 3、系統(tǒng)實(shí)現(xiàn)3.1.1 程序預(yù)處理包括加載頭文件,定義結(jié)構(gòu)體、常量和變量,并對(duì)它們進(jìn)行初始化工作#incl
9、ude<stdio.h> /*I/O函數(shù)*/#include<stdlib.h> /*其它說明*/#include<malloc.h>#include<string.h> /*字符串函數(shù)*/#define BUFLEN 100 /* 緩沖區(qū)最大字符數(shù) */#define LEN 15 /* 學(xué)號(hào)和姓名最大字符數(shù),實(shí)際請(qǐng)更改 */#define N 100 /* 最大學(xué)生人數(shù),實(shí)際請(qǐng)更改*/3.1.2 主函數(shù)main()main()函數(shù)主要實(shí)現(xiàn)了對(duì)整個(gè)程序的運(yùn)行控制,以及相關(guān)功能模塊的調(diào)用。FILE *fp;void seek();/* 函數(shù)聲明
10、*/void insert();void del();void display();void save();void getnum();void readfile();void menu(); int main() while(k)menu();system("pause");return 0; switch(num) case 1:insert();break;case 2:del();break;case 3:seek();break;case 4:display();break;case 5:getnum();break;case 6:readfile();break
11、;case 7:k=0;break;default:printf("請(qǐng)?jiān)?-7之間選擇n");3.1.3 主菜單界面用戶進(jìn)入成績(jī)管理系統(tǒng)時(shí),需要顯示主菜單,提示用戶進(jìn)行選擇,完成相應(yīng)任務(wù)。此代碼被main()函數(shù)調(diào)用。void menu()/* 界面 */int num;printf(" *系統(tǒng)功能菜單* n");printf(" *閆晨曦 0951100206* n");/printf("友情提醒:查詢前請(qǐng)先刷新系統(tǒng)! n");printf(" * * n");printf(" *
12、1.增加學(xué)生信息 *n");printf(" * 2.刪除學(xué)生信息 *n");printf(" * 3.查詢學(xué)生信息 *n");printf(" * 4.顯示當(dāng)前信息 *n");printf(" * 5.統(tǒng)計(jì)學(xué)生人數(shù) *n"); printf(" * 6.刷新當(dāng)前信息 *n"); printf(" * 7.退出系統(tǒng) *n"); printf(" * * n");printf("請(qǐng)選擇菜單編號(hào):");scanf("%d
13、",&num); 插入學(xué)生記錄在插入學(xué)生記錄操作中,系統(tǒng)會(huì)先按學(xué)號(hào)查找到要插入的節(jié)點(diǎn)的位置,然后在該學(xué)號(hào)之后插入一個(gè)新節(jié)點(diǎn)。void insert() /*插入函數(shù)*/ int i=n,j,flag;printf("請(qǐng)輸入待增加的學(xué)生數(shù):n");scanf("%d",&m);do flag=1;while(flag)flag=0;printf("請(qǐng)輸入第 %d 個(gè)學(xué)生的學(xué)號(hào):n",i+1);scanf("%s",stui.code);for(j=0;j<i;j+)if(strcmp(
14、stui.code,stuj.code)=0)printf("已有該學(xué)號(hào),請(qǐng)檢查后重新錄入!n");flag=1;break; /*如有重復(fù)立即退出該層循環(huán),提高判斷速度*/printf("請(qǐng)輸入第 %d 個(gè)學(xué)生的姓名:n",i+1);scanf("%s",);printf("請(qǐng)輸入第 %d 個(gè)學(xué)生的年齡:n",i+1);scanf("%d",&stui.age);printf("請(qǐng)輸入第 %d 個(gè)學(xué)生的性別(格式:男1女0):n",i+1);sca
15、nf("%s",stui.sex);printf("請(qǐng)輸入第 %d 個(gè)學(xué)生的出生年月:(格式:年.月)n",i+1);scanf("%s",stui.date);printf("請(qǐng)輸入第 %d 個(gè)學(xué)生的電話:n",i+1);scanf("%s",stui.tel);if(flag=0) i=i;i+;while(i<n+m);n+=m;printf("錄入完畢!nn");sort(); 統(tǒng)計(jì)學(xué)生記錄在統(tǒng)計(jì)學(xué)生記錄操作中,系統(tǒng)會(huì)統(tǒng)計(jì)學(xué)生人數(shù)總數(shù),并打印輸出統(tǒng)計(jì)結(jié)果。voi
16、d getnum() int num_b=0,num_g=0; int i; fp=fopen("student.txt","a+"); for(i=0;i<num;i+) if(strcmp(stui.sex,"1") num_g+; else num_b+; printf("【統(tǒng)計(jì)結(jié)果】n"); fprintf(fp,"【統(tǒng)計(jì)結(jié)果】n"); printf("學(xué)生總?cè)藬?shù)為:10人n",num); fprintf(fp,"學(xué)生總?cè)藬?shù)為:10人n",n
17、um); printf("其中男生5人,女生5人n",num_b,num_g); fprintf(fp,"其中男生%d人,女生%d人n",num_b,num_g); fclose(fp); 排序?qū)W生記錄在排序?qū)W生記錄操作中,系統(tǒng)會(huì)利用插入排序法實(shí)現(xiàn)單鏈表的按總分字段的降序排序,并打印出排序前和排序后的結(jié)果。void sort()/*按學(xué)號(hào)排序*/int i,j,*p,*q,s; char temp10;for(i=0;i<n-1;i+)for(j=n-1;j>i;j-)if(strcmp(stuj-1.code,stuj.code)>0
18、)strcpy(temp,stuj-1.code);strcpy(stuj-1.code,stuj.code);strcpy(stuj.code,temp);strcpy(temp,);strcpy(,);strcpy(,temp);strcpy(temp,stuj-1.sex);strcpy(stuj-1.sex,stuj.sex);strcpy(stuj.sex,temp);strcpy(temp,stuj-1.date);strcpy(stuj-1.date,stuj.date);strcpy(stuj.da
19、te,temp);strcpy(temp,stuj-1.tel);strcpy(stuj-1.tel,stuj.tel);strcpy(stuj.tel,temp); p=&stuj-1.age; q=&stuj.age; s=*q; *q=*p; *p=s;32 測(cè)試與調(diào)試3.2.1 概述一般情況下,為解決一個(gè)問題所編寫的程序代碼較長(zhǎng),可能包括幾百條甚至成千上萬條語(yǔ)句。在檢查并排除所有語(yǔ)法錯(cuò)誤后,還會(huì)有不易發(fā)現(xiàn)的邏輯錯(cuò)誤,因此要對(duì)程序進(jìn)行認(rèn)真仔細(xì)的測(cè)試與調(diào)試。測(cè)試是通過運(yùn)行程序發(fā)現(xiàn)錯(cuò)誤的過程,常見的錯(cuò)誤有數(shù)據(jù)溢出、數(shù)組越界、進(jìn)入死循環(huán)、語(yǔ)句順序顛倒、多加“;”或少加“”等等。調(diào)試則是確定測(cè)試中找到的錯(cuò)誤性質(zhì)并改正錯(cuò)誤的過程。測(cè)試與調(diào)試通常交替進(jìn)行,即測(cè)試調(diào)試再測(cè)試再調(diào)試。能檢查出尚未發(fā)現(xiàn)的、各種不同類型錯(cuò)誤的測(cè)試才是成功的測(cè)試。測(cè)試程序需要測(cè)試用例,測(cè)試用例可用如下公式表示:測(cè)試用例測(cè)試數(shù)據(jù)預(yù)期結(jié)果。好的測(cè)試用例應(yīng)該是用盡可能少的測(cè)試數(shù)據(jù)發(fā)現(xiàn)盡可能多的錯(cuò)誤,即發(fā)現(xiàn)錯(cuò)誤的概率要大。要選擇合適的測(cè)試數(shù)據(jù),使系統(tǒng)在運(yùn)行時(shí)盡量能執(zhí)行到每條語(yǔ)句,以測(cè)試各指令是否正確。還應(yīng)分別測(cè)試輸入合法數(shù)據(jù)與非法數(shù)據(jù)時(shí),程序的運(yùn)行情況,。對(duì)于合法數(shù)據(jù),還要考慮數(shù)據(jù)的一般性與特殊性,如求最大值的問題,應(yīng)測(cè)試最大值在最前面、最后面、中間某一位置的情況。測(cè)試程序時(shí),用監(jiān)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省莞市東華中學(xué)2025年英語(yǔ)八下期中綜合測(cè)試試題含答案
- 保潔安全試題及答案
- 辦公室應(yīng)聘題庫(kù)及答案
- 中式快餐連鎖企業(yè)2025年標(biāo)準(zhǔn)化擴(kuò)張與市場(chǎng)渠道拓展報(bào)告
- 2025年新能源微電網(wǎng)穩(wěn)定性控制與優(yōu)化運(yùn)行設(shè)備運(yùn)行維護(hù)設(shè)備運(yùn)行維護(hù)成本控制報(bào)告
- 氫能源汽車產(chǎn)業(yè)關(guān)鍵零部件國(guó)產(chǎn)化進(jìn)程2025年技術(shù)創(chuàng)新與產(chǎn)業(yè)發(fā)展趨勢(shì)分析
- 安全監(jiān)理試題及答案
- 醫(yī)療家具知識(shí)培訓(xùn)課件
- 2025年新型農(nóng)業(yè)經(jīng)營(yíng)主體發(fā)展現(xiàn)狀與培育策略深度分析報(bào)告001
- 建筑施工模板安全技術(shù)規(guī)范
- 人教版五年級(jí)英語(yǔ)下冊(cè)期末試卷及答案
- 柬埔寨高棉語(yǔ)學(xué)習(xí)
- 二年級(jí)下冊(cè)期末無紙筆測(cè)評(píng)方案
- CJJ89-2012 城市道路照明工程施工及驗(yàn)收規(guī)程
- 娛樂場(chǎng)所突發(fā)事件應(yīng)急處理
- 2024年信息科技中考考試題庫(kù)及答案(模擬)
- 2023年新疆維吾爾自治區(qū)烏魯木齊市天山區(qū)小升初數(shù)學(xué)試卷(內(nèi)含答案解析)
- 20G520-1-2鋼吊車梁(6m-9m)2020年合訂本
- 2023年陜西初中地理生物會(huì)考卷子
- 電梯維護(hù)保養(yǎng)規(guī)則(TSG T5002-2017)
- 初中物理-摩擦力課件-市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論