首先我們在做一個管理系統(tǒng)之前要了解這個學(xué)生管理系統(tǒng)需要哪些功能,如:簡單的增,刪,改,查,即:錄入成績,查詢成績,刪除成績,修改成績,插入成績,這幾個是基本要包括的,當(dāng)然我們也可以加上排序,統(tǒng)計學(xué)生人數(shù),這些功能。
當(dāng)清楚需要哪些功能之后我們就可以寫系統(tǒng)的界面了。
效果圖如下:
printf('\t\t\t---------------STUDENT---------------\t\t\t\n'); printf('\t\t\t0.退出\t\t\t\n'); printf('\t\t\t1.錄入成績\t\t\t\n'); printf('\t\t\t2.查詢成績\t\t\t\n'); printf('\t\t\t3.刪除成績\t\t\t\n'); printf('\t\t\t4.修改成績\t\t\t\n'); printf('\t\t\t5.插入成績\t\t\t\n'); printf('\t\t\t6.排序\t\t\t\n'); printf('\t\t\t7.統(tǒng)計學(xué)生人數(shù)\t\t\t\n'); printf('\t\t\t-------------------------------------\t\t\t\n'); printf('\t\t\t選擇(0---7)\t\t\t');
接著我們就可以加入switch函數(shù)進行功能選擇
定義整型變量choice
case 1: in();save();system('pause');system('cls');break;//錄入 case 2: show();system('pause');system('cls');break;//查詢 case 3: del();save();system('pause');system('cls');break;//刪除 case 4: modify();system('pause');system('cls');break;//修改 case 5: insert();save();system('pause');system('cls');break;//插入 case 6: order();system('pause');system('cls');break;//排序 case 7: total();system('pause');system('cls');break;//統(tǒng)計 default:printf('\n輸入錯誤,請輸入0---7\n\n');system('pause');system('cls');break;
定義一個Menu函數(shù)把上面兩個結(jié)合起來,我們加一個while循環(huán)讓這個這個菜單一直循環(huán)出現(xiàn),而不是用一次就沒了。
printf('\t\t\t---------------STUDENT---------------\t\t\t\n'); printf('\t\t\t0.退出\t\t\t\n'); printf('\t\t\t1.錄入成績\t\t\t\n'); printf('\t\t\t2.查詢成績\t\t\t\n'); printf('\t\t\t3.刪除成績\t\t\t\n'); printf('\t\t\t4.修改成績\t\t\t\n'); printf('\t\t\t5.插入成績\t\t\t\n'); printf('\t\t\t6.排序\t\t\t\n'); printf('\t\t\t7.統(tǒng)計學(xué)生人數(shù)\t\t\t\n'); printf('\t\t\t-------------------------------------\t\t\t\n'); printf('\t\t\t選擇(0---7)\t\t\t'); case 1: in();save();system('pause');system('cls');break;//錄入 case 2: show();system('pause');system('cls');break;//查詢 case 3: del();save();system('pause');system('cls');break;//刪除 case 4: modify();system('pause');system('cls');break;//修改 case 5: insert();save();system('pause');system('cls');break;//插入 case 6: order();system('pause');system('cls');break;//排序 case 7: total();system('pause');system('cls');break;//統(tǒng)計 default:printf('\n輸入錯誤,請輸入0---7\n\n');system('pause');system('cls');break;
寫完菜單之后我們就要對“學(xué)生”這個數(shù)據(jù)進行分析
在這個系統(tǒng)中學(xué)生的信息要包含那些東西,舉個例子:學(xué)號,姓名,選修課成績,實驗課成績,必修課成績,總成績,平均成績。然后根據(jù)這些寫一個結(jié)構(gòu)體(我寫的是數(shù)組類型的結(jié)構(gòu)體)
接著我們開始寫實現(xiàn)這個系統(tǒng)功能的函數(shù)
第一個就是成績的錄入
printf('輸入錄取學(xué)生的數(shù)量\n'); { printf('請輸入第%d位學(xué)生學(xué)號:\n',i); scanf('%s',student[i].num); printf('請輸入第%d位學(xué)生姓名:\n', i ); scanf('%s',student[i].name); printf('請輸入第%d位學(xué)生選修課成績:\n', i ); scanf('%f',&student[i].elec); printf('請輸入第%d位學(xué)生實驗成績:\n', i ); scanf('%f', &student[i].expe); printf('請輸入第%d位學(xué)生必修課成績:\n', i ); scanf('%f', &student[i].requ); student[i].sum=student[i].elec+student[i].expe+student[i].requ; student[i].ave=student[i].sum /3;
第二個就是成績的查詢
printf('請輸入要查詢的學(xué)生學(xué)號:\n'); if(strcmp(student[i].num,xh)==0)//對比兩個字符串如果兩者一樣則進行if下面的的語句否則繼續(xù)循環(huán) printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n', student[i].num,student[i].name,student[i].elec,student[i].expe,student[i].requ,student[i].sum,student[i].ave);
第三個就是成績的刪除
printf('所要刪除的學(xué)生學(xué)號為:\n'); if (strcmp(student[j].num,xh)==0) printf('沒有你所要刪除的學(xué)生的信息\n');
第四項,成績的修改
步驟 1.先找到要修改的學(xué)生
2.選擇修改的項目
3.更改總成績和平均分
4.顯示修改后的學(xué)生數(shù)據(jù)
printf ('01.輸入修改的學(xué)生的學(xué)號:\n') ; if (strcmp(student[i].num,xh)==0) printf('請選擇修改內(nèi)容\n'); printf('1.修改該學(xué)生的選修課成績\n'); printf('2.修改該學(xué)生的實驗課成績\n'); printf('3.修改該學(xué)生的必修課成績\n'); case 1:printf('請輸入該學(xué)生的選修課成績\n');scanf('%f',&score);student[j].elec=score; break; case 2:printf('請輸入該學(xué)生的實驗課成績\n');scanf('%f',&score);student[j].expe=score;break; case 3:printf('請輸入該學(xué)生的必修課成績\n');scanf('%f',&score);student[j].requ=score;break; default :printf('\n輸入錯誤,請輸入1---3\n\n'); break; student[j].sum = student[j].elec+student[j].expe + student[j].requ; printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n', student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);
第五項,成績的插入
int m, flag, i = count, j,k; printf('請輸入待添加的學(xué)生人數(shù):\n'); printf('請輸入第%d位學(xué)生的學(xué)號:\n', i); if (strcmp(student[i].num, student[j].num) == 0) printf('該學(xué)號已存在,請重新輸入!\n'); printf('請輸入第%d位學(xué)生姓名:\n', i ); printf('請輸入第%d位學(xué)生選修課成績:\n', i ); scanf('%f',&student[i].elec); printf('請輸入第%d位學(xué)生實驗成績:\n', i ); scanf('%f', &student[i].expe); printf('請輸入第%d位學(xué)生必修課成績:\n', i ); scanf('%f', &student[i].requ); student[i].sum=student[i].elec+student[i].expe+student[i].requ; student[i].ave=student[i].sum /3;
第六項,排序
if(student[i].sum < student[m].sum) printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n', student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);
第七項,統(tǒng)計學(xué)生人數(shù)
printf('學(xué)生人數(shù)%d\n',count);
完整的代碼
printf('\t\t\t---------------STUDENT---------------\t\t\t\n'); printf('\t\t\t0.退出\t\t\t\n'); printf('\t\t\t1.錄入成績\t\t\t\n'); printf('\t\t\t2.查詢成績\t\t\t\n'); printf('\t\t\t3.刪除成績\t\t\t\n'); printf('\t\t\t4.修改成績\t\t\t\n'); printf('\t\t\t5.插入成績\t\t\t\n'); printf('\t\t\t6.排序\t\t\t\n'); printf('\t\t\t7.統(tǒng)計學(xué)生人數(shù)\t\t\t\n'); printf('\t\t\t-------------------------------------\t\t\t\n'); printf('\t\t\t選擇(0---7)\t\t\t'); case 1: in();save();system('pause');system('cls');break;//錄入 case 2: show();system('pause');system('cls');break;//查詢 case 3: del();save();system('pause');system('cls');break;//刪除 case 4: modify();system('pause');system('cls');break;//修改 case 5: insert();save();system('pause');system('cls');break;//插入 case 6: order();system('pause');system('cls');break;//排序 case 7: total();system('pause');system('cls');break;//統(tǒng)計 default:printf('\n輸入錯誤,請輸入0---7\n\n');system('pause');system('cls');break; if ((fp = fopen(filename, 'w')) == NULL) for (i = 1; i<=count; i++) if (fwrite(&student[i], sizeof(struct student), 1, fp) != 1) printf('輸入錄取學(xué)生的數(shù)量\n'); { printf('請輸入第%d位學(xué)生學(xué)號:\n',i); scanf('%s',student[i].num); printf('請輸入第%d位學(xué)生姓名:\n', i ); scanf('%s',student[i].name); printf('請輸入第%d位學(xué)生選修課成績:\n', i ); scanf('%f',&student[i].elec); printf('請輸入第%d位學(xué)生實驗成績:\n', i ); scanf('%f', &student[i].expe); printf('請輸入第%d位學(xué)生必修課成績:\n', i ); scanf('%f', &student[i].requ); student[i].sum=student[i].elec+student[i].expe+student[i].requ; student[i].ave=student[i].sum /3; printf ('01.輸入修改的學(xué)生的學(xué)號:\n') ; if (strcmp(student[i].num,xh)==0) printf('請選擇修改內(nèi)容\n'); printf('1.修改該學(xué)生的選修課成績\n'); printf('2.修改該學(xué)生的實驗課成績\n'); printf('3.修改該學(xué)生的必修課成績\n'); case 1:printf('請輸入該學(xué)生的選修課成績\n');scanf('%f',&score);student[j].elec=score; break; case 2:printf('請輸入該學(xué)生的實驗課成績\n');scanf('%f',&score);student[j].expe=score;break; case 3:printf('請輸入該學(xué)生的必修課成績\n');scanf('%f',&score);student[j].requ=score;break; default :printf('\n輸入錯誤,請輸入1---3\n\n'); break; student[j].sum = student[j].elec+student[j].expe + student[j].requ; printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n', student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave); printf('請輸入要查詢的學(xué)生學(xué)號:\n'); if(strcmp(student[i].num,xh)==0) printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n', student[i].num,student[i].name,student[i].elec,student[i].expe,student[i].requ,student[i].sum,student[i].ave); if(student[i].sum < student[m].sum) printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n', student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave); printf('所要刪除的學(xué)生學(xué)號為:\n'); if (strcmp(student[j].num,xh)==0) printf('沒有你所要刪除的學(xué)生的信息\n'); int m, flag, i = count, j,k; printf('請輸入待添加的學(xué)生人數(shù):\n'); printf('請輸入第%d位學(xué)生的學(xué)號:\n', i); if (strcmp(student[i].num, student[j].num) == 0) printf('該學(xué)號已存在,請重新輸入!\n'); printf('請輸入第%d位學(xué)生姓名:\n', i ); printf('請輸入第%d位學(xué)生選修課成績:\n', i ); scanf('%f',&student[i].elec); printf('請輸入第%d位學(xué)生實驗成績:\n', i ); scanf('%f', &student[i].expe); printf('請輸入第%d位學(xué)生必修課成績:\n', i ); scanf('%f', &student[i].requ); student[i].sum=student[i].elec+student[i].expe+student[i].requ; student[i].ave=student[i].sum /3; printf('學(xué)生人數(shù)%d\n',count);
|