c语管理系统

/***管理系统**
  按顺序做:
  1.菜单
  2.按键处理
  3.逻辑处理*/


```c
#include  <stdio.h>
#include  <stdlib.h>
#include  <string.h>   /*字符串头文件*/


struct  girl
{
          char    name[20];   /*姓名*/      
          int    age;
          int  num;    /*编号*/
          char   grade[10];   /*等级*/
}

struct   Node
{
      struct    girl  data;
      struct   Node*next;
};

/*录入信息就相当于添加链表,所以我们需要一个新的且全局都能使用的链表*/
struct  Node*list = NULL;

//创建表头
struct   Node*createList()
{
     struct  	Node*headNode = (struct    Node*)malloc(sizeof(struct   Node));
     headNode->next = NULL;
     return  headNode;
}

//创建节点
struct   Node*createNode(struct   girl    data)
{
    struct   Node*newNode = (struct   Node*)malloc(sizeof(struct   Node));
    newNode->data = data;
    newNode->next = NULL;
    return   newNode;
}

//表头插入
void    insertByHead(struct    Node*headNode , struct    girl   data )
{
        struct   NOde*newNode = createNode(data);
        newNode->next = headNode->next;
        headNode->next = newNode;
}



void  deleteByNum(struct  Node*headNode, int  posData)
{
      struct  Node*posFrontNode = headNode;
      struct  Node*posNode =  headNode->next;
      /*移动的节点不为NULL,并且当前结点中元素不等于查找的元素*/
      while(posNode != NULL&&posNode->data.num ! posData)
      {
              posFrontNode = posNode;
              posNode = posFrontNode->next;
       }
       /*分析posNode的状态*/
       if(posNode == NULL)
       {
                printf("未找到指定位置,无法删除!\n");
        }
        else
        {
                  posFrontNode->next = posNode ->next;
                  free(posNode);
                  posNode = NULL;
          }
}

//查找信息
stuct  Node*searchInfoByName(struct  Node*headNode,char  *name)
{
      struct  Node*pMove =headNode->next;
      while(pMove!=NULL;strcmp(pMove->data.name,name))
      {
                      pMove = pMove->next;
      }
      return  pMove;
}


//打印
void   printList(struct   Node* headNode)
{
     struct     Node* pMove = headNode->next;
     printf("name\tage\tnum\tgrade\n");
     while(pMove)
     {
               printf("%s\t%d\t%d\t%s\n",pMove->data.name, pMove->data.age,pMove->data.num,pMove->data.grade);
               pMove = pMove ->next;
      }
}


//菜单
void   menuSystem()
{
        printf("-------【起点】--------");
        printf("\t\t0.退出系统\n")printf("\t\t1.插入信息\n");
        printf("\t\t2.浏览信息\n");
        printf("\t\t3.查找信息\n");
        printf("\t\t4.删除信息\n");
        printf("\t\t5.修改信息\n");
        printf("---------【路上】----------")}


//按键处理
void   keyDown()
{
      int   choic  =  0;
      scanf_s("%d",&choice);   /*scanf加_s ,是因为有时候编译器会报错,加_s就不会报错*/
      /*信息录入需要暂时的存储*/
      struct  girl  tempData;
      struct   Node*pMove=NULL;
      switch(choice)
      {
        case   0;
             printf("正常退出!\n");
             system("pause");
               exit(0);/*把整个进程都结束*/
             break;
        case   1;     /*  录入	*/
           printf("请输入name,age,num,grade:");
           scanf("%s%d%d%s",tempData.name, &tempData.age, &tempData.num, tempData.grade);
           /*输入功能就相当于链表的插入*/
           insertByHead(list,tempData);
             break;
        case   2;   /*浏览*/
             printList();
             break;
        case   3;
             printf("请输入查找的姓名:");
             scanf("%s", tempData.name);
             pMove=searchInfoByName(list,tempData.name)
             if(searchInfoByName(list,tempData.name)=NULL)
             {
                            printf("未找到相关信息");
                 }
                 else
                 {
                      printf("name\tage\tnum\tgrade\n");
                      printf("%s\t%d\t%d\t%s\n", pMove->data.name,pMove->data.age,pMove->data.num,pMove->data.grade);
             break;
        case   4;
             printf("请输入删除的姓名:");
             scanf("%s",tempData.name);
             deleteByName(list,tempData.name);
             
             break;
        case   5;
            printf("请输入修改信息的名字");
            scanf("%s",tempData.name);
            pMove = searchInfoByName(list, tempData.name;
            if(pMove==NULL)
            {
                   printf("无相关信息,无法修改!");
            }
            else
            {
            printf("请输入name,age,num,grade");
            scanf("%s%d%d%s",pMove->data.name,pMove->data.age,pMove->data.num,pMove->data.grade);
            printf("修改成功!");
            }
             break;

       }
}


int  main()
{
      list = createList();
        while(1)
        {
                   menuSystem();
                   keyDown;
                   system("pause");
                   system("cls")
         }



     system("pause");
     return  0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值