当前位置: 首页 > news >正文

注册登录学生管理系统小项目

头文件

#ifndef _LOGINLINK_H_
#define _LOGINLINK_H_
#include<myhead.h>
typedef struct 
{int id;char name[20];int age;
}stu,*Pstu;
typedef struct node
{union{int len;stu data;};struct node *next;
}node,*Pnode;
int regist();
int login();
Pnode create();
void input_link(Pnode);
void output_link(Pnode);
void anypos_delete(Pnode,int);
void anypos_insert(Pnode,int);
void anypos_search(Pnode,int);
void anypos_change(Pnode,int);
void head_insert(Pnode);
void rear_insert(Pnode);
void name_delete(Pnode,char*);
void age_change(Pnode,int);
#endif

函数文件

#include "loginlink.h"
int regist()
{char name[20];char code[20];int fp=open("./user.txt",O_CREAT|O_WRONLY|O_APPEND,0664);if(fp==-1){perror("open fp");return -1;}printf("请输入注册账号:");fp=open("./user.txt",O_CREAT|O_WRONLY|O_APPEND,0664);if(fp==-1){perror("open fp");return -1;}scanf("%s",name);printf("请输入注册密码:");scanf("%s",code);
char a=' ';
char b='\n';write(fp,name,strlen(name));write(fp,&a,sizeof(a));write(fp,code,strlen(code));write(fp,&b,sizeof(b));close(fp);printf("注册成功\n");
}
int login()
{ int flag=0;char name[20],code[20],dname[20],dcode[20];FILE *fp=fopen("./user.txt","r");if(fp==NULL){perror("open fp");return -1;}printf("请输入登录账号:");scanf("%s",dname);printf("请输入登录密码:");scanf("%s",dcode);
while(1)
{
int res= fscanf(fp,"%s %s\n",name,code);if(res<0)
{break;
}
if(strcmp(name,dname)==0&&strcmp(code,dcode)==0)
{flag=1;printf("登录成功\n");return 1;
}}
if(flag==0)
{printf("登录失败\n");
}}
Pnode create()
{Pnode L=malloc(sizeof(node));if(L==NULL){printf("申请头节点失败\n");return NULL;}L->len=0;L->next=NULL;printf("初始化成功\n");return L;
}
void input_link(Pnode L)
{stu e;printf("请输入学号:");scanf("%d",&e.id);printf("请输入姓名:");scanf("%s",e.name);printf("请输入年龄:");scanf("%d",&e.age);Pnode p=malloc(sizeof(node));if(p==NULL){printf("申请正常节点失败\n");return; }Pnode t=L;
for(int i=0;i<L->len;i++)
{t=t->next;
}p->data=e;p->next=NULL;t->next=p;L->len++;printf("输入成功\n");	
}
void output_link(Pnode L)
{Pnode t=L;printf("学生信息如下\n");for(int i=0;i<L->len;i++){t=t->next;printf("学号:%d\t姓名:%s\t年龄:%d\n",t->data.id,\t->data.name,t->data.age);}
}
void anypos_delete(Pnode L,int pos)
{if(pos<1||pos>L->len||L==NULL||L->len==0){printf("删除失败\n");return;}Pnode t=L;for(int i=0;i<pos-1;i++){t=t->next;}Pnode Q=t->next;t->next=Q->next;free(Q);Q=NULL;L->len--;printf("删除成功\n");
}
void anypos_insert(Pnode L,int pos)
{if(pos<1||pos>L->len+1||L==NULL){printf("插入失败\n");return;}Pnode t=L;for(int i=0;i<pos-1;i++){t=t->next;}Pnode p=malloc(sizeof(node));printf("请输入插入学生的学号:");scanf("%d",&p->data.id);printf("请输入插入学生的姓名:");scanf("%s",p->data.name);printf("请输入插入学生的年龄:");scanf("%d",&p->data.age);p->next=t->next;t->next=p;L->len++;
printf("插入成功\n");
}
void anypos_search(Pnode L,int pos)
{if(pos<1||pos>L->len||L==NULL||L->len==0){printf("查找失败\n");return;}Pnode t=L;for(int i=0;i<pos;i++){t=t->next;}printf("学号:%d\t姓名:%s\t年龄:%d\n",t->data.id,\t->data.name,t->data.age);}
void anypos_change(Pnode L,int pos)
{if(pos<1||pos>L->len||L==NULL||L->len==0){printf("修改失败\n");return;}Pnode t=L;for(int i=0;i<pos;i++){t=t->next;}printf("请输入你要修改的学生学号:");scanf("%d",&t->data.id);printf("请输入你要修改的学生姓名:");scanf("%s",t->data.name);printf("请输入你要修改的学生年龄:");scanf("%d",&t->data.age);printf("修改成功\n");
}	
void head_insert(Pnode L)
{if(L==NULL){printf("插入失败\n");return;}Pnode p=malloc(sizeof(node));printf("请输入你要插入的学生学号:");scanf("%d",&p->data.id);printf("请输入你要插入的学生姓名:");scanf("%s",p->data.name);printf("请输入你要插入的学生年龄:");scanf("%d",&p->data.age);p->next=L->next;L->next=p;L->len++;printf("插入成功\n");}
void rear_insert(Pnode L)
{if(L==NULL){printf("插入失败\n");return;}Pnode p=malloc(sizeof(node));printf("请输入你要插入的学生学号:");scanf("%d",&p->data.id);printf("请输入你要插入的学生姓名:");scanf("%s",p->data.name);printf("请输入你要插入的学生年龄:");scanf("%d",&p->data.age);Pnode t=L;for(int i=0;i<L->len;i++){t=t->next;}p->next=NULL;t->next=p;L->len++;printf("插入成功\n");
}
void name_delete(Pnode L,char*name)
{int flag=0;int i;Pnode t=L->next;Pnode Q=L;for(i=0;i<L->len-1;i++){if(strcmp(t->data.name,name)==0){flag=1;break;}t=t->next;Q=Q->next;}if(flag==0){printf("删除失败\n");return;}Q->next=t->next;free(t);t=NULL;L->len--;printf("删除成功\n");
}
void age_change(Pnode L,int age)
{int flag=0;int i;Pnode t=L;for(i=0;i<L->len;i++){t=t->next;if(t->data.age==age){flag=1;break;}}if(flag==0){printf("修改失败\n");return;}
t->data.id=10086;
printf("修改成功\n");}

