提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、注册模块
    • 1.注册模块
    • 2.判断账号是否存在
    • 3.判断账号是否未被注册
    • 4.注册成功的账号的保存
  • 二、登录模块
    • 1.登录
  • 三.学生查询成绩
  • 四.学生查询本班成绩
  • 总结

前言

这里是学生管理系统的一些小模块的实现:


提示:以下是本篇文章正文内容,下面案例可供参考

一、注册模块

注册模块应该怎样写呢?
1.首先需要创建一个文件来保存已经注册了的账号及密码,这样就不需要每次登录时都重新注册,只需要登录的时候在文件中查看这个账号是否存在

2.然后我们需要判断每次输入的账号是否合法。(指输入的学生学号是否真实存在)这时候我们也需要一个文件,来存储所有可以用来注册的学生信息。

所以我们需要判断用户输入的账号是否对应真实存在的学生,并且这个账号未被注册,还需要在注册成功后对账号及密码进行保存

1.注册模块

void zhuce() {//这里是注册模块Sleep(1000);system("cls");//注册账号printf("请输入账号:");char num[NUM_S];scanf("%s", num);Node* head = (Node*)malloc(sizeof(Node));head = duqu_class1();//这里是去寻找账号是否合法int k = -1;while (head) {if (strcmp(head->num, num) == 0) {k = 0;break;} else {k = 1;head = head->next;}}if (k == 1) {printf("没有找到你的账号,请重新输入!\n");zhuce();}struct count* count = (struct count*)malloc(sizeof(count));count = duqu_count();//判断输入的账号是不是已经被注册while (count) {if (strcmp(count->num, num) == 0) {printf("此账号已被注册,请重新输入:\n");zhuce();break;} else {k = 2;count = count->next;}}char password1[PASS_S];//当账号合法且未被注册时会来到这一步char password2[PASS_S];//我们需要让用户输入两次密码,达到确定密码的目的if (k == 2) {printf("请输入密码:");scanf("%s", password1);printf("请确认密码:");scanf("%s", password2);if (strcmp(password1, password2) == 0) {//这里不能直接比较password1和password2,因为他们都是字符串类型,变量名应该为字符串地址printf("注册成功!\n");struct count* Head = (struct count*)malloc(sizeof(struct count));struct count* p = Head;strcpy(Head->num, num);strcpy(Head->password, password1);//需要注意这里不能直接让Head->password=password//password是一个字符串,应该使用strcpy函数将它复制过来,原因和上边的strcmp函数相同save_count(Head);//对已经成功注册的账号,应该保存至账号文件内Head->next = NULL;Head = Head->next;}} else {//当两次输入的密码不一致时,会提示用户输入的密码不一致,然后重新来到注册页面printf("两次输入的密码不一致!请重新输入:\n");zhuce();}
}

2.判断账号是否存在

文件中的信息的读取(需要存在一个名为class1.txt的文件),对这个文件进行读取

Node* duqu_class1() {//将文件中的信息读取到链表里Sleep(1000);system("cls");FILE* fp;fp = fopen("class1.txt", "r");Node* head, * p, * end;head = p = (Node*)malloc(sizeof(Node));while (!feof(fp)) {end = (Node*)malloc(sizeof(Node));fscanf(fp, "%s %s %s %d %d %d\n", end->name, end->num, end->class, &end->score1, &end->score2, &end->score3);p->next = end;p = end;}fclose(fp);head = head->next;p->next = NULL;return head;
}

3.判断账号是否未被注册

这里是判断读取的账号是否已经被注册的函数,需要注意这里函数的返回类型(count.txt)是用来存储所有已经注册过的账号和密码的文件

struct count* duqu_count() {Sleep(1000);system("cls");FILE* fp = fopen("count.txt", "r");if (fp == NULL) {perror(fopen);return;}struct count* Head, * p, * end;Head = p = (struct count*)malloc(sizeof(struct count));while (!feof(fp)) {end = (struct count*)malloc(sizeof(struct count));fscanf(fp, "%s %s\n", end->num, end->password);p->next = end;p = end;}fclose(fp);Head = Head->next;p->next = NULL;return Head;
}

