c语言学生宿舍管理系统( 文件(二进制文本存储),链表版)

2023-05-16

实现简单的学生宿舍基本信息管理,宿舍的基本信息包括楼号、房间号、面积、所容纳人数、已入住人数等,系统以文本菜单形式工作。
登录时:用户名为asd 密码任意

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <malloc.h> 
#include <windows.h>
#define N sizeof(struct Student) 

typedef struct Student
{
	int buildnum;  //宿舍楼栋号 
	int roomnum;   //房间号 
	int brnum;     //宿舍楼栋号+房间号 
	float area;    //宿舍房间面积
	int rnanum;    //所容纳人数   	 
	char xy[100];  //学院 
	int bj;        // 班级
	int num;       //学号 
	char name[20]; //姓名
	char sex[10];  //性别 
	int date; 	   //日期		
	struct Student *next;	
}Stu,*stu;

int a[1000000];//记录寝室入住人数 

void save_stu(stu p);

void login()
{
	system("cls");
	system("color  4E");
	printf("\n\n\n\n\n\n\n############################~欢迎进入学生宿舍管理系统~##########################\n");
	printf("\n\n\n\t\t\t\t  ★ ★ ★ ★ ★");
	printf("\n\n\n\n\t\t\t\t\t\tLoading");
	for(int i=0;i<6;i++)
	{
		Sleep(400);
		printf(".");
	}
    system("cls");
	char username[10];
	char password;
	int p=0;
	system("color 6E");
	printf("\n\n\n   ==============================欢迎使用=================================\n");
	for(int i = 0; i < 3; i++)
	{     
        printf("\n\n\n\t\t请输入用户名:[            ]\b\b\b\b\b\b\b\b\b\b\b\b");   
        scanf("%s",username);
		if (strcmp(username,"asd") == 0)
		{
			printf("\t\t请输入密码:  [            ]\b\b\b\b\b\b\b\b\b\b\b\b");  
            while((password=getch()) != '\r')//判断是否是回车  
            { 
			    p++; 
                if(password == 8)//实现backspace键的功能,其中backspace键的ascii码是8  
                {  
                    putchar('\b');  
                    putchar(' ');  
                    putchar('\b');  
                    if(p>0)  //最多只能删到没有字符  
                    p--;  
                }  
                if(!isdigit(password)&&!isalpha(password))//判断是否是数字或字符  
					continue;    
                putchar('*'); //在屏幕上打印星号  
            }
			printf("\n\n\n   ===============================登陆成功================================="); 
			Sleep(600);
			return;  
            system("pause"); 
		}  
        else 
		{
			if(i<2)
			  printf("用户名错误,请重新输入");
			else  
            {  
                printf("\n     您已连续3次将用户名或密码输错,系统将退出!");  
                exit(0);   //关闭所有文件,终止正在执行的进程 
            }  
		}  
    }    
}

int menu_select()  //主菜单选项 
{        
    int a;  
    do
	{
        system("cls");
		system("color 3E");  
        printf("\n\n\t======================学生宿舍管理系统※※※※※※※※※※※※\n\n");  
        printf("\t◆◆             1. 添加学生信息                          ◆◆\n\n");  
        printf("\t◆◆             2. 显示学生信息                          ◆◆\n\n");  
        printf("\t◆◆             3. 对学生信息进行排序                    ◆◆\n\n");    
        printf("\t◆◆             4. 查找学生信息                          ◆◆\n\n");  
        printf("\t◆◆             5. 修改学生信息                          ◆◆\n\n");  
        printf("\t◆◆             6. 删除学生信息                          ◆◆\n\n");  
        printf("\t◆◆             0. 退出系统                              ◆◆\n\n");  
        printf("\t※※※※※※※※※※※※※※※================================\n");  
        printf("\t请选择您要运行的选项按(0-6):");  
        scanf("%d",&a);  
    }while(a<0 || a>6); 
    return a;  
}  

