学生管理系统菜单界面

stu.h

#ifndef _STU_H_
#define _STU_H_
#include <myhead.h>

typedef struct//学生信息表
{
	int id;
	char name[20];
	int age;
}stu,*stud;

typedef struct node//链表
{
	union
	{
		int len;
		stu data;
	};
	struct node *next;
}Link,*Plink;

Plink create();//创建节点
void regist();
int  login();
void Link_input(Plink,stu);
void Link_output(Plink);
void anypos_delete(Plink,int);
void anypos_insert(Plink,stu,int);
void Link_anypos_change(Plink,int);
void Link_anypos_find(Plink,int);
void Link_anypos_namedelete(Plink,char *);
void Link_anypos_agechange(Plink,int);
#endif

main.c

#include "stu.h"
int main(int argc, const char *argv[])
{

	Plink L= create();
	stu e;
	char name[20];
	int ch,n,i,pos,age,key = 999;
	while(key != 1)
	{
		printf("---学生信息管理系统---\n");
		printf("---1.注册---\n");
		printf("---2.登录---\n");
		printf("---0.退出---\n");
		printf("输入数字:\n");
		scanf("%d",&ch);
		getchar();
		switch(ch)
		{
			case 1:
				regist();
			break;			
			case 2:
			key = login();
			break;			
			case 0:
				exit(0);
			break;						

		}
	}
	while(1)
	{
		printf("---1.录入学生信息\n");
		printf("---2.输出学生信息\n");
		printf("---3.任意位置删除学生信息\n");
		printf("---4.任意位置插入学生信息\n");
		printf("---5.任意位置改变学生信息的位置\n");
		printf("---6.要查找学生信息的位置\n");
		printf("---7.表头插入一个学生信息\n");
		printf("---8.表尾插入一个学生信息\n");
		printf("---9.按照姓名查找学生并删除\n");
		printf("---10.按照年龄查找学生并修改其学号为10086\n");
		printf("---0.退出程序\n");
		printf("---请输入您的选项:");
		scanf("%d",&ch);
		getchar();
		switch(ch)
		{
			case 1:
				printf("请输入学生人数:");
				scanf("%d",&n);
				for(i= 0;i<n;i++)
				{
					printf("请输入第%d个学生信息\n",i+1);
					printf("请输入学号:");
					scanf("%d",&e.id);
					printf("请输入姓名:");
					scanf("%s",e.name);
					printf("请输入年龄:");
					scanf("%d",&e.age);
					Link_input(L,e);
				}
				break;
			case 2:
				Link_output(L);
				break;
			case 3:
				printf("请输入你要删除的位置:");
				scanf("%d",&pos);
				anypos_delete(L,pos);
				break;
			case 4:
				printf("请输入你要插入的位置:");
				scanf("%d",&pos);
				anypos_insert(L,e,pos);
				break;
			case 5:
				printf("请输入要改变学生信息的位置:");
				scanf("%d",&pos);
				Link_anypos_change(L,pos);
				break;
			case 6:
				printf("请输入要查找学生信息的位置:");
				scanf("%d",&pos);
				Link_anypos_find(L,pos);
				break;
			case 7:
					printf("请输入学号:");
					scanf("%d",&e.id);
					printf("请输入姓名:");
					scanf("%s",e.name);
					printf("请输入年龄:");
					scanf("%d",&e.age);
				anypos_insert(L,e,1);
				break;
			case 8:
					printf("请输入学号:");
					scanf("%d",&e.id);
					printf("请输入姓名:");
					scanf("%s",e.name);
					printf("请输入年龄:");
					scanf("%d",&e.age);
					anypos_insert(L,e,L->len+1);

				break;
			case 9:
				printf("请输入要查找学生的名字:");
				scanf("%s",name);
				Link_anypos_namedelete(L,name);
				break;
			case 10:
				printf("请输入要学生的年龄并修改其学号为10086");
				scanf("%d",&age);
					Link_anypos_agechange(L,age);
				break;
			case 0:
				exit(0);
				break;
			
		}
	}
		
	return 0;
}

