数据结构实验:写一个学生管理系统:
代码如下:
#define OVERFLOW -1
#define OK 1
#define ERROR -1
#define MAXSIZE 6
#define INCREMENT 10
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef int Status;
typedef struct
{
char no[8];
char name[20];
int price;
}Student;
typedef Student ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int length;
}SqList;
void InitList(SqList *&L) //创建化顺序表
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
void chushihua(SqList *&L,ElemType a[],int n) //初始化链表
{
for(int j=0;j<n;j++)
{
L->elem[j]=a[j];
L->length++;
}
}
void chushihua1(SqList *&L,int n)
{
for(int m=0;m<n;m++)
{
ElemType child;
printf("输入名字:");
scanf("%s",child.name);
printf("输入学号:");
scanf("%s",child.no);
printf("输入分数:");
scanf("%d",&child.price);
L->elem[m]=child;
L->length++;
}
}
void menu1()
{
printf(“\n");
printf(“1.按数组初始化顺序表\n”);
printf(“2.按学生人数初始化顺序表\n”);
printf(“3.插入学生\n”);
printf(“4.打印顺序表\n”);
printf(“5.通过名字查找\n”);
printf(“6.通过位置查找\n”);
printf(“7.删除指定1位置的元素\n”);
printf(“8.打印当前的学生人数\n”);
printf("\n”);
}
Status InsertList(SqList *&L,int i,ElemType e) //在指定位置插入指定元素
{
if(i<1||i>L->length+1)
return ERROR;
if(L->length==MAXSIZE)
return ERROR;
i–;
int m=L->length-1;
for(m;m>=i;m–)
{
L->elem[m+1]=L->elem[m];
}
L->elem[i]=e;
L->length++;
return OK;
}
void PrintList(SqList *L) //打印顺序表
{
printf("\n");
for(int i=0;ilength;i++)
{
printf("%s %s %d \n ",L->elem[i].no,L->elem[i].name,L->elem[i].price);
}
}
Status FindName(SqList *L,char ch[]) //名字查找
{
int i=0,j=0;
for(i;ilength;i++)
{
if(strcmp(L->elem[i].name,ch)==0)
{
return i;
}
}
return ERROR;
}
Status shanchu(SqList *&L,int n) //删除位置元素
{
if(n<1||n>L->length)
return ERROR;
n–;
for(int j=n;jlength-1;j++)
{
L->elem[j]=L->elem[j+1];
}
L->length–;
return OK;
}
Status Findlocad(SqList *L,int i) //位置查找
{
if(i<0||i>L->length)
return ERROR;
else
printf("\n%s \n %s \n %d \n ",L->elem[i-1].no,L->elem[i-1].name,L->elem[i-1].price);
}
void tongji(SqList *L)
{
printf(“当前学生人数为:%d\n”,L->length);
}
void main()
{
menu1();
SqList *L;
char ch[8];
ElemType ren;
int m=3,n;
ElemType a[]={“1236789”,“刘胜波”,20,“1233524”,“罗华荣”,50,“4562541”,“裴先易”,60};
InitList(L);
int flag=1,j;
while(flag==1)
{
printf("请选择:");
scanf("%d",&j);
switch(j)
{
case 1:chushihua(L,a,m);
break;
case 2:printf("输入要录入的学生数量:");
scanf("%d",&n);
chushihua1(L,n);
break;
case 3:printf("输入要插入的姓名:");
scanf("%s",ren.name);
printf("\n");
printf("输入要插入的学号:");
scanf("%s",ren.no);
printf("\n");
printf("输入要插入的成绩:");
scanf("%d",ren.price);
printf("\n");
printf("输入要插入的位置:");
scanf("%d",&n);
InsertList(L,n,ren);
break;
case 4:PrintList(L);
break;
case 5:printf("输入查找对象:");
scanf("%s",ch);
if(FindName(L,ch)!=ERROR)
printf("学号:%s\n成绩:%d\n",L->elem[FindName(L,ch)].no,L->elem[FindName(L,ch)].price);
if(FindName(L,ch)==ERROR)
printf("查无此人!!!");
break;
case 6:printf("输入你想查找的位置:");
scanf("%d",&n);
Findlocad(L,n);
break;
case 7:printf("输入你想删除的位置:");
scanf("%d",&n);
shanchu(L,n);
break;
case 8:tongji(L);
break;
低级学生系统,哈哈哈
}
}
}
我也是小白一个,插入还有问题,现在还不知道怎么改,先把它留在这里,等我以后有时间了再回来看一下,哈哈哈哈哈,如果对你有用的话,也是不错的体验。