目錄: 一,設計要求 1,總體要求: 2,具體功能: 二,設計框架 三,程序代碼 1,聲明函數和頭文件 2,聲明結構體 3,聲明全局變量 4,主體啟動函數 5,主菜單函數 6,創建學生檔案函數 7,編輯學生檔案函數 8,查詢學生檔案函數 9,輸出籍貫與專業函數 10,查詢學籍變化函數 11,刪除學生信息函數 四,測試代碼 1,運行界面 2,創建學生檔案 3,修改學生檔案信息 4,查詢學生檔案信息 5,查詢學生籍貫和專業信息 6,查詢學生學籍變化 7,刪除學生信息 五,設計的總結和感想
給讀者的話:由於期末作業簡單,而且沒有要求用到文件的知識,畢竟都還沒怎么上過結構體,所以這個系統的代碼也略顯簡單,希望以后回過頭來再看這些代碼,有更好的見解和領悟。如果你也是為了完成實訓或者交作業而看到這篇文章,請不要直接抄襲,注釋我寫得非常清楚,希望能夠真正地幫助到你。
設計要求:
1,總體要求
用數據文件存放學生的學籍,可對學生學籍進行注冊,登錄,修改,刪除,查找,統計,學籍變化等操作。
2,具體功能:
1,系統以菜單方式工作。
2,登記學生的學號,姓名,性別,年齡,籍貫,系別,專業,班級;修改已知學號的學生信息;
3,刪除已知學號的學生信息;
4,查找已知學號的學生信息;
5,按學號,專業輸出學生籍貫表。
6,查詢學生學籍變化,比如入學,轉專業,退學,降級,休學,畢業。
程序代碼:
1, 聲明函數和頭文件
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #define N 100 void menu(); void Student_Create(); void Student_Edit(); void Student_find(); void Student_native(); void Student_changes(); void Student_pop();
2, 聲明結構體
struct Studen_book { int num; char name[20]; char sex; int age; char native[80]; //籍貫 char depart[20]; //系別 char majoy[20]; //專業 char clas[20]; //班級 char native_changes[30]; //學籍 }stu[N];
3, 聲明全局變量
static int i=0;
4, 主體啟動函數
int main() //啟動程序 { menu(); return 0; }
5, 主菜單函數
void menu() //主菜單 { char sel='a'; while(sel!='0') { system("cls");//清屏函數 printf("|-----------------------------------------------|\n"); printf("| 學 生 學 籍 管 理 系 統 主 菜 單 |\n"); printf("|-----------------------------------------------|\n"); printf("| 1------創建學生檔案信息 【歡】 |\n"); printf("| 2------修改學生檔案信息 【迎】 |\n"); printf("| 3------刪除學生檔案信息 【使】 |\n"); printf("| 4------查詢學生檔案信息 【用】 |\n"); printf("| 5------查詢學生籍貫信息 【本】 |\n"); printf("| 6------查詢學生學籍變化 【程】 |\n"); printf("| 0------退出學籍管理系統 【序】 |\n"); printf("|-----------------------------------------------|\n"); printf("請輸入選項編號(0-6):"); sel = getch(); //無需回車 switch(sel) { case '1': Student_Create(); break; case '2': Student_Edit(); break; case '3': Student_pop(); break; case '4': Student_find(); break; case '5': Student_native(); break; case '6': Student_changes(); break; case '0': break; } if(sel=='0') printf("\n Thanks for your used!"); } }
6, 創建學生檔案函數
void Student_Create() //創建學生檔案 { char choose; Add: system("cls"); printf("請輸入學生學號:\n"); scanf("%d",&stu[i].num); printf("請輸入學生姓名:\n"); scanf("%s",&stu[i].name); getchar(); printf("請輸入學生性別(M或F):\n"); scanf("%c",&stu[i].sex); printf("請輸入學生年齡:\n"); scanf("%d",&stu[i].age); printf("請輸入學生籍貫:\n"); scanf("%s",&stu[i].native); printf("請輸入學生系別:\n"); scanf("%s",&stu[i].depart); printf("請輸入學生專業:\n"); scanf("%s",&stu[i].majoy); printf("請輸入學生班級:\n"); scanf("%s",&stu[i].clas); printf("請輸入學生學籍變化:\n"); scanf("%s",&stu[i].native_changes); i++; //輸完一項++,方便下一項輸入 ,同時計輸入的學生總數 getchar(); //回車繼續 printf("是否繼續添加('Y'or'N')?"); choose=getchar(); if(choose=='Y'||choose=='y') goto Add; }
7, 編輯學生檔案函數
void Student_Edit() //根據學號查找學生信息並編輯 { int t,number,n; char x; printf("\n輸入學號:"); scanf("%d",&number); for(t=0;t<i;t++) { if(stu[t].num==number) n=t; } printf("\n學生的信息如下:\n"); printf("1—學號:%d\n",stu[n].num); printf("2—姓名:%s\n",stu[n].name); printf("3—性別:%c\n",stu[n].sex); printf("4—年齡:%d\n",stu[n].age); printf("5—籍貫:%s\n",stu[n].native); printf("6—系別:%s\n",stu[n].depart); printf("7—專業:%s\n",stu[n].majoy); printf("8—班級:%s\n",stu[n].clas); printf("9—學籍變化:%s\n",stu[n].native_changes); printf("0—退出編輯\n"); printf("請輸入要編輯的選項(0-9):"); x=getch(); switch(x) { case '1': scanf("%d",&stu[n].num); break; case '2': scanf("%s",&stu[n].name); break; case '3': scanf("%c",&stu[n].sex); break; case '4': scanf("%d",&stu[n].age); break; case '5': scanf("%s",&stu[n].native); break; case '6': scanf("%s",&stu[n].depart); break; case '7': scanf("%s",&stu[n].majoy); break; case '8': scanf("%s",&stu[n].clas); break; case '9': scanf("%s",&stu[n].native_changes); break; case '0': return; } }
8, 查詢學生檔案函數
void Student_find() //根據學號查找學生信息 { char choose; int t,n,number; Find: int s=0; printf("\n請輸入要查詢的學號:"); scanf("%d",&number); for(t=0;t<i;t++) if(stu[t].num==number) {n=t; printf("\n【%d號】學生的信息如下:\n",number); printf("1—學號:%d\n",stu[n].num); printf("2—姓名:%s\n",stu[n].name); printf("3—性別:%c\n",stu[n].sex); printf("4—年齡:%d\n",stu[n].age); printf("5—籍貫:%s\n",stu[n].native); printf("6—系別:%s\n",stu[n].depart); printf("7—專業:%s\n",stu[n].majoy); printf("8—班級:%s\n",stu[n].clas); printf("9—學籍變化:%s\n",stu[n].native_changes); s=1; } if(s==0) printf("無此學生信息"); getchar(); printf("是否繼續(Y/N)?:"); choose=getchar(); getchar(); if(choose=='y'||choose=='Y') goto Find;
9, 輸出籍貫與專業函數
void Student_native() //按學號,專業輸出學生籍貫表 { char choose; int number=0; int t; Native: int s=0; printf("\n輸入查詢的學號:"); scanf("%d",&number); for(t=0;t<i;t++) if(stu[t].num==number) { printf("【%d號】學生的信息如下:\n",number); printf("學號:%d\n",stu[t].num); printf("籍貫:%s\n",stu[t].native); printf("專業:%s\n",stu[t].majoy); s=1; } if(s==0) printf("暫無該學生信息"); getchar(); printf("是否繼續(Y/N)?:"); choose=getchar(); getchar(); if(choose=='y'||choose=='Y') goto Native; }
10,查詢學籍變化函數
void Student_changes() //查詢學生的學籍變化 { int t; for(t=0;t<i;t++) { printf("\n%s的學籍情況如下:\n",stu[t].name); printf("%s",stu[t].native_changes); } getchar(); }
11,刪除學生信息函數
void Student_pop() //刪除學生信息 { int k=0,number,t; char choose; Del: system("cls"); /*清屏*/ printf("\n請輸入要刪除的學號:"); scanf("%d",&number); getchar(); for(t=0;t<i;t++) { if(number==stu[t].num) { k=1;break;} } if(k==1) { for(k=t;k<i-1;k++) { stu[k]=stu[k+1]; } i--; //刪除一項 總數對應減少 printf("已刪除\n\n"); } else { printf("找不到要刪除的記錄!\n"); printf("按回車鍵返回:"); getchar(); } printf("是否繼續(Y/N)?:"); choose=getchar(); getchar(); if(choose=='y'||choose=='Y') goto Del; }
主菜單界面: