程序与技术分享:C语言学生宿舍管理系统代码(可运行)

简介: 程序与技术分享:C语言学生宿舍管理系统代码(可运行)

#include


#include


#include


#include


#include


#include


#include


#define len sizeof(struct dorminfo)


#define Max 100


int a【Max】={0};


int length;


void showmenu();


void processmenu();


void create();


void display();


void disbed();


void modify();


void del();


void save();


void read();


typedef struct


{


int dormno;


int bedno;


int isstay;


}bedinfo;


struct dorminfo


{


bedinfo bed;


int stuno;


char name【20】;


char //代码效果参考:http://www.jhylw.com.cn/230639543.html

stucla【20】;

int year;


int month;


struct dorminfo next;


};


struct dorminfo head=NULL,p1,p2,p3;


void showmenu()


{


printf("\n\n\n\t\t 欢迎进入学生宿舍管理系统\n");


printf("\t\t**\n");


printf("\t\t1.输入床位信息\n");


printf("\t\t2.根据学号,显示学生住宿信息\n");


printf("\t\t3.根据宿舍号,显示住宿信息\n");


printf("\t\t4.根据宿舍号、床位号,修改住宿信息\n");


printf("\t\t5.根据宿舍号、床位号,删除住宿信息\n");


printf("\t\t6.保存学生宿舍信息\n");


printf("\t\t7.从文件读入学生信息\n");


printf("\t\t8.退出 \n");


printf("\t\t**\n") ;


}


void processmenu()


{


int caidan;


printf("请输入您的选项:");


scanf("%d",&caidan);


if(caidan>8||caidan<0)


{


printf("对不起,您输入的选项有误,请重新输入!");


scanf("%d",&caidan);


}


switch(caidan)


{


case 1:create();break;


case //代码效果参考:http://www.jhylw.com.cn/272122941.html

2:display();break;

case 3:disbed();break;


case 4:modify();break;


case 5:del();break;


case 6:save();break;


case 7:read();break;


case 8:exit(0);


}


}


void create()


