本菜鸟的第一个课设题目:宿舍管理系统(持续更新中。。)

目前使用到了结构,system函数,文件的创立与读入
实现了人员的添加、修改、删除、查询以及宿舍情况的查询,由于之前bug奇出,所以有待完善

include <stdio.h>

include <stdlib.h>

include <string.h>

typedef struct 
{
	int card;
	int classroom;
	int dormitory;
	int buildingnum;
	char name[20];
}Student;
Student ID[620];

int dormitory_people[60]={0};
int dormitory_fee[60];
int building[5]={0};


int select_menu()
{
	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§ 8. 将已有信息读入              			  \n");
        printf("\t\t§ 9. 退出程序           				   \n");
        
        printf("\t\t----------------------------------------------\n");
        printf("\t\t请选择您要运行的选项按(1-9):");

            c=getchar();                  

    }while(c<'0'||c>'9');
		
	return(c-'0'); 
                         
}



int Input(Student IDNum[],int n)
{
	int i=0;
	char x=0;
	int fee;
	while(x!='n'&&x!='N')
	{
		printf("\t输入学号:");
		scanf("%d",&IDNum[n+i+1].card); 
		printf("\t输入姓名:");
		scanf("%s",&IDNum[n+i+1].name);
		printf("\t输入班级:");
		scanf("%d",&IDNum[n+i+1].classroom);
		printf("\t输入宿舍号:");
		scanf("%d",&IDNum[n+i+1].dormitory);
		printf("\t输入楼栋号: ");
		scanf("%d",&IDNum[n+i+1].buildingnum);
		printf("\t充值电费为:");
		scanf("%d",&fee); 
		dormitory_fee[IDNum[n+i+1].dormitory]+=fee;
		
		dormitory_people[IDNum[n+i+1].dormitory]++;
		building[IDNum[n+i+1].buildingnum]++;
		
		getchar(); 
		printf("\t添加成功!是否继续输入(Y/N)?");
		scanf("%c",&x);
		
		i++;
		
	}
	 
	return n+i;	
}

void Change(Student IDNum[],int n)
{
	int i=1;
	char s[20];
	printf("\t输入要修改的学生姓名:");
	scanf("%s",s);

    while(strcmp(IDNum[i].name,s)!=0&&i<=n) i++;          

    if(i==n+1)
    {
        printf("\t对不起没找到该学生!\n");  
		system("pause");            
    	return;
    }
	
	dormitory_people[IDNum[i].dormitory]--;
	printf("\t需要修改他/她的宿舍号是:");
	scanf("%d",&IDNum[i].dormitory);
	dormitory_people[IDNum[i].dormitory]++;
	
	printf("\t需要修改他/她的班级是:");
	scanf("%d",&IDNum[i].classroom);
	
	building[IDNum[i].buildingnum]--;
	printf("\t修改后他她的宿舍楼号是:");
	scanf("%d",&IDNum[i].buildingnum);
	building[IDNum[i].buildingnum]++;
	printf("\t修改成功!\n");
	system("pause");
	
}

int Delete(Student IDNum[],int n)
{
	char s[20];

    int i=1,j;

    printf("\t输入他(她)的姓名:");              
    scanf("%s",s);

    while(strcmp(IDNum[i].name,s)!=0&&i<=n) i++;          

    if(i==n+1)
    {
        printf("\t对不起没找到该学生!\n");              
    	return(n);
    }
    
	dormitory_people[IDNum[i].dormitory]--;
	building[IDNum[i].buildingnum]--;
	
    for(j=i;j<n;j++)                  
    {
        	
		IDNum[j].card=IDNum[j+1].card;
		IDNum[j].classroom=IDNum[j+1].classroom;
		IDNum[j].dormitory=IDNum[j+1].dormitory;
		IDNum[j].buildingnum=IDNum[j+1].buildingnum;
        strcpy(IDNum[j].name,IDNum[j+1].name);

    }
		
         printf("\t删除记录成功!\n");          

         return(n-1);
}

