刘赤 1-25

/*
实现学生管理系统
   学生信息:
        学号
        姓名
        班级
        电话号
    功能:
        增加 删除 修改 查看
*/

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>

#define N 32

typedef struct
{
int id;
char name[N];
int clas;
long int tel;
} STU_t;

static void stu_show(STU_t *p, int n);
static int stu_del(STU_t **p, int *n, int id);
static int stu_add(STU_t **p, int *n, int *id, char *name, int *class, long int *tel );
static int stu_change(STU_t **p,int *n, int id, long int *tel);

enum {ADD=1, DEL=2, SHW=3, CHG=4, QUT=9};

int main(void)
{
    STU_t *p = NULL;
    int n = 0;
    int choose;
    int num;
int id=123;
char na[10]="klo";
int class=666;
long int tel=134679;


    while (1) {
        printf("1.增加一个新学生信息 2.删除一个新学生信息 3.查看当前所有学生信息 4.通过学号查找学生,修改其信息 9.退出\n"); 
printf("学号------姓名-----班级------电话\n");
        printf("请选择:");
        scanf("%d", &choose);

 
        if (choose == QUT)
            break;
    
        switch (choose)
{
            case ADD:
                printf("请输入要增加的学生信息:"); 
                scanf("%d %s %d %ld", &id, na, &class, &tel);
                stu_add(&p, &n, &id, na, &class, &tel );
                break;
            case DEL:
                printf("请输入要删除的学生学号:"); 
                scanf("%d", &id);
                stu_del(&p, &n, id);
                break;
            case CHG:
                printf("请输入学生学号和要修改的电话号:");
scanf("%d %ld",&id, &tel);
stu_change(&p, &n, id, &tel);
                break;
case SHW :
stu_show(p, n);
break;
            default:
                break;
        }
    }   

    return 0;
}


// 3
static int stu_add(STU_t **p, int *n, int *id, char *name, int *class, long int *tel ) //学号 姓名 班级   电话号
{
char *na; //数组名不能被赋值

    if (*p == NULL)
        *n = 0;
    if (*n == 0)
        *p = NULL;

    *p = realloc(*p, (*n+1) * sizeof(STU_t));
    if (NULL == *p)
        return -1;

na=(*p)[*n].name; //指针变量 na指向数

    (*p)[*n].id = *id;
// *na=*name; //待处理
memmove(na, name, 32);
(*p)[*n].clas=*class;
(*p)[*n].tel=*tel;

    (*n) ++;

    return 0;
}

/****** 信息删除******/
 
static int stu_del(STU_t **p, int *n, int id)
{
    // find
    int i, j;

    for (i = 0; i < (*n); i++) {
        if ((*p)[i].id == id)
            break;
    }
    if (i == *n) {
        // not found
        return -1;
    }
    
    memmove((*p)+i, (*p)+i+1, (*n-i-1)*sizeof(STU_t));
    (*n) --;
    *p = realloc(*p, *n * sizeof(STU_t));
    if (NULL == *p)
        return -1;
    
    return 0;
}

/***** 信息修改 ***/
static int stu_change(STU_t **p,int *n, int id, long int *tel)
{
    int i, j;

    for (i = 0; i < (*n); i++)
{
        if ((*p)[i].id == id)
            break;
    }

    if (i == *n)
{
        printf("not found\n");// not found
        return -1;
    }

printf("%ld %ld\n", (*p)[i].tel, *tel);

(*p)[i].tel=*tel;

printf("%ld %ld\n", (*p)[i].tel, *tel);

return 0;
}

static void stu_show(STU_t *p, int n)
{
    int i;

    for (i = 0; i < n; i++) {
        printf("%d %s %d %ld\n", p[i].id, p[i].name, p[i].clas, p[i].tel);   
    }
    printf("\n");
}





猜你喜欢

转载自www.cnblogs.com/LC18330852893/p/10321450.html