求一个简单的宿舍管理系统 C/C++
实现某个宿舍楼的宿舍信息管理。每个宿舍基本信息包括:楼层号、房间号、面积、可住宿人数、实际住宿人数、修缮状况(良好/待维修)。1、数据文件管理功能:创建新文件、管理老文件...
实现某个宿舍楼的宿舍信息管理。每个宿舍基本信息包括:楼层号、房间号、面积、可住宿人数、实际住宿人数、修缮状况(良好/待维修)。
1、数据文件管理功能:创建新文件、管理老文件。
2、输入/添加/插入记录:能够完成对每一条记录输入或添加。
3、显示、查询记录:根据用户要求按所给记录关键字显示、查询一个或多个相关联记录的各项信息。
4、修改记录:可以对数据文件中的任意记录的数据进行修改,在修改前后对该记录的内容进行显示,并设确认提示。
5、删除记录:可以删除数据文件中的任一记录,包括逻辑删除(具有恢复功能)和物理删除。
6、统计功能:对文件中某关键字的相关记录内容信息进行统计
7、排序:根据给定字段,对记录进行排序
如果能用再加100/200分 展开
1、数据文件管理功能:创建新文件、管理老文件。
2、输入/添加/插入记录:能够完成对每一条记录输入或添加。
3、显示、查询记录:根据用户要求按所给记录关键字显示、查询一个或多个相关联记录的各项信息。
4、修改记录:可以对数据文件中的任意记录的数据进行修改,在修改前后对该记录的内容进行显示,并设确认提示。
5、删除记录:可以删除数据文件中的任一记录,包括逻辑删除(具有恢复功能)和物理删除。
6、统计功能:对文件中某关键字的相关记录内容信息进行统计
7、排序:根据给定字段,对记录进行排序
如果能用再加100/200分 展开
2个回答
展开全部
#include "stdafx.h"
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
int num; /*房间号*/
char area[20]; /*面积*/
char num_contain[20];//可住宿人数
char num_live[20];//实际住宿人数
char repair_situation[20]; /*修缮状况*/
}Apartment;
Apartment stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do
{
system("cls"); /*运行前清屏*/
printf("\t\t****学生信息管理系统****\n"); /*菜单选择*/
printf("\t\t | 1. 输入档案 |\n");
printf("\t\t | 2. 显示所有档案 |\n");
printf("\t\t | 3. 插入新档案 |\n");
printf("\t\t | 4. 删除档案 |\n");
printf("\t\t | 5. 查询 |\n");
printf("\t\t | 6. 排序 |\n");
printf("\t\t | 7. 修改 |\n");
printf("\t\t | 0. 退出 |\n");
printf("\t\t*****************************************\n");
printf("\t\t\t输入你的选择(0-7):");
c=getchar(); /*读入选择*/
}while(c<'0'||c>'7');
return(c-'0'); /*返回选择*/
}
int Input(Apartment stud[],int n) /*输入若干条记录*/
{
int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{
printf("\t\t\t房间号:"); /*交互输入*/
scanf("\t\t\t%d",&stud[n+i].num);
printf("\t\t\t面积:");
scanf("\t\t\t%s",stud[n+i].area);
printf("\t\t\t可住宿人数:");
scanf("\t\t\t%s",stud[n+i].num_contain);
printf("\t\t\t实际住宿人数:");
scanf("\t\t\t%s",stud[n+i].num_live);
printf("\t\t\t修缮状况:");
scanf("\t\t\t%s",stud[n+i].repair_situation);
gets(x); /*清除多余的输入*/
printf("\t\t\t是否还要继续输入?(Y/N)");
scanf("\t\t\t%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
int Delete_a_record(Apartment stud[],int n) /*按房间号查找,删除一条记录*/
{
int s;
int i=0,j;
int a=0,b=0;
printf("\t\t\t输入要删除的房间号:"); /*交互式问寻*/
scanf("%d",&s);
while((stud[i].num!=s)&&i<n) i++; /*查找判断*/
if(i==n)
{
printf("\t\t\t没有发现!\n"); /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
b=stud[j+1].num;
stud[j].num=b;
//strcpy(stud[j].area,stud[j+1].area);
strcpy(stud[j].area,stud[j+1].area);
strcpy(stud[j].num_contain,stud[j+1].num_contain);
strcpy(stud[j].num_live,stud[j+1].num_live);
strcpy(stud[j+1].repair_situation,stud[j].repair_situation) ;
}
printf("\t\t\t删除成功!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Apartment stud[],int n) /*查找并显示一个记录*/
{
int s;
int i=0;
printf("\t\t\t请输入房间号:"); /*交互式输入*/
scanf("\t\t\t%d",&s);
while((stud[i].num!=s)&&i<n) i++; /*查找判断*/
if(i==n)
{
printf("\t\t\t没有发现!\n"); /*输入失败信息*/
return;
}
printf("\t\t房间号:%d\n",stud[i].num);
printf("\t\t面积:%s\n",stud[i].area);
printf("\t\t可住宿人数:%s\n",stud[i].num_contain);
printf("\t\t实际住宿人数:%s\n",stud[i].num_live); /*输出该学生信息*/
printf("\t\t修缮状况:%s\n",stud[i].repair_situation);
}
void Display(Apartment stud[],int n) /*显示所有记录*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\t宿舍信息\n");
printf("\t\t\t-----------------------------------\n");
printf("\t\t房间号\t面积\t可住宿人数\t\t实际住宿人数\t\t修缮状况\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf("\t\t%-6d% -15s%-12s%-15s%-12s\n",stud[i-1].num,stud[i-1].area,stud[i-1].num_contain,stud[i-1].num_live,stud[i-1].repair_situation);
if(i>1&&i%10==0) /*每十个暂停*/
{
printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
int Insert_a_record(Apartment stud[],int n) /*插入一条记录*/
{
int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{
printf("\t\t\t房间号:"); /*交互输入*/
scanf("\t\t\t%d",&stud[n+i].num);
printf("\t\t\t面积:");
scanf("\t\t\t%s",stud[n+i].area);
printf("\t\t\t可住宿人数:");
scanf("\t\t\t%s",stud[n+i].num_contain);
printf("\t\t\t实际住宿人数:");
scanf("\t\t\t%s",stud[n+i].num_live);
printf("\t\t\t修缮状况:");
scanf("\t\t\t%s",stud[n+i].repair_situation);
gets(x); /*清除多余的输入*/
printf("\t\t\t是否还要继续输入?(Y/N)");
scanf("\t\t\t%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
void Sort_by_num(Apartment stud[],int n) /*按房间号排序*/
{
int s=0;
int a=0,b=0;
printf("\t\t | 请选择你要的排序方式 |\n");
printf("\t\t | 1. 按房间号排序 |\n");
printf("\t\t | 2. 按面积排序 |\n");
printf("\t\t*****************************************\n");
printf("\t\t\t输入你的选择(1-2):");
scanf("%d",&s);
int i=0,j=0;//,*p,*q,s;
int x=0;
char t[10];
//for(i=0;i<n-1;i++) /*冒泡法排序*/
//for(j=0;j<n-1-i;j++)
for(i=0;i<n-1;i++) /*冒泡法排序*/
{
for(j=0;j<n-1-i;j++)
{
if(s==1&&stud[j].num-stud[j+1].num>0)
{
b=stud[j+1].num;
stud[j+1].num=stud[j].num;
stud[j].num=b;
strcpy(t,stud[j+1].area);
strcpy(stud[j+1].area,stud[j].area);
strcpy(stud[j].area,t);
strcpy(t,stud[j+1].num_contain);
strcpy(stud[j+1].num_contain,stud[j].num_contain);
strcpy(stud[j].num_contain,t);
strcpy(t,stud[j+1].num_live);
strcpy(stud[j+1].num_live,stud[j].num_live);
strcpy(stud[j].num_live,t);
// strcpy(t,stud[j+1].repair_situation);
strcpy(stud[j+1].repair_situation,stud[j].repair_situation);
// stud[j+1].repair_situation,stud[j].repair_situation;
strcpy(stud[j].repair_situation,t);
// strcpy(stud[j].repair_situation,t);
}
else if(s==2&&stud[j+1].area-stud[j].area>0)
{
b=stud[j+1].num;
stud[j+1].num=stud[j].num;
stud[j].num=b;
strcpy(t,stud[j+1].repair_situation);
strcpy(stud[j+1].repair_situation,stud[j].repair_situation);
strcpy(stud[j].repair_situation,t);
strcpy(t,stud[j+1].num_contain);
strcpy(stud[j+1].num_contain,stud[j].num_contain);
strcpy(stud[j].num_contain,t);
strcpy(t,stud[j+1].num_live);
strcpy(stud[j+1].num_live,stud[j].num_live);
strcpy(stud[j].num_live,t);
// strcpy(t,stud[j+1].area);
strcpy(stud[j+1].area,stud[j].area);
// stud[j+1].area,stud[j].area;
strcpy(stud[j].area,t);
// strcpy(stud[j].sarea,t);
}
}
}
Display(stu,n);
}
void Xiugai_record(Apartment stud[],int n) /*修改信息*/
{
int s;
char t[500];
int i=0,a=0,x=0,b=0;
printf("\t\t\t请输入房间号:"); /*交互式输入*/
scanf("\t\t\t%d",&s);
while((stud[i].num!=s)&&i<n) i++; /*查找判断*/
if(i==n)
{
printf("\t\t\t没有发现!\n"); /*输入失败信息*/
return;
}
printf("\t\t房间号:%d\n",stud[i].num);
printf("\t\t面积:%s\n",stud[i].area);
printf("\t\t可住宿人数:%s\n",stud[i].num_contain);
printf("\t\t实际住宿人数:%s\n",stud[i].num_live); /*输出该学生信息*/
printf("\t\t修缮状况:%s\n",stud[i].repair_situation);
printf("\t\t | 请选择你要修改的数据 |\n");
printf("\t\t | 1. 房间号 |\n");
printf("\t\t | 2. 面积 |\n");
printf("\t\t | 3. 可住宿人数 |\n");
printf("\t\t | 4. 实际住宿人数 |\n");
printf("\t\t | 5. 修缮状况 |\n");
printf("\t\t*****************************************\n");
printf("\t\t\t输入你的选择(1-5):");
scanf("%d",&a);
if(a==1)
{
printf("\t\t\t请输入要修改的值");
scanf("%d",&b);
stud[i].num=b;
}
else if(a==2)
{
printf("\t\t\t请输入要修改的值\n");
scanf("%s",t);
strcpy(stud[i].area,t);
}
else if(a==3)
{
printf("\t\t\t请输入要修改的值\n");
scanf("%s",t);
strcpy(stud[i].num_contain,t);
}
else if(a==4)
{
printf("\t\t\t请输入要修改的值\n");
scanf("%s",t);
strcpy(stud[i].num_live,t);
}
else if(a==5)
{
printf("\t\t\t请输入要修改的值\n");
scanf("%s",t);
strcpy(stud[i].repair_situation,t);
}
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\t输入信息\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\t显示所有信息\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
//printf("\t\t\tSort\n");
//Insert_a_record(stu,n); /*按学号排序*/
n=Insert_a_record(stu,n);
printf("\t\t\t插入成功!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\t删除信息\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\t查找\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\t查找\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\t修改\n");
Xiugai_record(stu,n); /*按学号排序*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\t再见!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
自己看看,我试过了,能行的
#include<stdio.h> /*引用库函数*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定义结构体数组*/
{
int num; /*房间号*/
char area[20]; /*面积*/
char num_contain[20];//可住宿人数
char num_live[20];//实际住宿人数
char repair_situation[20]; /*修缮状况*/
}Apartment;
Apartment stu[80]; /*结构体数组变量*/
int menu_select() /*菜单函数*/
{
char c;
do
{
system("cls"); /*运行前清屏*/
printf("\t\t****学生信息管理系统****\n"); /*菜单选择*/
printf("\t\t | 1. 输入档案 |\n");
printf("\t\t | 2. 显示所有档案 |\n");
printf("\t\t | 3. 插入新档案 |\n");
printf("\t\t | 4. 删除档案 |\n");
printf("\t\t | 5. 查询 |\n");
printf("\t\t | 6. 排序 |\n");
printf("\t\t | 7. 修改 |\n");
printf("\t\t | 0. 退出 |\n");
printf("\t\t*****************************************\n");
printf("\t\t\t输入你的选择(0-7):");
c=getchar(); /*读入选择*/
}while(c<'0'||c>'7');
return(c-'0'); /*返回选择*/
}
int Input(Apartment stud[],int n) /*输入若干条记录*/
{
int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{
printf("\t\t\t房间号:"); /*交互输入*/
scanf("\t\t\t%d",&stud[n+i].num);
printf("\t\t\t面积:");
scanf("\t\t\t%s",stud[n+i].area);
printf("\t\t\t可住宿人数:");
scanf("\t\t\t%s",stud[n+i].num_contain);
printf("\t\t\t实际住宿人数:");
scanf("\t\t\t%s",stud[n+i].num_live);
printf("\t\t\t修缮状况:");
scanf("\t\t\t%s",stud[n+i].repair_situation);
gets(x); /*清除多余的输入*/
printf("\t\t\t是否还要继续输入?(Y/N)");
scanf("\t\t\t%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
int Delete_a_record(Apartment stud[],int n) /*按房间号查找,删除一条记录*/
{
int s;
int i=0,j;
int a=0,b=0;
printf("\t\t\t输入要删除的房间号:"); /*交互式问寻*/
scanf("%d",&s);
while((stud[i].num!=s)&&i<n) i++; /*查找判断*/
if(i==n)
{
printf("\t\t\t没有发现!\n"); /*返回失败信息*/
return(n);
}
for(j=i;j<n-1;j++) /*删除操作*/
{
b=stud[j+1].num;
stud[j].num=b;
//strcpy(stud[j].area,stud[j+1].area);
strcpy(stud[j].area,stud[j+1].area);
strcpy(stud[j].num_contain,stud[j+1].num_contain);
strcpy(stud[j].num_live,stud[j+1].num_live);
strcpy(stud[j+1].repair_situation,stud[j].repair_situation) ;
}
printf("\t\t\t删除成功!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Apartment stud[],int n) /*查找并显示一个记录*/
{
int s;
int i=0;
printf("\t\t\t请输入房间号:"); /*交互式输入*/
scanf("\t\t\t%d",&s);
while((stud[i].num!=s)&&i<n) i++; /*查找判断*/
if(i==n)
{
printf("\t\t\t没有发现!\n"); /*输入失败信息*/
return;
}
printf("\t\t房间号:%d\n",stud[i].num);
printf("\t\t面积:%s\n",stud[i].area);
printf("\t\t可住宿人数:%s\n",stud[i].num_contain);
printf("\t\t实际住宿人数:%s\n",stud[i].num_live); /*输出该学生信息*/
printf("\t\t修缮状况:%s\n",stud[i].repair_situation);
}
void Display(Apartment stud[],int n) /*显示所有记录*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式头*/
printf("\t\t\t宿舍信息\n");
printf("\t\t\t-----------------------------------\n");
printf("\t\t房间号\t面积\t可住宿人数\t\t实际住宿人数\t\t修缮状况\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循环输入*/
{
printf("\t\t%-6d% -15s%-12s%-15s%-12s\n",stud[i-1].num,stud[i-1].area,stud[i-1].num_contain,stud[i-1].num_live,stud[i-1].repair_situation);
if(i>1&&i%10==0) /*每十个暂停*/
{
printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
int Insert_a_record(Apartment stud[],int n) /*插入一条记录*/
{
int i=0;
char sign,x[10]; /*x[10]为清除多余的数据所用*/
while(sign!='n'&&sign!='N') /*判断*/
{
printf("\t\t\t房间号:"); /*交互输入*/
scanf("\t\t\t%d",&stud[n+i].num);
printf("\t\t\t面积:");
scanf("\t\t\t%s",stud[n+i].area);
printf("\t\t\t可住宿人数:");
scanf("\t\t\t%s",stud[n+i].num_contain);
printf("\t\t\t实际住宿人数:");
scanf("\t\t\t%s",stud[n+i].num_live);
printf("\t\t\t修缮状况:");
scanf("\t\t\t%s",stud[n+i].repair_situation);
gets(x); /*清除多余的输入*/
printf("\t\t\t是否还要继续输入?(Y/N)");
scanf("\t\t\t%c",&sign); /*输入判断*/
i++;
}
return(n+i);
}
void Sort_by_num(Apartment stud[],int n) /*按房间号排序*/
{
int s=0;
int a=0,b=0;
printf("\t\t | 请选择你要的排序方式 |\n");
printf("\t\t | 1. 按房间号排序 |\n");
printf("\t\t | 2. 按面积排序 |\n");
printf("\t\t*****************************************\n");
printf("\t\t\t输入你的选择(1-2):");
scanf("%d",&s);
int i=0,j=0;//,*p,*q,s;
int x=0;
char t[10];
//for(i=0;i<n-1;i++) /*冒泡法排序*/
//for(j=0;j<n-1-i;j++)
for(i=0;i<n-1;i++) /*冒泡法排序*/
{
for(j=0;j<n-1-i;j++)
{
if(s==1&&stud[j].num-stud[j+1].num>0)
{
b=stud[j+1].num;
stud[j+1].num=stud[j].num;
stud[j].num=b;
strcpy(t,stud[j+1].area);
strcpy(stud[j+1].area,stud[j].area);
strcpy(stud[j].area,t);
strcpy(t,stud[j+1].num_contain);
strcpy(stud[j+1].num_contain,stud[j].num_contain);
strcpy(stud[j].num_contain,t);
strcpy(t,stud[j+1].num_live);
strcpy(stud[j+1].num_live,stud[j].num_live);
strcpy(stud[j].num_live,t);
// strcpy(t,stud[j+1].repair_situation);
strcpy(stud[j+1].repair_situation,stud[j].repair_situation);
// stud[j+1].repair_situation,stud[j].repair_situation;
strcpy(stud[j].repair_situation,t);
// strcpy(stud[j].repair_situation,t);
}
else if(s==2&&stud[j+1].area-stud[j].area>0)
{
b=stud[j+1].num;
stud[j+1].num=stud[j].num;
stud[j].num=b;
strcpy(t,stud[j+1].repair_situation);
strcpy(stud[j+1].repair_situation,stud[j].repair_situation);
strcpy(stud[j].repair_situation,t);
strcpy(t,stud[j+1].num_contain);
strcpy(stud[j+1].num_contain,stud[j].num_contain);
strcpy(stud[j].num_contain,t);
strcpy(t,stud[j+1].num_live);
strcpy(stud[j+1].num_live,stud[j].num_live);
strcpy(stud[j].num_live,t);
// strcpy(t,stud[j+1].area);
strcpy(stud[j+1].area,stud[j].area);
// stud[j+1].area,stud[j].area;
strcpy(stud[j].area,t);
// strcpy(stud[j].sarea,t);
}
}
}
Display(stu,n);
}
void Xiugai_record(Apartment stud[],int n) /*修改信息*/
{
int s;
char t[500];
int i=0,a=0,x=0,b=0;
printf("\t\t\t请输入房间号:"); /*交互式输入*/
scanf("\t\t\t%d",&s);
while((stud[i].num!=s)&&i<n) i++; /*查找判断*/
if(i==n)
{
printf("\t\t\t没有发现!\n"); /*输入失败信息*/
return;
}
printf("\t\t房间号:%d\n",stud[i].num);
printf("\t\t面积:%s\n",stud[i].area);
printf("\t\t可住宿人数:%s\n",stud[i].num_contain);
printf("\t\t实际住宿人数:%s\n",stud[i].num_live); /*输出该学生信息*/
printf("\t\t修缮状况:%s\n",stud[i].repair_situation);
printf("\t\t | 请选择你要修改的数据 |\n");
printf("\t\t | 1. 房间号 |\n");
printf("\t\t | 2. 面积 |\n");
printf("\t\t | 3. 可住宿人数 |\n");
printf("\t\t | 4. 实际住宿人数 |\n");
printf("\t\t | 5. 修缮状况 |\n");
printf("\t\t*****************************************\n");
printf("\t\t\t输入你的选择(1-5):");
scanf("%d",&a);
if(a==1)
{
printf("\t\t\t请输入要修改的值");
scanf("%d",&b);
stud[i].num=b;
}
else if(a==2)
{
printf("\t\t\t请输入要修改的值\n");
scanf("%s",t);
strcpy(stud[i].area,t);
}
else if(a==3)
{
printf("\t\t\t请输入要修改的值\n");
scanf("%s",t);
strcpy(stud[i].num_contain,t);
}
else if(a==4)
{
printf("\t\t\t请输入要修改的值\n");
scanf("%s",t);
strcpy(stud[i].num_live,t);
}
else if(a==5)
{
printf("\t\t\t请输入要修改的值\n");
scanf("%s",t);
strcpy(stud[i].repair_situation,t);
}
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*选择判断*/
{
case 1:
printf("\t\t\t输入信息\n"); /*输入若干条记录*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\t显示所有信息\n"); /*显示所有记录*/
Display(stu,n);
break;
case 3:
//printf("\t\t\tSort\n");
//Insert_a_record(stu,n); /*按学号排序*/
n=Insert_a_record(stu,n);
printf("\t\t\t插入成功!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\t删除信息\n");
n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\t查找\n");
Query_a_record(stu,n); /*查找并显示一个记录*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\t查找\n");
Sort_by_num(stu,n); /*按学号排序*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\t修改\n");
Xiugai_record(stu,n); /*按学号排序*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\t再见!\n"); /*结束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
自己看看,我试过了,能行的
2009-06-29
展开全部
自己再改改,没有时间给你弄了...............
/*宿舍管理查询软件
为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:
采用交互工作方式
建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
查询菜单: (用二分查找实现以下操作)
按姓名查询
按学号查询
按房号查询
打印任一查询结果(可以连续操作)*/
# include <stdio.h>
#include<iomanip>
#include<fstream>
# include <stdlib.h>
# include <string.h>
# include <conio.h> //(键盘和屏幕) 输出输入函数的头文件
#include<iostream.h>
# define N 20
/*********************自定义函数声明部分**************************/
void showheader(); //声明显示表头部分
int menu(); //声明主菜单函数
int menu3(); //声明插入功能子菜单函数
int menu5(); //声明查找功能子菜单函数
int quanxian(); //声明用户权限管理函数
void SavePass(); //密码显示为"*"的函数
struct student shuru(); //声明学生信息录入函数
void display(struct student); //声明显示函数
void sort(struct student stu[N],int); //声明排序函数
void charu(struct student stu[N],int); //声明插入函数
void chazhao1(struct student stu[N],int i); //声明按照学号查找函数
void chazhao2(struct student stu[N],int i); //声明按照姓名查找函数
void chazhao3(struct student stu[N],int i);//声明按照房间号查找
/*********定义结构体************/
struct student
{
/* 构造结构成员 */
int ID;
char name[15];
char sex;
int roomnum;
float score[3];
char *getSex()
{
if(sex=='g')
return "女";
else
return "男";
}
float Ave() //求平均成绩
{
return (score[0]+score[1]+score[2])/3;
}
student() //初始化成绩为0
{
score[0]=0;
score[1]=0;
score[2]=0;
}
};
/****************************主函数开始**************************/
void main()
{
struct student stu[N];
int count=0,m=0,j;
char ch,ch1;
int choice,choice3,choice4; //菜单选项及子菜单选项
int user;
do //此循环体控制用户信息输入错误后是否重输
{
user=quanxian(); //调用用户权限函数
system("cls");// 调用DOS下的清屏命令"cls"
if(user==1) //此条件结构判断用户权限输入是否正确
{
do //此循环体控制返回主菜单
{ ch1='n'; //如果用户将主菜单选择错误,可用此变量控制是否重输
choice=menu();
system("cls");
switch(choice) //此条件结构控制选择菜单功能后的操作
{
case 1: //输入学生信息
{
do //此循环体控制是否继续输入
{
cout<<"****************************** 学员信息录入 **********************************\n";
cout<<"请输入第"<<count+1<<"d个学员的成绩\n\n";
stu[count]=shuru(); //调用输入函数
cout<<"是否继续(y/n)";
fflush(stdin);// 刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
ch=getchar();
count++;
system("cls");
}while(ch=='y');
system("pause");
break;
}
case 2: //显示排序好的学生信息
{
cout<<"****************************** 学员信息显示 **********************************\n";
cout<<"\n排序后的成绩如下:\n";
sort(stu,count);//调用排序函数
showheader();
for(j=0;j<count;j++)
{
display(stu[j]); //调用显示函数
}
system("pause");
system("cls");
break;
}
case 3://插入功能
{
while(choice3!=3) //此循环体控制是否退出子菜单
{
system("cls");
choice3=menu3(); //调用子菜单函数
system("cls");
if(choice3==1) //此条件结构控制子菜单选项
{
do //此循环体判断是否继续插入
{ cout<<"****************************** 学员信息插入 **********************************\n";
charu(stu,count); //调用插入函数
count++;
cout<<"是否继续插入?(y/n)";
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
if (choice3==2) //此条件结构控制子菜单选项
{
cout<<"\n\n插入学生信息后如下:\n";
sort(stu,count);//调用排序函数
showheader();
for(j=0;j<count;j++)
{
display(stu[j]); //调用显示函数
}
system("pause");
}
//
}
break;
}
case 4://查找功能
{
while(choice4!=4) //控制是否继续查找
{
system("cls");
choice4=menu5(); //调用查找子菜单函数
system("cls");
if(choice4==1) //控制按照学号查找
{
chazhao1(stu,count);//调用按照学号查找的函数
system("cls");
}
if(choice4==2) //控制按照姓名查找
{
chazhao2(stu,count);//调用按照姓名查找的函数
system("cls");
}
if(choice4==3) //控制按照房间查找
{
chazhao3(stu,count);//调用按照房间查找的函数
system("cls");
}
system("pause");
}
break;
}
case 5://退出
{
cout<<"确认退出?(y/n)"; //让用户确认是否退出
fflush(stdin);
ch=getchar();
break;
}
default:
{
cout<<"\a\a警告:您输入错误,是否重输!(y/n)";
fflush(stdin);
ch1=getchar();
system("cls");
break;
}
}//end switch
}while(ch=='n'|| ch1=='y');//控制是否要退出系统
}//end if
if(user==0)
{
cout<<"\a\a警告:您的用户名或密码输入有误!是否重输?(y/n)";
}
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
/*************************主函数结束*************************/
/*自定义输入函数*/
struct student shuru()
{
struct student stu;
cout<<"学号:";
cin>>stu.ID;
cout<<"姓名:";
cin>>stu.name;
cout<<"性别(g/b):";
fflush(stdin);
cin>>stu.sex;
cout<<"房间号:";
cin>>stu.roomnum;
cout<<"语文成绩:";
cin>>stu.score[0];
cout<<"数学成绩:";
cin>>stu.score[1];
cout<<"英语成绩:";
cin>>stu.score[2];
return stu;
}
/*自定义显示函数*/
void display(struct student stu)
{
int j;
cout<<"\t"<<stu.ID<<"\t";
cout<<stu.name<<"\t";
cout<<stu.getSex()<<"\t";
cout<<stu.roomnum<<"\t";
for(j=0;j<3;j++)
{
cout<<stu.score[j]<<"\t";
}
cout<<stu.Ave()<<endl;
}
/*自定义排序函数*/
void sort(struct student stu[N],int i)
{
int j,k;
struct student temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-j-1;k++)
{
if((stu[k].ID)>(stu[k+1].ID))
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
}
/*自定义插入函数*/
void charu(struct student stu[N],int k)
{
int i,l;
struct student in ;
in=shuru();//调用输入函数
for(i=0;i<k;i++)
{
if(in.Ave()>stu[i].Ave())
break;
}
for(l=k;l>i;l--)
{
stu[l]=stu[l-1];
}
stu[i]=in;
}
/*自定义主菜单函数*/
int menu()
{ int choice;
cout<<"\t\t****************************************************\n\n\t\t\t 欢迎进入学生宿舍管理查询系统 \n\n\t\t****************************************************\n\n";
cout<<"\t\t\t***************主菜单***************\n\n";
cout<<"\t\t\t\t1> 学生信息录入\n\n";
cout<<"\t\t\t\t2> 学生信息显示\n\n";
cout<<"\t\t\t\t3> 插入学生信息\n\n";
cout<<"\t\t\t\t4> 查找学生信息\n\n";
cout<<"\t\t\t\t5> 退出\n";
cout<<"\n\n请选择功能选项:";
cin>>choice;
return choice;
}
/*自定义插入功能子菜单函数*/
int menu3()
{ cout<<"\t*******************这里显示的是插入功能子菜单*******************\n\n";
cout<<"\t\t\t\t1、插入学生信息\n\n";
cout<<"\t\t\t\t2、显示插入后的学生信息\n\n";
cout<<"\t\t\t\t3、退出子菜单,返回上一级菜单\n\n";
cout<<"\n\n请选择功能选项:";
int choice3;
cin>>choice3;
return choice3;
}
/*自定义按照学号查找函数*/
void chazhao1(struct student stu[N],int i)
{
int select,j;
char ch;
cout<<"\t*******************您选择的是按照学号查找:*******************\n\n";
do
{
cout<<"\n\n请输入学号:";
cin>>select;
for(j=0;j<i;j++)
{
if(select==stu[j].ID)
{
break;
}
}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
cout<<"你查找的信息不存在\n";
}
cout<<"是否继续查找?(y/n)";
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
/*自定义按照姓名查找函数*/
void chazhao2(struct student stu[N],int i)
{
int j;
char name[15];
char ch;
cout<<"\t*******************您选择的是按照姓名查找:*******************\n\n";
do
{
cout<<"\n\n请输入姓名:";
cin>>name;
for(j=0;j<i;j++)
{
if(strcmp(name,stu[j].name)==0)
{
break;
}
}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
cout<<"你查找的信息不存在\n";
}
cout<<"是否继续查找?(y/n)";
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
//按照房间号查找
void chazhao3(struct student stu[N],int i)
{
int j,room;
char ch;
cout<<"\t*******************您选择的是按照房间号查找:*******************\n\n";
do
{
cout<<"\n\n请输入房间号:";
cin>>room;
for(j=0;j<i;j++)
{
if(room==stu[j].roomnum)
{
break;
}
}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
cout<<"你查找的信息不存在\n";
}
cout<<"是否继续查找?(y/n)";
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
/*自定义查找功能子菜单函数*/
int menu5()
{
cout<<"\t*******************这里显示的是查找功能子菜单*******************\n\n";
cout<<"\t\t\t\t1、按照学号查找\n\n";
cout<<"\t\t\t\t2、按照姓名查找\n\n";
cout<<"\t\t\t\t3、按照房间号查找\n\n";
cout<<"\t\t\t\t4、退出子菜单,返回上一级菜单\n\n";
cout<<"\n\n请选择功能选项:";
int choice4;
cin>>choice4;
return choice4;
}
/*自定义用户权限函数*/
char chrPass[20];
int quanxian()
{
char user[15];
cout<<"\t\t*****************************************\n\n\t\t 欢迎您访问学生宿舍管理查询系统 \n\n\t\t*****************************************\n\n";
cout<<"\n提示 用户名:hehe 密码:1982";
cout<<"\n用户名:";
cin>>user;
cout<<endl;
cout<<endl;
cout<<"密 码:";
SavePass();
if((strcmp(chrPass,"1982")==0)&&(strcmp(user,"hehe")==0))
return 1;
else
return 0;
}
/*密码显示为"*"的函数*/
void SavePass()
{
char chr;
int count;
count = 0;
while((chr=getch())!=13)
{
chrPass[count] = chr;
cout<<"*";
count++;
}
chrPass[count+1] = '\0';
}
/*自定义表头函数*/
void showheader()
{ cout<<"\n\n\t******************************************************************\n";
cout<<"\t学号\t姓名\t性别\t房间号\t语文成绩 数学成绩 英语成绩 平均分\n";
cout<<"\t*******************************************************************\n";
}
/*宿舍管理查询软件
为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:
采用交互工作方式
建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)
查询菜单: (用二分查找实现以下操作)
按姓名查询
按学号查询
按房号查询
打印任一查询结果(可以连续操作)*/
# include <stdio.h>
#include<iomanip>
#include<fstream>
# include <stdlib.h>
# include <string.h>
# include <conio.h> //(键盘和屏幕) 输出输入函数的头文件
#include<iostream.h>
# define N 20
/*********************自定义函数声明部分**************************/
void showheader(); //声明显示表头部分
int menu(); //声明主菜单函数
int menu3(); //声明插入功能子菜单函数
int menu5(); //声明查找功能子菜单函数
int quanxian(); //声明用户权限管理函数
void SavePass(); //密码显示为"*"的函数
struct student shuru(); //声明学生信息录入函数
void display(struct student); //声明显示函数
void sort(struct student stu[N],int); //声明排序函数
void charu(struct student stu[N],int); //声明插入函数
void chazhao1(struct student stu[N],int i); //声明按照学号查找函数
void chazhao2(struct student stu[N],int i); //声明按照姓名查找函数
void chazhao3(struct student stu[N],int i);//声明按照房间号查找
/*********定义结构体************/
struct student
{
/* 构造结构成员 */
int ID;
char name[15];
char sex;
int roomnum;
float score[3];
char *getSex()
{
if(sex=='g')
return "女";
else
return "男";
}
float Ave() //求平均成绩
{
return (score[0]+score[1]+score[2])/3;
}
student() //初始化成绩为0
{
score[0]=0;
score[1]=0;
score[2]=0;
}
};
/****************************主函数开始**************************/
void main()
{
struct student stu[N];
int count=0,m=0,j;
char ch,ch1;
int choice,choice3,choice4; //菜单选项及子菜单选项
int user;
do //此循环体控制用户信息输入错误后是否重输
{
user=quanxian(); //调用用户权限函数
system("cls");// 调用DOS下的清屏命令"cls"
if(user==1) //此条件结构判断用户权限输入是否正确
{
do //此循环体控制返回主菜单
{ ch1='n'; //如果用户将主菜单选择错误,可用此变量控制是否重输
choice=menu();
system("cls");
switch(choice) //此条件结构控制选择菜单功能后的操作
{
case 1: //输入学生信息
{
do //此循环体控制是否继续输入
{
cout<<"****************************** 学员信息录入 **********************************\n";
cout<<"请输入第"<<count+1<<"d个学员的成绩\n\n";
stu[count]=shuru(); //调用输入函数
cout<<"是否继续(y/n)";
fflush(stdin);// 刷新标准输入缓冲区,把输入缓冲区里的东西丢弃
ch=getchar();
count++;
system("cls");
}while(ch=='y');
system("pause");
break;
}
case 2: //显示排序好的学生信息
{
cout<<"****************************** 学员信息显示 **********************************\n";
cout<<"\n排序后的成绩如下:\n";
sort(stu,count);//调用排序函数
showheader();
for(j=0;j<count;j++)
{
display(stu[j]); //调用显示函数
}
system("pause");
system("cls");
break;
}
case 3://插入功能
{
while(choice3!=3) //此循环体控制是否退出子菜单
{
system("cls");
choice3=menu3(); //调用子菜单函数
system("cls");
if(choice3==1) //此条件结构控制子菜单选项
{
do //此循环体判断是否继续插入
{ cout<<"****************************** 学员信息插入 **********************************\n";
charu(stu,count); //调用插入函数
count++;
cout<<"是否继续插入?(y/n)";
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
if (choice3==2) //此条件结构控制子菜单选项
{
cout<<"\n\n插入学生信息后如下:\n";
sort(stu,count);//调用排序函数
showheader();
for(j=0;j<count;j++)
{
display(stu[j]); //调用显示函数
}
system("pause");
}
//
}
break;
}
case 4://查找功能
{
while(choice4!=4) //控制是否继续查找
{
system("cls");
choice4=menu5(); //调用查找子菜单函数
system("cls");
if(choice4==1) //控制按照学号查找
{
chazhao1(stu,count);//调用按照学号查找的函数
system("cls");
}
if(choice4==2) //控制按照姓名查找
{
chazhao2(stu,count);//调用按照姓名查找的函数
system("cls");
}
if(choice4==3) //控制按照房间查找
{
chazhao3(stu,count);//调用按照房间查找的函数
system("cls");
}
system("pause");
}
break;
}
case 5://退出
{
cout<<"确认退出?(y/n)"; //让用户确认是否退出
fflush(stdin);
ch=getchar();
break;
}
default:
{
cout<<"\a\a警告:您输入错误,是否重输!(y/n)";
fflush(stdin);
ch1=getchar();
system("cls");
break;
}
}//end switch
}while(ch=='n'|| ch1=='y');//控制是否要退出系统
}//end if
if(user==0)
{
cout<<"\a\a警告:您的用户名或密码输入有误!是否重输?(y/n)";
}
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
/*************************主函数结束*************************/
/*自定义输入函数*/
struct student shuru()
{
struct student stu;
cout<<"学号:";
cin>>stu.ID;
cout<<"姓名:";
cin>>stu.name;
cout<<"性别(g/b):";
fflush(stdin);
cin>>stu.sex;
cout<<"房间号:";
cin>>stu.roomnum;
cout<<"语文成绩:";
cin>>stu.score[0];
cout<<"数学成绩:";
cin>>stu.score[1];
cout<<"英语成绩:";
cin>>stu.score[2];
return stu;
}
/*自定义显示函数*/
void display(struct student stu)
{
int j;
cout<<"\t"<<stu.ID<<"\t";
cout<<stu.name<<"\t";
cout<<stu.getSex()<<"\t";
cout<<stu.roomnum<<"\t";
for(j=0;j<3;j++)
{
cout<<stu.score[j]<<"\t";
}
cout<<stu.Ave()<<endl;
}
/*自定义排序函数*/
void sort(struct student stu[N],int i)
{
int j,k;
struct student temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-j-1;k++)
{
if((stu[k].ID)>(stu[k+1].ID))
{
temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
}
}
}
/*自定义插入函数*/
void charu(struct student stu[N],int k)
{
int i,l;
struct student in ;
in=shuru();//调用输入函数
for(i=0;i<k;i++)
{
if(in.Ave()>stu[i].Ave())
break;
}
for(l=k;l>i;l--)
{
stu[l]=stu[l-1];
}
stu[i]=in;
}
/*自定义主菜单函数*/
int menu()
{ int choice;
cout<<"\t\t****************************************************\n\n\t\t\t 欢迎进入学生宿舍管理查询系统 \n\n\t\t****************************************************\n\n";
cout<<"\t\t\t***************主菜单***************\n\n";
cout<<"\t\t\t\t1> 学生信息录入\n\n";
cout<<"\t\t\t\t2> 学生信息显示\n\n";
cout<<"\t\t\t\t3> 插入学生信息\n\n";
cout<<"\t\t\t\t4> 查找学生信息\n\n";
cout<<"\t\t\t\t5> 退出\n";
cout<<"\n\n请选择功能选项:";
cin>>choice;
return choice;
}
/*自定义插入功能子菜单函数*/
int menu3()
{ cout<<"\t*******************这里显示的是插入功能子菜单*******************\n\n";
cout<<"\t\t\t\t1、插入学生信息\n\n";
cout<<"\t\t\t\t2、显示插入后的学生信息\n\n";
cout<<"\t\t\t\t3、退出子菜单,返回上一级菜单\n\n";
cout<<"\n\n请选择功能选项:";
int choice3;
cin>>choice3;
return choice3;
}
/*自定义按照学号查找函数*/
void chazhao1(struct student stu[N],int i)
{
int select,j;
char ch;
cout<<"\t*******************您选择的是按照学号查找:*******************\n\n";
do
{
cout<<"\n\n请输入学号:";
cin>>select;
for(j=0;j<i;j++)
{
if(select==stu[j].ID)
{
break;
}
}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
cout<<"你查找的信息不存在\n";
}
cout<<"是否继续查找?(y/n)";
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
/*自定义按照姓名查找函数*/
void chazhao2(struct student stu[N],int i)
{
int j;
char name[15];
char ch;
cout<<"\t*******************您选择的是按照姓名查找:*******************\n\n";
do
{
cout<<"\n\n请输入姓名:";
cin>>name;
for(j=0;j<i;j++)
{
if(strcmp(name,stu[j].name)==0)
{
break;
}
}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
cout<<"你查找的信息不存在\n";
}
cout<<"是否继续查找?(y/n)";
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
//按照房间号查找
void chazhao3(struct student stu[N],int i)
{
int j,room;
char ch;
cout<<"\t*******************您选择的是按照房间号查找:*******************\n\n";
do
{
cout<<"\n\n请输入房间号:";
cin>>room;
for(j=0;j<i;j++)
{
if(room==stu[j].roomnum)
{
break;
}
}
if(j<i)
{
showheader();
display(stu[j]);
}
else
{
cout<<"你查找的信息不存在\n";
}
cout<<"是否继续查找?(y/n)";
fflush(stdin);
ch=getchar();
system("cls");
}while(ch=='y');
}
/*自定义查找功能子菜单函数*/
int menu5()
{
cout<<"\t*******************这里显示的是查找功能子菜单*******************\n\n";
cout<<"\t\t\t\t1、按照学号查找\n\n";
cout<<"\t\t\t\t2、按照姓名查找\n\n";
cout<<"\t\t\t\t3、按照房间号查找\n\n";
cout<<"\t\t\t\t4、退出子菜单,返回上一级菜单\n\n";
cout<<"\n\n请选择功能选项:";
int choice4;
cin>>choice4;
return choice4;
}
/*自定义用户权限函数*/
char chrPass[20];
int quanxian()
{
char user[15];
cout<<"\t\t*****************************************\n\n\t\t 欢迎您访问学生宿舍管理查询系统 \n\n\t\t*****************************************\n\n";
cout<<"\n提示 用户名:hehe 密码:1982";
cout<<"\n用户名:";
cin>>user;
cout<<endl;
cout<<endl;
cout<<"密 码:";
SavePass();
if((strcmp(chrPass,"1982")==0)&&(strcmp(user,"hehe")==0))
return 1;
else
return 0;
}
/*密码显示为"*"的函数*/
void SavePass()
{
char chr;
int count;
count = 0;
while((chr=getch())!=13)
{
chrPass[count] = chr;
cout<<"*";
count++;
}
chrPass[count+1] = '\0';
}
/*自定义表头函数*/
void showheader()
{ cout<<"\n\n\t******************************************************************\n";
cout<<"\t学号\t姓名\t性别\t房间号\t语文成绩 数学成绩 英语成绩 平均分\n";
cout<<"\t*******************************************************************\n";
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询