马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
菜单代码
- #include "head.h"
- int main(int argc, const char *argv[])
- {
- int ch,k;
- //登录注册
- while(1)
- {
- printf("\t1、注册\n");
- printf("\t2、登录\n");
- printf("\t0、退出\n");
-
- printf("请输入你的选择:");
- scanf("%d",&ch);
- getchar();
- switch(ch)
- {
- case 1:
- {
- regist();//注册函数
- }
- break;
- case 2:
- {
- k = login();//登录函数
- }
- break;
- case 0:
- {
- exit(EXIT_SUCCESS);//退出函数
- }
- break;
- }
- if(k == 1)
- {
- break;
- }
- }
- while(1)
- {
- printf("\t------学生管理系统首页------\n");
- printf("\t1、录入学生信息\n");
- printf("\t2、输出学生信息\n");
- printf("\t3、任意位置删除学生信息\n");
- printf("\t4、任意位置插入学生信息\n");
- printf("\t5、任意位置修改学生信息\n");
- printf("\t6、任意位置查找学生信息\n");
- printf("\t7、表头插入一个学生信息\n");
- printf("\t8、表尾插入一个学生信息\n");
- printf("\t9、按照姓名查找学生信息并删除\n");
- printf("\t10、按年龄查找学生并修改学号为10086\n");
- printf("\t0、退出\n");
- printf("请输入你的选择:");
- scanf("%d",&ch);
-
- Plink L;
- switch(ch)
- {
- case 1:
- {
- L = create();
- input_link(L);
- }
- break;
- case 2:
- {
- output_link(L);
- }
- break;
- case 3:
- {
- int pos;
- printf("请输入需要删除的学生位置:");
- scanf("%d",&pos);
- del_pos(L,pos);
- }
- break;
- case 4:
- {
- insert_pos(L);
- }
- break;
- case 5:
- {
- int pos;
- printf("请输入需要修改的学生位置:");
- scanf("%d",&pos);
- edit_pos(L,pos);
- }
- break;
- case 6:
- {
- int pos;
- printf("请输入需要查找的学生位置:");
- scanf("%d",&pos);
- find_pos(L,pos);
- }
- break;
- case 7:
- {
- stu e;
- printf("表头插入一个学生信息\n");
- printf("请输入需要插入学生的信息:");
- scanf("%d%s%d",&e.id,e.name,&e.age);
- insert_front(L,e);
- }
- break;
- case 8:
- {
- stu e;
- printf("表尾插入一个学生信息\n");
- printf("请输入需要插入学生的信息:");
- scanf("%d%s%d",&e.id,e.name,&e.age);
- insert_rear(L,e);
- }
- break;
- case 9:
- {
- int fage;
- printf("请输入需要查找的年龄:");
- scanf("%d",&fage);
- find_age(L,fage);
- }
- break;
- case 10:
- {
- int fage;
- printf("请输入需要查找的年龄:");
- scanf("%d",&fage);
- find_age_id(L,fage);
- }
- break;
- case 0:
- {
- exit(EXIT_SUCCESS);
- }
- break;
- }
- }
- return 0;
- }
复制代码 功能函数代码
- #include "head.h"
- //登录注册部分函数
- int regist()
- {
- char regist_name[20];//注册登录用户名
- char regist_code[20];//注册密码
-
- printf("请输入注册用户名和密码:");
- fgets(regist_name,sizeof(regist_name),stdin);
- //scanf("%s",regist_name);
- fgets(regist_code,sizeof(regist_code),stdin);
- //scanf("%s",regist_code);
-
- regist_name[strlen(regist_name)-1] = '\0';
- regist_code[strlen(regist_code)-1] = '\0';
- //将数据写入用户数据文件
- FILE *fp1;
- fp1 = fopen("./user_data.txt","a");
- if(fp1 == NULL)
- {
- perror("fp1");
- return -1;
- }
- fprintf(fp1,"%s %s ",regist_name,regist_code);
- printf("注册成功!\n");
- fclose(fp1);
- return 0;
- }
- int login()
- {
- char regist_name[20];
- char regist_code[20];
- char login_name[20];
- char login_code[20];
- int login_max = 5;
- for(int i=0;i<login_max;i++)
- {
- printf("这是你第%d次输入,你还有%d次输入机会\n",i+1,login_max-i);
- printf("请输入用户名和密码:");
- fgets(login_name,sizeof(login_name),stdin);
- fgets(login_code,sizeof(login_code),stdin);
- login_name[strlen(login_name)-1] = '\0';
- login_code[strlen(login_code)-1] = '\0';
- FILE *fp2;
- fp2 = fopen("./user_data.txt","r");
- if(fp2 == NULL)
- {
- perror("fp2");
- return -1;
- }
- int flag = 0;
- while(1)
- {
- //从用户数据文件夹提取数据
- int ret = fscanf(fp2,"%s %s",regist_name,regist_code);
- //读取到文件末尾
- if(ret < 0)
- {
- break;
- }
- if(strcmp(regist_name,login_name)==0&&strcmp(regist_code,login_code)==0)
- {
- flag = 1;
- printf("登录成功!\n");
- return 1;
- }
- }
- if(flag == 0)
- {
- printf("登录失败!\n");
- }
- fclose(fp2);
- }
- printf("输入次数已用尽,系统锁定\n");
- while(1);
- return 0;
- }
- //管理学生信息部分函数
- //空间申请函数
- Plink apply()
- {
- Plink p = malloc(sizeof(Link));
- if(p == NULL)
- {
- printf("申请失败\n");
- return NULL;
- }
- return p;
- }
- //创建链表函数
- Plink create()
- {
- Plink p = apply();
- if(p == NULL)
- {
- printf("创建失败!\n");
- return NULL;
- }
- p->len = 0;
- p->next = NULL;
- return p;
- }
- //头插法创建
- void insert_front(Plink L,stu e)
- {
- if(L == NULL)
- {
- printf("插入失败!\n");
- return;
- }
- Plink p = apply();
- if(NULL == p)
- {
- printf("申请正常节点失败!\n");
- }
- p->data = e;
- p->next = L->next;
- L->next = p;
- L->len++;
-
- }
- //信息输入函数
- void input_link(Plink L)
- {
- stu e;
- int n,i;
- printf("请输入学生数量:");
- scanf("%d",&n);
- for(i=0;i<n;i++)
- {
- printf("请输入学生信息:");
- scanf("%d%s%d",&e.id,e.name,&e.age);
- insert_front(L,e);
- }
- }
- //信息输出函数
- void output_link(Plink L)
- {
- if(L == NULL)
- {
- printf("输出失败!\n");
- return;
- }
- Plink t = L->next;
- while(t != NULL)
- {
- printf("学号:%d\t姓名:%s\t年龄:%d\n",t->data.id,t->data.name,t->data.age);
- t = t->next;
- }
- }
- //任意位置删除学生信息
- void del_pos(Plink L,int pos)
- {
-
- if(pos<1||pos>L->len||L == NULL||L->len ==0)
- {
- printf("删除失败!\n");
- return;
- }
- Plink t = L;
- int i;
- for(i=0;i<pos-1;i++)
- {
- t = t->next;
- }
- Plink Q = t->next;
- t->next = Q->next;
- free(Q);
- Q = NULL;
- L->len--;;
-
- }
- //任意位置插入学生信息
- void insert_pos(Plink L)
- {
- int pos,i;
- stu e;
- printf("请输入需要插入信息的位置:");
- scanf("%d",&pos);
- if(pos<1||pos>L->len+1)
- {
- printf("插入失败!\n");
- return;
- }
-
- Plink t = L;
- for(i=0;i<pos-1;i++)
- {
- t = t->next;
- }
- Plink p = apply();
- printf("请输入需要插入的学生信息:");
- scanf("%d%s%d",&e.id,e.name,&e.age);
- p->data = e;
- p->next = t->next;
- t->next = p;
- L->len++;
- }
- //任意位置查找学生信息
- void find_pos(Plink L,int pos)
- {
- Plink t = L;
- if(pos<1||pos>L->len||L->len == 0||L == NULL)
- {
- printf("查找失败!\n");
- return;
- }
- for(int i=0;i<pos;i++)
- {
- t = t->next;
- }
- printf("第%d位学生的信息:学号:%d姓名:%s年龄:%d\n",pos,t->data.id,t->data.name,t->data.age);
- }
- //任意位置修改学生信息
- void edit_pos(Plink L,int pos)
- {
- Plink t = L;
- if(pos<1||pos>L->len||L == NULL||L->len == 0)
- {
- printf("修改失败!\n");
- return;
- }
- for(int i=0;i<pos;i++)
- {
- t=t->next;
- }
- stu e;
- printf("请输入需要修改的学生信息:");
- scanf("%d%s%d",&e.id,e.name,&e.age);
- t->data = e;
- }
- //表头插入一个学生(头插法插入一个学生)直接调用头插法
- //表尾插入一个学生信息
- void insert_rear(Plink L,stu e)
- {
- Plink t = L;
- if(L == NULL)
- {
- printf("插入失败\n");
- return;
- }
- for(int i=0;i<L->len;i++)
- {
- t= t->next;
- }
- Plink p = apply();
- p->data = e;
- p->next = NULL;
- t->next = p;
- L->len++;
- }
- //按年龄查找学生信息
- void find_age(Plink L,int fage)
- {
- int pos=1;
- Plink t = L->next;
- while(t != NULL)
- {
- if(t->data.age == fage)
- {
- printf("%d年龄的学生有:学号:%d姓名:%s年龄:%d\n",fage,t->data.id,t->data.name,t->data.age);
- printf("该年龄的学生位置为:%d\n",pos);
- Plink Q = t->next;
- del_pos(L,pos);
- t = Q;
- printf("删除成功!\n");
- }
- else
- {
- pos = pos+1;
- t = t->next;
- }
- }
- }
- //按年龄查找学生信息,修改学号为10086
- void find_age_id(Plink L,int fage)
- {
- Plink t = L->next;
- while(t != NULL)
- {
- if(t->data.age == fage)
- {
- printf("将%d年龄的学生学号修改为10086\n",fage);
- t->data.id = 10086;
- t=t->next;
- }
- else
- {
- t= t->next;
- }
- }
- }
复制代码 头文件代码
- #ifndef _HEAD_H_
- #define _HEAD_H_
- #include <myhead.h>
- #define MAX 30
- typedef struct students
- {
- int id;
- char name[20];
- int age;
- }stu;
- typedef struct node
- {
- union
- {
- int len;
- stu data;
- };
- struct node *next;
- }Link,*Plink;
- int regist();
- int login();
- Plink apply();
- Plink create();
- void insert_front(Plink,stu);
- void input_link(Plink);
- void output_link(Plink);
- void del_pos(Plink,int);
- void insert_pos(Plink);
- void find_pos(Plink,int);
- void edit_pos(Plink,int);
- void insert_rear(Plink,stu);
- void find_age(Plink,int);
- void find_age_id(Plink,int);
- #endif
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |