班级管理系统续集(C语言)

article/2025/9/12 7:24:38

我的上一个博客里面,是大概把这个课程设计的一些思路给讲了一下。

但是大家是不是期待我的密码登录呢?

哈哈哈,其实我也就是写了一个默认密码123456.

如果大家想要有独自的密码的话,这里我提供一个思路,那就是我们可以在结构体里面多加一个密码变量就行啦。

话不多说,我们直接上登录密码相关代码的实现:

int a=123456;//默认密码123456 
int login()			//我们可以给一个默认的密码; 
{					printf("\t**********请输入登录系统密码**********\n");while(1){scanf("%d", &key);if(key==a){printf("\t*****密码正确*****\n");return 1;//当密码正确时,我们返回1,进入系统 }printf("\t*****密码错误,请重新输入*****\n"); }//while(login()!=1);//当返回值不是1时,就重新输入密码 system("cls");//此处清屏作用; 
}

下面就是控制台的输出(也就是演示结果):

 

那么接下来我就接上我昨天说的,把完整的代码给你们吧,然后演示界面我也会一并给出,大家可以做个参考:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<process.h>
#define  N  66//此处直接用宏定义定义学生人数
int key;
struct date//出生年月的结构体变量 
{int year;int month;int day;
}; 
struct Student
{long int num;//学号char name[20];//姓名char sex[3];//性别struct date birthday;int age; //年龄char bz[50];//备注 struct Student *pNext;//首先我们创造一个节点,表示每一个学生,//此处指向下一个节点的指针 }ss[N];void menu()//菜单界面 
//int main ()
{//int c; printf("\t********欢迎进入登录班级档案管理系统********\n");printf("\t|***********1.学生基本信息录入*************|\n");printf("\t|***********2.学生基本信息显示*************|\n");printf("\t|***********3.学生基本信息保存*************|\n");printf("\t|***********4.学生基本信息删除*************|\n");printf("\t|***********5.学生基本信息修改*************|\n");printf("\t|***********6.学生基本信息查询*************|\n");printf("\t|***********    7.退出系统    *************|\n");printf("\t|*********请输入您要执行的功能(0~7)********|\n"); /*scanf("%d", &c);return c;*/
}
int a=123456;//默认密码123456 
int login()			//我们可以给一个默认的密码; 
{					printf("\t**********请输入登录系统密码**********\n");while(1){scanf("%d", &key);if(key==a){printf("\t*****密码正确*****\n");return 1;//当密码正确时,我们返回1,进入系统 }printf("\t*****密码错误,请重新输入*****\n"); }//while(login()!=1);//当返回值不是1时,就重新输入密码 system("cls");//此处清屏作用; 
}
struct date* DATA;struct Student* pEnd, *pNew;struct Student* pHead=NULL;int iCount;//全局变量来表示链表长度struct Student* Create()//我们创建一个链表,来录入信息 {/*struct Student* pHead=NULL;//初始化链表头指针为空 struct Student* pEnd, *pNew;*/iCount=0;//初始化链表长度;pEnd=pNew=(struct Student*)malloc(sizeof(struct Student));
//	printf("请输入学生信息:\n");scanf("%ld", &pNew->num);scanf("%s", &pNew->name);scanf("%s", &pNew->sex);scanf("%d", &pNew->birthday.year);scanf("%d", &pNew->birthday.month);scanf("%d", &pNew->birthday.day);scanf("%s", &pNew->bz);while(1/*pNew->num!=0*/)//如果学号为零,就停止输入; {iCount++;//iCount自增,表示链表中节点增加,同时也表示,学生的人数; if(iCount==1){pNew->pNext=pHead;//使得头指针为空; pEnd=pNew;//跟踪加入新的节点 ; pHead=pNew;//头指针指向首节点 ; }else{pNew->pNext=NULL;//新节点的指针头为空 pEnd->pNext=pNew;//原来的尾节点指向新的节点 pEnd=pNew;	//pEnd指向新的节点 } pNew=(struct Student*)malloc(sizeof(struct Student));//在此分配节点内存空间scanf("%ld", &pNew->num);scanf("%s", &pNew->name);scanf("%s", &pNew->sex);scanf("%d", &pNew->birthday.year);scanf("%d", &pNew->birthday.month);scanf("%d", &pNew->birthday.day);  //scanf("%d", &pNew->age=2022-pNew->birthday.year);scanf("%s", &pNew->bz);//printf("%d",pNew->num);if(pNew->num==0){printf("录入成功!\n"); return pHead;}}  free(pNew);//释放没有用到的空间; return pHead;} void  Print(struct Student* pHead)//我们现在用链表输出数据; {struct Student *pTemp;//这是我们创建的临时在循环所需要的指针;int ilndex=1;//表示链表中节点的序号printf("*****the List has %d members:*****\n", iCount);//消息提示 printf("\n"); //pTemp=pHead;//我们定义的指针得到首节点的地址for(pTemp=pHead;pTemp;pTemp=pTemp->pNext){printf("the NO %d member is :\n", ilndex);printf("     学号:%5ld", pTemp->num);printf("     姓名:%5s", pTemp->name);printf("     性别:%5s", pTemp->sex);printf("     年:%5d", pTemp->birthday.year);printf("     月:%5d", pTemp->birthday.month);printf("     日:%5d", pTemp->birthday.day);printf("     年龄:%5d", pTemp->age=(2022-pTemp->birthday.year));printf("     备注:%5s", pTemp->bz);printf("\n");ilndex++;} }void save1(struct Student* pHead)//n就相当于我们学生的人数,与N相关联 {//保存基本信息函数; FILE *fp;struct Student *ptr;//此处我们定义一个新的指针,去遍历输入内容保存文件里面 if((fp=fopen("keshe.txt", "w+"))==NULL)//以只写的方式打开课设文件 {printf("file cannot open!");exit(0);}for(ptr=pHead;ptr;ptr=ptr->pNext){fprintf(fp,"     学号:%5ld", ptr->num);fprintf(fp,"     姓名:%5s", ptr->name);fprintf(fp,"     性别:%5s", ptr->sex);fprintf(fp,"     年:%5d 月:%5d 日:%5d", ptr->birthday.year,ptr->birthday.month,ptr->birthday.day);  fprintf(fp,"     年龄:%5d", ptr->age=(2022-ptr->birthday.year));fprintf(fp,"     备注:%5s", ptr->bz);fprintf(fp,"\n");}fclose(fp); }void search();//我们定义查询函数,这是总的查询函数,做个函数声明 void find1()//按学号查询; {int isprime=0;//此变量用来查询是否查找成功 long int xhcx;printf("请输入你要查询的学号:\n"); scanf("%ld", &xhcx);struct Student *ptr1;for(ptr1=pHead;ptr1;ptr1=ptr1->pNext){if(xhcx==ptr1->num){printf("恭喜你,确有此人!\n");printf("学号:%ld,姓名:%s,年龄:%d,备注:%s\n", ptr1->num,ptr1->name,ptr1->age,ptr1->bz);		  	isprime=1;break;}	}if(isprime==0){printf("查询无果!\n");}} void find2()//按姓名查询; {int isprime1=0;char xmcx[20];printf("请输入你要查询的姓名:\n");scanf("%s", &xmcx);struct Student *ptr2;for(ptr2=pHead;ptr2;ptr2=ptr2->pNext){if(strcmp(xmcx,ptr2->name)==0){printf("恭喜你,确有此人!\n");printf("学号:%ld,姓名:%s,年龄:%d,备注:%s\n", ptr2->num,ptr2->name,ptr2->age,ptr2->bz);		  	isprime1=1;break;}	}if(isprime1==0){printf("查询无果!\n");}}void find3()//按性别查询; {int isprime2=0;char xbcx[3];printf("请输入你要查询的性别:\n");scanf("%s", &xbcx);struct Student *ptr3;for(ptr3=pHead;ptr3;ptr3=ptr3->pNext){if(strcmp(xbcx,ptr3->sex)==0)//我们性别还没搞好; {printf("恭喜你,确有此人!\n");printf("学号:%ld,姓名:%s,年龄:%d,备注:%s\n", ptr3->num,ptr3->name,ptr3->age,ptr3->bz);		  	isprime2=1;}	}if(isprime2==0){printf("查询无果!\n");}}void find4()//按年龄查询; {struct Student *ptr4;int isprime3=0;int nlcx;printf("请输入你要查询的年龄:\n");scanf("%d", &nlcx);for(ptr4=pHead;ptr4;ptr4=ptr4->pNext){if(nlcx==ptr4->age){printf("恭喜你,确有此人!\n");printf("学号:%ld,姓名:%s,年龄:%d,备注:%s\n", ptr4->num,ptr4->name,ptr4->age,ptr4->bz);		  	isprime3=1;}	}if(isprime3==0){printf("查询无果!\n");}}void search(){//查询信息函数 struct Student* pHead;printf("\t*****请输入你要查询的方式*****\n");printf("\t***1.按学号查询***\n");printf("\t***2.按姓名查询***\n");printf("\t***3.按性别查询***\n");printf("\t***4.按年龄查询***\n");int m;do{ scanf("%d", &m);switch(m){case 1:find1();break;case 2:find2();break;case 3:find3();break;case 4:find4();break;default:printf("输入错误,请重新输入!\n");break;	}}while(m!=0);} /*struct Student* Insert(struct Student *pHead){struct Student* pNew;}*/void Delete(struct Student *pHead, int ilndex)//ilndex表示要删除的学号; {//学生基本信息删除函数 struct Student* pTemp;pTemp=pHead;for(pTemp; ;pTemp=pTemp->pNext){/*	if(pHead->num==ilndex){pHead=pHead->pNext;break;}*/if(pTemp->pNext->num==ilndex&&pTemp->pNext->pNext==NULL){pTemp->pNext=NULL;break;}//这个判断是为了删除尾节点; if(pTemp->pNext->num==ilndex){pTemp->pNext=pTemp->pNext->pNext;break;}//这个是为了删除中间的信息; }} void modify(){//修改信息函数 int xgxx, isprime1=1; struct Student *xg;//我们定义一个修改的指针 xg=pHead;//赋给它头指针; printf("\t***请输入你要修改哪项信息***\n");printf("\t***1.修改学号***\n");printf("\t***2.修改姓名***\n");//printf("\t***3.修改性别***\n");printf("\t***3.修改年龄***\n");do{ scanf("%d", &xgxx);switch(xgxx){case 1: long int xh1;printf("\t***请输入你要修改的学号***\n");scanf("%ld", &xh1);for(xg; xg ;xg=xg->pNext){if(xg->num==xh1){printf("\t***请输入你修改后的学号***\n");long int xh2; scanf("%ld", &xh2);xg->num=xh2;printf("\t***修改成功!***\n");break;}}isprime1=0;break;case 2: char xm1[20];printf("\t***请输入你要修改的姓名***\n");scanf("%s", &xm1);for(xg; xg ;xg=xg->pNext){if(strcmp(xg->name,xm1)==0){printf("\t***请输入你修改后的姓名***\n");char xm2[20]; scanf("%s", &xm2);strcpy(xg->name,xm2);printf("\t***修改成功!***\n");break;}}isprime1=0;break;//case 3:find3();break;case 3:int nl1;printf("***\t请输入你要修改的年龄***\n");scanf("%d", &nl1);for(xg; xg ;xg=xg->pNext){if(xg->age==nl1){printf("\t***请输入你修改后的年龄***\n");long int nl2; scanf("%ld", &nl2);xg->age=nl2;printf("\t***修改成功!***\n");break;}}isprime1=0;break;default:printf("输入错误,请重新输入!\n");break;	}}while(isprime1!=0);}long int xh;//这是我们定义的一个全局变量,主要就是我们删除时,我们是学号删除。 
main()
{struct Student *pHead;//定义头节点int hh;if(login()==0){return 0;}menu();FILE *fp2;if((fp2=fopen("keshe.txt", "r+"))==NULL){printf("***文件打开失败!***\n");exit(0);}while(1){scanf("%d", &hh);switch(hh){case 1:printf("请输入学生信息:\n");pHead=Create();//创建节点//printf("读取中...\n");//插进去完全就是为了逼格高一点 //Sleep(1000);break;case 2:Print(pHead);break;//输出链表;			case 3:save1(pHead); break;//保存信息函数; case 4:printf("请输入你要删除学生的学号:\n");scanf("%ld", &xh);Delete(pHead,xh);break;  case 5:modify();break;//修改信息函数 case 6:search();break; //查询信息函数,里面嵌套四个小函数。case 7:printf("\t***安全退出系统,欢迎下次使用!***\n");break; default:printf("*****输入错误,请重新输入你要选择的服务*****\n");break; } Sleep(3000);system("cls");menu();}
}

以上就是完整的整个课设的代码了。有一些小小的bug。这个只能靠各位自己解决啦。我只能写到这种程度了。

那么演示的第一张我已经放在了登录密码那里了,就在上面哈。

①.学生基本信息的录入

先输入1,进入功能1.这里我们就可以开始输入学生的基本信息了。

 这里其实大家也可以看出来我的一个小毛病。那就是我们录入的时候我们啥时候结束呢?

这个时候,我奇怪的想法开始作祟了。我直接来个循环,遇到0就给我结束,哈哈哈!亲测有效。

②.学生基本信息的输出(显示):这里输入2就好了。(因为我用了闪屏功能(这纯纯装个逼))

 ③.学生基本信息的保存:这里也是输入一个3就好了。这里会保存到文件里面,所以大家一定要找得到你的文件在哪里。哈哈哈!

 ④.学生基本信息的删除:这里输入4,然后会有提示信息:跟着提示输入就好啦!

温馨提示:因为我这里是有bug的,不能删除第一个,不能删除第一个,不能删除第一个,(重要的事情说三遍)。切记切记!!!

 这里我们已经把学号为2的人删掉了,也就是李四啦!为了检验我们是否删除成功,我们在显示一边学生的基本信息(只需要输入2 就好啦!):

 这里也能看出,没有错误。

⑤.学生基本信息的修改:这里输入5,然后跟着提示输入就好啦!有好几种呢!这里就演示一种。

 修改成功了之后,我们也要为了检查一下是否真的修改成功了,我们这是也是只需要输入2就可以查看学生信息了。

第一个学生的学号变成了5,说明我们修改成功了 。

⑥.学生基本信息的查询:按下6,然后跟着提示做就好啦!

差点忘记说六怎么结束了:

我们只需要输入0,然后它会显示驶入错误,别动它就好啦!他三秒之后就会清屏的。

 ⑦.我就不多说了吧,一个小小的退出系统啦!(很简单的)

 最后,这个班级档案管理系统,到这里也已经算是较完善了。如果有什么不好的地方,也欢迎大家指正呀!

 


http://chatgpt.dhexx.cn/article/BjeKIT55.shtml

相关文章

数据结构大作业-班级考勤管理系统

简介 此程序是本人大二时期的数据结构大作业&#xff0c;初学数据结构和算法后所编写的一个程序&#xff0c;是一个班级考勤管理系统&#xff0c;可实现班级考勤信息的管理。 本程序使用C语言编写&#xff0c;使用Visual Studio 2019进行开发&#xff0c;程序中使用到了数据结…

C语言实现班级档案管理系统

C语言课设题目要求&#xff1a; 根据自己所在班级人数&#xff0c;通过该系统实现对该班级学生的档案信息的管理&#xff0c;信息包括&#xff1a;学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;身高&#xff0c;体重&#xff0c;省份&#xff0c;专业&…

C语言课设--班级档案管理系统(设计文档+源码)

文章目录 一、作业要求1. 问题描述2. 功能要求 二、问题分析1.数据结构&#xff08;1&#xff09;学生信息&#xff08;2&#xff09;数据存放① 结构体数组② 链表 &#xff08;3&#xff09;储存结构设计 2.模块划分3.模块功能分析&#xff08;1&#xff09;主控模块——用户…

基于Python班级管理系统毕业设计-附源码171809

目 录 摘要 1 绪论 1.1研究背景 1.2研究的目的与意义 1.3系统开发技术的特色 1.4论文结构与章节安排 2 基于Python班级管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 2.3 系统功能分析 2.3.1 功能性…

Python+班级管理系统 毕业设计-附源码171809

目 录 摘要 1 绪论 1.1研究背景 1.2研究的目的与意义 1.3系统开发技术的特色 1.4论文结构与章节安排 2 基于Python班级管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 2.3 系统功能分析 2.3.1 功能性…

C语言课设班级档案管理系统(大作业)

一、设计功能(文章仅供参考) 1、本系统采用一个包含N个数据的结构体数组&#xff0c;每个数据的结构应当包括&#xff1a;学号、姓名、性别、年龄、备注。 2、本系统显示这样的菜单&#xff1a; 请选择系统功能项&#xff1a; a. 学生基本信息录入 b. 学生基本信息显示 c. 学生…

C语言:班级成绩管理系统

文章目录 前言&#xff1a;程序要求说明代码main.cdef.cmyIO.cfile.cmenu.cfunction.c 前言&#xff1a; 有朋友最近在做c语言课设&#xff0c;要求写一个班级成绩管理系统&#xff0c;便写份简单的代码来玩。代码原创&#xff0c;未参考任何其他人的代码 程序要求 说明 本程序…

班级档案管理系统(C语言)

这是本人基本学完C语言时做的一个课程设计&#xff0c;希望能够帮到大家&#xff08;设计要求如上图片&#xff09;。 怎么说呢&#xff1f;这个也是我第一次写课程设计&#xff0c;准确来说&#xff0c;对于第一次确实时有难度的。 现在我要分享我写这个课程设计的一些心得分…

学生信息管理系统----班级信息管理

嵌入班级信息到System页面 这一部分要实现班级信息的相关操作。   还是在名为servlet的package下创建一个显示班级列表的Servlet——ClazzServlet。这样取名字是避免与系统关键字class起冲突&#xff0c;以免出现不必要的麻烦。 public class ClazzServlet extends HttpServ…

数据库系统及应用——班级管理系统

我的GitHub网址 数据库技术 在本次设计中&#xff0c;用SQL Server建了六个表用来存储基本信息&#xff0c;分别为Tb_Student &#xff08;学生信息表&#xff09;、Tb_Course&#xff08;课程信息表&#xff09;、Tb_Course2&#xff08;选修课程表&#xff09;、Tb_ScoreSt…

班级管理系统的设计与实现/java/SSM

SSM班级管理系统 摘 要 随着社会的发展&#xff0c;计算机的优势和普及使得SSM班级管理系统的开发成为必需。SSM班级管理系统主要是借助计算机&#xff0c;通过对首页、商铺信息、班级综合评测数据、综合评测数据商品、新闻资讯、我的、跳转到后台、购物车等信息进行管理。减…

学生管理系统

学生信息管理系统设计 一、需求分析 1、开发背景&#xff1a; 信息化已经渗透到我们生活的方方面面&#xff0c;学校信息化的发展也是一种不可避免的趋势。伴随着高等院校招生规模的不断扩大&#xff0c;传统人工管理信息的方法不但不能满足这种管理上的需求&#xff0c;而且…

基于Java的班级管理系统的设计与实现(论文+源码)_kaic

摘 要 伴随着信息技术不断的飞速发展&#xff0c;信息技术给现在的生活也在带来翻天覆地的变化。信息时代的到来已经成为一种趋势&#xff0c;人类的发展历史正在进入到一个新的时代。信息技术已经在生活中的各个领域得到普及以及被应用。班级管理在信息技术发展之前一直都是…

班级管理系统(SSM+LayUI)

项目预览 1.项目预览 获取项目q 2300852495&#xff08;有偿&#xff09; 项目预览地址 项目源码 角色分类账号密码管理员1705145123老师170507111123学生170507106123 2.系统功能介绍 3.开发环境 系统开发及运行环境 班级管理系统开发环境如下&#xff1a; 操作系统&…

C++课程设计班级管理系统

整体代码展示&#xff1a;借鉴作业的同学可以直接复制粘贴ctrlACV一气呵成&#xff0c;代码可以直接运行。如果怕和同学的重复了再改下参数名就可以&#xff0c;不过记得先备份一份哦。 如果觉得对你们有用还请不要忘记一键三连哟。ヾ(≧▽≦*)o #include <iostream> #i…

c语言编译器好玩的代码,读懂这4个函数,528行代码,你也可以实现一个C语言编译器...

引言 自从华为方舟编译器横空出世,一举成为全民网红之后,一下子点燃了大家对编译器的热情。不过,对于大多数人来说,编译器依旧是遥不可及的神秘存在。 今天,介绍一个国外大牛写的C语言编译器 - C4,揭开编译器的神秘面纱。原来实现一个具备基本功能的编译器,竟是如此简单…

c语言编译器 dev,1.1开篇一:C语言编译器的选择---Dev C++

目录&#xff1a; 1.Dev C的下载&安装&#xff1a; 2.Dev C的使用&#xff1a; 前言&#xff1a; 那么多编译器&#xff0c;为什么选择Dev C&#xff1f;理由有下 理由一&#xff1a;Dev C 体积比较小&#xff0c;不占用太多的内存。 理由二&#xff1a;Dev C 打开速度快&a…

C语言推荐编译器

前言&#xff1a;vs虽然好,但是2015往后的版本相对使用起来比较复杂,对小白不太友好 既然是第一次打C语言,就要使用一个简洁明了,通俗易懂的编译器,这里 推荐 小熊猫devC,这非常的简洁,没有过多的插件,点击下方链接就可以下载&#xff01; DevC官方下载-DevC中文最新版下载(…

C语言编译器Visual Studio官方正版下载安装

首先打开微软官网。 微软官网https://www.microsoft.com/zh-cn/进入Visual Studio的产品介绍页。 一般我们用的是win系统。 点击下载。 选择社区版&#xff0c;因为其他版本要花钱&#xff0c;专业版和企业版。 打开安装包。 选择c&#xff0c;确定没选错&#xff0c;接下来进行…

【Linux03-基本工具之GCC】Linux下的C语言编译器

前言 接上篇&#xff0c;继续学习基本工具。 三、gcc 是什么 Linux下的C语言编译器&#xff08;C的编译器是g&#xff0c;用法选项基本一样&#xff09;。 既然是编译器&#xff0c;我们就再来加点餐…… 链接其实分为两种类型&#xff1a;静态链接和动态链接&#xff0…