C语言宿舍管理系统程序

C语言宿舍管理系统程序,第1张

#include<stdio.h>

#include<string.h>

typedef struct DometoryMember{

    char sno[16]

    char name[32]

    char phone[16]

    char address[20]

}DB

  

//创建一张宿舍成员信息表 

int createList(DB a[]){

    FILE *r = fopen("input.txt","r")

    int i=0

    while(fscanf(r,"%s%s%s%s",a[i].sno,a[i].name,a[i].phone,a[i].address) != EOF){

        i++

    }

    return i

}

//根据学号查找某个学生,显示其基本信息 

int lookup(DB a[],int n,char sno[]){

    int i=0

    while(strcmp(a[i].sno,sno) != 0 && i<n){

        i++

    }

    if(i==n){

        printf("没有此人\n")

        return -1

    }

    else{

        printf("%s\t%s\t%s\t%s\n",a[i].sno,a[i].name,a[i].phone,a[i].address)

        return i

    }

}

//根据学号删除某个学生 

int del(DB a[],int n,char sno[]){

    int i

    printf("删除学号为%s的学生:\n",sno)

    i = lookup(a,n,sno)

      

    if(i != -1){

        int j

        for(j=i+1j<nj++){

            a[j-1] = a[j]

        }

        return n-1

    }

    else{

        return -1

    }

}

int main(){

    DB a[16]

    int n = createList(a)

    printf("总共%d个学生\n",n)

    char sno[20]

    scanf("%s",sno)

    int i = lookup(a,n,sno)

    n = del(a,n,sno)

    printf("删除之后还剩%d个学生\n",n) 

    getchar()

    getchar()

    return 0

  

}

。。。。。。。。。。。。。。。。。。。。正在写

/*学生宿舍信息管理系统*/

#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=0i<mi++)

{

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=0i<mi++)

{

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=0i<mi++)

{

if(snum==comm[i].num)

{

printf("存在该宿舍!\n")

for(j=0j<8j++)

{

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=0i<mi++)

{

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=0i<mi++)

{

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=0s<8s++)

{

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=0i<mi++)

{

if(comm[i].num==snum)

{

printf("已经找到该宿舍!\n")

printf("请输入该学生的名称!\n")

scanf("%s",&name)

for(s=0s<8s++)

{

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=sj<8j++)

{

comm[i].Student[j]=comm[i].Student[j+1]

}

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

if((fp=fopen("data","wb"))==NULL)

{

printf("不能打开文件")

return

}

for(i=0i<mi++)

{

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个 不过问题不大*/

以前给别人写的,完全原创,已经在VC上编译运行通过:

#include <conio.h>

#include<stdio.h>

#include<stdlib.h>

#include<ctype.h>

#include<string.h>

typedef struct /*定义结构体数组*/

{

char num[10]/*学号*/

char name[20]/*姓名*/

int roomID/*房号*/

}Student

Student stu[80]/*结构体数组变量*/

int menu_select() /*菜单函数*/

{

char c

do{

system("cls")/*运行前清屏*/

printf("\t\t************宿舍管理查询系统************\n")/*菜单选择*/

printf("\t\t | 1. 输入信息 |\n")

printf("\t\t | 2. 显示所有信息 |\n")

printf("\t\t | 3. 排序 |\n")

printf("\t\t | 4. 查询信息 |\n")

printf("\t\t | 0. Quit |\n")

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

printf("\t\t\t请输入处理种类(0-4):")

c=getchar()/*读入选择*/

}while(c<'0'||c>'4')

return(c-'0')/*返回选择*/

}

int Input(Student stud[],int n) /*输入若干条记录*/

{int i=0

char sign,x[10]/*x[10]为清除多余的数据所用*/

while(sign!='n'&&sign!='N') /*判断*/

{

printf("\t\t\t学号:")/*交互输入*/

scanf("\t\t\t%s",stud[n+i].num)

printf("\t\t\t姓名:")

scanf("\t\t\t%s",stud[n+i].name)

printf("\t\t\t房号:")

scanf("\t\t\t%d",&stud[n+i].roomID)

gets(x)/*清除多余的输入*/

printf("\t\t\t还需要继续输入吗?(Y/N)")

scanf("\t\t\t%c",&sign)/*输入判断*/

i++

}

return(n+i)

}

void Display(Student stud[],int n) /*显示所有记录*/

{

int i

printf("\t\t\t-----------------------------------\n")/*格式头*/

printf("\t\t\t学号\t\t姓名\t\t房号\n")

printf("\t\t\t-----------------------------------\n")

for(i=1i<n+1i++) /*循环输入*/

{

printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].roomID)

if(i>1&&i%10==0) /*每十个暂停*/

{

printf("\t\t\t-----------------------------------\n")/*格式*/

printf("\t\t\t")

system("pause")

printf("\t\t\t-----------------------------------\n")

}

}

printf("\t\t\t")

system("pause")

}

void Sort_by_num(Student stud[],int n) /*按学号排序*/

{ int i,j,*p,*q,s

char t[10]

for(i=0i<n-1i++) /*冒泡法排序*/

for(j=0j<n-1-ij++)

if(strcmp(stud[j].num,stud[j+1].num)>0)

{strcpy(t,stud[j+1].num)

strcpy(stud[j+1].num,stud[j].num)

strcpy(stud[j].num,t)

strcpy(t,stud[j+1].name)

strcpy(stud[j+1].name,stud[j].name)

strcpy(stud[j].name,t)

p=&stud[j+1].roomID

q=&stud[j].roomID

s=*p

*p=*q

*q=s

}

Display(stu,n)

}

void Sort_by_name(Student stud[],int n) /*按姓名排序*/

{ int i,j,*p,*q,s

char t[10]

for(i=0i<n-1i++) /*冒泡法排序*/

for(j=0j<n-1-ij++)

if(strcmp(stud[j].name,stud[j+1].name)>0)

{strcpy(t,stud[j+1].num)

strcpy(stud[j+1].num,stud[j].num)

strcpy(stud[j].num,t)

strcpy(t,stud[j+1].name)

strcpy(stud[j+1].name,stud[j].name)

strcpy(stud[j].name,t)

p=&stud[j+1].roomID

q=&stud[j].roomID

s=*p

*p=*q

*q=s

}

Display(stu,n)

}

void Sort_by_room(Student stud[],int n) /*按房号排序*/

{ int i,j,*p,*q,s

char t[10]

for(i=0i<n-1i++) /*冒泡法排序*/

for(j=0j<n-1-ij++)

if(stud[j].roomID>stud[j+1].roomID)

{strcpy(t,stud[j+1].num)

strcpy(stud[j+1].num,stud[j].num)

strcpy(stud[j].num,t)

strcpy(t,stud[j+1].name)

strcpy(stud[j+1].name,stud[j].name)

strcpy(stud[j].name,t)

p=&stud[j+1].roomID

q=&stud[j].roomID

s=*p

*p=*q

*q=s

}

Display(stu,n)

}

void Query_a_record_by_name(Student stud[],int n) /*查找并显示一个记录*/

{

char s[20]

int i=0

printf("\t\t\t请输入姓名:")/*交互式输入*/

scanf("\t\t\t%s",s)

while(strcmp(stud[i].name,s)!=0&&i<n) i++/*查找判断*/

if(i==n)

{ printf("\t\t\t没有找到相关信息!\n")/*输入失败信息*/

return

}

printf("\t\t\this(her) number:%s\n",stud[i].name)/*输出该学生信息*/

printf("\t\t\this(her) number:%s\n",stud[i].num)

printf("\t\t\this(her) roomID:%d\n",stud[i].roomID)

}

void Query_a_record_by_num(Student stud[],int n) /*查找并显示一个记录*/

{

char s[20]

int i=0

printf("\t\t\t请输入学号:")/*交互式输入*/

scanf("\t\t\t%s",s)

while(strcmp(stud[i].num,s)!=0&&i<n) i++/*查找判断*/

if(i==n)

{ printf("\t\t\t没有找到相关信息!\n")/*输入失败信息*/

return

}

printf("\t\t\this(her) number:%s\n",stud[i].name)/*输出该学生信息*/

printf("\t\t\this(her) number:%s\n",stud[i].num)

printf("\t\t\this(her) roomID:%d\n",stud[i].roomID)

}

void Query_a_record_by_room(Student stud[],int n) /*查找并显示一个记录*/

{

int s

int i=0

printf("\t\t\t请输入房号:")/*交互式输入*/

scanf("\t\t\t%d",&s)

while(stud[i].roomID==s) i++/*查找判断*/

if(i==n)

{ printf("\t\t\t没有找到相关信息!\n")/*输入失败信息*/

return

}

printf("\t\t\this(her) number:%s\n",stud[i].name)/*输出该学生信息*/

printf("\t\t\this(her) number:%s\n",stud[i].num)

printf("\t\t\this(her) roomID:%d\n",stud[i].roomID)

}

void WritetoText(Student stud[],int n) /*将所有记录写入文件*/

{

int i=0

FILE *fp/*定义文件指针*/

if((fp=fopen("stu.txt","w"))==NULL) /*打开文件*/

{

printf("\t\t\t文件打开失败!!\n")

system("pause")

return

}

fprintf(fp,"%d\n",n)/*循环写入数据*/

while(i<n)

{

fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].roomID)

i++

}

fclose(fp)/*关闭文件*/

printf("文件保存完毕!\n")/*返回成功信息*/

}

void main() /*主函数*/

{

int n=0,i

for()

{

switch(menu_select()) /*选择判断*/

{

case 1:

printf("\t\t\t输入相关情报\n")/*输入若干条记录*/

n=Input(stu,n)

break

case 2:

printf("\t\t\宿舍状况一览\n")/*显示所有记录*/

Display(stu,n)

break

case 3:

printf("\t\t\t请输入按什么进行排序(1.姓名、2.学号、3.房号)\n\t\t\t")

scanf("%d",&i)

while(i)

{

if(i<1||i>3)

{

printf("错误输入!!\n")

printf("\t\t\t请输入按什么进行排序(1.姓名、2.学号、3.房号)\n\t\t\t")

continue

}

switch(i)

{

case 1:

Sort_by_name(stu,n)

break

case 2:

Sort_by_num(stu,n)

break

case 3:

Sort_by_room(stu,n)

break

}

break

}

printf("\t\t\t排序完毕!\n")

printf("\t\t\t")

WritetoText(stu,n)

system("pause")

break

case 4:

printf("\t\t\t请输入按什么进行查询(1.姓名、2.学号、3.房号)\n\t\t\t")

scanf("%d",&i)

while(i)

{

if(i<1||i>3)

{

printf("错误输入!!\n")

printf("\t\t\t请输入按什么进行查询(1.姓名、2.学号、3.房号)\n\t\t\t")

continue

}

switch(i)

{

case 1:

Query_a_record_by_name(stu,n)

break

case 2:

Query_a_record_by_num(stu,n)

break

case 3:

Query_a_record_by_room(stu,n)

break

}

break

}

printf("\t\t\t")

system("pause")

break

case 0:

printf("\t\t\t欢迎使用!!\n")/*结束程序*/

printf("\t\t\t")

system("pause")

exit(0)

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8175245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存