4.注册成功的账号的保存

这里是对注册成功的账号及密码的保存函数,我们依然把注册成功的账号及密码保存至count.txt文件中

void save_count(struct count* head) {//将注册过的账号保存起来Sleep(1000);system("cls");struct count* con = (struct count*)malloc(sizeof(struct count));FILE* fp;fp = fopen("count.txt", "a");if (fp == NULL) {perror(fopen);} else {con = head;struct count* Headcount = con;fprintf(fp, "%s %s\n", con->num, con->password);con = con->next;printf("账号密码已成功保存!\n");fclose(fp);}
}

二、登录模块

1.登录

在用户输入时,我们只需读取之前的存储账号及密码的文件,看用户输入的账号及密码是否正确即可。

void denglu_stu() {//登录学生账户Sleep(1000);system("cls");char num[NUM_S];printf("请输入账号:");scanf("%s", num);char password[PASS_S];printf("请输入密码:");scanf("%s", password);int i = 0;struct count* Head = duqu_count();//此函数在前面已经声明过,不做过多解释while (Head) {if (strcmp(Head->num, num) == 0 && strcmp(Head->password, password) == 0) {printf("登录成功!\n");menu_stu();i = 1;break;} else {Head = Head->next;}}if (i != 1) {printf("输入的学号或密码有误,或此学号还未注册!\n");}
}

三.学生查询成绩

struct student* Head=NULL;
Head = duqu_class1();
//依然是之前的读取学生信息的函数
char num[NUM_S];
printf("请输入你的学号:\n");
scanf("%s", num);
int i = 0;
while (Head) {if (strcmp(Head->num, num) == 0) {printf("%d %d %d", Head->score1, Head->score2, Head->score3);i = 1;break;} else {Head = Head->next;}
}
if (i != 1) {printf("输入的学号有误,请重新输入!\n");chaxun(k);
}

四.学生查询本班成绩

struct student* Head=NULL;
Head = duqu_class1();
while (Head) {printf("%5s %5s %5s %5d %5d %5d\n", Head->name, Head->num, Head->class, Head->score1, Head->score2, Head->score3);Head = Head->next;}

总结

在学生管理系统的注册,登陆等模块中,要注意这块我们需要对文件进行操作。一定一定注意文件的打开方式,否则你可能在操作完成后会发现自己又得到了一个空文件。

