#include<stdio.h> #include<stdlib.h> /*定義學生結構體*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Avarage; }; /*聲明學生數組及學生數量*/ struct Student students[1000]; int num=0; /*計算平均成績*/ float Avg(struct Student stu) { return (stu.Mark1+stu.Mark2+stu.Mark3)/3; } /*根據學號尋找數組下標*/ int GetIndexByStudentId(char id[]) { int i; for(i=0;i<num;i++) { if(strcmp(students[i].ID,id)==0) { return i; } } return -1; } /*根據姓名尋找數組下標*/ int GetIndexByStudentName(char name[]) { int i; for(i=0;i<num;i++) { if(strcmp(students[i].Name,name)==0) { return i; } } return -1; } /*SHowStudent*/ int ShowStudentInfo() { int i; IO_ReadInfo(); printf("%10s%10s%10s%10s%10s%10s\n","學號","姓名","成績1","成績2","成績3","平均分"); printf("-----------------------------------------------------------\n"); for(i=0;i<=num;i++) { students[i].Avarage=Avg(students[i]); printf("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2, students[i].Mark3,students[i].Avarage); } return 0; } int ShowStudentInfo1() { int i; IO_ReadInfo(); printf("%10s%10s%10s%10s%10s%10s\n","學號","姓名","成績1","成績2","成績3","平均分"); printf("-----------------------------------------------------------\n"); for(i=0;i<=num;i++) { students[i].Avarage=Avg(students[i]); printf("%10s%10s%10.2f%10.2f%10.2f%10.2f\n",students[i].ID,students[i].Name,students[i].Mark1,students[i].Mark2, students[i].Mark3,students[i].Avarage); } system("pause"); printMenu(); printf("%d\n",userChoice()); } /*增加學生記錄*/ int addStudent() { while(1) { printf("請輸入學號:"); scanf("%s",&students[num].ID); printf("請輸入姓名:"); scanf("%s",&students[num].Name); printf("請輸入成績1:"); scanf("%f",&students[num].Mark1); printf("請輸入成績2:"); scanf("%f",&students[num].Mark2); printf("請輸入成績3:"); scanf("%f",&students[num].Mark3); ShowStudentInfo(); IO_WriteInfo(); num++; getchar(); printf("是否繼續?y/n"); if(getchar()=='n') { printMenu(); printf("%d\n",userChoice()); break; } } return 0; } /*將信息寫入文件*/ int IO_WriteInfo() { int i; FILE *fp; fp=fopen("C:\\12.txt","wb"); fwrite(&num,sizeof(int),1,fp); for(i=0;i<=num;i++) { fwrite(&students[i],sizeof(struct Student),1,fp); } fclose(fp); } /*將文件信息讀出*/ int IO_ReadInfo() { int i; FILE *fp; fp=fopen("C:\\12.txt","wb"); fread(&num,sizeof(int),1,fp); for(i=0;i<=num;i++) { fread(&students[i],sizeof(struct Student),1,fp); } fclose(fp); } int main() { printMenu(); printf("%d\n",userChoice()); system("pause"); } //菜單打印 int printMenu() { printf("歡迎使用學生成績管理系統!\n"); printf("1.增加學生記錄\n"); printf("2.修改學生記錄\n"); printf("3.刪除學生記錄\n"); printf("4.查詢學生記錄\n"); printf("5.退出\n"); return 0; } //接收用戶輸入選擇 int userChoice() { int choice; printf("請輸入選擇《1-5》:"); scanf("%d",&choice); switch(choice) { case 1: addStudent(); case 2: return 2; case 3: return 3; case 4: ShowStudentInfo1(); case 5: exit(0); } }
廢話不多寫,一步一步來。
第一步,要確定自己的需求,打印出需求。
int main() { printf("歡迎使用學生成績管理系統!\n"); printf("1.增加學生記錄\n"); printf("2.修改學生記錄\n"); printf("3.刪除學生記錄\n"); printf("4.查詢學生記錄\n"); printf("5.退出\n"); system("pause"); }
第二步,將菜單打印寫一個函數。
int main() { printMenu(); system("pause"); } //菜單打印 int printMenu() { printf("歡迎使用學生成績管理系統!\n"); printf("1.增加學生記錄\n"); printf("2.修改學生記錄\n"); printf("3.刪除學生記錄\n"); printf("4.查詢學生記錄\n"); printf("5.退出\n"); return 0; }
第三步,接收用戶輸入的選擇,並測試
int main() { printMenu(); printf("%d\n",userChoice()); system("pause"); } //菜單打印 int printMenu() { printf("歡迎使用學生成績管理系統!\n"); printf("1.增加學生記錄\n"); printf("2.修改學生記錄\n"); printf("3.刪除學生記錄\n"); printf("4.查詢學生記錄\n"); printf("5.退出\n"); return 0; } //接收用戶輸入選擇 int userChoice() { int choice; printf("請輸入選擇《1-6》:"); scanf("%d",&choice); switch(choice) { case 1: return 1; case 2: return 2; case 3: return 3; case 4: return 4; case 5: return 5; } }
第4步,定義結構體變量Student並插入學生信息打印測試。
#include<stdio.h> /*定義學生結構體*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Avarage; }; /*聲明學生數組及學生數量*/ struct Student students[1000]; int num=0; /*增加學生記錄*/ int addStudent() { printf("請輸入學號:"); scanf("%s",&students[num].ID); printf("請輸入姓名:"); scanf("%s",&students[num].Name); printf("請輸入成績1:"); scanf("%f",&students[num].Mark1); printf("請輸入成績2:"); scanf("%f",&students[num].Mark2); printf("請輸入成績3:"); scanf("%f",&students[num].Mark3); printf("學號:%s,姓名:%s,成績1:%0.2f,成績2:%0.2f,成績3:%0.2f", students[num].ID,students[num].Name,students[num].Mark1,students[num].Mark2,students[num].Mark3); num++; return 0; } int main() { printMenu(); printf("%d\n",userChoice()); system("pause"); } //菜單打印 int printMenu() { printf("歡迎使用學生成績管理系統!\n"); printf("1.增加學生記錄\n"); printf("2.修改學生記錄\n"); printf("3.刪除學生記錄\n"); printf("4.查詢學生記錄\n"); printf("5.退出\n"); return 0; } //接收用戶輸入選擇 int userChoice() { int choice; printf("請輸入選擇《1-5》:"); scanf("%d",&choice); switch(choice) { case 1: addStudent(); case 2: return 2; case 3: return 3; case 4: return 4; case 5: return 5; } }
第五步計算平均成績,將數據讀寫到文件。