stu ss()      //将文件中的内容读出到链表中,返回值为表头地址 
{
	FILE *fp;       //文件指针 
	int n = 0;
	stu head = NULL;
	stu p1,p,pr = NULL;
	fp=fopen("student","ab+");     //以只读的方式打开文件 
	if(fp == NULL)
	{
		printf("文件打开失败 !\n");
	}
	else
	{
		while(!feof(fp))        //判断文件位置标志是否移动到文件末尾 
		{
		    n++;
		   	p = (stu)malloc(N); //向内存申请一段空间 
		    fread(p,N,1,fp);     //将fp所指向的文件中的内容赋给p 
		    if(n == 1)
			{
		        head = p;
		        p1 = p;
		    }
		    else             //创建链表 
		    {
		    	pr = p1;
		    	p1->next = p;
		    	p1 = p;
			}
	    }
	}
    if(pr != NULL)
       pr->next = NULL;
    else
       head = NULL;
    fclose(fp);    //关闭文件 
    return head;   //返回头指针 
}

Student *input(int n)
{
    int i;
	stu head,p,q; 
	if(n <= 0)  return NULL;
	p = (stu)malloc(sizeof(Stu));
	printf("--------------------------------------------------------------------------------\n");
	printf("楼栋号 房间号 楼栋房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期\n"); 
	printf("--------------------------------------------------------------------------------\n");
    scanf("%d%d%d%f%d%s%d%d%s%s%d",&p->buildnum,&p->roomnum,&p->brnum,&p->area,&p->rnanum,&p->xy,&p->bj,&p->num,&p->name,&p->sex,&p->date);   
	   a[p->brnum]++;
	if(a[p->brnum] == p->rnanum)        
       printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n");
	head = p;
	save_stu(p);
	for(i = 1;i < n; i++)
	{
		q = (stu)malloc(sizeof(Stu));
		printf("--------------------------------------------------------------------------------\n");
		printf("楼栋号 房间号 楼栋房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期\n"); 
		printf("--------------------------------------------------------------------------------\n");
        scanf("%d%d%d%f%d%s%d%d%s%s%d",&q->buildnum,&q->roomnum,&q->brnum,&q->area,&q->rnanum,&q->xy,&q->bj,&q->num,&q->name,&q->sex,&q->date);   
	    printf("\n");
	    a[q->brnum]++;
	    if(a[q->brnum] == q->rnanum)        
        {
        	printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n");
        	Sleep(300);
		}
		save_stu(q);
	    p->next = q;
	    p = q;
	}
	p->next=NULL;
	return head; 	
}   

void save_stu(stu p)   //将p中内容写入文件 
{
	FILE *fp;    //文件指针 
	fp = fopen("student","ab");   //以追加的方式打开名字为student的二进制文件 
	if(fp == NULL)
	{
		printf("文件打开失败 !");
	}
	if(fwrite(p,N,1,fp) != 1)   //将p所指向的一段大小为N的内容存入fp所指向的文件中 
	{
		printf("写入错误 !");
	}
	fclose(fp);    //关闭文件  
} 