关于学生管理系统(注册,登录,学生端)相关推荐

  1. java编写学生管理系统_Java实现学生管理系统

    导读热词 项目描述:通过管理员帐号登录,对学员信息进行管理.可以实现学员信息的增加.修改.删除.查询. 知识点:数组.do{}while循环.for循环.if语句.switch条件语句 学生管理系统的 ...

  2. mysql学生管理系统毕业设计_学生信息管理系统的设计与实现(MyEclipse,MySQL)

    学生信息管理系统的设计与实现(MyEclipse,MySQL)(任务书,开题报告,中期检查表,文献综述,毕业论文15000字,程序代码,MySQL数据库) 学生信息管理系统的开发工具是MyEclips ...

  3. java学生管理系统代码_java学生信息管理系统(附源码)

    一:   介绍 1:实现登录界面 2:实现主界面 有两种操作 一种是按钮操作  另外一种是SQL语句. 3:连接SQL server 2008 数据库 用到的软件及环境SQLserver2008,ec ...

  4. python学生管理系统-python实现学生管理系统

    python写的简单的学生管理系统,练习python语法. 可以运行在windows和linux下,python 2.7. #!/usr/local/bin/python # -*- coding:u ...

  5. 学生管理系统java mysql_学生信息管理系统 基于Java+mysql开发的学生管理系统 - 下载 - 搜珍网...

    压缩包 : 学生信息管理系统.zip 列表 学生信息管理系统/ 学生信息管理系统/build/ 学生信息管理系统/build.xml 学生信息管理系统/build/built-jar.properti ...

  6. 【1】C++语法与数据结构之C语言学生管理系统转C++学生管理系统

    从本文开始,后续将陆续发布C++语法与数据结构的相关内容,同样还是以学生管理系统来融汇贯通所有知识点. 接上篇博客[终极完美高效]C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点 ...

  7. 学生管理系统服务器端设计,学生信息管理系统设计与实现

    摘要: 学生信息管理是整个学校管理工作中的关键环境之一,采用计算机信息技术和网络技术来管理学生信息是大势所趋.一个高质量的学生管理信息系统能够为学校管理者提供及时,正确的学生信息,提高管理水平. 针对 ...

  8. c语言实现学生管理系统,C语言学生管理系统源代码

    <C语言学生管理系统源代码>由会员分享,可在线阅读,更多相关<C语言学生管理系统源代码(12页珍藏版)>请在人人文库网上搜索. 1.C语言学生成绩管理系统源代码,保证能用#in ...

  9. android的学生管理系统,Android实现学生管理系统

    本文实例为大家分享了Android实现学生管理系统的关键性代码,供大家参考,具体内容如下 局部效果图: 实现代码: 1.布局 package="com.itheima27.sutdentma ...

  10. android的学生管理系统,Android版学生管理系统

    用户可以输入姓名.性别.年龄三个字段,通过点击添加学生按钮,将学生信息展示到开始为空的ScrollView控件中,ScrollView控件只能包裹一个控件,我这里包裹的是LinearLayout.点击 ...

最新文章

  1. ballgown包进行基因差异表达分析
  2. Chrome Full black Screen [Solved]
  3. 用计算机玩纸牌,《玩“纸牌”游戏》教学设计
  4. ASP.Net开发新手常见问题备忘录
  5. 用python随机画多个圆_Python Pygame随机绘制不重叠的圆圈
  6. 修改段落内容_英文论文修改技巧大全
  7. Taro+react开发(81):props属性
  8. python update skeleton 不自动_python编程笔记(1)-数据类型
  9. 10桌面管理文件收纳_二十余件精选桌面好物推荐,让学习工作生活满满正能量!...
  10. android导入导出txt通讯录,Android导入导出txt通讯录工具
  11. JMP数据清洗之“拆分” — 快速实现一列拆分为多列
  12. MySQL-性能优化
  13. 5.用转换器抽取特征
  14. 【CF335E】 Counting Skyscrapers(期望)
  15. mysql 1236_MySQL 1236错误解决方法
  16. 写给三维建模入门小白的建议
  17. 推荐术语:CPM、CPC、CPA、CPI、CTR、CPV、CVR
  18. 静态网页与动态网页的差异
  19. 更换一寸照片底色蓝色底,红色底白底一寸照怎么做ps教程简单快速快捷方法办法ps学习ps教学ps教程
  20. torch_points_kernels遭遇 ModuleNotFoundError: No module named ‘torch_points_kernels.points_cpu‘

热门文章

  1. html5背景图片能加链接,CSS中用背景图片做为超链接的方法
  2. 【Web技术】一文吃透 WebSocket 原理
  3. 我失业了,公司与我解除劳动合同关系
  4. android ip地址,手机号码,邮箱格式验证
  5. 【线性代数】线性组合,线性相关与生成子空间(linear combination, linear dependency span)
  6. 硬货专栏 |深入浅出 WebRTC AEC(声学回声消除)
  7. 网络精英赛模拟练习(3)
  8. 小米随星借(原小米贷款)提升服务水平,帮助用户解决用款难问题
  9. 前端(JavaScript)------字符串
  10. EPICS简单实例2 -- subroutine记录(sub)介绍与使用