学生通讯管理系统

写的很烂有查询修改,

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
//include <.h>
typedef struct xuesheng
{
    char xuehao[20];      //学号; 
    char xingming[20];    //姓名; 
    char haoma[20];       //号码; 
    char dizhi[20];       //地址;
    char banji[20];       //班级; 
    struct xuesheng *next;
}XTONG; 
 XTONG *head; //指针头 
void Creat(XTONG *head)    //增添函数; 
{
    while (1) {
            XTONG *p, *tail, *q;//q过程变量; 
            tail = head;
            while (tail->next != NULL) 
            { 
                tail = tail -> next;    //尾插法//找尾节点 ; 
            }
            q = head->next;
            int a = 0;
            char xuehao1[20];
            printf("请输入学生号\n");
            scanf("%s",xuehao1);
            if(strlen(xuehao1)>6)//
             {
                 printf("请输入范围内学号");
                 continue;
             }
            while (q != NULL) 
            {
                if (strcmp(q->xuehao, xuehao1) == 0) 
                    {
                    a = 1;
                    printf("学号重复无法输入\n");
                    break;
                    } 
                else 
                    {
                    q = q->next;
                    }
            }
            if (a == 1) 
            {
                continue;
            } 
            else 
            {
                printf("没有重复符合要求\n");//break;
            }
            p = (XTONG*)malloc(sizeof(XTONG));//给节点开辟内存 
            strcpy(p->xuehao, xuehao1);
            printf("输入姓名\n");
            scanf("%s", p->xingming);
            printf("输入班级\n");
            scanf("%s", p->banji);
            printf("号码\n");
            scanf("%s", p->haoma);
            printf("地址\n");
            scanf("%s", p->dizhi);
            p->next = NULL;//执行链表操作 
            tail->next = p;//执行链表操作 

            int i;
            printf("是否继续添加\n添加输入1结束输入0\n");
            while (1) 
                {
                scanf("%d", &i);
                if (i == 1 || i == 0) 
                    {
                    break;
                    } 
                    else 
                    {
                    printf("请输入1或0\n");
                    continue;
                    }
                }
            if (i == 0) 
               {
                system("pause");
                system("cls");
                break;
               }
        }
        
XTONG *c,*b,*tail;                                          //对班级进行排序; 
                               int x=0,n,i;
                               b=head;
                               while(b->next!=NULL)
                               {
                                   x++;
                                   b=b->next;
                               }
                               for(int i=0;i<x-1;i++)//冒泡排序 
                               {             
                                    c=head->next;
                                    b=c->next;
                                    tail=head;
                                       for(int n=0;n<x-1-i;n++) 
                                     {
                                         if(strcmp(c->banji,b->banji)>0)
                                         {
                                    c->next=b->next;     //进行交换;
                                         b->next=c;
                                         tail->next=b;
                                     }
                                     tail=tail->next;
                                     c=tail->next;
                                     b=c->next;
                                  }
                               }

}
void Show(XTONG *head)
{
    
    XTONG *p1 = head->next;
        while (p1 != NULL) {
            printf("学号: %s\n", p1->xuehao);
            printf("姓名: %s\n", p1->xingming);
            printf("班级: %s\n", p1->banji);
            printf("号码: %s\n", p1->haoma);
            printf("地址: %s\n\n", p1->dizhi);
            p1 = p1->next;
        }
        system("pause");
        system("cls");
}
void Delete(XTONG *head)
{
    XTONG *qh = NULL, *h = NULL;
        char xuehao1[20];
        printf("请输入要删除的学生学号:\n");
        scanf("%s", xuehao1);
        qh = head;
        h = head->next;
        int a = 0;
        while (h != NULL) 
          {
            if (strcmp(h->xuehao, xuehao1) == 0) 
                {
                qh->next=h->next;
                free(h);//释放此内存 
                a = 1;
                break;
                }
            qh=h;
            h=h->next;
          }
        if (a==1) 
            {
            printf("删除成功\n");
            } 
        else 
            {
            printf("没有找到这个学生,删除失败\n");
            }
        system("pause");
        system("cls");    
}
void Search(XTONG *head)     //查找函数; 
{
    XTONG *q = NULL;
        q = head->next;
        int a = 0, b = 0;
        printf("\t\t**************************\n\t\t*    欢迎使用查询系统    *\n");
        printf("\t\t*      学生学号查询    *\n");
        printf("\t\t**************************\n");
            char xuehao1[20];
            printf("输入你要查学生的学号\n");
            scanf("%s", xuehao1);
            while (q != NULL) {
                if (strcmp(q->xuehao,xuehao1) == 0) {
                                printf("学号: %s\n", q->xuehao);
                                printf("姓名: %s\n", q->xingming);
                                printf("班级: %s\n", q->banji);
                                printf("号码: %s\n", q->haoma);
                                printf("地址: %s\n", q->dizhi);
                    b = 1;
                }
                q = q->next;
            }
        if (b == 1) {
            printf("查询成功\n");
        } else if(b == 0){
            printf("查无此人\n");
        }
        system("pause");
        system("cls");
        getchar();
};
void Change(XTONG *head)        //更改函数; 
{
              XTONG *q = NULL;
              XTONG *q1;
              q = head->next;
            int a = 0;
              while (1) {
                  
                  printf("\t\t**************************\n");
                printf("\t\t*    欢迎使用修改系统    *\n");
                  printf("\t\t*    请输入学生号修改    *\n");
                  printf("\t\t**************************\n"); 
                      char xuehao1[20];
                      printf("请输入学生号\n");
                       scanf("%s", xuehao1);
                      if(strlen(xuehao1)>6)//
                                   {
                                       continue;           
                                   }                      
                                   if(q==NULL)      //
                                   {                      //
                                       printf("请先增加数据!");   //
                                       break; 
                                    system("pause");
                                    system("cls");                        //
                                   }                            //
                      while (q != NULL)
                       {
                          if (strcmp(q->xuehao, xuehao1) == 0) 
                          {
                              int x = 0;
                              q1 = head->next;
                              while (x == 0) 
                              {
                                  char xuehao2[20];
                                  a = 0;
                                  printf("请重新输入学生号\n");//gai
                                  scanf("%s", xuehao2);
                                  while (q1 != NULL) {
                                      if (strcmp(q1->xuehao, xuehao2) == 0) {
                                          a = 1;
                                          printf("学生号重复无法输入\n");
                                          break;
                                      } else {
                                          q1 = q1->next;
                                      }
                                  }
                                  if (a == 0) {
                                      printf("没有重复符合要求\n");
                                      x = 1;
                                  } else if (a == 1) {
                                      continue;
                                  }
                                  strcpy(q->xuehao, xuehao2); 
                                }
                                 a=0;
                              printf("输入姓名\n");
                              scanf("%s", q->xingming);
                              printf("输入班级\n");
                            scanf("%s", q->banji);
                              printf("号码\n");
                            scanf("%s", q->haoma); 
                              printf("住址\n");
                              scanf("%s", q->dizhi);
                            } 
                        else 
                            {
                              q=q->next;
                              }    
                        }
                      if (a == 0) 
                        {
                          printf("修改成功\n");
                          } 
                    else 
                        {
                          printf("修改失败\n");
                          }
                      
                        break;
                  }
                  system("pause");
                  system("cls");
 }
