栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言用顺序表实现学生信息的添加、插入、删除、查找功能

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言用顺序表实现学生信息的添加、插入、删除、查找功能

#include
#include
#include 
#define MAX  20

typedef    struct{
        int   no;  //8位学号 
        char name[20];  //姓名
        float score;         //成绩 
}Student;
    
typedef    struct{
    Student *elem;  //指向数据元素的基地址 
    int length;     //线性表的当前长度 
}SqList;         

void InitList(SqList &L) //初始化 
{
   L.elem=(Student *)malloc(MAX*sizeof(Student));// 为顺序表分配一个大小为MAX的数组空间
   //L.elem= new Student[MAX];
   L.length=0;
   if(!L.elem)
   {
      printf("顺序表初始化失败"); //储存分配失败退出
   } else printf("顺序表初始化成功"); 
  

 
void LocateElem (SqList &L,int i)  //对指定位置进行查找,并返回其信息 
{
        if(1<=i&&i<=L.length)
        {
                    printf("ttt该同学的姓名是:%sn",L.elem[i-1].name);
                    printf("ttt该同学的学号是:%dn",L.elem[i-1].no);
                    printf("ttt该同学的成绩是:%fn",L.elem[i-1].score);    
        }else printf("没有该同学"); 
        system("PAUSE");
        system("cls"); 
}
void FindElem(SqList &L,char e[])  //根据姓名进行查找,并返回此学生的学号和成绩 
{
    int l=0;
    for(int i=0;i         {
          if(strcmp(L.elem[i].name,e)==0)    
            {
                    printf("ttt该同学的学号是:%d,",L.elem[i].no);
                    printf("nttt该同学的成绩是:%f.",L.elem[i].score);
                    l++;
            }
        }
        if(l==0)
        {
            printf("ttt没有该同学信息");
        }
        system("PAUSE");
        system("cls"); 
}
void  ListInsert(SqList &L,int i)  //在顺序表L中第i个位置插入新的元素e,并判断插入范围是否合法 
{
    system("cls"); 
    if((i<1)||(i>L.length+1))
    {
        printf("ttt输入的i不合法");
    }
        system("PAUSE");
        system("cls"); 
    if(L.length==MAX)
    { 
    printf("ttt表已满,不可添加");
        system("PAUSE");
        system("cls"); 
    } 
    
      for(int j=L.length-1;j>=i-1;j--)    
    { 
        L.elem[j+1]=L.elem[j];
    }             //插入位置以及之后的元素后移 
    printf("请按依次输入您想要插入的学生信息的学号、姓名、成绩(用空格隔开):t");
    scanf("%d%s%f",&L.elem[i-1].no,&L.elem[i-1].name,&L.elem[i-1].score);           //将新元素e放在第i个位置上 
    ++L.length;
    printf("插入学生信息成功n"); 
    printf("请按任意键返回"); 

int  ListDelete(SqList &L,int i)  //在顺序表中删除第i个元素 
{
    if(i<1||i>L.length)
    {
        printf("ttt您输入的i值不合法"); 
        system("PAUSE");
        system("cls");     
        return 0;
    }
    int j;
    j=i;    
        for(int j=i;j<=L.length-1;j++)
        {
            L.elem[j-1]=L.elem[j];
        }
    --L.length;
    printf("ttt删除成功");
        system("PAUSE");
        system("cls");     
}

void InitSqList(SqList &L,int n)   // 传入初始化好的顺序表地址,以及要录入学生的人数 

     int m,i;
    printf("tt请按照顺序填写 学号 姓名 成绩n");
    for(i=0;i     {
         m=1;
        printf("tt请输入学第%d位学生的信息n",i+1);    
        printf("学号:"); 
        while(m) 
        {
          scanf("%d",&L.elem[i].no);
          if(L.elem[i].no<0)
          {
              printf("您输入的数字不合法n请重新输入第%d位学生的八位学号:",i+1);
          } else m=0; 
        }
        printf("姓名:");
        m++;
        while(m)
        {
         scanf("%s",&L.elem[i].name);
          if(L.elem[i].name<0)
          {
              printf("您输入的姓名不合法n请重新输入第%d位学生的姓名:",i+1);
          } else m=0; 
        }
        printf("成绩:");
        m++; 
            while(m)
        {
         scanf("%f",&L.elem[i].score);
          if(L.elem[i].score<0)
          {
              printf("您输入的成绩不合法n请重新输入第%d位学生的成绩:",i+1);
          } else m=0; 
        }
    } 
    L.length=n+L.length;
    printf("录入信息成功。"); 
    system("PAUSE"); //防止窗口关闭
    system("cls"); //清屏 
}
void OutSqList(SqList &L)
{
    system("cls");
    printf("tt下面是学生信息n");
    printf("ttt学号            姓名            成绩n");
    for(int i=0;i     {
        printf("ttt%d",L.elem[i].no); 
        printf("ttt%s",L.elem[i].name); 
        printf("ttt%f",L.elem[i].score); 
        printf("n");
    }
    printf("ttt表中学生总人数为:%dn",L.length);
    system("PAUSE");
    system("cls");

void Display()
{
    printf("nn");
    printf("tt◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇n");
    printf("tt************************************************n");
    printf("tt*******♂欢迎进入学生信息功能管理界面♀*******n");
    printf("tt************************************************n");
    printf("tt************************************************n");
    printf("tt☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★n");
    printf("tt→←→←→←1. 学生信息添加系统 →←→←→←→ n");
    printf("tt☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★n");
    printf("tt→←→←→←2.学生信息删除系统 →←→←→←→ n");
    printf("tt☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★n");
    printf("tt→←→←→←3.显示学生信息系统 →←→←→←→ n");
    printf("tt☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★n");
    printf("tt→←→←→←4.插入学生信息修改系统 →←→←→←→ n");
    printf("tt☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★n");
    printf("tt→←→←→←5.查找学生信息系统 →←→←→←→ n");
    printf("tt€€ €€ €€ €€ €€ €€ €€ €€ €€ €€  n");
    printf("tt◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇n");        
    printf("nn");
//    printf("tt请输入所需功能的对应字母n");
}

main()
{
   char xh[20];
   char xm[20];
   float cj; 
   int numb,n;
   SqList L;
   InitList(L);  //初始化顺序表 
   while(1)
    {
      Display();
      printf("tt请输入所需功能的对应数字n");
      scanf("%d",&numb);
      switch (numb)
      {
          case 1: 
          system("cls");
          printf("请输入要录入学生的人数:"); 
          scanf("%d",&n);
          InitSqList(L,n);
          break;
        case 2:
                int m;
                system("cls");
                printf("请输入要删除的第几个位置的学生信息:"); 
                scanf("%d",&m);
                ListDelete(L,m);
                break;
        case 3:
                OutSqList(L); 
                break;
        case 4:
                int i;  
                printf("请输入要在第几个位置插入学生信息:"); 
                scanf("%d",&i);
                ListInsert(L,i);
                    system("PUASE");        
                    system("cls");
                break;
        case 5:
                int n,q;
                char e[20];
                system("cls");
                 printf("ttt1.根据姓名进行查找n");
                printf("ttt2.对指定位置查找n");
                printf("ttt请输入需要进行查找的类型:");
                scanf("%d",&n);
                if(n==1)
                {
                    printf("ttt请输入要查找的姓名:");
                    scanf("%s",&e);
                    FindElem(L,e); 
                } else 
                 {
                     printf("ttt请输入要查找的学生序号:");
                     scanf("%d",&q);
                     LocateElem (L,q);
                         
                 }
          
      } 
    }    
}
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396431.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号