⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 学生管理系统,缺少头文件但还是一个不错的 适合学生叫做业者望给大家带来帮助!
💻 TXT
字号:
#include<stdio.h>
#include<malloc.h>
#define null 0
struct student 
{
	int  num;
	char name[20];
	char sex[4];
	int age;
	char add[30];
	struct student *next;
};
int count=0;

void main()
{
	struct student *creat(void);
	struct student *insert(struct student *,struct student *);
	struct student *del(struct student *,int);
	void print(struct student *);

	struct student *head,*s;
	int del_num;	//要是删除的学生的学号
	int ch=0;
	int goon=1,goc=1,gos=1;
	
	while(goon==1)
	{
		printf("请选择要进行的操作:\n");
		printf("1:建表    2:插入   3:删除\n");
		scanf("%d",&ch);
		if(ch==1)				//建立链表
		{   
			head=creat();
			print(head);
		}
		else if(ch==2)         //插入记录
		{
			while(goc==1)
			{
				printf("请按提示输入要插入的学生的信息:\n");   
				s=(struct student *)malloc(sizeof(struct student));
				printf("学号:");
				scanf("%d",&s->num);
				printf("姓名:");
				scanf("%s",s->name);
				printf("性别:");
				scanf("%s",s->sex);
				printf("年龄:");
				scanf("%d",&s->age);
				printf("家庭住址:");
				scanf("%s",s->add);
				head=insert(head,s);
				printf("是否继续插入?是(1)/否(0)");
				scanf("%d",&goc);
			}
		}
		else if(ch==3)		//删除记录
		{
			while(gos==1)
			{
				printf("请输入要删除的学生的学号:");    	
				scanf("%d",&del_num);
				head=del(head,del_num);
				printf("是否要继续删除?是(1)/否(0)");
				scanf("%d",&gos);
			}
		}
		else
			printf("error!");
		printf("是否要继续对表操作?是(1)/否(0)");
		scanf("%d",&goon);
	}
}

struct student *creat(void)
{
	struct student *head;
	struct student *p1,*p2;
	int choice=1;
	
	p1=p2=(struct student *)malloc(sizeof(struct student));
	printf("请按提示输入学生的记录:\n");

	head=null;
	while(choice==1)
	{
		printf("学号:");
		scanf("%d",&p1->num);
		printf("姓名:");
		scanf("%s",p1->name);
		printf("性别:");
		scanf("%s",p1->sex);
		printf("年龄:");
		scanf("%d",&p1->age);
		printf("家庭住址:");
		scanf("%s",p1->add);

		count++;

		if(count==1) head=p1;
		else p2->next=p1;
		p2=p1;
		p1=(struct student *)malloc(sizeof(struct student));
		printf("是否继续输入学生信息?是(1)/否(0)");
		scanf("%d",&choice);
		
	}
	p2->next=null;
	return (head);
}

struct student *insert(struct student *head,struct student *stud)
{
	struct student *p0,*p1,*p2;
	p1=head;
	p0=stud;
	if(head==null)
	{
		head=p0;p0->next=null;
	}
	else
	{
		while((p0->num>p1->num)&&(p1->next!=null))
		{
			p2=p1;
			p1=p1->next;
		}
		if(p0->num<=p1->num)
		{
			if(head==p1) head=p0;
			else p2->next=p0;
			p0->next=p1;
		}
		else
		{
			p1->next=p0;
			p0->next=null;
		}
		
	}
	count++;
	return(head);
}

struct student *del(struct student *head,int num)
{
	struct student *p1,*p2;
	if(head==null)
	{
		printf("空表!");
		return (head);
	}
	p1=head;
	while(num!=p1->num&&p1->next!=null)
	{
		p2=p1;
		p1=p1->next;
	}
	if(num==p1->num)
	{
		if(p1==head) head=p1->next;
		else p2->next=p1->next;
		printf("已删除学号为%d的学生的记录!",num);
		count--;
	}
	else
		printf("无该学生的信息!");
	return (head);
}

void print(struct student *head)
{
	struct student *p;
	printf("当前该表中工有%d条记录:\n",count);
	p=head;
	if(head!=null)
	{
		do
		{
			printf("学号:%d  ",p->num);
			printf("姓名:%s   ",p->name);
			printf("性别:%s  ",p->sex);
			printf("年龄:%d  ",p->age);
			printf("家庭住址:%s  ",p->add);
			p=p->next;
		}while(p!=null);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -