此程序是使用用线性链表写的,即用数组结构体写的!!!
多的废话不说!!!看程序!!!!
#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;}