void baocun(XTONG *head)
{
    
    FILE *fp=fopen("D:\\学生管理系统信息.txt","w+");
    XTONG *p;
    p=head->next;
    if(fp==NULL)
    {
        printf("保存失败");
        exit(1); 
    }
    while(p!=NULL)
    {
        
        fprintf(fp,"%s\n",p->xuehao);
        fprintf(fp,"%s\n",p->xingming);
        fprintf(fp,"%s\n",p->banji);
        fprintf(fp,"%s\n",p->haoma);
        fprintf(fp,"%s\n",p->dizhi);
        p=p->next;
    }
    printf("保存成功.\n");
    fclose(fp);
    getchar();
}
int tui=0;   //退出 
void CHUSHI()       //选择函数; 
{
        system("pause");
        system("cls");
        while (1) 
        {
            printf("\t\t**************************************************\n");
            printf("\t\t*******************学生通讯系统*******************\n");
            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 5、删除学生信息\n");
            printf("\t\t 6、保存学生信息\n");
            printf("\t\t 0、退出系统\n");
            printf("\t\t请输入你的选择\n");
            int a;
                while (scanf("%d", &a) == 0 || getchar() != '\n'||a>7)
                {
                    printf("您输入的超出范围,请重新输入:");
                    while (getchar() != '\n');  // 清除缓存区
                }//      
            system("cls");
            switch (a) 
                {
                case 1:
                    Creat(head);
                    break;
                case 2:
                    Show(head);
                    break;
                case 3:
                    Search(head);
                    break;
                case 4:
                    Change(head);
                    break;
                case 5:
                    Delete(head);
                    break;
                case 6:
                    baocun(head);
                    break;    
                case 0:
                    tui = 1; 
                    printf("感谢你使用学生通信录管理系统,请关掉程序!!!\n");
                    break;
                }
            if(tui==1)
             {
                break;
             }
        }
}
int main()
{   
    system("color 9"); 
    head = (XTONG*)malloc(sizeof(XTONG)); //开辟头 
    head->next = NULL;
    char ZH1[20],ZH2[20];
    char zh[20]="./";
    char MM1[20],MM2[20];
    char mm[20]="./";
    int i=1,j=0;
    while(i==1)
    {
            printf("\t\t**************************************************\n");
            printf("\t\t******************学生通讯管理系统****************\n");
            printf("\t\t**************************************************\n");
            printf("\t\t请选择\n\t\t1.登录\n\t\t2.注册\n\t\t");    
            char xuanze[20];
            scanf("%s",xuanze);
            if 
            (strcmp(xuanze,"1")==0&& strcmp(ZH1, zh) != 0 && strcmp(MM1,mm) != 0) {
                        printf("\t\t请输入学生通信录管理系统的账号:\n");
                        printf("\t\t");
                        printf("账号:");
                        scanf("%s", ZH2);
                        printf("\t\t请输入学生通信录管理系统的密码:\n");
                        printf("\t\t");
                        printf("密码:");
                        scanf("%s",MM2);
                        for (;;) { 
                            if (strcmp(ZH1, ZH2) != 0 || strcmp(MM1,MM2) != 0) {
                                printf("\t\t账号密码错误\n\t\t重新输入账号:");
                                scanf("%s", ZH2);
                                printf("\t\t密码:");
                                scanf("%s", MM2);
                                j++;
                                if (j == 4) {
                                    break;
                                }
                            } else {
                                printf("成功登陆\n");
                                i = 0;
                                break;
                            }
                        }
            } else if (strcmp(xuanze,"2")==0) {
                        printf("\t\t请输入创建的账号");
                        scanf("%s", ZH1);
                        printf("\t\t请输入创建的密码");
                        scanf("%s", MM1);
                        system("pause");
                        system("cls");
                        continue;
            } else {
                        printf("\t\t请输入1或2\n");
                        system("pause");
                        system("cls");
                        continue;
                    }
                    if (j == 4) {
                        printf("\t\t输入错误过多,程序关闭");
                                 break;
                                }  
                        CHUSHI();
                            if (tui == 1) {
                                break;
                            }
                            system("pause");
                            system("cls");    
                }
                return 0;
    }    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值