C語言實現(xiàn)學籍管理系統(tǒng)
本文實例為大家分享了C語言實現(xiàn)學籍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
設(shè)計一個學籍管理系統(tǒng),基本功能包括:
1.輸入學生基本信息
2.查詢學生信息(1.按學號2.按姓名)
3.刪除學生信息(1.按學號2.按姓名)
4.學生信息排序(1.按學號2.按姓名)
5.修改學生基本信息
6.輸出學生信息
7.保存學生信息
0.退出程序
注:由于知識有限,該系統(tǒng)暫時規(guī)定只輸入3個學生數(shù)據(jù),今后會改良成可隨機處理任意多個學生的數(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 ? ? 歡迎使用學籍管理系統(tǒng)\n");
? ? ? ??? ? printf("\n");
? ? ??? ? printf("\t\t\t ?---------------------------\n");
?? ? ? ? printf("\t\t\t ?1.輸入學生基本信息\n");
?? ? ? ? printf("\t\t\t ?2.查詢學生信息(1.按學號2.按姓名)\n");
? ? ? ? ?printf("\t\t\t ?3.刪除學生信息(1.按學號2.按姓名)\n");
? ? ? ? ?printf("\t\t\t ?4.學生信息排序(1.按學號2.按姓名)\n");
? ? ? ? ?printf("\t\t\t ?5.修改學生基本信息\n");
? ? ? ? ?printf("\t\t\t ?6.輸出學生信息\n");
? ? ? ? ?printf("\t\t\t ?7.保存學生信息\n");
? ? ? ? ?printf("\t\t\t ?0.退出程序\n");
?? ? ? ? printf("\t\t\t ?請輸入您的選項");
?? ? ? ? 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 ?您已退出學籍管理系統(tǒng)\n");break;
? ? ? ? ? ? default:printf("輸入有誤\n");
?? ??? ??? ?system("pause");
?? ? ? ? ? ?system("cls");?? ? ? ?
?? ??? ? ? }
?? ?}
}二、輸入
int count=0; ? ?//計數(shù)器記錄學生個數(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 ? 歡迎進入學生信息錄入系統(tǒng)\n");
? ? printf("\n");
? ? printf("\t\t\t-------------------------------\n");
? ? printf("\t\t請輸入學生基本信息(學號,姓名,年齡,性別(女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 ? ? ? ?學生信息已錄入\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 ? 歡迎進入學生信息查詢系統(tǒng)\n");
? ? printf("\n");
? ? printf("\t\t\t-------------------------------\n");
?? ?printf("\t\t請選擇查詢方式(1.按學號查詢 ?2.按姓名查詢)");
?? ?scanf("%d",&select2);
?? ?system("cls");
?? ?switch(select2)
?? ?{
?? ?case 1:
?? ??? ?{?
?? ??? ? ? printf("\t\t\t\t ?請輸入學號");
?? ??? ? ? scanf("%d",&num2);
?? ??? ? ? system("cls");
?? ??? ? ? for(i=0;i<n-count;i++)
?? ??? ??? ? ? if(stu[i].number==num2)break; ? ? //判斷輸入學號和結(jié)構(gòu)數(shù)組的學號是否匹配,找到匹配項則退出循環(huán)
?? ??? ??? ? ? if(i<n-count) ? ? ? ? ? ? ? ? ? ? //數(shù)組下標小于學生數(shù),則說明找到該學生,輸出信息
?? ??? ??? ? ? {
?? ??? ??? ??? ? ? printf("\t\t\t您要查詢的學生信息為:\n");
? ? ? ? ? ? ? ? ? ?printf("\t\t\t學號%d 姓名%s 年齡%d 性別%c\n",stu[i].number,stu[i].name,stu[i].age,stu[i].sex);
?? ??? ??? ? ? }
?? ??? ??? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//數(shù)組下標等于學生數(shù),則沒有找到該學生
?? ??? ??? ??? ? ? 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您要查詢的學生信息為:\n");
? ? ? ? printf("\t\t\t學號%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 ? 歡迎進入學生信息刪除系統(tǒng)\n");
? ? printf("\n");
? ? printf("\t\t\t-------------------------------\n");
?? ?printf("\t\t請選擇刪除方式(1.按學號刪除 ?2.按姓名刪除)");
? ? scanf("%d",&select3);
? ? system("cls");
?? ?switch(select3)
?? ?{
?? ?case 1:
?? ??? ?{
? ? ? ? ? ? printf("\t\t\t\t ?請輸入學號");
? ? ? ? ? ? scanf("%d",&num3);
?? ??? ? ? ?system("cls");
?? ??? ? ? ?for(i=0;i<n-count;i++)
?? ??? ??? ? ? if(stu[i].number==num3)break;//首先找到要刪除的學生
?? ??? ??? ? ? if(i<n-count)
?? ??? ??? ? ? {
?? ??? ??? ??? ? printf("\t\t\t當前您要修改的學生信息為\n");
?? ??? ? ? ? ? ? printf("\t\t\t學號%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++)//從該學生往后每一項向前移動一項,覆蓋前一個數(shù)據(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");?? ?
?? ??? ??? ? ? }
?? ??? ?}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當前您要修改的學生信息為\n");
?? ??? ? ? ? ? ? printf("\t\t\t學號%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 ? 歡迎進入學生信息排序系統(tǒng)\n");
? ? printf("\n");
? ? printf("\t\t\t-------------------------------\n");
?? ?printf("\t\t請選擇排序方式(1.按學號排序 ?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 ? 歡迎進入學生信息修改系統(tǒng)\n");
? ? printf("\n");
? ? printf("\t\t\t-------------------------------\n");
?? ?printf("\t\t\t請輸入您要修改的學生學號");
?? ?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當前您要修改的學生信息為\n");
?? ??? ? ? printf("\t\t\t學號%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學號\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);//直接將新信息存儲到原數(shù)據(jù)項中,覆蓋原信息即可
?? ??? ? ? 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 ? 歡迎進入學生信息輸出系統(tǒng)\n");
? ? printf("\n");
? ? printf("\t\t\t-------------------------------\n");
?? ?for(i=0;i<n-count;i++)//循環(huán)輸出所有學生信息
? ? printf("\t\t\t ?學號%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盤讀寫打開或建立一個名為“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ī)定學生數(shù)為3人
?? ?return 0;
}十、結(jié)構(gòu)體定義
struct student{
?? ?int number;
?? ?char name[10];
?? ?int age;
?? ?char sex;
}; ? ?//定義結(jié)構(gòu)體student以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
VC自定義消息響應(yīng)函數(shù)postmessage用法示例
這篇文章主要介紹了VC自定義消息響應(yīng)函數(shù)postmessage用法示例,并對比說明了postmessage與sendmessage的用法區(qū)別,需要的朋友可以參考下2014-10-10

