*/
#include<iostream> #include "stdio.h" #include "stdlib.h" #include "string.h" #include <windows.h> #define STUDENT 2 using namespace std; typedef struct student //建立学生类 { int num; //学号 char name[20]; //姓名 int math; //高数 int English; //英语 int Data; //数据结构 struct student *next; }student; student *head=NULL; int length; //链表的长度 void create() { student *p1,*p2; length=0; int num; int number=0; p1=(student *) malloc(sizeof(student)); p1->num=-1; if(head==NULL) head=p1; printf("请先输入学生的个数:\n"); cin>>num; Sleep(888); system("Cls"); printf("输入学号、姓名、高数、英语、数据结构:\n"); while(number<num) //循环输入学生信息 { p2=(student *)malloc(sizeof(student)); scanf("%d %s %d %d %d",&p2->num,p2->name,&p2->math,&p2->English,&p2->Data); //输入学生信息 if(p2->num==0) { printf("链表创建完成!\n"); break; } length++; //链表的长度 p1->next=p2; p2->next=NULL; p1=p1->next; number++; } return; } void display() { student *p=head->next; printf("链表中所有的学生信息如下:\n"); while(p!=NULL) { printf("%d %s %d %d %d\n",p->num,p->name,p->math,p->English,p->Data); p=p->next; } return; } void search() { int num_; student *p=head->next; printf("需要查找的学生学号为:"); scanf("%d",&num_); while(p!=NULL) { if(p->num==num_) { printf("学号为%d的学生的信息如下:\n",num_); printf("%d %s %d %d %d\n",p->num,p->name,p->math,p->English,p->Data); return; } p=p->next; } if(p==NULL) printf("无此记录!\n"); return; } void insert() { int num_,i; student *p,*q; p=head; printf("请输入你要插入位置: "); scanf("%d",&num_); if(num_>length) { printf("找不到要插入的位置\n"); return; } else { printf("请输入你要插入的学生的学号、姓名、高数、英语、数据结构:\n"); q=(student *)malloc(sizeof(student)); scanf("%d %s %d %d %d",&q->num,q->name,&q->math,&q->English,&q->Data); while(p!=NULL) { if(p->num==q->num) { printf("该学号已经存在,无法插入!\n"); return;} p=p->next;} p=head; for(i=0;i<num_;i++) p=p->next; q->next=p->next; p->next=q; length++; printf("插入成功!\n"); return;} } void Delete() { int num_; student *p,*q; q=head,p=head->next; printf("请输入要删除的学生的学号:\n"); scanf("%d",&num_); while(p!=NULL) { if(p->num==num_) { q->next=p->next; free(p); length--; printf("删除成功!\n"); return; } p=p->next; q=q->next; } if(p==NULL) { printf("找不到要删除的编号!\n"); return; } } void menu() { printf("________________________________________________________________\n"); printf("\n"); printf("| 学生信息管理系统 |\n"); printf("| 0、 退出系统 |\n"); printf("| 1、 建立链表 |\n"); printf("| 2、 显示链表 |\n"); printf("| 3、 查找链表中的某个学生信息 |\n"); printf("| 4、 删除链表中指定学号的学生 |\n"); printf("| 5、 指定的位置上插入一个学生 |\n"); printf("\n"); printf("________________________________________________________________\n"); return; } int main(void) { int a; menu(); int choice; while(1) { printf("请选择相应的功能:"); scanf("%d",&a); switch(a) { case 0: return 0; case 1: create(); menu(); break; case 2: if(head) { display(); menu();} else {http://download.csdn.net/source/151369 printf("链表为空,请先建立链表!\n"); system("Cls"); menu(); } break; case 3: if(head) { printf("请选择是按学号查找还是按姓名查找,若是学号就按7,姓名按8\n"); scanf("%d",&choice); if(choice==7) { search(); } else { search(); } menu(); } else { printf("链表为空,请先建立链表!\n"); system("Cls"); menu(); } break; case 4: if(head) { Delete(); menu(); } else { printf("链表为空,请先建立链表!\n"); system("Cls"); menu(); } break; case 5 :if(head) { insert(); menu(); } else { printf("链表为空,请先建立链表!\n"); system("Cls"); menu(); } break; default: break; }} system("pause"); return 0; }