思路

输入加载文件,显示菜单,选择功能,若不选择退出,则在while循环中,使用二进制读写文件,实现新增、查看全部学生、查找学生功能。

Display_Menu()菜单Load_File()加载文件Add_Student()新增学生方法:
使用二进制追加读和写打开
判断是否有相同的学号,没有的话写入数据到文件中。Student_Information()查看全部学生信息:
使用while读取,读取数量不为0则一直读取输出打印。Lookup_Student()查找学生
使用循环读取数据,在循环中判断输入的学号是否与文件中的学号相同,相同则不写入文件中,不相同即写入文件中。

效果图


菜单栏

void Display_Menu(){printf("=================================================\n");printf("=               1.新增学生                        =\n");printf("=              2.查看全部学生                      =\n");printf("=               3.查找学生                        =\n");printf("=              4.重新加载文件                      =\n");printf("=                 5.退出                         =\n");printf("=================================================\n");
}

主函数

int main() {FILE *fp;char option;char szPath[20];printf("请输入需要加载的文件:");scanf("%s",&szPath);getchar();fp = fopen(szPath,"ab+");if(fp == NULL){printf("打开失败\n");exit(0);}Display_Menu();scanf("%c",&option);while(option != '5'){switch (option) {case '1':Add_Student(szPath);break;case '2':Student_Information(szPath);break;case '3':Lookup_Student(szPath);break;case '4':printf("请输入需要加载的文件:");scanf("%s",szPath);Load_File(szPath);break;case '5':fclose(fp);exit(0);default:exit(0);}Display_Menu();getchar();scanf("%c",&option);}fclose(fp);return 0;
}

文件加载

int Load_File(char filename[20]){FILE *fp;fp = fopen(filename,"ab+");if(fp == NULL){printf("打开失败\n");}else{printf("加载成功\n");}fclose(fp);return 0;
}

新增学生

fopen(filename,“ab+”)使用二进制追加读和写打开
Check_Student(st->no,filename)判断是否有相同的学号,没有的话写入数据到文件中。

int Add_Student(char *filename){struct Student st;FILE *fp = fopen(filename,"ab+");printf("==新增学生界面==\n");printf("请输入学生信息\n");printf("学号:");scanf("%d",&st.no);printf("姓名:");scanf("%s",st.name);getchar();printf("性别(F:女,M:男):");scanf("%c",&st.sex);printf("年龄:");scanf("%d",&st.age);if(Check_Student(st.no,filename)){fwrite(&st,sizeof(struct Student),1,fp);printf("成功\n");fclose(fp);return 0;}else{printf("该学生已经存在\n");fclose(fp);return 0;}}

查看全部学生

使用while读取,读取数量不为0则读取下一行数据。

int Student_Information(char *filename){struct Student *st;FILE *fp = fopen(filename,"rb+");rewind(fp);while (fread(st, sizeof(struct Student),1,fp) != 0){printf("%s-%d-%d-%s\n", st->name, st->no, st->age, st->sex == 'F' ? "女" : "男");}fclose(fp);return 0;
}

查找学生

使用循环读取数据,在循环中判断输入的学号是否与文件中的学号相同,如果相同则不写入文件中。

int Lookup_Student(char *filename){int szNo;struct Student *st;printf("请输入要查找的学生学号:");scanf("%d",&szNo);FILE *fp = fopen(filename,"rb+");while (fread(st, sizeof(struct Student),1,fp) != 0){if(st->no == szNo){printf("%s-%d-%d-%s\n", st->name, st->no, st->age, st->sex == 'F' ? "女" : "男");}}fclose(fp);return 0;
}

代码地址

Github:https://github.com/Ltike/Learning.git

