❶ 数据结构,c语言编写宿舍管理系统
。。。。。。。。。。。。。。。。。。。。正在写
/*学生宿舍信息管理系统*/
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#define LEN sizeof(struct commdity)
struct student
{
char name[15];/*学生姓名*/
int sex;/*学生性别*/
};
struct commdity
{
int num;/*宿舍号码*/
int number;/*容纳人数---并没有赋予实际作用*/
int money;/*住宿费用*/
struct student Student[8];/*最多能住个8人上限*/
};
struct commdity comm[50];
void menu()/*菜单*/
{
printf("\t\t\t\t住宿管理系统:\n\n");
printf("\t\t\t\t0.退出\n");
printf("\t\t\t\t1.录入宿舍的信息\n");
printf("\t\t\t\t2.录入学生的信息\n");
printf("\t\t\t\t3.删除学生信息\n");
printf("\t\t\t\t4.查找学生信息\n");
printf("\t\t\t\t请选择:(0-7):");
}
void in()/*对宿舍信息的录入*/
{
int i,m=0;
char ch[2];
FILE *fp;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
fclose(fp);
if(m==0)
{
printf("没有任何记录");
}
else
{
system("cls");
printf("存在记录");
}
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开文件");
return;
}
for(i=0;i<m;i++)
{
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
}
printf("是否输入(y\n)");
scanf("%s",ch);
while(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
printf("宿舍编号");
scanf("%d",&comm[m].num);
for(i=0;i<m;i++)
{
if(comm[i].num==comm[m].num)
{
printf("该宿舍已经存在,按任意键继续");
getch();
fclose(fp);
return;
}
}
printf("请输入宿舍容纳人数");
scanf("%d",&comm[m].number);
printf("请输入住宿费用");
scanf("%d",&comm[m].money);
if(fwrite(&comm[m],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
else
{
printf("已经保存 \n");
m++;
}
printf("是否继续");
scanf("%s",ch);
}
fclose(fp);
printf("OK!\n");
}
void studentInput()/*分配学生到指定宿舍*/
{
FILE *fp;
int i,j,m=0,snum;
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
printf("一共有%d条记录",m);
fclose(fp);
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开文件\n");
return;
}
printf("请输入学生的宿舍编号\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
{
if(snum==comm[i].num)
{
printf("存在该宿舍!\n");
for(j=0;j<8;j++)
{
if(comm[i].Student[j].sex==NULL)
{
printf("请输入学生的名称\n");
scanf("%s",&comm[i].Student[j].name);
printf("请输入学生的性别(1-男,2-女)\n");
scanf("%d",&comm[i].Student[j].sex);
for(i=0;i<m;i++)
{
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
}
break;
}
}
fclose(fp);
return;
}
}
fclose(fp);
printf("没有找到");
return;
}
void search()/*对学生信息查找*/
{
int i,m=0;
FILE *fp;
int s;
char ch[2];
int num=0;
printf("请输入编号\n");
scanf("%d",&num);
if((fp=fopen("data","ab+"))==NULL)
{
printf("文件不能打开!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
if(m==0)
{
printf("没有任何记录存在");
return;
}
printf("一共有%d记录\n",m);
for(i=0;i<m;i++)
{
if(num==comm[i].num)
{
printf("存在该记录 是否显示\n");
scanf("%s",ch);
if(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
printf("%d宿舍: 住宿人数%d\n",comm[i].num,comm[i].number);
for(s=0;s<8;s++)
{
if(comm[i].Student[s].sex!=NULL)
{
printf("\n学生:%s 性别:%d\n",comm[i].Student[s].name,comm[i].Student[s].sex);
}
}
}
return;
}
}
printf("没有找到");
}
void deleStudent()/*删除住宿的学生信息*/
{
FILE *fp;
int snum,s,i,j,m=0;
char ch[2];
char name[20];
if((fp=fopen("data","ab+"))==NULL)
{
printf("不能打开文件!\n");
return;
}
while(!feof(fp))
{
if(fread(&comm[m],LEN,1,fp)==1)
{
m++;
}
}
fclose(fp);
if(m==0)
{
printf("没有记录\n");
return;
}
printf("请输入宿舍编号\n");
scanf("%d",&snum);
for(i=0;i<m;i++)
{
if(comm[i].num==snum)
{
printf("已经找到该宿舍!\n");
printf("请输入该学生的名称!\n");
scanf("%s",&name);
for(s=0;s<8;s++)
{
if(strcmp(comm[i].Student[s].name,name)==0)
{
printf("已将查询到该学生 (是否删除y\n)\n");
scanf("%s",ch);
if(strcmp(ch,"Y")==0 || strcmp(ch,"y")==0)
{
for(j=s;j<8;j++)
{
comm[i].Student[j]=comm[i].Student[j+1];
}
printf("删除成功!\n");
if((fp=fopen("data","wb"))==NULL)
{
printf("不能打开文件");
return;
}
for(i=0;i<m;i++)
{
if(fwrite(&comm[i],LEN,1,fp)!=1)
{
printf("不能保存");
getch();
}
}
}
fclose(fp);
return;
}
}
}
}
printf("没有找到\n");
return;
}
int main()
{
int n;
menu();
scanf("%d",&n);
while(n!=0)
{
switch(n)
{
case 1:
{
in();
break;
}
case 2:
{
studentInput();
break;
}
case 3:
{
deleStudent();
break;
}
case 4:
{
search();
break;
}
default:
{
break;
}
}
menu();
scanf("%d",&n);
}
system("pause");
}
/*程序结束*/
/*保证语法上没有任何错误 有很多程序段重复,你可以自己改改,还有那个容纳人数我直接固定了8个 不过问题不大*/
❷ c语言程序设计 宿舍管理系统
起码把需求说明给一下啊,谁知道宿舍管理系统管理什么东东。
if(person==femal)
{
AllowEnter();
}
else if(person==male)
{
if(action==donothing)
{
RefuseEnter();
}
else
{
switch(action)
{
case 和寝管大妈套近乎:
AllowEnter();
break;
case 送礼:
AllowEnter();
break;
case 塞钱:
AllowEnter();
break;
case 打晕寝管大妈:
AllowEnter();
break;
case 和寝管大妈XXOO:
AllowEnter();
break;
default:
RefuseEnter();
break;
}
}
}
else
{
- -!!
}
❸ c语言编程宿舍管理程序
#include <string.h>: y( {' S! G1 k8 I. g
#include <stdio.h>' I$ i0 L$ r8 U$ J2 I) n; G9 B
#include <stdlib.h>0 k$ q2 F4 @0 B$ \
struct student/*结构体的定义*/" O$ A7 h6 Z7 I! {' E) J
{int xh;/*学号*/
, i! N, C4 ?; D% `/ y4 achar xm[10];/*姓名*/, j4 X3 @! i* k: D! w& v
char xb[10];/*性别*/. g3 g% n/ V, C1 w+ B# C" e
char sr[20];/*生日*/$ x. E3 |; x3 I0 L2 c5 W
char xbb[20];/*所在系*/
: |; n9 U ?8 }/ C/ Zint sh;/*宿舍号*/
6 r% ^' l+ O* J! ~% Cint fy;/*费用*/# P- }5 ^5 T2 |1 z
char sz[10];/*宿舍长*/, y7 {4 {" ~- h8 V: p% k
struct student *next;/*指向下一个接点的指针*/ f' o4 x4 l( x1 U0 w! y6 y
};
2 l# X; ^( v5 tint table=0;
9 V7 U8 e: X# W0 L1 I; ?! Y. pmain()/*主函数*/; O( E) _/ B1 k8 |* v
{
* Q. s- o h1 |9 d; \8 k' h' Pstruct student *head=NULL;7 l/ g# z$ Q+ N4 z
struct student *createmain(struct student *head);/*新建函数的声明*/
7 A0 Q1 d, g$ K5 h- F& b$ H7 Ystruct student *displaymain(struct student *head); /*查询函数的声明*/
0 `( p$ I( n7 L5 O1 [. hstruct student *addmain(struct student *head); /*添加函数的声明*/
+ A) \6 F1 v q! f. r7 r, hstruct student *delmain(struct student *head); /*删除函数的声明*/ ~7 K6 F! d6 b t2 v
struct student *repairmain(struct student *head); /*修改函数的声明*/
% r8 }3 t/ y, X8 K% g3 A+ }$ L. cstruct student *loadmain(struct student *head);. U8 c. r/ Y' |. ~; T
struct student *savemain(struct student *head);
5 `& p W, T7 k2 r) S7 j- @! m9 }3 sint pd;/*实现循环的变量*/
, P6 |) c9 E. }1 i+ phead=loadmain(head);6 Z% u& Q% S$ B, S! y4 [" w
do{2 N# z) S1 y+ k4 t1 d) q$ v9 u. P
clrscr();2 G3 G3 M. K! N1 B
pd=1;
if(table > 0){
' k5 [8 _9 @# L% w5 [fp=fopen("c:\data.txt","rb") ;8 G/ h9 T! b, `( p* ?+ J3 _* C
p2=p1=head;3 b# M1 d; P& g8 Q% t5 I+ x
for(i=0;i<table;i++)- w- N0 U$ `0 o4 s0 c$ z @
{ p1=(struct student *)malloc(sizeof(struct student));4 z5 f* Z) e3 Q8 U' s5 L) D3 X
fread(p1,sizeof(struct student),1,fp) ;
6 R+ n* a/ O C# l0 lif(head == NULL) { p2=p1,head=p1 ; }9 z. I5 w9 W6 \% _' `# s1 U: W
else {p2->next=p1 ; p2=p2->next;}
4 q* q9 k; z8 k" b7 W0 Qp2->next=NULL;} }
, w r" ~& c3 O8 q! ]3 q qelse printf("没有文件供您打开,可以建立新的数据\n");/ H; g; B7 X/ v" n- f/ p
return (head);8 c& q! p0 l; q/ p4 @( r1 @1 t* n
}/ o. I. U6 f! ~$ W- j! [
❹ C语言编程宿舍管理
有邮箱吗?我发给你,可能和你的要求有些出入,我是类写的。。。。。代码太多,不让回复
❺ 用C语言做 学生宿舍管理系统
孩子 很清楚这是老师给你的作业题 ,,知识是被网络不出来的,,强烈建议看到此题的同仁不给出答案,,,,孩子 你自己试着写,,那不会,随时问 我们会解答 但你这是直接问作业 那老师还让你写干嘛???给你思路 那个合法才能进入,,只需要用个判断句就行,先输入密码 正确 则继续执行 错误 输出提示信息,,当然 这里你可以加一点花招 连续输入3次 直接退出程序或者等待1分钟才行,,哈哈 这个你可以写完不给老师说密码,然后老师输入,,哈哈 其他的的代码就是链表的知识了 课本上也都有的,,,,,好好学习啊 中国需要脚踏实地的程序员,,不要投机取巧,,
❻ 急求宿舍管理软件 C语言程序!!!!!
#include <stdio.h>
#define NULL 0
#define TYPE struct student
#define LEN sizeof(struct student)
typedef struct student{
float num;
int room_num;
char name;
struct student *next;
};
struct room{
int room_number;
int count;
}room[4]={{101,0},{102,0},{201,0},{201,0}};
/* 创建一个含 n 个节点的链表 */
TYPE * creatlink(int n)
{ int i;
TYPE *head,*pf,*pb;
head=(TYPE*)malloc(sizeof(TYPE));
head->next=NULL;
pf=head;
pb=head;
for(i=0;i<n;i++)
{
pf=(TYPE*)malloc(sizeof(TYPE));
pf->next=NULL;
printf("请输入学生的相关信息:\n");
printf("学号:"); scanf("%d,",&pf->num);
printf("姓名:"); scanf("%s,",&pf->name);
printf("房间号:"); scanf("%s,",&pf->room_num);
pf->room_num=(room[i/8].room_number);
room[i/8].count++;
pb->next=pf;
pb=pf;
}
return(head);
}
TYPE * creatlink(int n);
TYPE * deletelink(TYPE * head,int num);
TYPE * insertlink(TYPE * head,TYPE * pi);
void printlink(TYPE * head);
void destroylink( TYPE * head );
void main(void)
{
TYPE *head=NULL,*pnum=NULL;
int n=1,num;
int x;
int cord;
printf("\n 主菜单 \n");
printf(" 1 学生入住 \n");
printf(" 2 学生退房 \n");
printf(" 3 学生插房 \n");
printf(" 4 查询学生信息 \n");
printf(" 0 结束程序运行 \n");
printf("-----------------------------------------\n");
printf(" 请输入您的选择(1, 2, 3, 4,0) ");
scanf("%d",&cord);
/* 创建一个含 n 个节点的链表 */
switch(cord){
case 1:
{
printf("请输入要入住的房间:");
scanf("%d",&x);
head=creatlink(n);
return main() ;
}break;
/* 删除链表中值为 num 的节点 */
case 2:
{printf("请输入要办理退房手续学生的学号:");
scanf("%f",&num);
head=deletelink(head,num);
printlink(head);
return main();
}break;
/* 在链表中插入一个节点 */
case 3:
{
printf("迟到学生插房\n");
pnum=(TYPE *)malloc(LEN);
if(pnum==NULL)
printf("没有学生入住");
printf("请输入要插房学生的学号:");
scanf("%f",&pnum->num);
printf("请输入要插房学生的姓名:");
scanf("%s",&pnum->name);
head=insertlink(head,pnum);
return main();
}break;
case 4:{
printlink(head);
;
}break;
case 0:
{
exit(0);
}break;
}
}
/* 删除链表中值为 num 的节点 */
TYPE * deletelink(TYPE * head,int num)
{
TYPE *pf, *pb;
if(head==NULL)
{
printf("\n没有学生入住!\n");
return NULL;
}
pb=head;
while (pb->num!=num && pb->next!=NULL)
{
pf=pb;
pb=pb->next;
}
if(pb->num==num)
{
if(pb==head)
head=pb->next;
else
pf->next=pb->next;
free(pb);
printf("已经成功办理退房手续\n");
}
else
printf("没有该学生!\n");
return head;
}
/* 在链表中插入一个节点 */
TYPE * insertlink(TYPE * head,TYPE * pi)
{
TYPE *pb, *pf;
pb=head;
if(head==NULL)
{
head=pi;
pi->next=NULL;
}
else
{
while((pi->num > pb->num)&&(pb->next!=NULL))
{
pf=pb;
pb=pb->next;
}
if(pi->num <= pb->num)
{
if(head==pb)
head=pi;
else
pf->next=pi;
pi->next=pb;
}
else
{
pb->next=pi;
pi->next=NULL;
}
}
return head;
}
/* 打印链表中各节点信息 */
void printlink(TYPE * head)
{ int num;
TYPE *pf;
pf=head;
while((pf->num!=num)&&(pf->next!=NULL))
pf=pf->next;
if(pf->num==num)
{ printf("该学生的信息为:\n");
printf("学号:%f\n姓名:%s\n\nroom_num:%d\n",pf->num,pf->name,pf->room_num);
}
else
printf("没有该学生!");
}
/* 销毁链表, 释放动态分配的内存 */
void destroylink(TYPE * head)
{
TYPE *p, *q;
p = head;
while( p != NULL )
{
q = p->next;
free(p);
p = q;
}
}
❼ 用c语言编写一个宿舍管理系统(答完后给50—100分)
C语言
写个struct包含学生信息的变量
写个小菜单函数,按1为查询,2为添加,3为删除
添加写个函数,按照struct变量的顺序输入学生信息,用一个struct数组保存多个学生的信息
查询写个函数,先输入查询的内容,如学号,然后从struct数组逐个寻找
删除写个函数,先输入删除学生的学号,然后套用查找这个函数,将找到的学生struct删除
这个估计也没有人给你写,这个实际和学生成绩管理系统一样的,我给你说个思路吧,还是自己看看书写吧,不是很难的。
首先你要建立一个结构体,来表示学生宿舍的基本信息,
typedef struct
{
int num_1;
int num_2;
float s;
int have_num;
int lea_num;
}Dom;
typedef struct DNode
{
Dom dom;
DNode *next;
}DNode;
然后,你要用链表实现,在main函数里面用switch语句来转向你要实现的功能,然后各个函数就要你自己写了,实际就是链表的插入删除的一些基本操作,加加油吧
❽ 学生宿舍管理 (一)、内容: 请用C语言为宿舍管理人员编写一个宿舍管理软件.
基本上就是这样了。。。只有输出输入用了c++的cout/cin你可以自己换成printf和scanf,很简单的。。
程序在vc下运行了。
#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
struct student{
char ID[10];//学号
int BN;//床号
char RN[10];//宿舍号
char NAME[10];//姓名
student *next;
};
typedef student stu;
stu* Head;
int menu()//用户选择的菜单
{
cout<<"1:查看学生信息"<<endl;
cout<<"2按学号排序:"<<endl;
cout<<"3:查看宿舍的人员信息"<<endl;
cout<<"0:退出系统"<<endl;
cout<<"请选择"<<":";
char c;
int ch;
int flag=1;
while(flag)
{
cin>>c;
ch=(int)c-48;
if(ch>=0&&ch<=3)
flag=0;
else
cout<<"输入错误,请重新输入:";
}
return ch;
}
void sort(stu *head)//冒泡排序
{ int time=0;
char id[10];
int bn;
char rn[10];
char name[10];
stu* temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
time++;
}
temp=head;
int i,j,last;
i=time-1;while(i>0){
for(j=0;j<i;j++)
{
if(temp->BN>temp->next->BN)
{
strcpy(id,temp->ID);
strcpy(rn,temp->RN);
strcpy(name,temp->NAME);
bn=temp->BN;
strcpy(temp->ID,temp->next->ID);
strcpy(temp->RN,temp->next->RN);
strcpy(temp->NAME,temp->next->NAME);
temp->BN=temp->next->BN;
strcpy(temp->next->ID,temp->ID);
strcpy(temp->next->RN,temp->RN);
strcpy(temp->next->NAME,temp->NAME);
temp->next->BN=temp->BN;
last=j;
}
i=last;
}
}
cout<<"排序成功!!!"<<endl;
}
void List(stu *head) // 打印所有学生信息
{
stu *p;
p=head;
if(p==NULL)
cout<<"记录为空"<<endl;
else
{ cout<<"记录如下:"<<endl;
while(p!=NULL){
cout<<p->ID<<" "<<p->BN<<" "<<p->RN<<" "<<p->NAME<<endl;
p=p->next;
}
}
}
stu *InputNewRecord(stu *node)//输入新加成员的信息
{
cout<<"Input ID\n";
cin>>node->ID;
cout<<"Input BN\n";
cin>>node->BN;
cout<<"Input RN\n";
cin>>node->RN;
cout<<"Input NAME\n";
cin>>node->NAME;
return node;
}
int OkOrNot(char *name)
{
char c;
cout<<"请确认想进行此项操作(是请按y或者Y)";
cin>>c;
if(c=='y'||c=='Y')
return 1;
else
return 0;
}
void AppendNode(stu *head)/*在链表的末尾添加新的节点*/
{
stu *p,*newnode,*last;
if(!OkOrNot("Append")) return;
last=head;
p=head->next;
while(p!=NULL)
{
last=p;
p=p->next;
}
newnode=(stu*)malloc(sizeof(stu));
newnode->next=NULL;
p=InputNewRecord(newnode);
last->next=p;
}
void ShowRD(stu *head)//查找某宿舍的学生信息
{
stu *p=head;
int flag=1;
cout<<"输入你要查看的房间号:"<<endl;
char tp[10];
gets(tp);
for(;p!=NULL;p=p->next)
{
if(strcmp(p->RN,tp)==0)//找到并打印
{
cout<<p->ID<<"**"<<p->BN<<"**"<<p->RN<<"**"<<p->NAME<<endl;
flag=0;
}
}
if(flag)
}
int main()
{
stu a=;
stu *head;
head=&a;
head->next=NULL;
Head=head;
cout<<" 欢迎进入宿舍信息管理系统 "<<endl;
cout<<" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "<<endl;
begin: AppendNode( Head);
cout<<"还要输吗?"<<endl;
char k;
cin>>k;
if(k=='Y'||k=='y')
goto begin;
int f3=1;
while(f3)
{
switch(menu())
{
case 1:
List(Head);
break;
case 2:
sort(Head);
break;
case 3:
ShowRD(Head);
break;
case 0:
f3=0;
break;
}
}
return 0;
}
❾ 用C语言编写一个小宿舍管理程序
用c行么?事实上vc++完全兼容c的,设有15个人
#include<stdio.h>
#define A 15/*修改这里更改人数*/
void main()
{char name[][20];
int num[],rom[],id[];
int i,j,t;
for(i=0;i<=A;i++)
{printf("Please type on the student%d's name.",i);
for(j=0;j<=20;j++)
{name[i][j]=getchar();
if(name[i][j]='\n')break;
}
printf("Please type on the student%d's rom number.",i);
scanf("%d\n",&rom[i]);
printf("Please type on the student%d's id number.",i);
scanf("%d\n",&id[i]);
num[i]=i;
}
for(i=A-1;i>=0;i--)
{for(j=0;j<=i;j++)
{if(id[j-1]>id[j]
{t=id[j];
id[j]=id[j-1];
id[j-1]=t;
t=num[j];
num[j]=num[j-1];
num[j-1]=t;
}
}
}
for(i=0;i<=A;i++)
{t=num[i];
for(j=0;j<=20;j++)
{putchar(name[t][j]);
if(name[i][j]='\n')break;
}
printf("The room number is %d.\n",room[t]);
}
}
全部使用c中最简单的语句,相信所有c以上版本都能使用,编这东西花我20分钟,网吧现做的,没检验,可以适当修改一下。其实可以使用结构体,不过考虑到版本兼容性上还是使用了最简单的语句
❿ C语言宿舍管理系统程序
#include<stdio.h>
#include<string.h>
typedefstructDometoryMember{
charsno[16];
charname[32];
charphone[16];
charaddress[20];
}DB;
//创建一张宿舍成员信息表
intcreateList(DBa[]){
FILE*r=fopen("input.txt","r");
inti=0;
while(fscanf(r,"%s%s%s%s",a[i].sno,a[i].name,a[i].phone,a[i].address)!=EOF){
i++;
}
returni;
}
//根据学号查找某个学生,显示其基本信息
intlookup(DBa[],intn,charsno[]){
inti=0;
while(strcmp(a[i].sno,sno)!=0&&i<n){
i++;
}
if(i==n){
printf("没有此人 ");
return-1;
}
else{
printf("%s %s %s %s ",a[i].sno,a[i].name,a[i].phone,a[i].address);
returni;
}
}
//根据学号删除某个学生
intdel(DBa[],intn,charsno[]){
inti;
printf("删除学号为%s的学生: ",sno);
i=lookup(a,n,sno);
if(i!=-1){
intj;
for(j=i+1;j<n;j++){
a[j-1]=a[j];
}
returnn-1;
}
else{
return-1;
}
}
intmain(){
DBa[16];
intn=createList(a);
printf("总共%d个学生 ",n);
charsno[20];
scanf("%s",sno);
inti=lookup(a,n,sno);
n=del(a,n,sno);
printf("删除之后还剩%d个学生 ",n);
getchar();
getchar();
return0;
}