程序与技术分享: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月前
|
存储 搜索推荐 C语言
深入C语言指针,使代码更加灵活(二)
深入C语言指针,使代码更加灵活(二)
|
2月前
|
存储 程序员 编译器
深入C语言指针,使代码更加灵活(一)
深入C语言指针,使代码更加灵活(一)
|
2月前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
|
2月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
|
2月前
|
C语言
C语言练习题代码
C语言练习题代码
|
2月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
37 3
|
8天前
|
存储 缓存 算法
【C语言】内存管理函数详细讲解
在C语言编程中,内存管理是至关重要的。动态内存分配函数允许程序在运行时请求和释放内存,这对于处理不确定大小的数据结构至关重要。以下是C语言内存管理函数的详细讲解,包括每个函数的功能、标准格式、示例代码、代码解释及其输出。
33 6
|
26天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
31 6
|
2月前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
44 10
|
1月前
|
存储 算法 程序员
C语言:库函数
C语言的库函数是预定义的函数,用于执行常见的编程任务,如输入输出、字符串处理、数学运算等。使用库函数可以简化编程工作,提高开发效率。C标准库提供了丰富的函数,满足各种需求。