C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
設(shè)計(jì)一個(gè)學(xué)籍管理系統(tǒng),基本功能包括:
1.輸入學(xué)生基本信息
2.查詢學(xué)生信息(1.按學(xué)號2.按姓名)
3.刪除學(xué)生信息(1.按學(xué)號2.按姓名)
4.學(xué)生信息排序(1.按學(xué)號2.按姓名)
5.修改學(xué)生基本信息
6.輸出學(xué)生信息
7.保存學(xué)生信息
0.退出程序
注:由于知識有限,該系統(tǒng)暫時(shí)規(guī)定只輸入3個(gè)學(xué)生數(shù)據(jù),今后會(huì)改良成可隨機(jī)處理任意多個(gè)學(xué)生的數(shù)據(jù)
一、首頁
void enter(struct student stu[],int n) { ?? ?int select; ? ? while(select!=0) ?? ?{ ?? ? ? ? printf("\t\t\t ?---------------------------\n"); ?? ? ? ? printf("\n"); ? ? ? ? ?printf("\t\t\t ? ? 歡迎使用學(xué)籍管理系統(tǒng)\n"); ? ? ? ??? ? printf("\n"); ? ? ??? ? printf("\t\t\t ?---------------------------\n"); ?? ? ? ? printf("\t\t\t ?1.輸入學(xué)生基本信息\n"); ?? ? ? ? printf("\t\t\t ?2.查詢學(xué)生信息(1.按學(xué)號2.按姓名)\n"); ? ? ? ? ?printf("\t\t\t ?3.刪除學(xué)生信息(1.按學(xué)號2.按姓名)\n"); ? ? ? ? ?printf("\t\t\t ?4.學(xué)生信息排序(1.按學(xué)號2.按姓名)\n"); ? ? ? ? ?printf("\t\t\t ?5.修改學(xué)生基本信息\n"); ? ? ? ? ?printf("\t\t\t ?6.輸出學(xué)生信息\n"); ? ? ? ? ?printf("\t\t\t ?7.保存學(xué)生信息\n"); ? ? ? ? ?printf("\t\t\t ?0.退出程序\n"); ?? ? ? ? printf("\t\t\t ?請輸入您的選項(xiàng)"); ?? ? ? ? scanf("%d",&select); ?? ? ? ? system("cls"); ?? ? ? ? ? switch(select) ?? ??? ? ? { ?? ? ? ? ? ?case 1:input(stu,n);break; ?? ? ? ? ? ?case 2:seek(stu,n);break; ?? ? ? ? ? ?case 3:delect(stu,n);break; ?? ? ? ? ? ?case 4:sort(stu,n);break; ?? ? ? ? ? ?case 5:revise(stu,n);break; ?? ? ? ? ? ?case 6:output(stu,n);break; ? ? ? ? ? ? case 7:keep(stu,n);break; ?? ??? ??? ?case 0:printf("\t\t\t ?您已退出學(xué)籍管理系統(tǒng)\n");break; ? ? ? ? ? ? default:printf("輸入有誤\n"); ?? ??? ??? ?system("pause"); ?? ? ? ? ? ?system("cls");?? ? ? ? ?? ??? ? ? } ?? ?} }
二、輸入
int count=0; ? ?//計(jì)數(shù)器記錄學(xué)生個(gè)數(shù) void input(struct student stu[],int n) {?? ? ?? ?? ?int i; ?? ?if(count!=0) ?? ??? ?count=0; ? ? printf("\t\t\t-------------------------------\n"); ? ? printf("\n"); ? ? printf("\t\t\t ? 歡迎進(jìn)入學(xué)生信息錄入系統(tǒng)\n"); ? ? printf("\n"); ? ? printf("\t\t\t-------------------------------\n"); ? ? printf("\t\t請輸入學(xué)生基本信息(學(xué)號,姓名,年齡,性別(女w,男m))\n"); ? ? for(i=0;i<n;i++) ? ? scanf("%d %s %d %c",&stu[i].number,stu[i].name,&stu[i].age,&stu[i].sex); ?? ?system("cls"); ?? ?printf("\t\t\t ? ? ? ?學(xué)生信息已錄入\n"); ?? ?system("pause"); ? ? system("cls"); }
三、查詢
void seek(struct student stu[],int n) { ? ? int i,select2,num2; ?? ?char name2[10]; ?? ?printf("\t\t\t-------------------------------\n"); ? ? printf("\n"); ? ? printf("\t\t\t ? 歡迎進(jìn)入學(xué)生信息查詢系統(tǒng)\n"); ? ? printf("\n"); ? ? printf("\t\t\t-------------------------------\n"); ?? ?printf("\t\t請選擇查詢方式(1.按學(xué)號查詢 ?2.按姓名查詢)"); ?? ?scanf("%d",&select2); ?? ?system("cls"); ?? ?switch(select2) ?? ?{ ?? ?case 1: ?? ??? ?{? ?? ??? ? ? printf("\t\t\t\t ?請輸入學(xué)號"); ?? ??? ? ? scanf("%d",&num2); ?? ??? ? ? system("cls"); ?? ??? ? ? for(i=0;i<n-count;i++) ?? ??? ??? ? ? if(stu[i].number==num2)break; ? ? //判斷輸入學(xué)號和結(jié)構(gòu)數(shù)組的學(xué)號是否匹配,找到匹配項(xiàng)則退出循環(huán) ?? ??? ??? ? ? if(i<n-count) ? ? ? ? ? ? ? ? ? ? //數(shù)組下標(biāo)小于學(xué)生數(shù),則說明找到該學(xué)生,輸出信息 ?? ??? ??? ? ? { ?? ??? ??? ??? ? ? printf("\t\t\t您要查詢的學(xué)生信息為:\n"); ? ? ? ? ? ? ? ? ? ?printf("\t\t\t學(xué)號%d 姓名%s 年齡%d 性別%c\n",stu[i].number,stu[i].name,stu[i].age,stu[i].sex); ?? ??? ??? ? ? } ?? ??? ??? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//數(shù)組下標(biāo)等于學(xué)生數(shù),則沒有找到該學(xué)生 ?? ??? ??? ??? ? ? printf("\t\t\t\t查無此人\n"); ? ? ? ? ? ? ? ?system("pause"); ?? ??? ??? ? ? system("cls"); ?? ??? ?}break; ?? ??? ?case 2: ?? ?{ ?? ??? ?printf("\t\t\t\t ?請輸入姓名"); ?? ??? ?scanf("%s",name2); ?? ??? ?system("cls"); ?? ??? ?for(i=0;i<n-count;i++) ?? ? ? ?if(strcmp(stu[i].name,name2)==0)break; ?? ??? ?if(i<n-count) ?? ??? ?{ ? ? ? ? printf("\t\t\t您要查詢的學(xué)生信息為:\n"); ? ? ? ? printf("\t\t\t學(xué)號%d 姓名%s 年齡%d 性別%c\n",stu[i].number,stu[i].name,stu[i].age,stu[i].sex); ?? ??? ?} ?? ??? ?else ?? ??? ? ? printf("\t\t\t\t查無此人\n"); ? ? ? ? system("pause"); ?? ??? ?system("cls");?? ? ?? ?}break; ?? ?} }?
四、刪除
void delect(struct student stu[],int n) { ? ? int i=n,j,select3,num3,choice3; ? ? char name3[10]; ? ? printf("\t\t\t-------------------------------\n"); ? ? printf("\n"); ? ? printf("\t\t\t ? 歡迎進(jìn)入學(xué)生信息刪除系統(tǒng)\n"); ? ? printf("\n"); ? ? printf("\t\t\t-------------------------------\n"); ?? ?printf("\t\t請選擇刪除方式(1.按學(xué)號刪除 ?2.按姓名刪除)"); ? ? scanf("%d",&select3); ? ? system("cls"); ?? ?switch(select3) ?? ?{ ?? ?case 1: ?? ??? ?{ ? ? ? ? ? ? printf("\t\t\t\t ?請輸入學(xué)號"); ? ? ? ? ? ? scanf("%d",&num3); ?? ??? ? ? ?system("cls"); ?? ??? ? ? ?for(i=0;i<n-count;i++) ?? ??? ??? ? ? if(stu[i].number==num3)break;//首先找到要?jiǎng)h除的學(xué)生 ?? ??? ??? ? ? if(i<n-count) ?? ??? ??? ? ? { ?? ??? ??? ??? ? printf("\t\t\t當(dāng)前您要修改的學(xué)生信息為\n"); ?? ??? ? ? ? ? ? printf("\t\t\t學(xué)號%d 姓名%s 年齡%d 性別%c\n",stu[i].number,stu[i].name,stu[i].age,stu[i].sex); ?? ??? ? ? ? ? ? printf("\t\t\t如果您不想再刪除該生信息請按0,繼續(xù)刪除請按1\n"); ?? ??? ? ? ? ? ? scanf("%d",&choice3); ? ? ? ? ? ? ? ? ?system("cls"); ?? ??? ??? ??? ? if(choice3==1) ?? ??? ??? ??? ? { ?? ??? ??? ??? ? ? for(j=i;j<n-count;j++)//從該學(xué)生往后每一項(xiàng)向前移動(dòng)一項(xiàng),覆蓋前一個(gè)數(shù)據(jù)項(xiàng) ?? ??? ??? ??? ??? ? ? stu[j]=stu[j+1]; ?? ??? ??? ??? ? ? count++; ?? ??? ??? ??? ? ? printf("\t\t\t\t該生信息已刪除\n"); ? ? ? ? ? ? ? ? ? ?system("pause"); ? ? ? ? ? ? ? ? ? ?system("cls"); ?? ??? ??? ??? ? } ?? ??? ??? ? ? } ? ? ? ? ? ? ? ?else ?? ??? ??? ? ? { ?? ??? ? ? ? ? ? ? printf("\t\t\t\t查無此人\n"); ? ? ? ? ? ? ? ? ? ?system("pause"); ?? ??? ??? ??? ? ? system("cls");?? ? ?? ??? ??? ? ? } ?? ??? ?}break; ?? ?case 2: ?? ??? ?{ ?? ??? ??? ? ?printf("\t\t\t\t ?請輸入姓名"); ?? ??? ??? ? ?scanf("%s",&name3); ? ? ? ? ? ? ? system("cls"); ?? ??? ??? ? ?for(i=0;i<n-count;i++) ?? ??? ??? ??? ?if(strcmp(stu[i].name,name3)==0)break; ? ? ? ? ? ? ? ? if(i<n-count) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ? printf("\t\t\t當(dāng)前您要修改的學(xué)生信息為\n"); ?? ??? ? ? ? ? ? printf("\t\t\t學(xué)號%d 姓名%s 年齡%d 性別%c\n",stu[i].number,stu[i].name,stu[i].age,stu[i].sex); ?? ??? ? ? ? ? ? printf("\t\t\t如果您不想再刪除該生信息請按0,繼續(xù)刪除請按1\n"); ?? ??? ? ? ? ? ? scanf("%d",&choice3); ? ? ? ? ? ? ? ? ?system("cls"); ?? ??? ??? ??? ? if(choice3==1) ?? ??? ??? ??? ? { ?? ??? ??? ??? ??? ?for(j=i;j<n-count;j++) ? ? ? ? ? ? ? ? ? ? ? ? stu[j]=stu[j+1]; ?? ??? ??? ??? ? ? ?count++; ? ? ? ? ? ? ? ? ? ? printf("\t\t\t\t該生信息已刪除\n"); ? ? ? ? ? ? ? ? ? ? system("pause"); ? ? ? ? ? ? ? ? ? ? system("cls"); ?? ??? ??? ??? ? } ?? ??? ??? ??? ?} ?? ??? ??? ??? ?else ?? ??? ??? ??? ?{ ?? ??? ? ? ? ? ? ? ?printf("\t\t\t\t查無此人\n"); ? ? ? ? ? ? ? ? ? ? system("pause"); ?? ??? ? ? ? ? ? ? ?system("cls");?? ? ?? ??? ??? ??? ?} ?? ??? ?} ?? ?} }
五、排序
void sort(struct student stu[],int n) { ? ? int select4,i,j; ?? ?struct student t; ? ? printf("\t\t\t-------------------------------\n"); ? ? printf("\n"); ? ? printf("\t\t\t ? 歡迎進(jìn)入學(xué)生信息排序系統(tǒng)\n"); ? ? printf("\n"); ? ? printf("\t\t\t-------------------------------\n"); ?? ?printf("\t\t請選擇排序方式(1.按學(xué)號排序 ?2.按姓名排序)"); ? ? scanf("%d",&select4); ?? ?system("cls"); ?? ?switch(select4) ?? ?{ ?? ?case 1:{ ? //冒泡排序 ?? ??? ??? ??? ?for(j=1;j<n-count;j++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?for(i=0;i<n-count-j;i++) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?if(stu[i].number>stu[i+1].number) ?? ??? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ??? ?t=stu[i]; ?? ??? ??? ??? ??? ??? ??? ?stu[i]=stu[i+1]; ?? ??? ??? ??? ??? ??? ??? ?stu[i+1]=t; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?}?? ? ?? ?? ??? ? ? }break; ?? ?case 2:{ ? ? ? ? ? ? ? ? for(j=1;j<n-count;j++) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?for(i=0;i<n-count-j;i++) ?? ??? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ??? ?if(strcmp(stu[i].name,stu[i+1].name)>0) ?? ??? ??? ??? ??? ??? ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? t=stu[i]; ?? ??? ??? ??? ??? ??? ??? ?stu[i]=stu[i+1]; ?? ??? ??? ??? ??? ??? ??? ?stu[i+1]=t; ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ? ? } ?? ?} printf("\t\t\t\t已按要求完成排序\n"); system("pause"); system("cls");?? ??? ? ?? }?
六、修改
void revise(struct student stu[],int n) { ? ? int num5,i=n,choice5; ? ? printf("\t\t\t-------------------------------\n"); ? ? printf("\n"); ? ? printf("\t\t\t ? 歡迎進(jìn)入學(xué)生信息修改系統(tǒng)\n"); ? ? printf("\n"); ? ? printf("\t\t\t-------------------------------\n"); ?? ?printf("\t\t\t請輸入您要修改的學(xué)生學(xué)號"); ?? ?scanf("%d",&num5); ?? ?system("cls"); ? ? for(i=0;i<n-count;i++) ?? ? ? if(stu[i].number==num5)break; ?? ? ? ? if(i<n-count) ?? ??? ? { ?? ??? ? ? printf("\t\t\t當(dāng)前您要修改的學(xué)生信息為\n"); ?? ??? ? ? printf("\t\t\t學(xué)號%d 姓名%s 年齡%d 性別%c\n",stu[i].number,stu[i].name,stu[i].age,stu[i].sex); ?? ??? ? ? printf("\t\t\t如果您不想再修改該生信息請按0,繼續(xù)修改請按1\n"); ?? ??? ? ? scanf("%d",&choice5); ? ? ? ? ? ?system("cls"); ?? ??? ? ? if(choice5==1) ?? ??? ? ? { ?? ??? ? ? printf("\t\t\t請輸入修改的信息\n"); ? ? ? ? ? ?printf("\t\t\t學(xué)號\t姓名\t年齡\t性別\n"); ?? ??? ? ? printf("\t\t\t"); ? ? ? ? ? ?scanf("%d %s %d %c",&stu[i].number,stu[i].name,&stu[i].age,&stu[i].sex);//直接將新信息存儲(chǔ)到原數(shù)據(jù)項(xiàng)中,覆蓋原信息即可 ?? ??? ? ? system("cls"); ? ? ? ? ? ?printf("\t\t\t\t已完成信息修改\n"); ? ? ? ? ? ?system("pause"); ? ? ? ? ? ?system("cls"); ?? ??? ? ? } ?? ??? ? } ?? ? ? ? else ?? ??? ? { ?? ??? ? ? printf("\t\t\t\t查無此人\n"); ?? ??? ? ? system("pause"); ? ? ? ? ? ?system("cls"); ?? ??? ? } }
七、輸出
void output(struct student stu[],int n) { ?? ?int i; ? ? printf("\t\t\t-------------------------------\n"); ? ? printf("\n"); ? ? printf("\t\t\t ? 歡迎進(jìn)入學(xué)生信息輸出系統(tǒng)\n"); ? ? printf("\n"); ? ? printf("\t\t\t-------------------------------\n"); ?? ?for(i=0;i<n-count;i++)//循環(huán)輸出所有學(xué)生信息 ? ? printf("\t\t\t ?學(xué)號%d 姓名%s 年齡%d 性別%c\n",stu[i].number,stu[i].name,stu[i].age,stu[i].sex); ?? ?system("pause"); ?? ?system("cls"); }
八、保存
void keep(struct student stu[],int n) { ?? ?FILE *fp; ? ? //文件指針fp ?? ?int i; ?? ?if((fp=fopen("d:\\xsxx.txt","wt+"))==NULL)//在D盤讀寫打開或建立一個(gè)名為“xxsx”的文本文件,允許讀寫 ?? ?{ ?? ??? ?printf("\t\t\t\t文件不能打開!"); ?? ??? ?exit(0); ?? ?} ?? ?for(i=0;i<n-count;i++) ?? ??? ?fprintf(fp,"%d\t%s\t%d\t%c\n",stu[i].number,stu[i].name,stu[i].age,stu[i].sex);//調(diào)用格式化寫fprintf()函數(shù),將數(shù)組中內(nèi)容寫入文件 ?? ?fclose(fp); ?? ?printf("\t\t\t\t文件已保存\n"); ? ? system("pause"); ?? ?system("cls"); }
九、主函數(shù)
int main(){ ?? ?struct student stu[3]; ?? ?enter(stu,3); ? ?//規(guī)定學(xué)生數(shù)為3人 ?? ?return 0; }
十、結(jié)構(gòu)體定義
struct student{ ?? ?int number; ?? ?char name[10]; ?? ?int age; ?? ?char sex; }; ? ?//定義結(jié)構(gòu)體student
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語言模擬實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)籍信息管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計(jì)
- C語言學(xué)籍管理系統(tǒng)源代碼
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計(jì)
- C語言實(shí)現(xiàn)簡單學(xué)生學(xué)籍管理系統(tǒng)
- C語言動(dòng)態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表
在數(shù)據(jù)結(jié)構(gòu)中,線性表是入門級數(shù)據(jù)結(jié)構(gòu),線性表又分為順序表和鏈表,這篇文章主要給大家介紹了關(guān)于C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表的相關(guān)資料,需要的朋友可以參考下2021-06-06深入了解C++優(yōu)先隊(duì)列(priority_queue)的使用方法
在計(jì)算機(jī)科學(xué)中,優(yōu)先隊(duì)列是一種抽象數(shù)據(jù)類型,它與隊(duì)列相似,但是每個(gè)元素都有一個(gè)相關(guān)的優(yōu)先級。C++中的優(yōu)先隊(duì)列是一個(gè)容器適配器(container adapter),它提供了一種在元素之間維護(hù)優(yōu)先級的方法。本文帶你深入了解C++優(yōu)先隊(duì)列的使用方法,需要的可以參考下2023-05-05C++實(shí)現(xiàn)LeetCode(148.鏈表排序)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(148.鏈表排序),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++實(shí)現(xiàn)LeetCode(191.位1的個(gè)數(shù))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(191.位1的個(gè)數(shù)),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08