<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現學生管理系統的具體程式碼,供大家參考,具體內容如下
首先我們在做一個管理系統之前要了解這個學生管理系統需要哪些功能,如:簡單的增,刪,改,查,即:錄入成績,查詢成績,刪除成績,修改成績,插入成績,這幾個是基本要包括的,當然我們也可以加上排序,統計學生人數,這些功能。
當清楚需要哪些功能之後我們就可以寫系統的介面了。
效果圖如下:
printf("ttt---------------STUDENT---------------tttn"); printf("ttt0.退出tttn"); printf("ttt1.錄入成績tttn"); printf("ttt2.查詢成績tttn"); printf("ttt3.刪除成績tttn"); printf("ttt4.修改成績tttn"); printf("ttt5.插入成績tttn"); printf("ttt6.排序tttn"); printf("ttt7.統計學生人數tttn"); printf("ttt-------------------------------------tttn"); printf("ttt選擇(0---7)ttt");
接著我們就可以加入switch函數進行功能選擇
定義整型變數choice
int choice ; scanf("%d",&choice ); switch(choice ) { case 0:exit(0); break; 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;//統計 default:printf("n輸入錯誤,請輸入0---7nn");system("pause");system("cls");break; }
定義一個Menu函數把上面兩個結合起來,我們加一個while迴圈讓這個這個選單一直迴圈出現,而不是用一次就沒了。
void Menu()//選單 { while(1) { printf("ttt---------------STUDENT---------------tttn"); printf("ttt0.退出tttn"); printf("ttt1.錄入成績tttn"); printf("ttt2.查詢成績tttn"); printf("ttt3.刪除成績tttn"); printf("ttt4.修改成績tttn"); printf("ttt5.插入成績tttn"); printf("ttt6.排序tttn"); printf("ttt7.統計學生人數tttn"); printf("ttt-------------------------------------tttn"); printf("ttt選擇(0---7)ttt"); int chioce; scanf("%d",&chioce); switch(chioce) { case 0:exit(0); break; 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;//統計 default:printf("n輸入錯誤,請輸入0---7nn");system("pause");system("cls");break; } } }
寫完選單之後我們就要對“學生”這個資料進行分析
在這個系統中學生的資訊要包含那些東西,舉個例子:學號,姓名,選修課成績,實驗課成績,必修課成績,總成績,平均成績。然後根據這些寫一個結構體(我寫的是陣列型別的結構體)
struct student { char num[20];//學號 char name[20];//姓名 float elec;//選修課 float expe;//實驗課 float requ;//必修課 float sum;//總成績 ' float ave;//平均成績 }student[N];
接著我們開始寫實現這個系統功能的函數
第一個就是成績的錄入
void in()//錄入資訊 { void save() ; int i,n; printf("輸入錄取學生的數量n"); scanf("%d", &n); for (i=1 ; i<=n; i++) { printf("請輸入第%d位學生學號:n",i); scanf("%s",student[i].num); printf("請輸入第%d位學生姓名:n", i ); scanf("%s",student[i].name); printf("請輸入第%d位學生選修課成績:n", i ); scanf("%f",&student[i].elec); printf("請輸入第%d位學生實驗成績:n", i ); scanf("%f", &student[i].expe); printf("請輸入第%d位學生必修課成績: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; count++; } printf("錄入成功n"); }
第二個就是成績的查詢
void show() //查詢 { int i; char xh[20]; printf("請輸入要查詢的學生學號:n"); getchar(); gets(xh); for (i=0;i<N;i++) { if(strcmp(student[i].num,xh)==0)//對比兩個字串如果兩者一樣則進行if下面的的語句否則繼續迴圈 printf("n學號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1fn", student[i].num,student[i].name,student[i].elec,student[i].expe,student[i].requ,student[i].sum,student[i].ave); } }
第三個就是成績的刪除
void del()//刪除 { void save() ; int j,a=0,k=count; char xh[25]; printf("所要刪除的學生學號為:n"); scanf("%s",xh); flush(stdin);//緩衝區 for (j=0;j<count;j++) { if (strcmp(student[j].num,xh)==0) { for (j=a;j<count;j++) student[j]=student[j+1]; count--; if (count<k) printf("刪除成功n"); } a++; } if (j==count-1) printf("沒有你所要刪除的學生的資訊n"); }
第四項,成績的修改
步驟 1.先找到要修改的學生
2.選擇修改的專案
3.更改總成績和平均分
4.顯示修改後的學生資料
void modify()//修改 { void save() ; int i,j,h; float score; char xh[20]; printf ("01.輸入修改的學生的學號:n") ; scanf("%s",xh); for(i=1;i<N;i++) if (strcmp(student[i].num,xh)==0) j=i; printf("請選擇修改內容n"); printf("1.修改該學生的選修課成績n"); printf("2.修改該學生的實驗課成績n"); printf("3.修改該學生的必修課成績n"); scanf("%d",&h); switch (h) { case 1:printf("請輸入該學生的選修課成績n");scanf("%f",&score);student[j].elec=score; break; case 2:printf("請輸入該學生的實驗課成績n");scanf("%f",&score);student[j].expe=score;break; case 3:printf("請輸入該學生的必修課成績n");scanf("%f",&score);student[j].requ=score;break; default :printf("n輸入錯誤,請輸入1---3nn"); break; } student[j].sum = student[j].elec+student[j].expe + student[j].requ; printf("修改後為:n"); printf("n學號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1fn", student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave); printf("n"); printf("修改成功n") ; }
第五項,成績的插入
void insert ()//插入 {void save(); int m, flag, i = count, j,k; printf("請輸入待新增的學生人數:n"); scanf("%d", &m); if (m > 0) { k=count+1; for(i=k;i<=count+m;i++) { flag = 1; while (flag!= 0) { flag = 0; printf("請輸入第%d位學生的學號:n", i); getchar(); gets(student[i].num); for (j = 0; j < i; j++) { if (strcmp(student[i].num, student[j].num) == 0) { printf("該學號已存在,請重新輸入!n"); flag = 1; break; } } } printf("請輸入第%d位學生姓名:n", i ); gets(student[i].name); printf("請輸入第%d位學生選修課成績:n", i ); scanf("%f",&student[i].elec); printf("請輸入第%d位學生實驗成績:n", i ); scanf("%f", &student[i].expe); printf("請輸入第%d位學生必修課成績: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; } count+= m; printf("新增完成!n"); system("pause"); } }
第六項,排序
void order()//排序 { int i,j,m; for(j=1;j<=count-1;j++) { m=j; for(i=j+1;i<=count;i++) { if(student[i].sum < student[m].sum) { student[0]=student[i]; student[i]=student[m]; student[m]=student[0]; } } } for(j=1;j<=count;j++) { printf("n學號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1fn", student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave); } }
第七項,統計學生人數
void total ()//統計 { printf("學生人數%dn",count); }
完整的程式碼
#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 struct student { char num[20];//學號 char name[20];//姓名 float elec;//選修課 float expe;//實驗課 float requ;//必修課 float sum;//總成績 ' float ave;//平均成績 }student[N]; void Menu(); // 選單 void in();//錄入 void show() ;//查詢 void order();//排序 void del(); //刪除 void modify();//修改 void total ();//統計 void insert ();//插入 int count=0;//人數 void save();//儲存 int main() { Menu(); return 0; } void Menu()//選單 { while(1) { printf("ttt---------------STUDENT---------------tttn"); printf("ttt0.退出tttn"); printf("ttt1.錄入成績tttn"); printf("ttt2.查詢成績tttn"); printf("ttt3.刪除成績tttn"); printf("ttt4.修改成績tttn"); printf("ttt5.插入成績tttn"); printf("ttt6.排序tttn"); printf("ttt7.統計學生人數tttn"); printf("ttt-------------------------------------tttn"); printf("ttt選擇(0---7)ttt"); int chioce; scanf("%d",&chioce); switch(chioce) { case 0:exit(0); break; 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;//統計 default:printf("n輸入錯誤,請輸入0---7nn");system("pause");system("cls");break; } } } void save() //儲存 { FILE* fp; char filename[100]; int i; printf("請輸入要儲存的檔名:n"); scanf("%s", filename); if ((fp = fopen(filename, "w")) == NULL) { printf("開啟檔案失敗!n"); exit(0); } for (i = 1; i<=count; i++) { if (fwrite(&student[i], sizeof(struct student), 1, fp) != 1) printf("儲存失敗!n"); } printf("儲存成功!n"); fclose(fp); } void in()//錄入資訊 { void save() ; int i,n; printf("輸入錄取學生的數量n"); scanf("%d", &n); for (i=1 ; i<=n; i++) { printf("請輸入第%d位學生學號:n",i); scanf("%s",student[i].num); printf("請輸入第%d位學生姓名:n", i ); scanf("%s",student[i].name); printf("請輸入第%d位學生選修課成績:n", i ); scanf("%f",&student[i].elec); printf("請輸入第%d位學生實驗成績:n", i ); scanf("%f", &student[i].expe); printf("請輸入第%d位學生必修課成績: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; count++; } printf("錄入成功n"); } void modify()//修改 { void save() ; int i,j,h; float score; char xh[20]; printf ("01.輸入修改的學生的學號:n") ; scanf("%s",xh); for(i=1;i<N;i++) if (strcmp(student[i].num,xh)==0) j=i; printf("請選擇修改內容n"); printf("1.修改該學生的選修課成績n"); printf("2.修改該學生的實驗課成績n"); printf("3.修改該學生的必修課成績n"); scanf("%d",&h); switch (h) { case 1:printf("請輸入該學生的選修課成績n");scanf("%f",&score);student[j].elec=score; break; case 2:printf("請輸入該學生的實驗課成績n");scanf("%f",&score);student[j].expe=score;break; case 3:printf("請輸入該學生的必修課成績n");scanf("%f",&score);student[j].requ=score;break; default :printf("n輸入錯誤,請輸入1---3nn"); break; } student[j].sum = student[j].elec+student[j].expe + student[j].requ; printf("修改後為:n"); printf("n學號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1fn", student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave); printf("n"); printf("修改成功n") ; } void show() //查詢 { int i; char xh[20]; printf("請輸入要查詢的學生學號:n"); getchar(); gets(xh); for (i=0;i<N;i++) { if(strcmp(student[i].num,xh)==0) printf("n學號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1fn", student[i].num,student[i].name,student[i].elec,student[i].expe,student[i].requ,student[i].sum,student[i].ave); } } void order()//排序 { int i,j,m; for(j=1;j<=count-1;j++) { m=j; for(i=j+1;i<=count;i++) { if(student[i].sum < student[m].sum) { student[0]=student[i]; student[i]=student[m]; student[m]=student[0]; } } } for(j=1;j<=count;j++) { printf("n學號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1fn", student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave); } } void del()//刪除 { void save() ; int j,a=0,k=count; char xh[25]; printf("所要刪除的學生學號為:n"); scanf("%s",xh); flush(stdin); for (j=0;j<count;j++) { if (strcmp(student[j].num,xh)==0) { for (j=a;j<count;j++) student[j]=student[j+1]; count--; if (count<k) printf("刪除成功n"); } a++; } if (j==count-1) printf("沒有你所要刪除的學生的資訊n"); } void insert ()//插入 {void save(); int m, flag, i = count, j,k; printf("請輸入待新增的學生人數:n"); scanf("%d", &m); if (m > 0) { k=count+1; for(i=k;i<=count+m;i++) { flag = 1; while (flag!= 0) { flag = 0; printf("請輸入第%d位學生的學號:n", i); getchar(); gets(student[i].num); for (j = 0; j < i; j++) { if (strcmp(student[i].num, student[j].num) == 0) { printf("該學號已存在,請重新輸入!n"); flag = 1; break; } } } printf("請輸入第%d位學生姓名:n", i ); gets(student[i].name); printf("請輸入第%d位學生選修課成績:n", i ); scanf("%f",&student[i].elec); printf("請輸入第%d位學生實驗成績:n", i ); scanf("%f", &student[i].expe); printf("請輸入第%d位學生必修課成績: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; } count+= m; printf("新增完成!n"); system("pause"); } } void total ()//統計 { printf("學生人數%dn",count); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45