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