部分代碼實例
界面圖4-1 分數統計系統程序主界面 4.2模塊(或子程序)1(標識符)源碼正文宋體小四號,正文段落和標題都是1.5倍行距,正文段落首行縮進2字符 這段程序的作用是檢驗輸入的信息是否滿足字長的條件,例如在錄入院系名時,已知參賽院系的名稱至少為六個字節,當用戶輸入的字節數少于六個或多余最大值(20個)時,程序會在檢驗后輸出文字提醒用戶重新錄入。 int gainchar(char A[],int min,int max)//長度在[min,max] <閉區間> 之間時函數結束返回字符串A的長度 { int B,C; do { A[max]=B=C=0; while((A[B++]=getchar())!='\n'&&B<max); if(A[B-1]!='\n')while(getchar()!='\n'&&++C); else A[--B]=0; if(C||B&&B<min) printf("您錄入的字符串長度:%d字節\n請錄入(%d--%d)個字節\n",B+C,min,max); } while(C||B<min); return B; } 這段程序的作用是輸出用戶提示,在用戶輸入參賽院系數目和比賽項目數目后計算出剩余可錄入的院系數量和項目數量。此外,當用戶已經進入函數輸入過一次后院系個數和項目個數下限將被改為0,這樣一來當用戶在主界面輸入選項編號時誤入“添加參賽院系 比賽項目”時只要填入“0”即可退出至主界面。 char choose[][13]= {"錄入幾個院系","總共幾個項目","男生多少項目"}; //提示用戶輸入內容 int scope[][3]= {{3,1,0},{M,Q,M}}; //輸入的各個內容的范圍 int i,j,k,pan,cun,choice,man; scope[1][0]=M-b[0];//剩余可錄入的院系的數量 scope[1][1]=Q-b[1];//剩余可錄入的項目的數量 if(b[0])scope[0][0]=scope[0][1]=0;//當用戶已經進入此函數輸入過一次后,改變條件將院系個數和項目個數下限改為0 這段程序的作用是錄入比賽項目,確定項目是男子項目還是女子項目,輸出用戶提示,在用戶輸入比賽項目的名稱后反饋用戶已完成該項目的錄入。 for(i=Q-scope[1][1]; i<b[1]+Q-scope[1][1]; i++) //錄入項目 { temp->sex[ i]=(b[1]+Q-scope[1][1]-i)<=b[3];//確定性別,0為男,1為女 do { k=0; printf("請輸入第%d個項目(%s)名稱:\n",i+1,sex[temp->sex],4,N); //輸入項目名稱 gainchar(game,4,N); for(j=0; j<i; j++) if(BF(game[j],game)) k++; if(k) printf("該項目已完成錄入");//情況同院系 4.3測試用例假設共有五個參賽院系,分別為信息系、經管系、建工系、電氣系和體育系;共有5個比賽項目,分別為跳高、跳遠、鉛球、1000米跑和4x100米接力跑;其中跳高、跳遠為男子項目,鉛球、1000米跑和4x100米接力跑為女子項目。跳高、跳遠和鉛球取前三名,1000米跑和4x100米接力跑取前五名,每個項目都由各個參賽院系分別派出兩名學生參加。比賽結果如下表: 表4-1 各項目排名表 打開分數統計系統,依次錄入參賽院系數量、比賽項目數量、男子項目數量和參賽院系名稱如圖4-2。 
圖4-2 錄入參賽院系 輸入跳高項目的獲獎情況如圖4-3。 
圖4-3 錄入跳高成績 輸入跳遠項目的獲獎情況如圖4-4。 
圖4-4 錄入跳遠成績 輸入鉛球項目的獲獎情況如圖4-5。 
圖4-5 錄入鉛球成績 輸入1000米跑項目的獲獎情況如圖4-6。 圖4-6 錄入1000米跑成績 輸入4x100米跑項目的獲獎情況如圖4-7。 圖4-7 錄入4x100米跑成績 完成所有項目的成績錄入后系統返回主界面,輸入“2”后系統可按男子項目總分排序輸出排名,如圖4-8。 圖4-8 按男子項目總分排序輸出排名 輸入“3” 后系統可按女子項目總分排序輸出排名,如圖4-9。 圖4-9 按女子項目總分排序輸出排名 輸入“4”后系統可按各院系總分排序輸出排名,如圖4-10。 圖4-10 按院系總分排序輸出排名 輸入“5”后系統可按輸入的院系編號輸出該院系各個項目的排名情況,以信息系為例,查詢結果如圖4-11。 圖4-11 查詢信息系各個項目的排名情況
|