{


int j;


char ch;


length=0;


p1=(struct dorminfo )malloc(len);


if(head==NULL)


head=p1;


printf("开始输入床位信息....\n");


Sleep(500);


do


{


p2=(struct dorminfo )malloc(len);


printf("请输入宿舍号:");


scanf("%d",&p2->bed.dormno);


printf("请输入床号:");


scanf("%d",&p2->bed.bedno);


printf("是否有人居住(1/0):");


scanf("%d",&p2->bed.isstay);


printf("请输入学生学号:");


scanf("%d",&p2->stuno);


a【length】=p2->stuno;


if(length>1)


{


for(j=1;j

{


if(a【length】==a【j】)


{


printf("该床位号已存在,请重新输入:");


scanf("%d",&p2->bed.bedno);}


}


}


printf("请输入学生姓名:");


scanf("%s",p2->name);


printf("请输入学生班级:");


scanf("%s",p2->stucla);


printf("请输入学生入住时间(年 月):");


scanf("%d%d",&p2->year,&p2->month);


if(p2->yearyear>9999||p2->month>12||p2->month<1)


{


printf("对不起,输入错误,请重新输入!\n");


scanf("%d%d\n",&p2->year,&p2->month);


}


length++;


p1->next=p2;


p2->next=NULL;


p1=p1->next;


printf("第%d个住宿信息创建成功!\n",length);


Sleep(300);


fflush(stdin);


printf("是否继续添加住宿信息?");


ch=getchar();


} while(ch=='y'||ch=='Y');


}


void display()


{


int flag=0,No;


p3=head->next;


printf("请输入学号:");


scanf("%d",&No);


while(p3!=NULL)


{


if(p3->stuno==No)


{


printf("\n住宿信息如下:");


printf("\n宿舍号:%d",p3->bed.dormno);


printf("\n床位号:%d",p3->bed.bedno);


printf("\n是否有人入住:%d",p3->bed.isstay);


printf("\n学生学号:%d",p3->stuno);


printf("\n学生姓名:%s",p3->name);


printf("\n学生班级:%s",p3->stucla);


printf("\n入住时间为:%d年%d月\n",p3->year,p3->month);


flag=1;


}


p3=p3->next;


}


if(!flag)


printf("没有找到该学生住宿信息!\n");


}


void disbed()


{


int flag=0,DormNo;


p3=head->next;


printf("请输入宿舍号:");


scanf("%d",&DormNo);


while(p3!=NULL)


{


if(p3->bed.dormno==DormNo)


{


printf("\n住宿信息如下:");


printf("\n宿舍号:%d",p3->bed.dormno);


printf("\n床位号:%d",p3->bed.bedno);


printf("\n是否有人入住:%d",p3->bed.isstay);


printf("\n学生学号:%d",p3->stuno);


printf("\n学生姓名:%s",p3->name);


printf("\n学生班级:%s",p3->stucla);


printf("\n入住时间为:%d年%d月\n",p3->year,p3->month);


flag=1;


}


p3=p3->next;


}


if(!flag)


printf("没有找到该学生住宿信息!\n");


}


void modify()


{


struct dorminfo p;


int DormNo,BedNo,flag;


int Dormno,Bedno,Isstay,Stuno,Year,Month;


char Name【20】,Stucla【20】;


if(head==NULL){


printf("住宿信息为空,不能修改,按任意键返回...\n");


getch();


system("cls");


return ;


}


p1=p3=head;


printf("请输入宿舍号、床位号:");


scanf("%d %d",&DormNo,&BedNo);


while(p3!=NULL)


{


if(p3->bed.dormno==DormNo&&p3->bed.bedno==BedNo)


{


printf("已找到要修改的宿舍号、床位号!\n");


flag=1;


p=p3;


Sleep(1000);


}


p3=p3->next;


}


if(flag)


{


printf("请输入修改后的宿舍号:");


scanf("%d",&Dormno);


printf("请输入修改后的床号:");


scanf("%d",&Bedno);


printf("是否有人居住(1/0):");


scanf("%d",&Isstay);


printf("请输入修改后的学生学号:");


scanf("%d",&Stuno);


while(p1!=NULL)


{


if(p1->stuno==Stuno){


printf("该床位号已存在,请重新输入:");


scanf("%d",&Stuno);


}


p1=p1->next;


}


printf("请输入修改后的学生姓名:");


scanf("%s",Name);


printf("请输入修改后的学生班级:");


scanf("%s",Stucla);


printf("请输入修改后的学生入住时间(年月):");


scanf("%d%d",&Year,&Month);


if(Year9999||Month>12||Month<1)


{


printf("对不起,输入错误,请重新输入!\n");


scanf("%d%d",&Year,&Month);


}


p->bed.dormno=Dormno;


p->bed.bedno=Bedno;


p->bed.isstay=Isstay;


p->stuno=Stuno;


strcpy(p->name,Name);


strcpy(p->stucla,Stucla);


p->year=Year;


p->month=Month;


printf("修改成功,信息如下:\n");


printf("-宿舍号--床号--有无人入住--学号--姓名--班级--入住时间(年月)");


printf("\n");


printf("%6d%5d%8d%9d%7s%8s%9d%2d\n",p->bed.dormno,p->bed.bedno,p->bed.isstay,p->stuno,p->name,p->stucla,p->year,p->month);


}


else


{


printf("没有找到该宿舍号与床号信息,按任意键返回...\n");


getch();


system("cls");


return ;


}


}


void del()


{


int DormNo,BedNo;


p1=head,p2=head->next;


printf("请输入宿舍号、床位号:");


scanf("%d %d",&DormNo,&BedNo);


while(p2!=NULL)


{


if(p2->bed.dormno==DormNo&&p2->bed.bedno==BedNo)


{


p1->next=p2->next;


free(p2);


length--;


printf("删除成功!\n");


system("cls");


return ;


}


p2=p2->next;


p1=p1->next;


}


if(p1==NULL)


printf("找不到要删除的宿舍号、床位号!\n");


}


void save()


{


FILE fp1;


if(head==NULL)


{


printf("\n,没有找到该宿舍号与床号信息,按任意键返回....");


getch();


system("cls");


return ;


}


if((fp1=fopen("学生宿舍管理系统.txt","w"))==NULL)


{


printf("\n信息无法保存,按任意键返回....");


getch();


system("cls");


return ;


}


p1=head->next;


printf("正在保存文件...\n");


Sleep(800);


fputs(" 宿舍号 床号 有无人入住 学号 姓名 班级 入住时间(年月) :\n",fp1);


while(p1!=NULL)


{


fprintf(fp1,"%6d%5d%8d%7d%6s%4s%7d%2d\n",p1->bed.dormno,p1->bed.bedno,p1->bed.isstay,p1->stuno,p1->name,p1->stucla,p1->year,p1->month);


p1=p1->next;


}


fclose(fp1);


printf("文件保存成功!\n");


printf("按任意键返回...\n");


getch();


system("cls");


return ;


}


void read()


{


FILE *fp2;


char ch;


if((fp2=fopen("学生宿舍管理系统.txt","r"))==NULL)


{


printf("文件无法打开!\n");


exit(0);


}


printf("正在读入文件...\n");


Sleep(1000);


ch=fgetc(fp2);


while(!feof(fp2))


{


putchar(ch);


ch=fgetc(fp2);


}


printf("\n");


fclose(fp2);


printf("文件读入成功!\n");


}


void main()


{


while(1)


{


showmenu();


processmenu();


system("pause");


system("cls");


}


}

相关文章
|
2月前
|
IDE 编译器 开发工具
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
在本文中,我们系统地讲解了常见的 `#pragma` 指令,包括其基本用法、编译器支持情况、示例代码以及与传统方法的对比。`#pragma` 指令是一个强大的工具,可以帮助开发者精细控制编译器的行为,优化代码性能,避免错误,并确保跨平台兼容性。然而,使用这些指令时需要特别注意编译器的支持情况,因为并非所有的 `#pragma` 指令都能在所有编译器中得到支持。
143 41
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
|
2月前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
72 12
|
2月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
3月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
94 5
|
3月前
|
C语言
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性。本文探讨了C语言中的错误类型(如语法错误、运行时错误)、基本处理方法(如返回值、全局变量、自定义异常处理)、常见策略(如检查返回值、设置标志位、记录错误信息)及错误处理函数(如perror、strerror)。强调了不忽略错误、保持处理一致性及避免过度处理的重要性,并通过文件操作和网络编程实例展示了错误处理的应用。
98 4
|
3月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
72 1
|
3月前
|
人工智能 安全 算法
基于C语言的嵌入式系统开发,涵盖嵌入式系统概述、C语言的优势、开发流程、关键技术、应用实例及面临的挑战与未来趋势。
本文深入探讨了基于C语言的嵌入式系统开发,涵盖嵌入式系统概述、C语言的优势、开发流程、关键技术、应用实例及面临的挑战与未来趋势。C语言因其高效、可移植、灵活及成熟度高等特点,在嵌入式系统开发中占据重要地位。文章还介绍了从系统需求分析到部署维护的完整开发流程,以及中断处理、内存管理等关键技术,并展望了嵌入式系统在物联网和人工智能领域的未来发展。
139 1
|
3月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
92 1
|
3月前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
77 2
|
30天前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
57 23

热门文章

最新文章