一个简单的学生宿舍管理系统(c语言)

发布时间:2024年01月09日

该程序是一个学生宿舍管理系统,具有以下功能:

  1. 添加学生信息:可以输入学号、姓名、性别、宿舍、联系方式和家庭住址,将学生信息添加到系统中。

  2. 查询学生信息:可以根据学号或姓名查询学生信息,并将查询结果打印出来。

  3. 删除指定学生的记录:可以根据学号或姓名删除指定学生的记录。

  4. 修改指定学生的记录:可以根据学号修改指定学生的姓名、性别、宿舍、联系方式和家庭住址。

  5. 打印学生信息:将系统中所有学生的信息打印出来。

  6. 保存退出:将学生信息保存并退出程序。

#include<stdio.h>
#include <conio.h>
#include<string.h>
#include <stdlib.h>
#include<windows.h>
typedef int datatype;
typedef struct s1                         //为struct s1取一个别名为STUDENT
{
    char       no[15] ;                      //学号
    char       name[15] ;                   //学生姓名
    char      score[20];                   //联系方式
    char      sushe[15];                   //宿舍 
    char      xingbei[10];                 //学生性别 
    char       hom[20] ;                 //学生家庭住址 
    struct s1  *next ;                    //指向后继结点的指针
    int          n;                       //添加学生信息的数量 
}changfa,*linklist;
 
void InputData(linklist &H){            //添加学生信息
    linklist r,p;
    r=H;
    p=(linklist)malloc(sizeof(changfa));
    int i;
    printf("输入学号:");
     scanf("%s",p->no);
    printf("输入姓名:");
     scanf("%s",p->name);
    printf("输入性别(男或女):");
     scanf("%s",p->xingbei);
    printf("输入宿舍:");
     scanf("%s",p->sushe);
    printf("输入联系方式:");
     scanf("%s",p->score);
    printf("输入家庭住址:");
     scanf("%s",p->hom);
    p->next = r->next;
    r->next = p;
    printf("添加成功\n");
    getch();
}
void PrintMenu( )
{
    printf("\n\n");
    printf("***********************************************\n");
    printf("*                学生宿舍管理系统             *\n");
    printf("*   1. 添加学生信息                           *\n");
    printf("*   2. 查询学生信息(学号或姓名)             *\n");
    printf("*   3. 删除指定学生的记录                     *\n");
    printf("*   4. 修改指定学生的记录                     *\n");
    printf("*   5. 打印学生信息                           *\n");
    printf("*   6. 保存退出                               *\n");
    printf("***********************************************\n");
    printf("\n输入要进行的操作(1-6):");
}
int MenuSelect( )
{
    int key;
    PrintMenu();
    scanf("%d",&key);
    return(key);
}
 
void find(linklist H)
{
    linklist p;
    char no[15]; //char name[15];                   //定义一个字符数组no,name和str
    int choose;
    int i;
    p=H;
    printf("要查询的方式(1是学号,0是姓名):");  //查询方式(姓名或学号)
    scanf("%d",&choose);
    if(choose==1)
    { printf("输入要查询学生的学号:");
      scanf("%s",no);                          //用输入语句输入一个学号存储到no中
    }
    else if(choose==0)
    {  printf("输入要查询学生的姓名:");
       scanf("%s",no);                      //用输入语句输入一个姓名存储到name中
    }
    while(p!=NULL)
    {
        if (strcmp(p->no,no)==0||strcmp(p->name,no)==0)              //找到了要查询的数据
        {
            break;
                 
        }else{
            p=p->next;
        }
    }
    if(p!=NULL){
        printf("|----------------------------TUTE-------------------------|\n");
        printf("|    学号  |     姓名   | 性别| 宿舍 | 联系方式  |家庭住址| \n");
        printf("|%s|    %s    |  %s | %s  |%s|  %s  |\n",p->no,p->name,p->xingbei,p->sushe,p->score,p->hom);
        printf("|----------------------------TUTE-------------------------|\n"); 
 
    }else{
        printf("没有此人");
    }
    getch();
}
void Delete( linklist &H)
{
    linklist q,p;
    p = H;
    q = H->next;
    char no[15]; //char name[15];                   //定义一个整数no(用来存储输入的学号)
    int choose;
    int flg=0;
    printf("要删除的方式(1是学号,0是姓名):");  //删除方式(姓名或学号)
    scanf("%d",&choose);
    if(choose!=0)
    { printf("输入要删除学生的学号:");
      scanf("%s",no);                          //用输入语句输入一个学号存储到no中
    }
    else
    {  printf("输入要删除学生的姓名:");
       scanf("%s",no);                      //用输入语句输入一个姓名存储到name中
    }
    while(q!=NULL)
    {
        if (strcmp(q->no,no)==0||strcmp(q->name,no)==0)//找到了要查询的数据
        {
            flg = 1;
            p->next = q->next;
            free(q);
            printf("删除成功!\n");
            break;
        }else{
            p = q;
            q = q->next;
        }
    }
    if(flg==0) printf("未找到想删除的记录!\n");
    getch();
}
void change(linklist &H )   
{
    linklist p;                                  
    char no[15];  //定义一个字符数组no
    int i;
    p=H;
    printf("输入要修改学生的学号:");
    scanf("%s",no);  //用输入语句输入一个学号存储到no中
    
    while(p!=NULL)
    {                   
        if (strcmp(p->no,no)==0) //找到了要查询的数据
        {
            break;
                 
        }else{
            p=p->next;
        }
    }
    if(p!=NULL){
        printf("修改后姓名:");
        scanf("%s",p->name);
 
        printf("修改后性别:");
        scanf("%s",p->xingbei);
 
        printf("修改后宿舍:");
        scanf("%s",p->sushe);
 
        printf("修改后联系方式:");
        scanf("%s",p->score);
 
        printf("修改后地址:");
        scanf("%s",p->hom);
 
        printf("修该成功!\n");
    }else{
        printf("未找到需修改的记录!\n");
    }
    getch();
}
void print(linklist H)
{        
    linklist p;
    p=H->next;
    printf("\n");
    printf("|----------------------------TUTE-------------------------|\n");
    printf("|    学号  |     姓名   | 性别| 宿舍 | 联系方式  |家庭住址|\n");
    printf("|----------|------------|-----|------|-----------|--------|\n");  
    while(p!=NULL)
    {
        printf("|%s|    %s    |  %s |  %s |%s|  %s  |\n",p->no,
                   p->name,p->xingbei,p->sushe,p->score,p->hom);
        p=p->next;
    }
    printf("|----------------------------TUTE-------------------------|\n");
    getch();
}
 
 
int main()
{
    linklist H=NULL;
    H=(linklist)malloc(sizeof(changfa));//生成新结点
    H->next = NULL;
    int key;
    system("color 0A");                  //改变执行窗口的背景色和字体色字体为绿色
    while(1)                             //死循环
    {
        system("cls");
        key=MenuSelect();
        switch(key)
        {
            case 1:
                InputData(H);                //增加
                break;
            case 2:
                find(H);                  //查询学生信息(学号或姓名)
                break;
            case 3:
                Delete(H);                 //删除一个指定学生的记录数据
                break;
            case 4:                        //修改一个指定学生的记录数据
                change(H);
                break;
            case 5:                        //打印所有记录数据
                print(H);
                break;
            case 6:                        //退出程序
                exit(0);
        }
    }
}

文章来源:https://blog.csdn.net/zeyeqianli/article/details/135477569
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。