菜单文件

#include "loginlink.h"
int main(int argc, const char *argv[])
{int ch,a,n;Pnode L=create();char name[20];int pos;int age;
while(1)
{printf("\t\t\t1、注册\n");printf("\t\t\t2、登录\n");printf("\t\t\t0、退出\n");
printf("请输入你的选择:");
scanf("%d",&ch);
getchar();
switch(ch)
{case 1:regist();break;case 2: a=login();if(a==1){goto system;}break;case 0: return 0;break;default:printf("输入错误\n");break;
}}
while(1)
{
system:printf("\t\t\t学生管理系统\n");printf("\t\t\t1、输入学生信息\n");printf("\t\t\t2、输出学生信息\n");printf("\t\t\t3、任意位置删除学生信息\n");printf("\t\t\t4、任意位置插入学生信息\n");printf("\t\t\t5、任意位置查找学生信息\n");printf("\t\t\t6、任意位置修改学生信息\n");printf("\t\t\t7、表头插入学生信息\n");printf("\t\t\t8、表尾插入学生信息\n");printf("\t\t\t9、按照姓名查找学生并删除\n");printf("\t\t\t10、按照年龄查找学生并修改学号为10086\n");printf("\t\t\t0、退出学生系统\n");
printf("请输入你的选择:");
scanf("%d",&ch);
getchar();switch(ch){case 1:printf("请输入学生人数:");scanf("%d",&n);for(int i=0;i<n;i++){input_link(L);}break;case 2:output_link(L);break;case 3:printf("请输入删除学生的位置:");scanf("%d",&pos);anypos_delete(L,pos);break;case 4:printf("请输入插入学生的位置:");scanf("%d",&pos);anypos_insert(L,pos);break;case 5:printf("请输入查找学生的位置:");scanf("%d",&pos);anypos_search(L,pos);break;case 6:printf("请输入修改学生的位置:");scanf("%d",&pos);anypos_change(L,pos);		break;case 7:head_insert(L);break;case 8:rear_insert(L);break;case 9:printf("请输入删除学生的姓名:");scanf("%s",name);name_delete(L,name);break;case 10:printf("请输入修改学生的年龄:");scanf("%d",&age);age_change(L,age);break;case 0: return 0;break;default:printf("输入错误\n");break;}}return 0;
}

