此程序是使用用线性链表写的,即用数组结构体写的!!!
多的废话不说!!!看程序!!!!
#include<stdio.h>
#include<string.h>
#include<iostream>
#define MaxSize 100
using namespace std;
/*学生信息结构体定义*/
typedef struct{
int stuno;
char name[10];
int score;
int age;
}Student;
typedef struct{
Student data[MaxSize];
int length;
}SqList;
/*输入学生数据*/
SqList Create_List(SqList L)
{
int i=0;
SqList s;
s=L;
printf("请输入您要输入的学生的个数:\n");
cin>>s.length;
for(i=0;i<s.length;i++)
{
printf("请输入第%d学生学号:\n",i+1);
scanf("%d",&s.data[i].stuno);
printf("请输入第%d学生姓名:\n",i+1);
scanf("%s",&s.data[i].name);
printf("请输入第%d学生成绩:\n",i+1);
scanf("%d",&s.data[i].score);
printf("请输入第%d学生年龄:\n",i+1);
scanf("%d",&s.data[i].age);
}
printf("已经存储的学生信息如下:\n");
printf("------------------------------------\n");
for(i=0;i<s.length;i++)
{ printf("学号 姓名 分数 年龄\n");
printf("%d %s %d %d \n",s.data[i].stuno,s.data[i].name,s.data[i].score,s.data[i].age);
}
printf("------------------------------------\n");
printf("恭喜您,用户数据已经初始化了\n");
return s;
}
/*菜单选项功能实现函数*/
void menu()
{
printf("\n");
printf("\n");
printf("-----------------------------------------------------\n");
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("-----------------------------------------------------\n");
printf("\t\t请输入(0--5)的数字:");
}
SqList Insert_List(SqList L)//添加学生信息
{
int i,num;
SqList s;
s=L;
if(s.length==MaxSize)
{
printf("表已满,不能插入。\n");
return L;
}
printf("请输入您要插入的同学的学号:\n");
cin>>num;
for(i=0;i<s.length;i++)
if(L.data[i].stuno==num)
{
printf("学号已存在。\n");
return L;
}
printf("请输入您要插入的同学的各项信息:\n");
printf("学号 姓名 分数 年龄\n");
scanf("%d%s%d%d",&s.data[L.length].stuno,&s.data[L.length].name,&s.data[L.length].score,&s.data[L.length].age);
s.length++;
printf("添加成功。\n");
return s;
}
/*删除学生数据*/
SqList Delete_List(SqList L)
{
int i=0,n=0;
SqList s;
s=L;
printf("请输入要删除的学号:");
scanf("%d",&n);
while(i<=s.length-1)
{
if(n==s.data[i].stuno)
{
break;
}
i++;
}
if(s.data[i].stuno==n)
{
for(;i<=s.length-1;i++)
s.data[i]=s.data[i+1];
s.length--;
printf("删除成功.\n");
}
else
{
printf("该生不存在.\n");
}
return s;
}
int Locate_List(SqList L)//查询学生的信息
{
int no,i=0;
SqList s;
s=L;
printf("请输入学生学号:\n");
scanf("%d",&no);
while(i<=L.length-1)
{
if(no==L.data[i].stuno)
{
break;
}
i++;
}
if(no==L.data[i].stuno)
{
printf("学号 姓名 分数 年龄\n");
printf("%d %s %d %d \n",s.data[i].stuno,s.data[i].name,s.data[i].score,s.data[i].age);
return 1;
}
else
{
printf("此学生不存在。\n");
return 0;
}
}
void Printall_List(SqList L)//所有学生信息
{
int i;
SqList s;
s=L;
for(i=0;i<L.length;i++)
{
printf("学号 姓名 分数 年龄\n");
printf("%d %s %d %d \n",s.data[i].stuno,s.data[i].name,s.data[i].score,s.data[i].age);
}
}
/*主函数*/
int main()
{
int n;
SqList L;
L.length=0;
menu();
scanf("\t%d",&n);
while(n)
{
switch(n)
{
case 0: printf("\n"); //退出程序
return 0;
case 1: L=Create_List(L);//创建学生信息
break;
case 2:L=Insert_List(L);//添加学生信息
break;
case 3:Locate_List(L);//查找学生的信息
break;
case 4:L=Delete_List(L);//删除学生信息
break;
case 5:Printall_List(L);//输出所有同学的信息
break;
default:printf("请重新输入.\n");
}
menu();
scanf("\t%d",&n);
}
printf("感谢您的使用,欢迎您下次继续使用\n");
return 0;
}