C语言设计学生宿舍管理系统
这个只是简单的系统,只有一个关系表。如果你是为了应付老师则足矣,如果是为了优秀,那就要自己添加更多的关系表和功能块,比如可以再添加宿舍表,通过这个关系表,可以查看,这个宿舍有没有空床位;当给宿舍添加学生时,遇到宿舍爆满,就会添加失败等功能。
之前我发布上去的时候市可以运行的,后来可能是版本更新对语法要求更高,导致编译不过,现在已经对代码做了修改了。
以下为代码**:**
#include"stdio.h"#include"stdlib.h"#include"string.h"#include "conio.h" #include "windows.h"#define MAX 1000/*结构体类型*/typedef struct { int num;/*学号*/char name[20];/*姓名*/char sex[5];/*性别*/int age;/*年龄*/char studentclass[20];/*班级*/int dorm;/*宿舍号*/}STUDENTS;//查找指针
typedef struct Points
{int a;struct Points *points;
}Points;char xiugai[10]="修改";
char chaxun[10]="查询";
char xuehao[]="学号";
char xingming[]="姓名";
char xingbie[]="性别";
char nianling[]="年龄";
char banji[]="班级";
char sushe[]="宿舍";/*共用的功能块 */
void pause(){int i;printf("\n\n按任意键加回车返回主菜单!");scanf("%d",&i);getchar();
} void print(STUDENTS stu[],int point){printf("\n\n\n学号:%d,姓名:%s,性别:%s,年龄:%d,班级:%s,宿舍号: %d\n",stu[point].num,stu[point].name,stu[point].sex,stu[point].age,stu[point].studentclass,stu[point].dorm);
}void printfNotFound(){printf("找不到该数据\n");
}void printSearch(STUDENTS stu[],int i){printf(" %7d%11s%10s%10d%12s%12d\n\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].dorm);
}void printHead(){printf(" -------------------------------------------------------------------------------\n");printf(" -------------------------------------------------------------------------------\n");printf(" 学号: 姓名: 性别: 年龄: 班级: 宿舍号: \n"); printf(" -------------------------------------------------------------------------------\n");printf(" -------------------------------------------------------------------------------\n\n\n");}//默认继续
int a=1;
void selectOperate(){button:printf("继续操作请按1,返回主菜单请按0 ");scanf("%d",&a);if(!(a==1||a==0)) { printf("请输入正确的指令"); goto button; }
}//读取文件,返回的是总个数
int read_file(STUDENTS stu[])
{FILE *fp; int point=-1;fp=fopen("stu.txt","rt");if(fp==NULL) {printf("\n\n*****库存文件不存在!请创建"); return 0;}while(!feof(fp)) {point++;fread(&stu[point],sizeof(STUDENTS),1,fp); } fclose(fp); return point;}//存储数据到文件中
void save_file(STUDENTS stu[],int sum)//sum是总个数
{FILE *fp; int i; if((fp=fopen("temp.txt","w"))==NULL) {printf("写文件错误!\n"); return; } for(i=0;i<sum;i++) if(fwrite(&stu[i],sizeof(STUDENTS),1,fp)!=1) printf("写文件错误!\n");fclose(fp);remove("stu.txt");rename("temp.txt","stu.txt");}/*创建学生信息*/
//返回的是总数
int input(STUDENTS stu[],int sum)
{ int x;for(;sum<MAX;sum++){system("cls"); printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 创建学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf("\n\n 录入学生信息 (最多%d个)\n",MAX);printf(" ----------------------------\n");printf("\n 第%d个学生\n",sum+1);printf("\n 请输入学生的学号:");scanf("%d",&stu[sum].num);printf("\n 请输入学生的姓名:");scanf("%s",stu[sum].name); printf("\n 请输入学生的性别:");scanf("%s",stu[sum].sex);printf("\n 请输入学生的年龄:"); scanf("%d",&stu[sum].age); printf("\n 请输入学生的班级:");scanf("%s",stu[sum].studentclass); printf("\n 请输入学生的宿舍号:");scanf("%d",&stu[sum].dorm);printf(" 创建成功!");//选择操作 selectOperate();if(a==0)return sum+1; }return sum+1;}/*打印学生信息*/
void output(STUDENTS stu[],int sum)
{ int i;system("cls");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 打印学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printHead(); for(i=0;i<sum;i++) printSearch(stu,i);pause();}/*排序 */
/*复制student*/
//将排好的装在一个新的students数组里 ,不要存到文件中 void cpStu(STUDENTS stu0[],STUDENTS stu[],int sum) {int i;for(i=0;i<sum;i++){stu[i].num=stu0[i].num;strcpy(stu[i].name,stu0[i].name);strcpy(stu[i].sex,stu0[i].sex);stu[i].age=stu0[i].age;strcpy(stu[i].studentclass,stu0[i].studentclass);stu[i].dorm=stu0[i].dorm;} }/*对数据元组排序*/
void exchangeData(STUDENTS *stu1,STUDENTS *stu2){stu1->num=stu2->num;stu1->dorm=stu2->dorm; stu1->age=stu2->age;strcpy(stu1->name,stu2->name);strcpy(stu1->sex,stu2->sex);strcpy(stu1->studentclass,stu2->studentclass);
}int selectSort(){int choice;printf("\n\n\n ********请您选择条件进行排序********\n\n");printf(" 1. 学号\n\n");printf(" 2. 班级\n\n");printf(" 3. 宿舍号\n\n");printf(" 4. 姓名\n\n");printf(" 0. 返回主菜单\n\n");printf(" 请选择(0-3):");scanf("%d",&choice);return choice;
}/*根据宿舍号从小到大排序 冒泡*/void sortByDorm(STUDENTS stu0[],int sum,STUDENTS stup[]){ STUDENTS stu1; //中间变量 int i,j;cpStu(stu0,stup,sum);for(i=0;i<sum-1;i++)for(j=0;j<sum-1-i;j++)if(stup[j].dorm>stup[j+1].dorm){exchangeData(&stu1,&stup[j]); exchangeData(&stup[j],&stup[j+1]); exchangeData(&stup[j+1],&stu1); }}/*根据班级从小到大排序 选择*/void sortByClass(STUDENTS stu0[],int sum,STUDENTS stup[]){ STUDENTS stu1; //中间变量 int i,j,k;cpStu(stu0,stup,sum);for(i=0;i<sum-1;i++){k=i;for(j=i+1;j<sum;j++)if(strcmp(stup[k].studentclass,stup[j].studentclass)>0) k=j;if(k!=i){exchangeData(&stu1,&stup[i]); exchangeData(&stup[i],&stup[k]); exchangeData(&stup[k],&stu1);} }}/*根据姓名从大到小排序 折半插入排序*///因为这里是从stu[1]开始操作的,所以得再创个中间变量 void sortByName(STUDENTS stu0[],int sum,STUDENTS stup[]){ STUDENTS stu1; //中间变量 STUDENTS stu[1000];int i,j,low,high,mid;for(i=0;i<sum;i++){stu[i+1].num=stu0[i].num;strcpy(stu[i+1].name,stu0[i].name);strcpy(stu[i+1].sex,stu0[i].sex);stu[i+1].age=stu0[i].age;strcpy(stu[i+1].studentclass,stu0[i].studentclass);stu[i+1].dorm=stu0[i].dorm;} for(i=2;i<sum+1;i++){exchangeData(&stu1,&stu[i]); /*保存待插入元素到stu1*/low=1;high=i-1;while(low<=high){mid=(low+high)/2;if(strcmp(stu1.name,stu[mid].name)>0)low=mid+1;elsehigh=mid-1;}for(j=i-1;j>=high+1;j--)exchangeData(&stu[j+1],&stu[j]);//后移元素,留出插入空位 exchangeData(&stu[high+1],&stu1); }for(i=0;i<sum;i++){stup[i].num=stu[i+1].num;strcpy(stup[i].name,stu[i+1].name);strcpy(stup[i].sex,stu[i+1].sex);stup[i].age=stu[i+1].age;strcpy(stup[i].studentclass,stu[i+1].studentclass);stup[i].dorm=stu[i+1].dorm;} }/*根据学号从大到小排序 插入的希尔排序*/void ShellInsert(STUDENTS stup[],int sum,int dk){ int i,j,k;STUDENTS stu1;//中间变量 for(k=0;k<dk;k++)for(i=dk+k;i<sum;i=i+dk)if(stup[i].num<stup[i-dk].num){exchangeData(&stu1,&stup[i]); for(j=i-dk;j>=0&&stu1.num<stup[j].num;j=j-dk)//记录向后移 exchangeData(&stup[j+dk],&stup[j]); exchangeData(&stup[j+dk],&stu1); }} void sortByNum(STUDENTS stu[],int sum,STUDENTS stup[]){ int i,x;cpStu(stu,stup,sum);int dlta[5]={5,4,3,2,1}; for(x=0;x<5;x++)ShellInsert(stup,sum,dlta[x]);}//总的函数 void sortStudent(STUDENTS stu[],int sum){STUDENTS stup[1000];//引用,把排好序的放在这里,不跟原来的混淆 int choice,x,i;do{ system("cls");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 学生宿舍信息排序 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");select:choice=selectSort();system("cls");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 学生宿舍信息排序 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");switch(choice){ case 1: sortByNum(stu,sum,stup); break;/*学生学号信息顺序*/case 2: sortByClass(stu,sum,stup);break;/*学生班级信息顺序*/ case 3: sortByDorm(stu,sum,stup); break;/*学生宿舍信息顺序*/case 4: sortByName(stu,sum,stup); break;/*学生姓名信息顺序*/case 0: break;}//打印排好序的 printHead();for(i=0;i<sum;i++)printSearch(stup,i);if(choice==1||choice==2||choice==3||choice==4){printf("\n\n");button:printf("继续查询请按1,返回主菜单请按0 ");scanf("%d",&x);if(x==1) x=1;else if(x==0)continue;else{ printf("请输入正确的指令\n"); goto button; }}else if(choice==0)x=0;else{printf("\n\t\t请输入正确的指令\n"); goto select;}}while(x==1);} /* 根据条件查找指针point*/
/////查询或者修改的选择;
int selectChoice(char tiaojian[20]){int choice;printf("\n\n\n ********您想根据哪个条件%s********\n\n",tiaojian);printf(" 1. 学号\n\n");printf(" 2. 姓名\n\n");printf(" 3. 性别\n\n");printf(" 4. 年龄\n\n");printf(" 5. 班级\n\n");printf(" 6. 宿舍号\n\n");printf(" 0. 返回主菜单\n\n");printf(" 请选择(0-6):");scanf("%d",&choice);return choice;
}///????????????????????????????为什么这里的指针得返回菜可行,参数不是指针,操作的是地址的????
Points *connectPoint(Points *r,Points *p,int i){p=(Points *)malloc(sizeof(Points));p->a=i;r->points=p;r=p;return r;}//choice是指主菜单中的功能选项,字符数组tiaojian为相应的字符,比如如果选择查询的话,//tiaojian传参进来的应该为 "查询",这里是为了提高函数的复用性。 Points *findPoint(STUDENTS stu[],int sum,int choice,char tiaojian[]){int i,j=0; Points *p,*q,*r; q=(Points *)malloc(sizeof(Points));r=q;int num,age,dorm;char classs[20],sex[5],name[20];printf(" \n\n请输入您要查找的学生的%s",tiaojian);switch(choice){case 1: scanf("%d",&num);for(i=0;i<sum;i++)if(num==stu[i].num)r=connectPoint(r,p,i);break;case 2: scanf("%s",name);for(i=0;i<sum;i++)if(strcmp(name,stu[i].name)==0)r=connectPoint(r,p,i);break;case 3: scanf("%s",sex);for(i=0;i<sum;i++)if(strcmp(sex,stu[i].sex)==0)r=connectPoint(r,p,i);break;case 4: scanf("%d",&age);for(i=0;i<sum;i++)if(age==stu[i].age)r=connectPoint(r,p,i);break;case 5: scanf("%s",classs);for(i=0;i<sum;i++)if(strcmp(classs,stu[i].studentclass)==0)r=connectPoint(r,p,i);break;case 6: scanf("%d",&dorm);for(i=0;i<sum;i++)if(dorm==stu[i].dorm)r=connectPoint(r,p,i);break;}r->points=NULL;return q;} // /*查询学生信息*/
void inquire(STUDENTS stu[],int sum) {int choice;Points *p;do{system("cls");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 查询学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");button: choice=selectChoice(chaxun);system("cls");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 查询学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");switch里面不能调用排序功能,为什么????????? switch(choice){case 1:p=findPoint(stu,sum,choice,xuehao);break;case 2:p=findPoint(stu,sum,choice,xingming);break;case 3:p=findPoint(stu,sum,choice,xingbie);break;case 4:p=findPoint(stu,sum,choice,nianling);break;case 5:p=findPoint(stu,sum,choice,banji);break;case 6:p=findPoint(stu,sum,choice,sushe);break;case 0:return; default :printf("请输入正确的指令");goto button;//不断循环; }if(p->points!=NULL){p=p->points;printHead();while(p!=NULL){printSearch(stu,p->a);p=p->points;} }elseprintfNotFound();//选择操作 selectOperate(); }while(a);}//二分法只适用于查找一个 目前只有学号,姓名,宿舍排序 Points *findPoint2(STUDENTS stu[],int sum,int choice,char tiaojian[]){int i,j=0; Points *p,*q,*r; q=(Points *)malloc(sizeof(Points));r=q;int num,age,dorm;char classs[20],sex[5],name[20];printf(" \n\n请输入您要查找的学生的%s",tiaojian);switch(choice){case 1: scanf("%d",&num);break;case 2: scanf("%s",name);break;case 3: scanf("%d",&dorm);break;}int flag=0;int low=0,high=sum-1,mid;while(low<=high){mid=(low+high)/2;switch(choice){case 1:if(num==stu[mid].num){r=connectPoint(r,p,mid);printf("mid==%d",mid);flag=1;} else if(stu[mid].num>num)high=mid-1;else low=mid+1;break;case 2: if(strcmp(name,stu[mid].name)==0){r=connectPoint(r,p,mid);flag=1;} if(strcmp(stu[mid].name,name)>0)high=mid-1;else low=mid+1;break;case 3: if(dorm==stu[mid].dorm){r=connectPoint(r,p,mid);flag=1;} if(stu[mid].dorm>dorm)high=mid-1;else low=mid+1;break;}//如果找到,就跳出循环 if(flag)break;} r->points=NULL;return q;} /*二分法查询学生信息*/
void inquire2(STUDENTS stu[],int sum) {STUDENTS stup1[1000];//引用,把排好序的放在这里,不跟原来的混淆 STUDENTS stup2[1000];//引用,把排好序的放在这里,不跟原来的混淆 STUDENTS stup3[1000];//引用,把排好序的放在这里,不跟原来的混淆 //二分法得先排序 sortByNum(stu,sum,stup1);sortByName(stu,sum,stup2);sortByDorm(stu,sum,stup3);int choice;Points *p;do{system("cls");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 查询学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");button: printf("\n\n\n ********您想根据哪个条件查询********\n\n");printf(" 1. 学号\n\n");printf(" 2. 姓名\n\n");printf(" 3. 宿舍号\n\n");printf(" 0. 返回主菜单\n\n");printf(" 请选择(0-3):");scanf("%d",&choice);system("cls");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 查询学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");switch里面不能调用排序功能,为什么????????? switch(choice){case 1:p=findPoint2(stup1,sum,choice,xuehao);break;//二分法查询 case 2:p=findPoint2(stup2,sum,choice,xingming);break;//二分法查询 case 3:p=findPoint2(stup3,sum,choice,sushe);break;//二分法查询 case 0:return; default :printf("请输入正确的指令");goto button;//不断循环; }if(p->points!=NULL){p=p->points;printHead();while(p!=NULL){if(choice==1) {printSearch(stup1,p->a);p=p->points;}if(choice==2) {printSearch(stup2,p->a);p=p->points;}if(choice==3) {printSearch(stup3,p->a);p=p->points;}} }elseprintfNotFound();//选择操作 selectOperate(); }while(a);}//修改和删除判断输入学生个数
int operateNum(int sum){int n;printf("请输入你要操作的学生的个数:");scanf("%d",&n);if(n>sum){printf("\n\n 输入学生个数超过总量,操作失败\n");selectOperate();return 0;}else if(n<=0){ printf("\n\n 输入学生个数不能小于或等于0,操作失败\n");selectOperate();return 0;}return n;
} /*只能根据学号删除学生信息*/void exchangeData(STUDENTS *stu1,STUDENTS *stu2);//返回总数
int deletel(STUDENTS stu[],int sum){ a=1;system("cls"); int i,j=0,n=0,flag=1;Points *p; printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 删除学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");while(n==0)//这里接收到的两个数,n判断学生个数,a判断是否返回主菜单 {n=operateNum(sum);//选择操作 if(a==0)return sum; //0就返回主菜单 } do{ if(flag){system("cls"); Points *p; printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 删除学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");}//查一个删一个 p=findPoint(stu,sum,1,xuehao); p=p->points;if(p!=NULL) { i=p->a; //把后面的一次覆盖掉前面一个 for(;i<sum-1;i++)exchangeData(&stu[i],&stu[i+1]);printf("删除成功\n");flag=0;j++;if(j==n){printf("\n\n删除操作已完成\n");//选择操作 selectOperate();if(a==0)return sum-n;else deletel(stu,sum-n);}} else{printf("输入的学号不存在,操作失败\n");//选择操作 selectOperate();if(a==0)return sum-j; }}while(a==1&&j<n);}/*只能根据学号修改学生信息*/void change(STUDENTS stu[],int sum){ int choice;Points *p;do{system("cls");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 修改学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");p=findPoint(stu,sum,1,xuehao);p=p->points;if(p!=NULL){system("cls");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");printf(" ▄ ▄\n");printf(" ▄ 修改学生宿舍信息 ▄\n");printf(" ▄ ▄\n");printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");int i=p->a;print(stu,i);button:choice=selectChoice(xiugai);switch(choice) {case 1:printf("\n 请输入你改的新学号");scanf("%d",&stu[i].num); break;case 2:printf("\n 请输入你改的新姓名");scanf("%s",stu[i].name); break;case 3:printf("\n 请输入你改的新性别");scanf("%s",stu[i].sex); break;case 4:printf("\n 请输入你改的新年龄");scanf("%d",&stu[i].age); break;case 5:printf("\n 请输入你改的新班级");scanf("%s",stu[i].studentclass); break;case 6:printf("\n 请输入你改的新宿舍");scanf("%d",&stu[i].dorm); break;case 0:return; default :printf("请输入正确的指令");goto button; }printf("\n 修改成功:");print(stu,i); }else printfNotFound();//选择操作 selectOperate();if(a==0)return;}while(a);
}void pagedis()
{printf(" \n\n\n **********************************\n");printf(" * *\n");printf(" * *\n");printf(" * *\n");printf(" * 欢迎进入学生宿舍信息管理系统 *\n");printf(" * *\n");printf(" * *\n");printf(" * *\n");printf(" **********************************\n");
}
//欢迎
void welcome(){char heart[30][150]={" ************ ************"," ****************** ******************"," ******************#******* **************************", " **********************#********* ********************************"," **********************##########*** **************#******************** "," **********************#*********#**** **##********#************************ "," *********##########**#****#****#**********##****#************************** "," **********#*******#*#*****#***#***************#********#########*********** "," **********#*****#********#***********#####***#********#*******#********** "," ***********#***#********#***************#***#******#*#****#**#********* "," ***********##**********#**************#*****#****#***#*****#*#******* "," **********##*********#*#************#*****####*****#*******#******* "," ********#**#*******#***#************#*************#************** "," *****#****#*****#*****#************#************#************ "," **#**********#*******#******######************#********** "," **********#*********#*****########################### "," ************************************************** "," ********************************************** "," ****************************************** "," ************************************** "," ********************************** "," ****************************** "," ************************** "," ********************** "," ****************** "," ************** "," ********** "," ****** "," ** "};int i;for(i=0;i<29;i++) //逐行打印printf("%s\n",heart[i]);
}void bye(){system("cls");char heart[11][150]={"\t\t _____ _ _ ",
"\t\t |_ _| | |_ __ _ _ _ | |__ ___ o O O ",
"\t\t | | | ' \\ / _` | | ' \\ | / / (_-< o ",
"\t\t _|_|_ |_||_| \\__,_| |_||_| |_\\_\\ /__/_ TS__[O] ",
"\t\t_|\"\"\"\"\"|_|\"\"\"\"\"|_|\"\"\"\"\"|_|\"\"\"\"\"|_|\"\"\"\"\"|_|\"\"\"\"\"| {======| ",
"\t\t\"`-0-0-\'\"`-0-0-\'\"`-0-0-\'\"`-0-0-\'\"`-0-0-\'\"`-0-0-\'./o--000' "
};int i;printf("\n\n");for(i=0;i<6;i++) //逐行打印printf("%s\n",heart[i]);
}void designer(){printf("\n\n\t\t☆☆☆☆☆☆☆☆★★设计者信息★★☆☆☆☆☆☆☆☆\n\n");printf("\t\t ●● ●●\n\n");printf("\t\t ●● 姓名:xxxx ●●\n\n");printf("\t\t ●● ●●\n\n");printf("\t\t ●● 班级:xxxxxxx ●●\n\n");printf("\t\t ●● ●●\n\n");printf("\t\t ●● 学号: xxxxxxxxxxxx ●●\n\n");printf("\t\t ●● ●●\n\n");printf("\t\t☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
}void check()
{char userName[5];/*用户名*/char userPWD[5];/*密码*/int i;system("color 5E");for(i = 1; i < 4; i++){/*用户名和密码均为123;*/printf("\n 请输入您的用户名(123):");gets(userName);printf("\n 请输入您的密码(123):");gets(userPWD);if ((strcmp(userName,"123")==0) && (strcmp(userPWD,"123")==0))/*验证用户名和密码*/{system("cls");welcome();printf("\n 3秒后自动跳转");Sleep(3000); return;}else{if (i < 3)printf("用户名或密码错误,请重新输入!");else{printf("您已连续3次将用户名或密码输错,系统将退出!");exit(1); }}}}void menu()
{STUDENTS stu[20];int choice,sum;sum=read_file(stu); if(sum==0){ printf("首先录入基本库存信息!按回车后进入*****\n");getch();sum=input(stu,sum);}system("cls");do{ system("cls"); button: printf("\n\n\n ********学生宿舍信息管理系统********\n\n");printf(" 1. 创建学生宿舍信息\n\n");printf(" 2. 打印学生宿舍信息\n\n");printf(" 3. 查询学生宿舍信息\n\n");printf(" 4. 修改学生宿舍信息\n\n");printf(" 5. 删除学生宿舍信息\n\n");printf(" 6. 学生宿舍信息排序\n\n"); printf(" 0. 退出系统\n\n");printf(" 请选择(0-6):");scanf("%d",&choice); switch(choice){ case 1: sum=input(stu,sum); break;/*创建学生信息*/case 2: output(stu,sum) ; break;/*打印学生信息*/case 3: inquire(stu,sum); break;/*查询学生信息*/case 4: change(stu,sum); break;/*修改学生信息*/case 5: sum=deletel(stu,sum);break;/*删除学生信息*/case 6: sortStudent(stu,sum); break;/*学生信息顺序*/ case 0: bye();designer();break;default:system("cls"); printf("\n 请输入正确的指令!\n");goto button;}}while(choice!=0);save_file(stu,sum);
}int main()
{ pagedis();check();menu(); return 0;}
C语言设计学生宿舍管理系统相关推荐
- java毕业生设计学生宿舍管理系统计算机源码+系统+mysql+调试部署+lw
java毕业生设计学生宿舍管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计学生宿舍管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...
- 数据库应用设计学生宿舍管理系统java+SQL
数据库应用设计学生宿舍管理系统java+SQL 具体功能如下: 1.用户登录界面 学生通过用户名和密码获取登录权限,宿舍楼管理员通过用户名和密码获取登录权限. 2.学生用户界面 本宿舍楼的学生能查询其 ...
- 学生宿舍管理系统c语言程序设计,学生宿舍管理系统C语言编程.doc
实用文案 标准文档 "学生宿舍管理系统" C语言课程设计报告 程序功能简介 我设计的是"学生宿舍管理系统",主要是针对住宿学生个人信息的管理,适用对象主要是学校 ...
- Mysql设计学生宿舍管理系统+考勤系统
一, 学生宿舍管理系统 要求: 学校宿舍管理系统,要求包含宿舍信息,学生信息,每日的宿舍查房记录. 分析: 学生与宿舍的关系:m:1,宿舍的查房记录是根据宿舍来查的,与宿舍有关系,一个宿舍可以多次查房 ...
- c语言设计学生活动管理系统,C语言大赛之学生信息管理系统设计报告.doc
PAGE \* MERGEFORMAT11 第一届C语言大赛设计报告 题 目: 学生信息数据库 院系名称: 电气工程学院 专业班级: 测控1302 学生姓名及学号: 李凡丁 201323030221 ...
- c语言宿舍管理设计报告,C语言课程设计—学生宿舍管理系统设计报告.doc
word格式精心整理版 范文范例 学习指导 课 程 设 计 报 告 课程名称 C语言程序设计 课题名称 学生宿舍管理系统 专 业 班 级 学 号 姓 名 指导教师 2012年6月19日 湖南工程学院 ...
- 用c语言编程宿舍管理系统,学生宿舍管理系统 C语言编程.doc
"学生宿舍管理系统" C语言课程设计报告 程序功能简介 我设计的是"学生宿舍管理系统",主要是针对住宿学生个人信息的管理,适用对象主要是学校,以方便学校对住宿学 ...
- 数据库课程设计——学生宿舍信息管理系统
数据库课程设计--学生宿舍信息管理系统 目录 1.设计目的... 2 2.任务与要求... 2 3.学生宿舍管理系统课程设计... 2 3.1 引言... 2 3.2需求分析... 2 3.2.1. ...
- c语言统计宿舍 信息,学生宿舍管理系统C语言.doc
<C语言程序设计>课程设计报告 题 目: 学生宿舍管理系统 专 业: 软件技术 班 级: 软件技术1班 姓 名: 李桦楠 齐忠春 周滨滨 徐烨 潘喜隆 郑竹强 学 号: 124109124 ...
最新文章
- openssh 7.4 java使用_openssh/openssl升级到7.4和1.0.2j 源码方式
- iOS之深入解析谓词NSPredicate的语法与应用
- 在Office 365 添加就地保留用户邮箱
- Git(9)-diff
- 线程Thread(Java)
- LeetCode -- Merge Two Sorted Linked List
- java并发编程(四) 线程池 任务执行、终止源码分析
- 【SENCHA TOUCH】picker的使用
- d3力导向图增加节点_在D3力导向图中突出显示所选节点,其链接及其子节点
- 在一所普通211高校读本科在TOP2高校读研究生的感触
- 图片大小、像素、分辨率之间的关系
- android 啦窗帘的动画,android 下拉窗帘效果
- Redis-6.2.x版本官方发行说明(附谷歌翻译)【持续更新】
- java游戏怎么导入jme3,LuoYing RPG教程-JME3游戏创建、场景编辑、载入完整示例教程...
- Pet Peeve 是什么?
- 神经网络分类算法是什么,神经网络分类算法简介
- androidP 对反射的限制之黑名单机制
- 数字 IC 技能拓展(16)Zynq 与 Pynq 都是什么呢
- 没资源也能赚钱!跑跑步就能赚钱!
- redenvelope php,微信免越狱抢红包速成手册
热门文章
- [Android系统开发]Launcher Hotseat图标居中排列
- 教程:使用C#将PDF页面转换为PNG图像
- android 定位蓝牙,蓝牙如何定位,简易蓝牙定位系统的实现方法
- 电脑是怎么把代码转换成可执行程序的?
- java正整数分解因数_java将一个正整数分解质因数
- Android Studio不使用数据线调试adb
- php序顶部导航,页面上下滚动改变顶部导航的定位方式
- 开源博客wordpress,一键搭建属于自己的博客
- EA周报 | Libra将与支付宝微信展开竞争;Google终止中国版搜索引擎;滴滴柳青:顺风车目前不能上线是因为害怕...
- postgresql mysql 源码安装_PostGreSQL12 源码安装与字符集修改 (一)