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);	
}


<
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值