0
点赞
收藏
分享

微信扫一扫

学生管理系统C语言

洛茄 2022-04-30 阅读 51
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/* 
	1、界面
	2、数据结构设计
	3、交互	
*/
typedef struct {
	char name[200];
	int age;
	char sex[5];
	int grade;
	char phoneNum[200];
}student;
//链表 
typedef struct Node{
//	int data;
	student data; 
	struct Node* next;
}Node,*LinkList;

//创建链表 
LinkList createList(){
	LinkList headNode=(LinkList)malloc(sizeof(Node));
	headNode->next=NULL;
	return headNode;
}
//创建结点	
Node* createNode(student data){
	Node* p=(Node*)malloc(sizeof(Node));
	p->data=data;
	p->next=NULL;
	return p;
}
//插入结点
void insertNodeByHead(LinkList headNode,student data){
	Node* p=createNode(data);
	p->next=headNode->next;
	headNode->next=p;
}
//删除指定数据,按姓名 
Node* deleteNode(LinkList headNode,char* name){
	Node* p=headNode->next;
	Node* pre=headNode;
	if(name==NULL){
		printf("数据为空,删除失败!\n");
		return NULL;
	}
	while(p){
		if(strcmp(p->data.name,name)==0){
			pre->next=p->next;
			free(p);
			return;
		}
		pre=p;
		p=pre->next;
	}
	return p;
} 
//查找基于值,按姓名 
Node* searchByData(LinkList headNode,char* name){
	Node* p=headNode->next;
	Node* pre=headNode;
	if(name==NULL){
		printf("数据为空,查找失败!\n");
		return NULL;
	}
	while(p){
		if(strcmp(p->data.name,name)==0){
			return p;
		}
		pre=p;
		p=pre->next;
	}
	return p;
} 
 
//打印链表
void printList(LinkList headNode){
//	printf("11111111111111111"); 
	Node* p=headNode->next;
	printf("姓名\t年龄\t性别\t成绩\t电话\n");
	while(p!=NULL){
		printf("打印");
		printf("%s\t%d\t%s\t%d\t%s\n",p->data.name,p->data.age,p->data.sex,p->data.grade,p->data.phoneNum);
		p=p->next;
	}
	printf("\n");
}

//菜单
void menu(){
	printf("------------【学生信息管理系统】------------\n"); 
	printf("\t\t0.退出系统\n");
	printf("\t\tl.录入信息\n");
	printf("\t\t2.浏览信息\n");
	printf("\t\t3.修改信息\n");
	printf("\t\t4.删除信息\n");
	printf("\t\t5.查找信息\n");
	printf("--------------------------------------------\n");
}

LinkList list;

//交互
void keyDown(){
	list=createList();
	int choose=0;
	student data;
//	data.name='lili';
//	data.age=21;
//	data.sex='男';
//	data.grade=90;
//	data.phoneNum='17674749585';

//	insertNodeByHead(list,data);
//	printList(list);
	
	
a:	printf("请输入要执行的操作代码:");
	scanf("%d",&choose);
	switch(choose){
		case 0:
			printf("正常退出!\n");
			system("pause");
			exit(0);
			break;
		case 1:
			printf("------------【录入信息】------------\n"); 
			printf("请分别输入学生的姓名,年龄,性别,成绩,电话:");
			fflush(stdin);
			scanf("%s%d%s%d%s",&data.name,&data.age,&data.sex,&data.grade,&data.phoneNum);
//			printf("%d",data.age);
			insertNodeByHead(list,data);
			goto a;
			break;
		case 2:
			printf("------------【浏览信息】------------\n"); 
			printList(list);
			goto a;
			break;
		case 3:
			printf("------------【修改信息】------------\n"); 
			goto a;
			break;
		case 4:
			printf("------------【删除信息】------------\n"); 
			goto a;
			break;
		case 5:
			printf("------------【查找信息】------------\n"); 
			goto a;
			break;
		default:
			printf("操作代码错误,请重新输入!\n");
			system("pause");
			goto a;
			break;
	}
} 


int main() {
	
	menu(); 
	while(1){
		keyDown();
	}
	system("pause"); 
	system("cls");
//链表的测试 
//	LinkList L=createList();
//	insertNodeByHead(L,1);
//	insertNodeByHead(L,4);
//	insertNodeByHead(L,5);
//	insertNodeByHead(L,8);
//	insertNodeByHead(L,10);
//	printList(L);
//	printf("删除指定数据:4\n");
//	deleteNode(L,4);
//	printList(L);
//	printf("链表查找:8\n");
//	printf("%d\n",searchByData(L,8)->data);
//	system("pause"); 	
	return 0;
}

举报

相关推荐

0 条评论