赞
踩
#include<stdio.h> #include<string.h> #include<stdlib.h> #define LIST_INIT_SIZE 10 typedef struct Student{ char num[20],name[20]; float score; }Student; typedef struct sqlist{ Student *stu; int listSize,length; }sqlist; //函数的声明 int InitList(sqlist &s1); int CreateList(sqlist &s1); int InsertEle(sqlist &s1); int DeleteList(sqlist &s1); int SearchList(sqlist &s1); int ShowList(sqlist &s1); int main(){ Student s; sqlist s1; int i=1,n; char c; InitList(s1); printf("\n\n欢迎使用学生信息查询系统,请按提示使用!\n\n\n"); while(1){ printf("~~~~~~~~~~~~请选择要执行的操作:~~~~~~~~~~~~~~\n\n\n\n"); printf("`````````````````````````````````````````````\n"); printf("1、清空顺序表\n2、创建顺序表\n3、插入信息\n4、删除信息\n5、查找信息\n6、显示当前信息\n0、退出系统\n"); printf("`````````````````````````````````````````````\n"); printf("\n请从序号0--6中选择:"); scanf("%d",&n); //0.退出系统 if(n==0){ printf("谢谢您的使用,再见!"); break; } //1.初始化顺序表 else if(n==1){ printf("\n此操作将创建顺序表,您是否继续?(n退出,其他任意键继续)\n"); scanf("%c",&c);//读掉回车的空格 scanf("%c",&c); if(c=='n') break; else{ InitList(s1); printf("顺序表已清空,你可以请进行其他操作\n"); } } //2.创建顺序表 else if(n==2){ printf("此操作将创建顺序表,您是否继续?(n退出,其他任意键继续)\n"); scanf("%c",&c);//读掉回车的空格 scanf("%c",&c); if(c=='n') break; else CreateList(s1); } // 3.插入学生信息 else if(n==3){ InsertEle(s1); } //4.删除学生信息 else if(n==4){ DeleteList(s1); } //5.查找信息 else if(n==5){ SearchList(s1); } //6.显示当前信息 else if(n==6){ ShowList(s1); } //输入有误,显示有误信息 else if(n!=1||n!=2||n!=3||n!=4||n!=5||n!=6||n!=0) printf("您输入的值有误,请重新输入\n"); } return 0; } /函数的定义 //1.初始化线性表 int InitList(sqlist &s1){ s1.stu=(Student*)malloc(LIST_INIT_SIZE*sizeof(Student));//申请存储空间 if(!s1.stu){ printf("分配失败\n"); return 0; } s1.length=0; s1.listSize=LIST_INIT_SIZE; return 1; } //2.创建线性表 int CreateList(sqlist &s1){ int n,i; printf("下面创建学生信息查询系统,请按提示输入数据:\n"); s1.length=0; printf("您一共要输入多少组学生数据?\n"); scanf("%d",&n); for(i=0;i<n;i++){ printf("请输入第%d个同学的学号:\n",i+1); scanf("%s",s1.stu[i].num); printf("请输入第%d个同学的姓名:\n",i+1); scanf("%s",s1.stu[i].name); printf("请输入第%d个同学的成绩:\n",i+1); scanf("%f",&s1.stu[i].score); s1.length++; } printf("\n本次操作您一共输入了%d组数据\n",n); return 1; } //3.插入操作 int InsertEle(sqlist &s1){ int pos,i; struct Student *p,*q; Student s; printf("请输入插入的学生的信息:\n"); printf("请输入学生的学号:\n"); scanf("%s",s.num); printf("请输入学生的姓名:\n"); scanf("%s",s.name); printf("请输入学生的成绩:\n"); scanf("%f",&s.score); printf("请输入您要插入的学生位置:\n"); scanf("%d",&pos); if(pos<1||pos>s1.length+1){ printf("你输入的位置有误,请检查\n"); return 0; } for(i=0;i<s1.length;i++) if(strcmp(s.num,p->name)==0){ printf("输入的学号已存在!\n"); printf("该学生姓名为:%s\n",p->name); printf("该学生的学号为%s\n",p->num); printf("该学生的成绩为%f\n",p->score); return 0; } q=&(s1.stu[pos-1]); for(p=&(s1.stu[s1.length-1]);p>=q;p--) *p=*(p-1); *q=s; s1.length++; printf("插入学生信息成功!"); return 1; } //4.删除学生信息 int DeleteList(sqlist &s1){ int m,n,i,pos,flag=0; struct Student *p,*q,s; printf("1、我想按输入特定位置删除\n2、我想按输入学生学号删除\n"); scanf("%d",&m); //(1)按照位置删除 if(m==1){ printf("请输入你要删除的学生的位置\n"); scanf("%d",&pos); if(pos<1||pos>=s1.length+1){ printf("你输入的位置不存在!"); return 0; } p=&(s1.stu[pos-1]); q=s1.stu+s1.length-1; for(;p<=q;p++) *p=*(p+1); s1.length--; printf("已删除,请检查输出"); return 1; } //(2)按照学号删除 else if(m==2){ printf("请输入要删除的学生的学号:\n"); scanf("%s",s.num); p=s1.stu; q=s1.stu+s1.length-1; for(i=0;i<s1.length;i++) if(strcmp(s.num,p->num)==0){ flag=1; break; } if(flag){ for(;p<=q;p++) *p=*(p+1); s1.length--; printf("元素删除成功\n"); return 1; } else{ printf("不存在该学号的学生信息\n"); return 0; } } else printf("你选择的序号不正确!\n"); } //5.查询信息 int SearchList(sqlist &s1){ int pos; printf("请输入你要查找的学生的位置:\n"); scanf("%d",&pos); if(pos<1||pos>s1.length){ printf("该元素不存在\n"); return 0; } printf("你查找的学生信息如下:\n"); printf("该学生的学号是%s\n",s1.stu[pos-1].num); printf("该学生的姓名是%s\n",s1.stu[pos-1].name); printf("该学生的成绩是%f\n",s1.stu[pos-1].score); return 1; } //6.显示所有信息 int ShowList(sqlist &s1){ int i; struct Student *q; if(s1.length==0){ printf("---------现在还没有任何信息,你可以先建立表:----------\n"); return 0; } else { q=s1.stu; for(i=0;i<s1.length;i++){ printf("第%d名学生的信息:\n",i+1); printf("第%d名学生的学号:%s\n",i+1,q->num); printf("第%d名学生的姓名:%s\n",i+1,q->name); printf("第%d名学生的成绩:%f\n",i+1,q->score); q++; } printf("共有%d条信息\n",i); return 1; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。