stu.c

#include "stu.h"
void regist()
{
	
	char name[20],code[20];
	printf("输入注册的账号:\n");
	fgets(name,sizeof(name),stdin);
	printf("输入密码:\n");
	fgets(code,sizeof(code),stdin);

	name[strlen(name)-1]='\0';
	code[strlen(code)-1]='\0';//读取到/n输入

	FILE *fp;
	fp = fopen("./user.txt","a");
	if(fp == NULL)
	{
		perror("fopen");
		return ;
	}
	fprintf(fp,"%s %s ",name,code);
	printf("注册成功");
	fclose(fp);

}
int  login()
{
	char name[20],code[20],dname[20],dcode[20];
	printf("输入要登录的账号:\n");
	fgets(dname,sizeof(dname),stdin);
	printf("输入账号正确的密码:\n");
	fgets(dcode,sizeof(dcode),stdin);
	dname[strlen(dname)-1]='\0';
	dcode[strlen(dcode)-1]='\0';

	FILE *fp;
	fp = fopen("./user.txt","r");
	if(fp == NULL)
	{
		perror("fopen");
		return -1;
	}
	while(1)
	{
		int t = fscanf(fp,"%s %s ",name,code);
		if(t<0)
		{
			break;
		}
		if(strcmp(name,dname)==0&strcmp(code,dcode)==0)
		{
			printf("用户登录成功\n");
			return 1;
		}
	}
	return -1;
}
Plink apply()
{
	Plink L = malloc(sizeof(Link));
	if(L==NULL)
	{
		printf("申请失败\n");
		return NULL;

	}
	return L;
}
Plink create()
{
	Plink L = apply();
	if(L==NULL)
	{
		printf("申请失败\n");
		return NULL;

	}
	L->len = 0;
	L->next = NULL;
	printf("初始化成功\n");
	return L;
}

void Link_input(Plink L,stu e)
{
	int i;
	Plink p =apply();
	if(p==NULL)
	{
		printf("申请新节点失败\n");
	}
Plink t = L;
for(i=0;i<L->len;i++)
{
	t=t->next;
}
p->data = e;
p->next = NULL;
t->next=p;
L->len++;
printf("输入成功\n");
}

void Link_output(Plink L)
{
	int i;
	Plink t = L;
	printf("学生的信息如下\n");
	for(i=0;i<L->len;i++)
	{
		t=t->next;
		printf("学号\t姓名\t年龄\n");
		printf("%d\t%s\t%d\n",t->data.id,t->data.name,t->data.age);
	}
}
void anypos_delete(Plink L,int pos)
{
	int i;
	Plink t = L;
	if(pos<1||pos>L->len||L->len==0||L==NULL)
	{
		printf("删除失败\n");
	}
	for(i = 0;i<pos-1;i++)
	{
		t=t->next;
	}
	Plink Q = t->next;
	t->next = t->next->next;
	free(Q);
	Q=NULL;
	L->len--;
	printf("删除成功\n");
}


void anypos_insert(Plink L,stu e,int pos)
{
	int i;
	Plink p = apply();
	Plink t = L;
	if(pos<1||pos>L->len+1||L->len==0||L==NULL)
	{
		printf("插入失败\n");
	}
	else
	{
		for(i = 0;i<pos-1;i++)
		{
			t= t->next;
		}
		p->data = e;
		p->next = t->next;
		t->next=p;
		L->len++;
	}
	printf("插入成功\n");
}

void Link_anypos_change(Plink L,int pos)
{
	int i;
	Plink t = L;
	if(pos<1||pos>L->len||L->len==0||L==NULL)
	{
		printf("修改失败\n");
		return ;
	}
	for(i = 0;i<=pos-1;i++)
	{
		t=t->next;
	}
	printf("请输入学生\t姓名\t年龄:\n");
	scanf("%d%s%d",&t->data.id,t->data.name,&t->data.age);
	printf("修改成功\n");
}

