C语言宿舍管理系统程序

Python018

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

  

}

以前给别人写的,完全原创,已经在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)

}

}

}