void output(stu head)   //输出学生信息
{  
    printf("--------------------------------------------------------------------------------\n");
	printf("楼栋号 房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期   已住人数  \n"); 
	printf("--------------------------------------------------------------------------------\n");  
    stu p,q;
    int n=0;
	head = ss();  
    p = head;  
    if(head == NULL)  
    {  
        printf("\n\t\t\t学生信息为空 !\n");  
    }  
    else  
    {  
        for(p = head ;p != NULL ;p = p->next) 
	    {
	    	for(q = head;q != NULL ;q=q->next)
	    	{
	    		if(p->brnum == q->brnum)
	    		  n++;
			}
			a[p->brnum]=n;  
            printf("%3d %5d   %.1f  %5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date, n);			
			n=0;   
        }  
    }  
}
  
int sort_menu()  //排序选择菜单
{  
    int a;  
    do
	{  
        system("cls");  
        printf("\n\n\t\t------------------------------------------------------------\n\n");   
        printf("\t\t\t ▲▲ 1. 按照宿舍房间号排序\n\n");  
        printf("\t\t\t ▲▲ 2. 按照学号排序\n\n");  
        printf("\t\t\t ▲▲ 0. 返回到主菜单\n\n");  
        printf("\t\t------------------------------------------------------------\n");  
        printf("\t\t请选择您要运行的选项按(0-2):");  
        scanf("%d",&a);  
    }
	while(a<0 || a>2);  
    return a;  
} 
   
int sort(stu head,int n)  //排序
{
	FILE *fp;
    head = ss();  
    stu p,q;  
    int buildnum;  //宿舍楼栋号 
	int roomnum;   //房间号 
	int brnum;     //宿舍楼栋号+房间号 
	float area;    //宿舍房间面积
	int rnanum;    //所容纳人数   	 
	char xy[100];  //学院 
	int bj;        // 班级
	int num;       //学号 
	char name[20]; //姓名
	char sex[10];  //性别 
	int date;      //日期   
    switch(n)  
    {  
        case 1:  
            system("cls");  
            for(p = head; p != NULL; p = p->next)  
            {  
                for(q = p->next; q != NULL; q = q->next)  
                {  
                    if(p->brnum > q->brnum)  
                    {  
                        buildnum = q->buildnum;  
                        roomnum = q->roomnum;
						brnum = q->brnum;
						area = q->area;
						rnanum = q->rnanum;   
                        strcpy(xy,q->xy);  
                        bj = q->bj;  
                        num = q->num;  
                        strcpy(name,q->name);  
                        strcpy(sex,q->sex);
						date = q->date;  
                          
                        q->buildnum = p->buildnum;  
                        q->roomnum = p->roomnum;
						q->brnum = p->brnum;
						q->area = p->area;  
                        strcpy(q->xy,p->xy);  
                        q->bj = p->bj;
                        q->num = p->num;  
                        strcpy(q->name,p->name);  
                        strcpy(q->sex,p->sex);
						q->date = p->date;  
                          
                        p->buildnum = buildnum;  
                        p->roomnum = roomnum;
						p->brnum = brnum;
						p->area = area;   
                        strcpy(p->xy,xy);  
                        p->bj = bj;  
                        p->num = num;  
                        strcpy(p->name,name);  
                        strcpy(p->sex,sex);
						p->date = date;  
                    }  
                }  
            }
			fp = fopen("student","wb");
		    if(fp == NULL)
		    {
			    printf("文件打开失败 !"); 
		    }
		    if(fwrite(head,N,1,fp) != 1)
		    {
			    printf("写入错误 !"); 
		    }
		    fclose(fp);
		    if(head != NULL)
		    {
			    p = head->next;
			    fp = fopen("student","ab");
			    if(fp == NULL)
			    {
				    printf("文件打开失败 !");
			    }
			    while(p != NULL)
			    {
				    if(fwrite(p,N,1,fp) != 1)
				    {
					    printf("写入错误 !");
				    }
				    p = p->next;
			    }
			    fclose(fp);
		    }    
            output(head);  
            system("pause");  
            return 1;         
        case 2:  
            system("cls");      
            for(p = head; p != NULL; p = p->next)  
            {  
                for(q = p->next;q != NULL; q = q->next)  
                {  
                    if(p->num > q->num)  
                    {  
                        buildnum = q->buildnum;  
                        roomnum = q->roomnum;
						brnum = q->brnum;
						area = q->area;   
                        strcpy(xy,q->xy);  
                        bj = q->bj;  
                        num = q->num;  
                        strcpy(name,q->name);  
                        strcpy(sex,q->sex);  
						date = q->date; 
                          
                        q->buildnum = p->buildnum;  
                        q->roomnum = p->roomnum;
						q->brnum = p->brnum;
						q->area = p->area;   
                        strcpy(q->xy,p->xy);  
                        q->bj = p->bj;  
                        q->num = p->num;  
                        strcpy(q->name,p->name);  
                        strcpy(q->sex,p->sex);
						q->date = p->date;  
                          
                        p->buildnum = buildnum;  
                        p->roomnum = roomnum;
						p->brnum = brnum;
						p->area = area;   
                        strcpy(p->xy,xy);  
                        p->bj = bj;  
                        p->num = num;  
                        strcpy(p->name,name);  
                        strcpy(p->sex,sex); 
						p->date = date;  
                    }  
                }  
            }
			fp = fopen("student","wb");
		    if(fp == NULL)
		    {
			    printf("文件打开失败 !"); 
		    }
		    if(fwrite(head,N,1,fp) != 1)
		    {
			    printf("写入错误 !"); 
		    }
		    fclose(fp);
		    if(head != NULL)
		    {
			    p = head->next;
			    fp = fopen("student","ab");
			    if(fp == NULL)
			    {
				    printf("文件打开失败 !");
			    }
			    while(p != NULL)
			    {
				    if(fwrite(p,N,1,fp) != 1)
				    {
					    printf("写入错误 !");
				    }
				    p = p->next;
			    }
			    fclose(fp);
		    }    
            output(head);  
            system("pause");  
            return 1;  
        case 0:  
            system("pause");  
            return 0;  
    }  
} 

int find_menu()  //查找菜单
{  
    int a;  
    do
	{  
        system("cls");  
        printf("\n\n\t\t------------------------------------------------------------\n\n");   
        printf("\t\t\t ▲▲ 1. 按照楼栋房间号查找(查找同一寝室人员)\n\n");     
        printf("\t\t\t ▲▲ 2. 按照学院查找(查找同一学院人员)\n\n");  
        printf("\t\t\t ▲▲ 3. 按照班级查找(查找同一班级人员)\n\n");  
        printf("\t\t\t ▲▲ 4. 按照学号查找\n\n");  
        printf("\t\t\t ▲▲ 5. 按照姓名查找\n\n");    
        printf("\t\t\t ▲▲ 0. 返回到主菜单\n\n");  
        printf("\t\t------------------------------------------------------------\n");  
        printf("\t\t请选择您要运行的选项按(0-5):");  
        scanf("%d",&a);  
    }while(a<0 || a>5);  
    return a;  
}  
 
int find(stu head,int n)  //查找选择菜单  
{  
    stu p; 
	head = ss(); 
    switch(n)  
    {  
        case 1:  
            system("cls");   
            int sou;  
            printf("\n\t\t\t要查找的宿舍房间号为:");  
            scanf("%d",&sou);  
            printf("--------------------------------------------------------------------------------\n");
	        printf("楼栋号 房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期   已住人数  \n"); 
	        printf("--------------------------------------------------------------------------------\n");  
            for(p = head ;p != NULL ;p = p->next)  
            {  
                if(p->brnum == sou)  
                    printf("%3d %5d   %.1f  %5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]);               
            }  
            system("pause");  
            return 1;  
        case 2:  
            system("cls");  
            p = head;  
            char d[30];  
            printf("\n\t\t\t要查找的学院为:");  
            scanf("%s",&d);  
            printf("--------------------------------------------------------------------------------\n");
	        printf("楼栋号 房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期   已住人数  \n"); 
	        printf("--------------------------------------------------------------------------------\n");  
            for(p = head ;p != NULL ;p = p->next) 
            {  
                if(strcmp(p->xy,d) == 0)  
                    printf("%3d %5d   %.1f  %5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]);             
            }  
            system("pause");  
            return 1;  
        case 3:  
            system("cls");    
            int cl;  
            printf("\n\t\t\t要查找的班级为:");  
            scanf("%d",&cl);  
            printf("--------------------------------------------------------------------------------\n");
	        printf("楼栋号 房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期   已住人数  \n"); 
	        printf("--------------------------------------------------------------------------------\n");
            for(p = head ;p != NULL ;p = p->next)  
            {  
                if(p->bj == cl)  
                    printf("%3d %5d   %.1f  %5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]);           
            }  
            system("pause");  
            return 1;  
        case 4:  
            system("cls");    
            int f;  
            printf("\n\t\t\t要查找的学号为:");  
            scanf("%d",&f);  
            printf("--------------------------------------------------------------------------------\n");
	        printf("楼栋号 房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期   已住人数  \n"); 
	        printf("--------------------------------------------------------------------------------\n");
            for(p = head ;p != NULL ;p = p->next)  
            {  
                if(p->num == f)  
                    printf("%3d %5d   %.1f  %5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]);               
            }  
            system("pause");  
            return 1;  
        case 5:  
            system("cls");    
            char g[20];  
            printf("\n\t\t\t要查找的姓名为:");  
            scanf("%s",g);  
            printf("--------------------------------------------------------------------------------\n");
	        printf("楼栋号 房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期   已住人数  \n"); 
	        printf("--------------------------------------------------------------------------------\n");
            for(p = head ;p != NULL ;p = p->next)  
            {  
                if(strcmp(p->name, g) == 0)  
                    printf("%3d %5d   %.1f  %5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]);                
            }  
            system("pause");  
            return 1;  
        case 0:  
            system("pause");  
            return 0;  
    }  
}  
  
int alter(stu head)  //修改学生信息 
{
    FILE *fp;  
    int y;  
    printf("\n\t\t\t请输入将要修改的学生的学号:");  
    scanf("%d",&y);  
    stu p;
	head = ss();  
    p = head;  
    while(p != NULL)  
    {  
        if(y == p->num)  
        { 
		    printf("--------------------------------------------------------------------------------\n");
	        printf("楼栋号 房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期   已住人数  \n"); 
	        printf("--------------------------------------------------------------------------------\n"); 
            printf("%3d %5d   %.1f  %5d %10s %4d %4d %6s %3s %4d %3d\n",p->buildnum,p->roomnum,p->area,p->rnanum,p->xy,p->bj,p->num,p->name,p->sex,p->date,a[p->brnum]);
			printf("\n\t\t对信息进行修改:\n");
			printf("--------------------------------------------------------------------------------\n");
	        printf("楼栋号 房间号 宿舍房间号 房间面积 容纳数 学院  班级  学号   姓名   性别  日期\n"); 
	        printf("--------------------------------------------------------------------------------\n");
            scanf("%d%d%d%f%d%s%d%d%s%s%d",&p->buildnum,&p->roomnum,&p->brnum,&p->area,&p->rnanum,&p->xy,&p->bj,&p->num,&p->name,&p->sex,&p->date);   
	        a[p->brnum]++;
	        if(a[p->brnum] == p->rnanum)        
              printf("\n该寝室已入住满,请安排后面的学生到其它空余寝室入住\n");
            printf("\n");  
        }  
        p = p->next;  
    }
	fp = fopen("student","wb");   //以只写的方式打开名为student的二进制文件,打开的同时清空文件中的内容 
	if(fp == NULL)
	{
		printf("文件打开失败 !"); 
	}
	if(fwrite(head,N,1,fp) != 1)   //将head写入fp所指向的文件中 
	{
		printf("写入错误 !"); 
	}
	fclose(fp);   //关闭文件 
	if(head != NULL)   //如果head不为空 
	{
		p = head->next;     //让p指向第二个结点 
		fp = fopen("student","ab");   //以追加的方式打开文件 
		if(fp == NULL)
		{
				printf("文件打开失败 !");
		}
		while(p != NULL)
		{
			if(fwrite(p,N,1,fp) != 1)//将p写入fp所指向的文件中
			{
				printf("写入错误 !");
			}
			p = p->next;
		}
		fclose(fp);   
	}
	Sleep(500);      
}    

int del_menu()
{
	int a;  
    do
	{  
        system("cls");  
        printf("\n\n\t\t------------------------------------------------------------\n\n");   
        printf("\t\t\t ▲▲ 1.删除某个学生信息\n\n");  
        printf("\t\t\t ▲▲ 2.删除全部学生信息\n\n");  
        printf("\t\t\t ▲▲ 0. 返回到主菜单\n\n");  
        printf("\t\t------------------------------------------------------------\n");  
        printf("\t\t请选择您要运行的选项按(0-2):");  
        scanf("%d",&a);  
    }
	while(a<0 || a>2);  
    return a;  
} 
 
int del(stu head,int g)  //删除学生信息
{ 
    FILE *fp;   
    stu p,q; 
	head = ss(); 
    p = head;
	q = NULL;    
    switch(g)  
    {  
        case 1:  
            system("cls"); 
			int x,y; 
            printf("\n\t\t\t请输入将要删除学生的学号:");		  
            scanf("%d",&y);   
            while(p != NULL && p->num != y)
            {
            	q = p;
				p = p->next; 
				x = p->brnum;
			}
			if(p != NULL)
		    {
			    if(q == NULL)
			    {
				    head = head->next;
			    }
			    else if(p->next!=NULL)
			    {
				    q->next = p->next;
			    }
			    else
			    q->next=NULL;
		    }
		   free(p);
		   printf("\n\t\t\t删除成功 !\n");
		   a[x]--;
		   fp = fopen("student","wb");
		   if(fp == NULL)
		   {
			    printf("文件打开失败 !"); 
		   }
		   if(fwrite(head,N,1,fp) != 1)
		   {
			    printf("写入错误 !"); 
		   }
		   fclose(fp);
		   if(head != NULL)
		   {
			    p = head->next;
			    fp = fopen("student","ab");
			    if(fp == NULL)
			    {
				    printf("文件打开失败 !");
			    }
			    while(p != NULL)
			    {
				    if(fwrite(p,N,1,fp) != 1)
				    {
					    printf("写入错误 !");
				    }
				    p = p->next;
			    }
			    fclose(fp);
		   }  
           system("pause");  
           return 1; 
	   case 2:
	   	   system("cls");
	   	   head = NULL;  
           printf("\n\t\t\t删除成功 !\n");
	       fp=fopen("student","wb");
		   fclose(fp); 
           system("pause"); 
           return 1;
	   case  0: 
           return 0; 
    }
}
  
int main()            
{       
    int m,n,x,y,g;
	login();    
    stu head = NULL;    
    for(;;)  
    {  
        switch(menu_select())  
        {  
            case 1:  
                system("cls");    
                printf("\t\t输入学生的个数和数据(以回车结束):");  
                scanf("%d",&n);  
                if(n <= 0)  
                {  
                    printf("\n\t\t\t请输入正确的人数 !");  
                    Sleep(500);  
                    break;  
                }  
                else  
                {                    
                    head = input(n);  
                    break;  
                }  
            case 2:  
                system("cls"); 
				system("color 5E"); 
                output(head);  
                system("pause");  
                break;   
            case 3:  
                do  
                {  
                    x = sort(head,sort_menu());  
                }while(x != 0);  
                break;            
            case 4:  
                system("cls");  
                do  
                {  
                    y = find(head,find_menu());  
                }while(y != 0);  
                break;  
            case 5:  
                system("cls");    
                alter(head);  
                printf("\n\t\t\t修改成功 !\n");  
                system("pause");  
                break;  
            case 6:  
                system("cls"); 
				do  
                {  
                    g = del(head,del_menu());  
                }while(g != 0);    
                system("pause");  
                break;  
            case 0:
			    system("cls");	   
                printf("\t\t∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n");
				printf("\t\t\t\\(^V^)メ(^V^)/  "); 
                printf("\t谢谢使用 !\n");
				printf("\t\t∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\n");
				Sleep(2000);
				system("cls");   
                exit(0);  
        }  
    }  
}  

在这里插入图片描述在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言学生宿舍管理系统( 文件(二进制文本存储),链表版) 的相关文章

  • OpenStack安装相关问题及解决方法

    OpenStack排错总结 1 AMQP Server on controller 5672 is unreachable 解决方法 xff1a iptables I INPUT p tcp dport 5672 j ACCEPT 2 un
  • WSL2迁移方法

    WSL是Windows下的Linux子系统 xff0c 可以代替虚拟机来运行Linux系统 xff0c 占用资源少 xff0c 使用方便 xff0c 下面说一下如何对已发布子系统进行迁移 一种情况是针对同一个系统 xff0c 更换安装的位置
  • 将Word 2010的公式转换成MathType公式

    现在越来越多的人在文档中编辑公式的时候会选择MathType来编辑 xff0c 因为它包含有众多的数学符号和模板 xff0c 编辑公式时非常方便 但是也有一些人在编辑公式时没有使用MathType公式编辑器 xff0c 直接使用Word中自
  • Paraview与VTK学习笔记(五)

    上一节最后执行到 xff1a this gt GetRenderWindow gt Render 也就是执行到了vtkRenderWindow Render 了 xff0c 我们可以看到这个函数是告诉这个RenderWindow下的每一个r
  • cf1214A A. Optimal Currency Exchange

    A Optimal Currency Exchange time limit per test1 5 seconds memory limit per test512 megabytes inputstandard input output
  • HTTP 413 Request Entity Too Large(Payload Too Large)

    原因 上传文件时 xff0c 请求参数过大 xff0c 导致超出服务端限制 客户端发送的实体主体部分比服务器能够或者希望处理的要大 解决 Nginx默认最大能够上传1MB文件 xff0c 打开nginx conf在http 中 xff0c
  • 常见服务默认端口

    服务端口FTP xff08 File Transfer Protocol xff0c 文件传输协议 xff09 21端口SSH xff08 Secure Shell Protocol xff0c 安全外壳协议 xff09 22端口Telne
  • linux环境下交叉编译arm架构jpeglib

    1 官网下载jpeglib源码 下载地址 http www ijg org 选择目前最新的版本jpegsrc v9c tar gz 2 配置 configure prefix span class token operator 61 spa
  • python批处理将图片进行放大实例代码

    最近处理一些规格不一的照片 xff0c 需要修改成指定尺寸便于打印 xff0c 本篇文章主要给大伙介绍关于Python批量处理将图片进行放大的相关资料 xff0c 文中通过实例代码介绍的非常详细 xff0c 需要的伙伴们可以参考下 pyth
  • 一些必不可少的Sublime Text 2插件

    中文原文 xff1a 一些必不可少的sublime text 2插件 整理自 xff1a Essential Sublime Text 2 Plugins and Extensions 请尊重版权 xff0c 转载请注明来源 xff0c 多
  • linux系统安装Confluence

    1 使用docker安装Confluence容器 docker run d name confluence p 8090 8090 user root root cptactionhank atlassian confluence late
  • Ubuntu 20.04 安装STM32开发环境 (Ubuntu+STM32CubeMX + Vscode+Makefile+Openocd)

    小记 xff1a 最近在学习I MX6U和Zynq比较多 xff0c 又都是在linux系统下 xff0c 然后又不想丢下STM32单片机 xff0c 所以就想到了可不可以在Ubuntu操作系统中编写STM32的代码 xff0c 来替代Wi
  • rust 介绍及开发环境配置(linux+windows)

    本文以windows或linux桌面作为开发环境 注意 xff1a rust需要c的编译器 rustup是官方的 xff0c 会安装cargo包管理 xff0c 这个cargo通常会伴随rust开发的全过程 一 介绍 官网链接 xff1a
  • 打开.data文件的步骤

    老师最近给了一组 data格式的文件 xff0c 当我直接强行改为 csv或者 xls文件再使用Python打开 xff0c 发现数据在Python中只有一列 xff0c 后面无法对数据进行索引 xff0c 在搜了一些方法后 xff0c 分
  • Week2 实验 A - 化学 Gym - 270437A

    题目 甄别烷烃基的类别 假设如上图 xff0c 这个烷烃基有6个原子和5个化学键 xff0c 6个原子分别标号1 6 xff0c 然后用一对数字 a b 表示原子a和原子b间有一个化学键 这样通过5行a b可以描述一个烷烃基 输入第一行为数
  • cf1214B B. Badges

    B Badges time limit per test1 second memory limit per test512 megabytes inputstandard input outputstandard output There
  • OpenWrt无线桥接同网段主路由的方法

    OpenWrt无线桥接同网段主路由的方法 注 xff1a 有些版本的openwrt需要将DNS转发关闭 xff0c 否则无法上网
  • mybatis-sql语句莫名其妙被加上limit分页条件或未执行查询条件

    1 背景 在优化代码 xff0c 查询sql执行情况时 xff0c 突然发现写的查询条件突然发现被加了limit参数 以为遇到了bug xff0c 查了半天 结果是同事在另一业务代码里查询时用了开启了分页 xff0c 但后面业务其实没用到
  • 2020-11-03

    ios工作层设备 一层 xff08 物理层 xff09 xff1a 网卡 集线器 中继器 二层 xff08 数据链路层 xff09 xff1a 网桥 交换机 xff08 暴露真实mac地址 xff09 三层 xff08 网络层 xff09

随机推荐

  • 2020-12-08

    代码简介 xff1a python读取excel数据 xff0c 并汇总结果 xff0c 统计厂商个数 xff0c 每个厂商的版本个数 xff0c 提测型号种类 xff0c 厂商总的测试通过率 import xlrd import open
  • vue echart入门柱状图

    不知道为啥script只能这样引入才显示图片 span style background color f3f4f5 color 000000 import as echarts from 39 echarts 39 span lt temp
  • Brup盲注,测sql注入

    第一步 xff0c 先拦截接口 xff0c 发送到intrude 第二步 xff1a 对需要注入的参数值添加 第三步 xff1a 加载脚本文件 第三步 xff1a 攻击后 xff0c 查看是否有注入成功的脚本 备注 xff1a sql注入脚
  • vue处理后端的数据

    方法一 xff1a 如果后端是已类的方式传递给前端数据 xff0c 直接res data读取参数 方法二 xff1a vue请求后端返回的数据res object object 使用JSON stringify xff08 xff09 和J
  • 调用带有签名的API接口,字符串转化成JSONObject 处理返回的结果

    一 调用带有签名的API接口 xff08 sign已加密 xff09 String Url 61 34 http xxx 2000 dcs xxxxx 34 43 34 param1 61 34 43 param1 43 34 amp no
  • SIPP压测环境安装部署,以及脚本编写

    1 首先去官网下载sipp的tar包 xff0c 然后把sipp 3 4 1 tar gz上传到liunx下自建的目录或者home目录 xff08 rz 上传sz 下载 xff09 2 将sipp 3 4 1 tar gz进行解压 xff0
  • vue父组件与子组件通信

    在父组件上弹出子组件 父组价代码 lt template gt lt div gt lt div class 61 39 container 39 gt lt el button type 61 39 primary 39 icon 61
  • cf1214C C. Bad Sequence

    C Bad Sequence time limit per test1 second memory limit per test512 megabytes inputstandard input outputstandard output
  • Windows10安装Golang环境

    Windows10安装Golang环境 下载 https go dev dl 一般选择zip压缩版 xff0c 例如 xff1a go1 20 2 windows amd64 zip 配置 编辑系统变量PATH xff0c 加入解压目录下的
  • 安全测试--crlf

    知其然要知其所以然 CRLF是 回车 43 换行 xff08 r n xff09 的意思 在HTTP协议中 xff0c HTTP Header与HTTP Body是用两个CRLF分隔的 xff0c 浏览器就是根据这两个CRLF来取出HTTP
  • vue 前端下载excel的n中方法

    1 直接下载html中的表格元素 lt table id 61 34 table 34 border 61 34 1 34 gt lt tr style 61 34 height 50px 34 gt lt th style 61 34 w
  • 自动化测试平台搭建之路

    自动化测试所涉及的软件及安装包 xff08 64位系统 xff09 python 2 7 测试需要的语言 xff08 python2 7以上自带pip 包管理工具 xff09 wxPython2 8 unicode Python语言的一套优
  • 接口测试

    目前正在做接口测试 xff0c 被人博客中看到的 xff0c 总结的不错 xff0c 复制粘贴来的 xff0c 选择性借鉴 一 什么是接口测试 接口测试 xff1a 测试系统组件间接口的一种测试 主要用于检测外部系统与系统之间以及系统内部各
  • 阿里笔试_ //如果有人n分钟内,连续发帖M次,将本人封杀掉

    如果有人n分钟内 xff0c 连续发帖M次 xff0c 将本人封杀掉 算法思想 xff1a Arrylist存储点击的记录 HashMap xff08 用户 xff0c 发帖时间 xff0c 次数 xff09 HashSet xff08 封
  • 基于RF的web自动化测试

    前提 xff1a 安装python 配置好自动化测试的框架RobotFrame框架 1 web的自动化测试基于库Selenium2Library 而此库又依赖这4个关联的库 xff1a decorator xff0c selenium ro
  • 接口和抽象类

    收藏的别人的 xff0c 总结的清晰易懂 一 抽象类 1 抽象类 包含一个抽象方法的类就是抽象类 2 抽象方法 声明而未被实现的方法 xff0c 抽象方法必须使用abstract关键词字声明 1 2 3 4 5 6 public abstr
  • jmeter请求ipv6

    ipv6改造 1 在nginx服务器上重新配置nginx conf文件 xff08 配置信息如下 xff09 2 nginx服务上 xff0c ping 查看 ipv6的地址 3 在nginx服务器上能 ping6 xxxx xxx 0 x
  • jmeter 数据库压测

    第一步 xff1a 第二步 xff1a 下图若选择永远 xff0c 1分钟内达到最大并发量40 xff0c 立即循环执行 xff0c 持续执行5min 第三步 xff1a 第四步 xff1a 这里的Mysql需要和下图中的一致 测试结果 x
  • 压测服务器的搭建及测试执行

    一个项目可能存在多个环境 开发的调试环境 xff0c 测试人员的测试环境 xff0c 专门压测的压测环境 一般测试环境和压测环境由测试人员维护 xff0c 因为考虑压力测试设计到高并发 xff0c 高性能 xff0c 在不知代码质量的情况下
  • c语言学生宿舍管理系统( 文件(二进制文本存储),链表版)

    实现简单的学生宿舍基本信息管理 xff0c 宿舍的基本信息包括楼号 房间号 面积 所容纳人数 已入住人数等 xff0c 系统以文本菜单形式工作 登录时 xff1a 用户名为asd 密码任意 include lt stdio h gt inc