效果展示

注册功能

登录功能

输入功能

输出功能

删除功能

插入功能

查找功能

修改功能

表头插入

表尾插入

按照姓名查找学生并删除

按照年龄查找学生并修改学号为10086

相关文章:

注册登录学生管理系统小项目

头文件 #ifndef _LOGINLINK_H_ #define _LOGINLINK_H_ #include<myhead.h> typedef struct {int id;char name[20];int age; }stu,*Pstu; typedef struct node {union{int len;stu data;};struct node *next; }node,*Pnode; int regist(); int login(); Pnode create()…...

qt QCompleter详解

1、概述 QCompleter是Qt框架中的一个类&#xff0c;用于为文本输入提供自动完成功能。它可以与Qt的输入控件&#xff08;如QLineEdit、QTextEdit等&#xff09;结合使用&#xff0c;根据用户的输入实时过滤数据源&#xff0c;并在输入控件下方或内部显示补全建议列表。用户可以…...

YOLOv11融合特征细化前馈网络 FRFN[CVPR2024]及相关改进思路

YOLOv11v10v8使用教程&#xff1a; YOLOv11入门到入土使用教程 一、 模块介绍 论文链接&#xff1a;Adapt or Rerish 代码链接&#xff1a;https://github.com/joshyZhou/AST 论文速览&#xff1a;基于 transformer 的方法在图像恢复任务中取得了有希望的性能&#xff0c;因为…...

【前端知识】JS模块规范

JS模块规范 概述CommonJS 规范 代码示例AMD 规范 代码示例ES6 Module 规范 代码示例IIFE 规范 代码示例全局变量 代码示例 CommonJS 模块和 ES6 模块有什么区别&#xff1f;1. 语法和声明方式2. 动态和静态导入3. 循环依赖4. 默认导出和命名导出5. 文件扩展名6. 环境和应用7. 工…...

vue3展示pag格式动态图

提示&#xff1a;如果是webpack环境的&#xff0c;参考&#xff1a;Pag格式在vue3中的简单使用方法_pag文件-CSDN博客 下面展示的是在vite环境下配置pag 1、安装libpag npm i libpag --save 2、安装rollup-plugin-copy npm i rollup-plugin-copy --save 3、封装pag组件 下…...

代码随想录算法训练营第三十九天|Day39 动态规划

198.打家劫舍 视频讲解&#xff1a;https://www.bilibili.com/video/BV1Te411N7SX https://programmercarl.com/0198.%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.html 思路 #define max(a, b) ((a) > (b) ? (a) : (b)) int rob(int* nums, int numsSize) {if(numsSize 0){ret…...

qt QMovie详解

1、概述 QMovie 是 Qt 框架中用于处理动画文件的类。它支持多种动画格式&#xff0c;包括 GIF 和一些常见的视频格式&#xff08;尽管对视频格式的支持依赖于底层平台&#xff09;。QMovie 类主要用于在 QLabel 或 QGraphicsView 等控件中显示动画。通过加载动画文件&#xff…...

数据集整理

系列博客目录 文章目录 系列博客目录1.Visual Genome数据集2.COCO数据集3.Flickr30k数据集10.集合多个数据集的网站 1.Visual Genome数据集 官网链接&#xff1a;https://homes.cs.washington.edu/~ranjay/visualgenome/index.html Visual Genome数据集梳理 Visual Genome数据…...

认证授权基础概念详解

