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 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("请输入您的选项<1~8>:");
scanf("%d",&caidan);
if(caidan>8||caidan<0) printf("对不起,您输入的选项有误,请重新输入!"); switch(caidan) case 1:create();break; case 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;jbed.bedno);}
printf("请输入学生姓名:");
scanf("%s",p2->name);
printf("请输入学生班级:");
scanf("%s",p2->stucla);
printf("请输入学生入住时间(年 月)<如2015 5>:");
scanf("%d%d",&p2->year,&p2->month);
if(p2->year<1000||p2->year>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;
scanf("%d",&DormNo);
if(p3->bed.dormno==DormNo)
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);
if(p3->bed.dormno==DormNo&&p3->bed.bedno==BedNo)
printf("已找到要修改的宿舍号、床位号!\n");
p=p3;
Sleep(1000);
if(flag)
printf("请输入修改后的宿舍号:");
scanf("%d",&Dormno);
printf("请输入修改后的床号:");
scanf("%d",&Bedno);
scanf("%d",&Isstay);
printf("请输入修改后的学生学号:");
scanf("%d",&Stuno);
while(p1!=NULL)
if(p1->stuno==Stuno){
printf("请输入修改后的学生姓名:");
scanf("%s",Name);
printf("请输入修改后的学生班级:");
scanf("%s",Stucla);
printf("请输入修改后的学生入住时间(年月)<如2015 5>:");
scanf("%d%d",&Year,&Month);
if(Year<1000||Year>9999||Month>12||Month<1) printf("对不起,输入错误,请重新输入!\n"); 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");
void del()
int DormNo,BedNo;
p1=head,p2=head->next;
while(p2!=NULL)
if(p2->bed.dormno==DormNo&&p2->bed.bedno==BedNo)
p1->next=p2->next;
free(p2);
length--;
printf("删除成功!\n");
p2=p2->next;
if(p1==NULL)
printf("找不到要删除的宿舍号、床位号!\n");
void save()
FILE
fp1;
printf("\n,没有找到该宿舍号与床号信息,按任意键返回....");
if((fp1=fopen("学生宿舍管理系统.txt","w"))==NULL)
printf("\n信息无法保存,按任意键返回....");
p1=head->next;
printf("正在保存文件...\n");
Sleep(800);
fputs(" 宿舍号 床号 有无人入住 学号 姓名 班级 入住时间(年月) :\n",fp1);
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);
fclose(fp1);
printf("文件保存成功!\n");
printf("按任意键返回...\n");
void read()
FILE *fp2;
if((fp2=fopen("学生宿舍管理系统.txt","r"))==NULL)
printf("文件无法打开!\n");
exit(0);
printf("正在读入文件...\n");
ch=fgetc(fp2);
while(!feof(fp2))
putchar(ch);
fclose(fp2);
printf("文件读入成功!\n");
void main()
while(1)
showmenu();
processmenu();
system("pause");

相关文章
|
2天前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
15 4
|
19天前
|
存储 C语言
数据结构基础详解(C语言): 栈与队列的详解附完整代码
栈是一种仅允许在一端进行插入和删除操作的线性表,常用于解决括号匹配、函数调用等问题。栈分为顺序栈和链栈,顺序栈使用数组存储,链栈基于单链表实现。栈的主要操作包括初始化、销毁、入栈、出栈等。栈的应用广泛,如表达式求值、递归等场景。栈的顺序存储结构由数组和栈顶指针构成,链栈则基于单链表的头插法实现。
122 3
|
19天前
|
存储 算法 C语言
C语言手撕实战代码_二叉排序树(二叉搜索树)_构建_删除_插入操作详解
这份二叉排序树习题集涵盖了二叉搜索树(BST)的基本操作,包括构建、查找、删除等核心功能。通过多个具体示例,如构建BST、查找节点所在层数、删除特定节点及查找小于某个关键字的所有节点等,帮助读者深入理解二叉排序树的工作原理与应用技巧。此外,还介绍了如何将一棵二叉树分解为两棵满足特定条件的BST,以及删除所有关键字小于指定值的节点等高级操作。每个题目均配有详细解释与代码实现,便于学习与实践。
|
19天前
|
存储 算法 C语言
C语言手撕实战代码_二叉树_构造二叉树_层序遍历二叉树_二叉树深度的超详细代码实现
这段代码和文本介绍了一系列二叉树相关的问题及其解决方案。其中包括根据前序和中序序列构建二叉树、通过层次遍历序列和中序序列创建二叉树、计算二叉树节点数量、叶子节点数量、度为1的节点数量、二叉树高度、特定节点子树深度、判断两棵树是否相似、将叶子节点链接成双向链表、计算算术表达式的值、判断是否为完全二叉树以及求二叉树的最大宽度等。每道题目均提供了详细的算法思路及相应的C/C++代码实现,帮助读者理解和掌握二叉树的基本操作与应用。
|
19天前
|
存储 算法 C语言
C语言手撕实战代码_循环单链表和循环双链表
本文档详细介绍了用C语言实现循环单链表和循环双链表的相关算法。包括循环单链表的建立、逆转、左移、拆分及合并等操作;以及双链表的建立、遍历、排序和循环双链表的重组。通过具体示例和代码片段,展示了每种算法的实现思路与步骤,帮助读者深入理解并掌握这些数据结构的基本操作方法。
|
19天前
|
算法 C语言 开发者
C语言手撕实战代码_单链表
本文档详细介绍了使用C语言实现单链表的各种基本操作和经典算法。内容涵盖单链表的构建、插入、查找、合并及特殊操作,如头插法和尾插法构建单链表、插入元素、查找倒数第m个节点、合并两个有序链表等。每部分均配有详细的代码示例和注释,帮助读者更好地理解和掌握单链表的编程技巧。此外,还提供了判断子链、查找公共后缀等进阶题目,适合初学者和有一定基础的开发者学习参考。
|
19天前
|
存储 算法 C语言
C语言手撕数据结构代码_顺序表_静态存储_动态存储
本文介绍了基于静态和动态存储的顺序表操作实现,涵盖创建、删除、插入、合并、求交集与差集、逆置及循环移动等常见操作。通过详细的C语言代码示例,展示了如何高效地处理顺序表数据结构的各种问题。
|
Java Android开发 C语言
03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写
 1  案例场景,通过C语言回调Java的代码,案例的最终界面: 2  案例的代码结构如下: 3 编写DataProvider的代码: package com.example.ndkcallback;   public class DataProvider {     //C调用java空方法     public void helloFromJav
1435 0
|
16天前
|
存储 Serverless C语言
【C语言基础考研向】11 gets函数与puts函数及str系列字符串操作函数
本文介绍了C语言中的`gets`和`puts`函数,`gets`用于从标准输入读取字符串直至换行符,并自动添加字符串结束标志`\0`。`puts`则用于向标准输出打印字符串并自动换行。此外,文章还详细讲解了`str`系列字符串操作函数,包括统计字符串长度的`strlen`、复制字符串的`strcpy`、比较字符串的`strcmp`以及拼接字符串的`strcat`。通过示例代码展示了这些函数的具体应用及注意事项。
|
19天前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。