当前位置: 首页 > 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,…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...