目录 认证 (Authentication) 和授权 (Authorization)的区别是什么&#xff1f; RBAC 模型了解吗&#xff1f; 什么是 Cookie ? Cookie 的作用是什么? 如何在项目中使用 Cookie 呢&#xff1f; 如何在 Spring Boot 中创建和读取 Cookie 创建 Cookie Cookie 到期日期 安全…...

美国地址生成器站点

推荐一&#xff1a;fakexy 官网地址&#xff1a;https://www.fakexy.com 推荐二&#xff1a;好维持官网地址&#xff1a; https://www.dizhishengcheng.com 官网除了支持生成美国地址信息外&#xff0c;还支持生成英国、加拿大、日朩、澳大利亚、德国、法国、意大利、西班牙、巴…...

微信4.0大版本升级跨平台支持界面全面改版

微信4.0公测版现已正式发布&#xff0c;作为微信的大版本升级&#xff0c;新版微信基于全新架构开发&#xff0c;跨平台支持Windows和MAC系统&#xff0c;界面也全面改版&#xff0c;聊天宝也第一时间适配微信4.0&#xff0c;为广大客户提供快捷回复支持 前言 微信4.0公测版现…...

不想贴秋膘?正确打开秋冬运动姿势

这个秋天想要轻装上阵&#xff0c;想健康入秋更要美美入冬怎么破&#xff1f;这期把正确打开秋冬姿势一次性告诉你哦~ 天气变凉&#xff0c;脂肪可要燃起来~想要无痛入秋&#xff0c;最重要的动起来&#xff01;每天都抽出一点时间去运动一下&#xff0c;不光让身体燃起来&…...

【AIGC半月报】AIGC大模型启元:2024.11(上)

【AIGC半月报】AIGC大模型启元&#xff1a;2024.11&#xff08;上&#xff09; (1) Hunyuan-Large&#xff08;腾讯开源大模型&#xff09;(2) FLUX1.1 pro&#xff08;文生图&#xff09;(3) CogVideoX v1.5&#xff08;智谱AI升级文生视频大模型&#xff09; (1) Hunyuan-Lar…...

纯前端生成PDF(jsPDF)并下载保存或上传到OSS

前言 在工作中遇到了一个需求&#xff0c;就是把前端页面生成PDF并保存在本地&#xff0c;因为前端网站可能会展示各种表格&#xff0c;图表信息内容并带有比较鲜艳的色彩样式&#xff0c;如果让后端生产的PDF的话样式可能和前端页面展示的有所差异&#xff0c;所以这个任务就落…...

海外媒体发稿:旅游业媒体推广12个方面的注意事项-华媒舍

1.社交媒体推广过多 社交媒体是旅游业媒体推广的重要途径之一&#xff0c;过分依赖社交媒体将会成为一个常见误区。尽管社交媒体能够帮助旅行目的地提升知名度和曝光度&#xff0c;但如果过度投入精力与资源&#xff0c;可能忽视别的合理推广方式。 2.忽略SEO优化 搜索引擎提…...

分割回文串(DFS)

给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串。返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s "aab" 输出&#xff1a;[["a","a","b"],["aa","b&qu…...

Qt第三课 ----------容器类控件

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

打印菱形(C语言)

程序&#xff1a; #include <stdio.h> int main() { int i,j; for(i1;i<5;i){ for(j0;j<6-i;j){ printf(" ");} for(j0;j<i*2-1;j){ printf("*");} printf("\n");} …...

Oracle 19c 中启用 scott 用户

Oracle 19c 中启用 scott 用户 文章目录 Oracle 19c 中启用 scott 用户正常操作如果ORA-01918: 用户 SCOTT 不存在?/sqlplus/admin/scott.sql 没有 scott.sql 怎么处理 正常操作 连接到 Oracle 数据库&#xff1a; 使用 sqlplus 工具或者其他 SQL 客户端工具&#xff08;如 S…...

git commit 校验

commitlint官方链接 1. npm install --save-dev commitlint/config-conventional commitlint/cli 2. 配置commitlint.config.cjs(项目根目录中&#xff09; module.exports {extends: [commitlint/config-conventional],rules: {type-enum: [2,always,[Feat, Fix, Doc, Style,…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...