1、 .
#include
2、 int stuNo; //学生学号 char stuSex[10]; //性别 char dept[20]; //系别 char major[20]; //专业 int tel; // } *stu; //函数指针 void(*p)(struct Student *,int ); //录入学生信息 void insert(struct Student *,int ); //按学号查找 void noSeek(struct Student *,int ); //函数功能:打印信息 void outp
3、ut(struct Student *,int ); /*函数功能:将数据写入文件*/ void write(struct Student *,int ); /*函数功能:读取文件数据*/ void read(struct Student *,int ); //按宿舍查找 void dSeek(struct Student *,int ); //按XX查找 void naSeek(struct Student *,int ); //按系别查找 void deSeek(struct Student *,int); //删除学生信息 void del(struct S
4、tudent *,int ); //修改学生信息 void modify(struct Student *,int ); //增加学生信息 void add(struct Student *,int); //全局变量来记录存储学生的人数 int num=0; //主函数 int main() { char ch[10]; printf(" \t--------欢迎进入宿舍管理系统--------\n"); printf("请输入你想存储的学生人数:") ; scanf("%d",&num); system("cls"
5、); //申请动态存储空间 stu=(struct Student *)malloc((sizeof(struct Student))*num); while(1){ system("cls"); printf("\n"); printf(" \t--------欢迎进入宿舍管理系统--------\n"); printf(" \t ***********************************************************\n"); printf("
6、 \t1.录入学生信息 "); printf(" \t2.按学号查询 \n"); printf(" \t3.按宿舍号查询 "); printf(" \t4.按XX查询 \n"); printf(" \t5.按系别或专业查询 "); printf(" \t6.添加信息 \n"); printf(" \t7.修改信息 "); printf("
7、 \t8.保存信息 \n"); printf(" \t9.读取信息 "); printf(" \t10.删除信息 \n"); printf(" \t0.退出系统 \n"); printf(" \t*************************************************************\n"); printf("---------------------------------------------------
8、\n"); printf(" \t请选择你想实现的功能:"); scanf("%s",&ch); //用函数指针指向各函数 if(strcmp(ch,"1")==0) { p=insert; (*p)(stu,num); } else if (strcmp(ch,"2")==0) { p=noSeek; (*p)(stu,num); } else if(strcmp(ch,"3")==0) {
9、p=dSeek; (*p)(stu,num); } else if(strcmp(ch,"4")==0) { p=naSeek; (*p)(stu,num); } else if(strcmp(ch,"5")==0) { p=deSeek; (*p)(stu,num); } else if(strcmp(ch,"6")==0) { p=add; (*p)(stu,num); } else if(
10、strcmp(ch,"7")==0) { p=modify; (*p)(stu,num); } else if(strcmp(ch,"8")==0) { p=write; (*p)(stu,num); } else if(strcmp(ch,"9")==0) { p=read; (*p)(stu,num); } else if(strcmp(ch,"10")==0) { p=del; (*p)(stu,n
11、um);
}
else if(strcmp(ch,"0")==0)
{
exit(0);
}
// write(stu,num);
//read(stu,num);
}
return 0;
}
//输入学生相关信息
void insert(struct Student *stu,int num)
{
int i=0;
char ch;
system("cls");
do{
if(i 12、 printf("输入第%d个学生的宿舍号:",i+1);
scanf("%d",&stu[i].dorNo) ;
printf("\nXX:");
scanf("%s",&stu[i].stuName);
printf("\n学号:");
scanf("%d",&stu[i].stuNo);
printf("\n性别:");
scanf("%s",&stu[i].stuSex);
printf("\n系别:");
scanf("%s",&stu[i] 13、dept);
printf("\n专业:");
scanf("%s",&stu[i].major);
printf("\n:");
scanf("%d",&stu[i].tel);
i++;
}
else
{
printf(" \n\t 人数已满无法继续输入");
printf("\n是退出该功能输入?(Y/N):");
ch=getchar();
ch=getchar();
14、 }
}while(ch!='y'&&ch!='Y');
write(stu,num);
system("cls");
}
//按学号查找
void noSeek(struct Student *stu,int num)
{
int i;
int m;
char ch;
char a;
system("cls");
printf("\n确认您已录入学生信息? 15、r();
if(a!='n'&&a!='N')
{
printf("\n请输入你想要查找的学生学号:");
scanf("%d",&m);
for(i=0;i 16、u[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
}
}
else
{
printf("\n\t 没有你要查找的学生信息。\n") ;
}
printf("\n 请按任意键返回.......");
getchar();
getchar();
}
//按宿舍查找
void dSeek(struct Student* stu,int num )
17、{
int i;
int dor;
char ch,a;
system("cls");
printf("\n确认您已录入学生信息? 18、 {
printf("\n宿舍号: %d\nXX: %s\n学号: %d\n性别: %s\n系别: %s\n专业:%s\n: %d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
}
}
else
{
printf(" \t 没找到你要的学生信息。。。\n\n");
}
print 19、f("\n 请按任意键返回.......");
getchar();
getchar();
}
//按XX查询
void naSeek(struct Student *stu,int num)
{
int i;
char name[20];
char ch,a;
system("cls");
printf("\n确认您已录入学生信息? 20、 printf("\n请输入你想要查找的学生XX:");
scanf("%s",name);
for(i=0;i 21、stu[i].major,stu[i].tel);
}
}
}
else
{
printf(" \n \n\t 没找到你要的学生信息。。。\n\n");
}
printf("\n 请按任意键返回.......");
getchar();
getchar();
}
//按系别或专业查询
void deSeek(struct Student *stu,int num)
{
int 22、i;
char de[20];
char ch,a;
system("cls");
printf("\n确认您已录入学生信息? 23、)==0)
{
printf("\n宿舍号: %d\nXX: %s\n学号: %d\n性别: %s\n系别: %s\n专业:%s\n: %d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
}
}
else
{
printf(" \n\n\t 没找到你要的学生信息。。。\n");
24、 }
printf("\n 请按任意键返回.......");
getchar();
getchar();
}
/*函数功能:将数据写入文件*/
void write(struct Student *stu,int num)
{
int i; //控制循环
FILE *fp ; //定义文件指针
if(stu[num-1].stuNo!=0)
{
if((fp = fopen("E:\\student.txt","wt")) == NULL) 25、//如果文件没有翻开,提示错误并退出
{
printf("\n\t文件没有翻开!程序完毕!");
getchar(); //等待用户观察
exit(0); //完毕整个程序
}
else
{
for(i=0; i 26、t,stu[i].major,stu[i].tel);
}
getchar();
printf("\n\t 已将学生信息保存在了D盘根目录下的student.txt文件中。\n");
}
}
else
{
printf("\n\t 没有学生信息。");
}
getchar();
fclose(fp);
}
/*函数功能:读取文件数据*/
void read(struct Student *stu,int num)
{
int i;
FILE * fp ;
27、
if(stu[num-1].stuNo!=0)
{
if((fp = fopen("E:\\student.txt","rt")) == NULL)
{
printf("数据读取失败!\n");
exit(0);
}
else
{
for(i=0; i 28、No,&stu[i].stuName,&stu[i].stuNo,&stu[i].stuSex,&stu[i].dept,&stu[i].major,&stu[i].tel);
printf("\n宿舍号: %d\nXX: %s\n学号: %d\n性别: %s\n系别: %s\n专业:%s\n: %d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
}
}
else
29、 {
printf("\n\t 没有学生信息。");
}
getchar();
getchar();
fclose(fp);
}
//修改信息
void modify(struct Student *stu,int num)
{
int m;
int i;
char ch;
system("cls");
printf("请输入你想修改学生的学号:");
scanf("%d",&m);
for(i=0;i 30、stu[i].stuNo)
{
printf("\n宿舍号: %d\nXX: %s\n学号: %d\n性别: %s\n系别: %s\n专业:%s\n: %d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
printf("\n您确认修改该学生信息吗? 31、h!='n')
{
printf("\n输入该学生的宿舍号:");
scanf("%d",&stu[i].dorNo) ;
printf("\nXX:");
scanf("%s",&stu[i].stuName);
printf("\n学号:");
scanf("%d",&stu[i].stuNo);
printf("\n性别:");
scanf("%s",&stu[i].stuSex);
printf("\n系别:");
scanf("%s 32、",&stu[i].dept);
printf("\n专业:");
scanf("%s",&stu[i].major);
printf("\n:");
scanf("%d",&stu[i].tel);
write(stu,num);
system("cls");
printf(" \n\t 修改成功!!!\n\n");
output(stu,num);
}
else
{
33、 printf("\n\t 无法修改信息!!!\n");
//break;
}
}
else
{
continue;
}
}
printf("\n 请按任意键返回.......");
getchar();
getchar();
}
//删除相关学生信息
void del(struct Student *stu,int num)
{
int no;
int i;
char ch;
34、 int j;
printf("\n请输入您想删除的学生学号:");
scanf("%d",&no);
for(i=0;i 35、 printf("\n您确认删除该学生信息? 36、rite(stu,num);
output(stu,num);
}
else
{
printf("\n \t 无法删除!!!\n");
}
}
else
{
continue;
}
}
printf("\n 请按任意键返回.......");
getchar();
getchar();
}
//添加学生信息
void add(struct Student *s 37、tu,int num)
{
int no;
int i;
printf("\n \t 请输入你想添加的学生人数:");
scanf("%d",&no);
if((stu[num-1].stuNo)!=0)
{
stu=(struct Student *)realloc(stu,num+no);
for(i=num;i 38、 scanf("%d",&stu[i].dorNo) ;
printf("\nXX:");
scanf("%s",&stu[i].stuName);
printf("\n学号:");
scanf("%d",&stu[i].stuNo);
printf("\n性别:");
scanf("%s",&stu[i].stuSex);
printf("\n系别:");
scanf("%s",&stu[i].dept);
printf("\n专业:");
39、
scanf("%s",&stu[i].major);
printf("\n:");
scanf("%d",&stu[i].tel);
}
num=num+no;
for(i=0;i 40、i].major,stu[i].tel);
}
//write(stu,num);
}
else
{
printf("\n\t 无法添加学生信息。。。\n");
}
printf("\n 请按任意键返回.......");
getchar();
getchar();
}
//打印学生信息
void output(struct Student *stu,int num)
{
int i;
system(" 41、cls");
if(stu[num-1].stuNo!=0)
{
printf(" \t \n\n更新学生信息如下:");
for(i=0;i






