C語言實現(xiàn)簡單的學生學籍管理系統(tǒng)
本文實例為大家分享了C語言實現(xiàn)學生學籍管理系統(tǒng)的具體代碼,供大家參考,具體內容如下
一 .課題設計內容與主要功能
1.1問題描述:
通過該系統(tǒng)實現(xiàn)對學生學籍信息進行錄入、顯示、修改、插入、刪除、排序、保存等操作的管理。
2.1功能要求:
1、本系統(tǒng)采用一個包含N個數(shù)據(jù)的結構體數(shù)組,每個數(shù)據(jù)的結構應當包括:學號、姓名、性別、出生日期、入學時間、專業(yè)、班級、備注。
2、本系統(tǒng)顯示這樣的菜單:
請選擇系統(tǒng)功能項:
j.學生學籍信息錄入
k.學生學籍信息顯示
l.學生學籍信息保存
m.學生學籍信息修改
n.學生學籍信息插入
o.學生學籍信息刪除
p.學生學籍信息排序
q.學生學籍信息查詢
r.退出系統(tǒng)
3、執(zhí)行一個具體的功能之后,程序將重新顯示菜單。
4、將學生學籍信息保存到文件中。
二.代碼
#include ? ?"stdio.h" #include ? ?"string.h" #include ? ? "stdlib.h" #define PF printf #define SF scanf #define N 20 FILE *fp; static int n = 0, i, m; struct date { ? ? char year[10]; ? ? char month[10]; ? ? char day[10]; }; struct classmate { ? ? char name[20]; ? ? char num[20]; ? ? char sex[10]; ? ? char clas[40]; ? ? struct date birth; ? ? char time[20]; ? ? char specialit[20]; ? ? char remark[40]; }stud[N] = {NULL}; void add() { ? ? char j; ? ? front1: ? ? for(m = 0;; m++) ? ? ? ? if(*stud[m].num== '\0')break; ? ? n = m; ?? ?system("cls"); ?/*清屏*/ ? ? PF("\n"); ? ? PF("\n請輸入要添加的姓名:"); ? ? SF("%s",stud[n].name); ? ? PF("\n請輸入要添加的學號(12位):"); ? ? SF("%s",&stud[n].num); ? ? PF("\n請輸入要添加的性別(男/女):"); ? ? SF("\n%s",&stud[n].sex); ? ? PF("\n請輸入要添加的班級:"); ? ? SF("%s",&stud[n].clas); ? ? PF("\n請輸入要添加的出生年份:"); ? ? SF("%s",&stud[n].birth.year); ? ? PF("\n請輸入要添加的出生月份:"); ? ? SF("%s",&stud[n].birth.month); ? ? PF("\n請輸入要添加的出生日子:"); ? ? SF("%s",&stud[n].birth.day); ? ? PF("\n請輸入要添加的入學日期:"); ? ? SF("%s",&stud[n].time); ? ? PF("\n請輸入要添加的專業(yè):"); ? ? SF("%s",&stud[n].specialit); ? ? PF("\n請輸入要添加的備注:"); ? ? SF("%s",stud[n].remark); ? ? getchar(); ? ? n++; ? ? PF("是否繼續(xù)(Y/N)?:"); ? ? j=getchar(); getchar(); ? ? if(j=='y'||j=='Y') ? ? { ? ? ? ? n++; ? ? ? ? goto front1; ? ? } ? ? ? ?/*再輸入記錄*/ } void del() { ? ? int ?k = 0; ? ? char j, s[20]; ? ? front2:; ? ? for(m = 0;; m++) ? ? ? ? if(*stud[m].num == '\0') ? ? ? ? ? ? break; ? ? n = m; ? ? system("cls"); ?/*清屏*/ ? ? PF("請輸入要刪除的學號:\n"); ? ? getchar(); ? ? gets(s); ? ? for(i = 0; i < n; i++) ? ? ? ?if(strcmp(s , stud[i].num) == 0) ? ? ? ? { ? ? ? ? ? ? k=1;break; ? ? ? ? } ? ? ? /*查找記錄*/ ? ? if(k == 1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*刪除記錄*/ ? ? { ? ? ? ? if(n == 1) ? ? ? ? { ? ? ? ? ? ? *stud[0].name = '\0'; ? ? ? ? ? ? *stud[0].num = '\0'; ? ? ? ? ? ? *stud[0].sex = '\0'; ? ? ? ? ? ? *stud[0].clas = '\0'; ? ? ? ? ? ? *stud[0].birth.year = '\0'; ? ? ? ? ? ? *stud[0].birth.month = '\0'; ? ? ? ? ? ? *stud[0].birth.day = '\0'; ? ? ? ? ? ? *stud[0].time = '\0'; ? ? ? ? ? ? *stud[0].specialit = '\0'; ? ? ? ? ? ? *stud[0].remark = '\0'; ? ? ? ? } ? ? ? ? else ? ? ? ? { ? ? ? ? ? ? for(k = i;k < n - 1; k++) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? stud[k] = stud[k+1]; ? ? ? ? ? ? } ? ? ? ? ? ? *stud[n - 1].name = '\0'; ? ? ? ? ? ? *stud[n - 1].num = '\0'; ? ? ? ? ? ? *stud[n - 1].sex = '\0'; ? ? ? ? ? ? *stud[n - 1].clas = '\0'; ? ? ? ? ? ? *stud[n - 1].birth.year = '\0'; ? ? ? ? ? ? *stud[n - 1].birth.month = '\0'; ? ? ? ? ? ? *stud[n - 1].birth.day = '\0'; ? ? ? ? ? ? *stud[n - 1].time = '\0'; ? ? ? ? ? ? *stud[n - 1].specialit = '\0'; ? ? ? ? ? ? *stud[n - 1].remark = '\0'; ? ? ? ? } ? ? ? ? PF("已刪除\n\n"); ? ? } ? ? else ? ? { ? ? ? ? ?PF("找不到要刪除的記錄!\n"); ? ? ? ? ?PF("按回車鍵返回:"); ? ? ? ? ?getchar(); ? ? } ? ? PF("是否繼續(xù)(Y/N)?:"); ? ? j = getchar(); getchar(); ? ? if(j=='y'||j=='Y') ? ? ? ? goto front2; } void find() { ? ? int ?i,s = 0; ? ? char j,k[20]; ? ? for(m = 0;; m++) ? ? ? ? if(*stud[m].num== '\0')break; ? ? n = m; ? ? front3: ? ? s=0; ? ? system("cls"); ?/*清屏*/ ? ? PF("\n請輸入要查詢的學號: "); ? ? getchar(); ? ? gets(k); ? ? for(i = 0;i <= n; i++) ? ? if(strcmp(k,stud[i].num) == 0) ? ? { ? ? PF("\t\t姓名:%-10s\n",stud[i].name); ? ? PF("\t\t學號:%-10s\n",stud[i].num); ? ? PF("\t\t性別:%s\n",stud[i].sex); ? ? PF("\t\t班級:%-12s\n",stud[i].clas); ? ? PF("\t\t出生日期:%-4s 年 %-2s 月 %-2s 日\n",stud[i].birth.year,stud[i].birth.month,stud[i].birth.day); ? ? PF("\t\t入學日期:%s\n",stud[i].time); ? ? PF("\t\t專業(yè):%s\n",stud[i].specialit); ? ? PF("\t\t備注:%s\n",stud[i].remark); ? ? s=1; ? ? } ? ? if(s==0) ? ? PF("查無此人!\n"); ? ? getchar(); ? ? PF("是否繼續(xù)查詢(Y/N)?:"); ? ? j=getchar();getchar(); ? ? if(j=='y'||j=='Y') ? ? ? ? goto front3; ? ? getchar(); } void arrange() { ? ? int k,i; ? ? struct classmate t; ? ? system("cls"); ?/*清屏*/ ? ? FILE *fp; ? ? int s; ? ? for(m = 0;; m++) ? ? ? ? if(*stud[m].num== '\0')break; ? ? n = m; ? ? for(k = 0;k < n - 1; k++) ? ? ? ? for(i = 0;i < n - k - 1; i++) ? ? ? ? ? ? if(strcmp(stud[i].num,stud[i+1].num) > 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? t = stud[i]; ? ? ? ? ? ? ? ? stud[i] = stud[i+1]; ? ? ? ? ? ? ? ? stud[i+1] = t; ? ? ? ? ? ? } ? ? ? ? ? ? else continue; ? ? for(i=0;i<=n-1;i++) ? ? if(stud[k].num != 0) ? ? { ? ? ? ? PF("\t\t姓名:%-10s\n",stud[i].name); ? ? ? ? PF("\t\t學號:%-10s\n",stud[i].num); ? ? ? ? PF("\t\t性別:%s\n",stud[i].sex); ? ? ? ? PF("\t\t班級:%-12s\n",stud[i].clas); ? ? ? ? PF("\t\t出生日期:%-4s 年 %-2s 月 %-2s 日\n",stud[i].birth.year,stud[i].birth.month,stud[i].birth.day); ? ? ? ? PF("\t\t入學日期:%s\n",stud[i].time); ? ? ? ? PF("\t\t專業(yè):%s\n",stud[i].specialit); ? ? ? ? PF("\t\t備注:%s\n\n",stud[i].remark); ? ? } ? ? PF("\t\t輸入回車返回主菜單"); ? ? getchar(); ? ? getchar(); } void change() { ? ? int ?k = 0; ? ? char j, s[20]; ? ? front5: ? ? system("cls"); ?/*清屏*/ ? ? for(m = 0;; m++) ? ? ? ? if(*stud[m].num== '\0')break; ? ? n = m; ? ? PF("\n請輸入要修改記錄的學號:"); ? ? getchar(); ? ? gets(s); ? ? for(i = 0;i < n; i++) ? ? ? ?if(strcmp(s , stud[i].num) == 0) ? ? ? ?{ ? ? ? ? ? ? k = 1;break; ? ? ? ?} ? ? ?/*查找*/ ? ? ? ?if(k == 1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*修改*/ ? ? ? ?{ ? ? ? ? ? ? PF("\n"); ? ? ? ? ? ? PF("\n請輸入修改后的姓名:"); ? ? ? ? ? ? SF("%s",stud[i].name); ? ? ? ? ? ? PF("\n請輸入修改后的學號:"); ? ? ? ? ? ? SF("%s",&stud[i].num); ? ? ? ? ? ? PF("\n請輸入修改后的性別:"); ? ? ? ? ? ? SF("\n%s",&stud[i].sex); ? ? ? ? ? ? PF("\n請輸入修改后的班級:"); ? ? ? ? ? ? SF("%s",&stud[i].clas); ? ? ? ? ? ? PF("\n請輸入修改后的出生年:"); ? ? ? ? ? ? SF("%s",&stud[i].birth.year); ? ? ? ? ? ? PF("\n請輸入修改后的出生月:"); ? ? ? ? ? ? SF("%s",&stud[i].birth.month); ? ? ? ? ? ? PF("\n請輸入修改后的出生日:"); ? ? ? ? ? ? SF("%s",&stud[i].birth.day); ? ? ? ? ? ? PF("\n請輸入修改后的入學日期:"); ? ? ? ? ? ? SF("%s",&stud[n].time); ? ? ? ? ? ? PF("\n請輸入修改后的專業(yè):"); ? ? ? ? ? ? SF("%s",&stud[n].specialit); ? ? ? ? ? ? PF("\n請輸入修改后的備注:"); ? ? ? ? ? ? SF("%s",stud[i].remark); ? ? ? ? ? ? PF("修改成功\n"); ? ? ? ? ? ? getchar(); ? ? ?} ? ? ?if(k==0) ? ? ?{ ? ? ? ? PF("找不到要修改的記錄!\n"); ? ? ? ? PF("按回車鍵返回:"); ? ? ? ? getchar(); ? ? ?} ? ? getchar(); ? ? PF("是否繼續(xù)(Y/N)?:"); ? ? j=getchar(); getchar(); ? ? if(j=='y'||j=='Y') goto front5; } void show() { ? ? int s; ? ? for(m = 0;; m++) ? ? ? ? if(*stud[m].num== '\0')break; ? ? n = m; ? ? for(s = 0;s < n;s++) ? ? { ? ? ? ? PF("\t\t姓名:%-10s\n",stud[s].name); ? ? ? ? PF("\t\t學號:%-10s\n",stud[s].num); ? ? ? ? PF("\t\t性別:%s\n",stud[s].sex); ? ? ? ? PF("\t\t班級:%-12s\n",stud[s].clas); ? ? ? ? PF("\t\t出生日期:%-4s 年 %-2s 月 %-2s 日\n",stud[s].birth.year,stud[s].birth.month,stud[s].birth.day); ? ? ? ? PF("\t\t入學日期:%s\n",stud[s].time); ? ? ? ? PF("\t\t專業(yè):%s\n",stud[s].specialit); ? ? ? ? PF("\t\t備注:%s\n\n",stud[s].remark); ? ? } ? ? PF("\t\t按回車鍵返回主菜單"); ? ? getchar(); ? ? getchar(); } void insert() { ? ? front9:; ? ? char j; ? ? for(m = 0;; m++) ? ? ? ? if(*stud[m].num== '\0')break; ? ? n = m; ?? ?system("cls"); ?/*清屏*/ ? ? PF("\n"); ? ? PF("\n請輸入要插入的姓名:"); ? ? SF("%s",stud[n].name); ? ? PF("\n請輸入要插入的學號(12位):"); ? ? SF("%s",&stud[n].num); ? ? PF("\n請輸入要插入的性別(男/女):"); ? ? SF("\n%s",&stud[n].sex); ? ? PF("\n請輸入要插入的班級:"); ? ? SF("%s",&stud[n].clas); ? ? PF("\n請輸入要插入的出生年份:"); ? ? SF("%s",&stud[n].birth.year); ? ? PF("\n請輸入要插入的出生月份:"); ? ? SF("%s",&stud[n].birth.month); ? ? PF("\n請輸入要插入的出生日子:"); ? ? SF("%s",&stud[n].birth.day); ? ? PF("\n請輸入要插入的入學日期:"); ? ? SF("%s",&stud[n].time); ? ? PF("\n請輸入要插入的專業(yè):"); ? ? SF("%s",&stud[n].specialit); ? ? PF("\n請輸入要插入的備注:"); ? ? SF("%s",stud[n].remark); ? ? getchar(); ? ? arrange(); ? ? front10:; ? ? PF("是否繼續(xù)(Y/N)?:"); ? ? j=getchar(); getchar(); ? ? if(j=='y'||j=='Y') ? ? { ? ? ? ? n++; ? ? ? ? goto front9; ? ? } } void main() { ?? ?char j; ?? ?PF("\n ? ? ? ? ? * * * * * * * * * * * * * * * * * * * * * * * * * * *"); ? ? PF("\n ? ? ? ? ? * ? ? ? ? ? ? ?歡迎使用學生學籍管理系統(tǒng) ? ? ? ? ? ? *"); ? ? PF("\n ? ? ? ? ? * ? ? ? ? ? ? ? ? ?制作人:胡彬 ? ? ? ? ? ? ? ? ? ? *"); ? ? PF("\n ? ? ? ? ? * ? ? ? ? ? ? ? ? ? 2020年1月 ? ? ? ? ? ? ? ? ? ? ? *"); ? ? PF("\n ? ? ? ? ? * ? ? ? ? ? ? ? 按回車鍵進入主菜單: ? ? ? ? ? ? ? ? *"); ? ? PF("\n ? ? ? ? ? * * * * * * * * * * * * * * * * * * * * * * * * * * *"); ? ? if(( fp = fopen("student.txt","r")) == NULL)//載入已保存的學籍信息 ? ? { ? ? ? ? PF("\n ? ? ? ? ? 數(shù)據(jù)加載失敗!"); ? ? } ? ? else ? ? { ? ? ? ? fread(stud, sizeof(struct classmate), N, fp); ? ? ? ? fclose(fp); ? ? ? ? PF("\n ? ? ? ? ? 數(shù)據(jù)加載成功"); ? ? } ? ? getchar(); ? ? loop: ? ? system("cls"); ? ? PF("\n"); ? ? PF("\t\t ? ************\n"); ? ? PF("\t\t ? * ?主菜單 ?*\n"); ? ? PF("\t\t ? ************\n"); ? ? PF("\t\t1.學生學籍信息錄入\n\n"); ? ? PF("\t\t2.學生學籍信息刪除\n\n"); ? ? PF("\t\t3.學生學籍信息查詢\n\n"); ? ? PF("\t\t4.學生學籍信息排序\n\n"); ? ? PF("\t\t5.學生學籍信息修改\n\n"); ? ? PF("\t\t6.學生學籍信息保存\n\n"); ? ? PF("\t\t7.退出系統(tǒng)\n\n"); ? ? PF("\t\t8.學生學籍信息顯示\n\n"); ? ? PF("\t\t9.學生學籍信息插入\n\n"); ? ? PF("\t\t請選擇[1/2/3/4/5/6/7/8]: "); ? ? j=getchar(); ? ? if(j=='\n') goto loop; ? ?/*返回主菜單*/ ? ? switch(j) ? ? { ? ? ? ? case '1': ? add(); goto loop; ? ?/*返回主菜單*/ ? ? ? ? case '2': ? del(); goto loop; ? ? ? ? case '3': ? find(); goto loop; ? ? ? ? case '4': ? arrange(); goto loop; ? ? ? ? case '5': ? change(); goto loop; ? ? ? ? case '6': ? { ? ? ? ? ? ? ? ? ? ? ? ? FILE *fp; ? ? ? ? ? ? ? ? ? ? ? ? fp=fopen("student.txt","w"); ? ? ? ? ? ? ? ? ? ? ? ? fwrite(stud,n*sizeof(struct classmate),1,fp); ? ? ? ? ? ? ? ? ? ? ? ? fclose(fp); goto loop; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? case '7': ? exit(0); ? ? ? ? case '8': ? show(); goto loop; ? ? ? ? case '9': ? insert();goto loop; ? ? ? ? default: ? ?goto loop; ? ? } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
完美解決QT?QGraphicsView提升到QChartView報錯的問題
使用QT提供的QChartView來繪制圖表,提升QGraphicsView控件繼承QChartView后,然后將QGraphicsView提升到我們自己寫的類,怎么才能確保提升后編譯不報錯呢,下面小編給大家?guī)砹薗T QGraphicsView 提升到QChartView報錯解決方案,感興趣的朋友一起看看吧2023-05-05