void Look_up(Student IDNum[],int n)
{

	char s[20];
    int i=1;

    printf("\t输入他(她)的姓名:");                  
    scanf("\t%s",&s);

    while(strcmp(IDNum[i].name,s)!=0&&i<=n) i++;          

    if(i==n+1)

    {
    	printf("\t对不起没找到该学生!\n");  
		system("pause");         
        return;
    }
	 
    printf("\t他/她的班级:%.2d\n",IDNum[i].classroom);  
    printf("\t他/她的宿舍号:%.2d\n",IDNum[i].dormitory);
    printf("\t他/她的楼号:%.2d\n",IDNum[i].buildingnum);
    getchar();
	system("pause");
}

void Present_floor()
{
	int num;
	printf("\t请输入要统计的楼号:");
	scanf("%d",&num);
	printf("\t该楼现在的总人数为:%d人\n",building[num]);
	system("pause");
}

void Present_dormitory(Student IDNum[],int n)
{
	int i=1,q;
	printf("\t输入要查找的宿舍号:");
	scanf("%d",&q);
	
	for(i;i<=n;i++)
	{
		if(IDNum[i].dormitory==q)
		{
			printf("\t姓名:%s",IDNum[i].name);
			printf("\t班级:%.2d",IDNum[i].classroom);  
    		printf("\t宿舍号:%.2d",IDNum[i].dormitory);
    		printf("\t楼号:%.2d",IDNum[i].buildingnum);
    		printf("\n");
		}
		
	}
	printf("\t电费余额:%.2d元\n",dormitory_fee[q]);
	system("pause");
}

void Present_all(Student IDNum[],int n)
{
	for(int i=1;i<=n;i++)
	{
		printf("\t姓名:%s  ",IDNum[i].name);
		printf("学号:%.2d  ",IDNum[i].card); 
		printf("班级:%.2d  ",IDNum[i].classroom);  
    	printf("宿舍号:%.2d  ",IDNum[i].dormitory);
    	printf("楼号:%.2d\n",IDNum[i].buildingnum);
	}
	system("pause");
}

int Addfromtxt(Student IDNum[],int n)              

{
         int num;
         FILE *fp;                                    
         char filename[20];
		                               
         printf("\t输入文件名:");
         scanf("%s",&filename);                    

         if((fp=fopen(filename,"rb"))==NULL)            
         {
	          printf("\t无法打开该文件\n");        
	          printf("\t\t");
	          system("pause");

          return(n);

         }

          fscanf(fp,"%d",&num);                  

		int i=n+1;
          while(i<=num+n)                

         {
      		fscanf(fp,"%s%d%d%d%d",IDNum[i].name,&IDNum[i].card,&IDNum[i].classroom,&IDNum[i].dormitory,&IDNum[i].buildingnum);
          	i++;

         }

         
          fclose(fp);
		  for(int j=n+1;j<=num+n;j++)
		  {
				dormitory_people[IDNum[j].dormitory]++;
				building[IDNum[j].buildingnum]++;
		  }  
		  n+=num;     
          printf("\t读入成功!\n");
          printf("\t\t");
          system("pause");
          return(n);

}


int main()
{
	int n=0;
	memset(dormitory_fee,0,sizeof(dormitory_fee));
	for(;;)
	{
		switch(select_menu())
		{
			case 1:
			printf("\t添加宿舍成员信息:\n");
			n=Input(ID,n);
			break;
			
			case 2:
			printf("\t修改宿舍成员信息:\n");
			Change(ID,n);
			break;
			
			case 3:
			printf("\t删除宿舍成员信息:\n");
			n=Delete(ID,n);
			break;
			
			case 4:
			printf("\t查询宿舍成员信息:\n");
			Look_up(ID,n);
			break;
			
			case 5:
			printf("\t显示楼栋人数:\n");
			Present_floor();
			break;
			
			case 6:
			printf("\t显示宿舍信息:\n");
			Present_dormitory(ID,n);
			break;
			
			case 7:
			printf("\t宿舍信息的浏览:\n");
			Present_all(ID,n);
			break;
			
			case 8:
			printf("\t将已有信息读入:\n");
			n=Addfromtxt(ID,n);
			break; 
			
			case 9:
			printf("\t谢谢使用\n");
			exit(0); 
			
		}
			
	}

}

由于本人水平极其有限,请勿随便粘贴。。。

posted @ 2021-01-05 23:37  empty_thought  阅读(113)  评论(0)    收藏  举报