C语言版学生管理系统相关推荐

  1. C/C++语言实现 学生管理系统

    C/C++语言实现 学生管理系统 首先,让我分部分介绍本学生管理系统 本系统分为两个大板块,分别是学生版和教师版,学生版又分出三个具体功能,教师版分为七个功能,让我依次来介绍它们吧! (一)学生版 1 ...

  2. C语言实现学生管理系统

    C语言实现-学生管理系统 程序员的必经之路吧,学生管理系统.在制作过程中体会到了编写一个具体可用的软件而要做的工作,无论是编写前的准备,还是编写过程中每个细节的处理,都让我理解了这份工作是个什么样子. ...

  3. 语言学生学籍管理系统流程图_基于C语言的学生管理系统(含文件)(一)

    "点击上方"蓝色字",关注我们哦(*^▽^*)!" NO.1 篇幅较长,请空闲时观看 前言 这个项目是大一暑假完成,纯C语言编写,界面比较美观,由于当时还是一个 ...

  4. 学生管理系统c#语言代码,基于C#语言的学生管理系统的设计(ASP.NET2.0)

    摘  要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.学生管理系统是学校管理中不可少的一部分.而基于B/S架构的学生管 ...

  5. 用代码证明自己闲的蛋疼(四)——简易坑爹版学生管理系统

    众所周知,学生管理系统一直频繁的出没在我们的毕业设计当中. 当然,其大多数都是基于BS(Browser/Server)开发的~当年萌新的我还妄想用C写一个win32控制台的管理系统作为毕设蒙混过关,然 ...

  6. (C语言)学生管理系统

    学生管理系统 题目:编写学生管理系统,其中学生的信息有姓名(汉语拼音,最多20个字符),性别(男/女,用1表示男,2表示女). 生日(19850101(年月日)).身高(以m为单位),还需要处理C语言 ...

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

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

  8. 微信小程序版学生管理系统演示(一)

    开始前的思考 微信小程序版的学生管理系统由什么组成? 组成这个系统的各个软件分别是什么? 这些软件需要用到哪些开发工具? 我的思路 微信小程序版的管理系统的组成 首先,作业限定了使用微信小程序,那么该 ...

  9. C语言强化——学生管理系统

    系统模块设计 a.预处理模块 系统在启动时会根据配置文件里的内容去相应文件里去加载账户信息和学生信息. b.登陆模块 输入用户名和密码,输密码的时候用"*" 代表用户当前输入的内容 ...

最新文章

  1. 压缩比13为什么建议用92的油_92号和95号汽油有什么区别,可以混着用吗?
  2. C++ : STL常用算法: inner_product , sort ,itoa
  3. C语言内存字节对齐小结
  4. Nginx防盗链的实现原理和实现步骤
  5. python解释器有哪几种_Python解释器种类以及特点?
  6. 配置设备作为DHCP 服务器(基于全局地址池)
  7. 过年啦!抽奖发2022元红包!
  8. springboot事物注解不生效_springboot事务不生效的几种解决方案
  9. [转载] Python中filter筛选函数匿名参数问题
  10. 静态路由和DHCP/NAT/VLAN的配置实例
  11. less 之Extend 及 Extend all用法
  12. hprose-php教程,PHP RPC框架 hprose 上手玩玩
  13. Chromium浏览器不能播放MP4
  14. 柴静十年看见了什么——一个央视记者的心灵史
  15. 云迁移实践:VMware虚拟机迁移到腾讯云
  16. 推荐几个短网址赚钱站
  17. mc服务器物品给予,[管理|功能]GiveItem —— 给予物品 | 更好的Give|支持NBT|保存物品[1.12.2|1.16.X]...
  18. 深信服校园招聘c/c++软件开发B卷
  19. Android开发学习持续更新中
  20. 自动计算所有包围盒的中心点

热门文章

  1. 台式机计算机图标不见了,win7系统电脑右下角无线网络连接图标不见了怎么办-台式电脑怎么设置无线网络...
  2. arduino esp8266开发板下载出错解决方法
  3. 音视频基础概念(3)——音视频编码与音视频容器
  4. ireport报表制作, 通过节点、产品类型来判断,当该节点审核通过之后,报表相对应的审核意见及签名 显示相对应的内容...
  5. win10系统中如何不用360安全卫士等软件仍能实现清理垃圾,释放内存和安全防护的基本功能
  6. 2018年世界科技发展回顾
  7. 县级融媒体中心建设工作调研报告
  8. 永不停息的阿拉伯数字手势时钟app
  9. Lombok插件之简介、IDEA集成、注解使用
  10. 【医学图像智能计算】DL在医学影像中的应用综述—图像重建