void Link_anypos_find(Plink L,int pos)
{
	int i;
	Plink t = L;
	if(pos<1||pos>L->len||L->len==0||L==NULL)
	{
		printf("查找失败\n");
		return ;
	}
	for(i = 0;i<pos-1;i++)
	{
		t= t->next;
	}
	printf("该学生信息是  学号:%d 姓名 %s 年龄 %d\n",t->data.id,t->data.name,t->data.age);
}

void Link_anypos_namedelete(Plink L,char s[])
{
	Plink t = L;
	int pos =0;
	while(t->next!=NULL)
	{
		t=t->next;
		pos++;
		if(strcmp(s,t->data.name)==0)
		{
			anypos_delete(L,pos);
		}
	}
}

void Link_anypos_agechange(Plink L,int age)
{
	Plink t = L;
	while(t->next!=NULL)
	{
		t=t->next;
		if(t->data.age==age)
		{
			t->data.id=10086;
			printf("修改成功\n");
		}
	}
}

运行:

ubuntu@ubuntu:~/2$ gcc *.c
ubuntu@ubuntu:~/2$ ./a.out 
初始化成功
---学生信息管理系统---
---1.注册---
---2.登录---
---0.退出---
输入数字:
1
输入注册的账号:
111
输入密码:
aaa
注册成功---学生信息管理系统---
---1.注册---
---2.登录---
---0.退出---
输入数字:
1
输入注册的账号:
222
输入密码:
bbb
注册成功---学生信息管理系统---
---1.注册---
---2.登录---
---0.退出---
输入数字:
2
输入要登录的账号:
111
输入账号正确的密码:
aaa
用户登录成功
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:1
请输入学生人数:3
请输入第1个学生信息
请输入学号:111
请输入姓名:a
请输入年龄:11
输入成功
请输入第2个学生信息
请输入学号:222
请输入姓名:b
请输入年龄:12
输入成功
请输入第3个学生信息
请输入学号:333
请输入姓名:c
请输入年龄:13
输入成功
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:2
学生的信息如下
学号	姓名	年龄
111	a	11
学号	姓名	年龄
222	b	12
学号	姓名	年龄
333	c	13
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:3
请输入你要删除的位置:2
删除成功
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:2
学生的信息如下
学号	姓名	年龄
111	a	11
学号	姓名	年龄
333	c	13
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:4
请输入你要插入的位置:2
插入成功
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:2
学生的信息如下
学号	姓名	年龄
111	a	11
学号	姓名	年龄
333	c	13
学号	姓名	年龄
333	c	13
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:5
请输入要改变学生信息的位置:2
请输入学生	姓名	年龄:
222
b
12
修改成功
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:2
学生的信息如下
学号	姓名	年龄
111	a	11
学号	姓名	年龄
222	b	12
学号	姓名	年龄
333	c	13
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:6
请输入要查找学生信息的位置:3
该学生信息是  学号:222 姓名 b 年龄 12
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:2
学生的信息如下
学号	姓名	年龄
111	a	11
学号	姓名	年龄
222	b	12
学号	姓名	年龄
333	c	13
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:7
请输入学号:444
请输入姓名:4
请输入年龄:14
插入成功
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:10
请输入要学生的年龄并修改其学号为10086444
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:2
学生的信息如下
学号	姓名	年龄
444	4	14
学号	姓名	年龄
111	a	11
学号	姓名	年龄
222	b	12
学号	姓名	年龄
333	c	13
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:10
请输入要学生的年龄并修改其学号为1008614
修改成功
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:2
学生的信息如下
学号	姓名	年龄
10086	4	14
学号	姓名	年龄
111	a	11
学号	姓名	年龄
222	b	12
学号	姓名	年龄
333	c	13
---1.录入学生信息
---2.输出学生信息
---3.任意位置删除学生信息
---4.任意位置插入学生信息
---5.任意位置改变学生信息的位置
---6.要查找学生信息的位置
---7.表头插入一个学生信息
---8.表尾插入一个学生信息
---9.按照姓名查找学生并删除
---10.按照年龄查找学生并修改其学号为10086
---0.退出程序
---请输入您的选项:0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值