项目部分截图:

以下是完整源代码 ;

cpp文件:

#include "StudentManagerSystem.h"int main() {//改变控制台字体颜色   SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN);int num;while (1) {welcome();scanf("%d", &num);switch (num) {case 1:    //录入学生信息InputStudent();break;case 2:    //打印学生信息PrintStudent();break;case 3:    //保存学生信息SaveStudent();break;case 4: //读取学生信息ReadStudent();break;case 5: //统计所有学生人数CountStudent();break;case 6:  //查找学生信息FindStudent();break;case 7: //修改学生信息ModifyStudent();break;case 8:   //删除学生信息DeleteStudent();break;case 9:   //退出系统return 0;}}return 0;
}

头文件:

#pragma once
#include<bits/stdc++.h>
#include <windows.h>
using namespace std;//每操作完一次就要清空屏幕
void cleanScreen() {system("pause");   //暂停system("cls");       //清空屏幕
}//欢迎界面
void welcome() {printf("*************************************************\n");printf("\t\t欢迎使用学生管理系统\t\t\t\n");printf("*************************************************\n");printf("*\t\t请选择功能列表\t\t\t*\n");printf("*************************************************\n");printf("*\t\t1.录入学生信息\t\t\t*\n");printf("*\t\t2.打印学生信息\t\t\t*\n");printf("*\t\t3.保存学生信息\t\t\t*\n");printf("*\t\t4.读取学生信息\t\t\t*\n");printf("*\t\t5.统计所有学生人数\t\t*\n");printf("*\t\t6.查找学生信息\t\t\t*\n");printf("*\t\t7.修改学生信息\t\t\t*\n");printf("*\t\t8.删除学生信息\t\t\t*\n");printf("*\t\t9.退出系统\t\t\t*\n");printf("\n");
}typedef struct student {char name[30]; //名字int age;    //年龄long long stuNum;  //学号int score;   //分数
}Student;typedef struct _Node {Student stu;struct _Node* pNext;
}Node;Node* g_pHead = NULL;   //初始化头指针//录入学生信息
void InputStudent() {Node* pNewNode = (Node*)malloc(sizeof(Node)); //注意这边是(sizeof(Node)),而不是sizeof(Node*)!!!pNewNode->pNext = NULL;//头插法if (g_pHead == NULL) {g_pHead = pNewNode;}else {pNewNode->pNext = g_pHead;g_pHead = pNewNode;}//输入数据printf("请输入学生信息:\n");printf("输入姓名:\n");scanf("%s", pNewNode->stu.name);printf("输入年龄:\n");scanf("%d", &pNewNode->stu.age);printf("输入学号:\n");scanf("%lld", &pNewNode->stu.stuNum);printf("输入分数:\n");scanf("%d", &pNewNode->stu.score);printf("学生信息录入成功!\n");cleanScreen();
}//输出学生信息
void PrintStudent() {Node* p = g_pHead;printf("*************************************************\n");printf("学号\t\t姓名\t\t年龄\t\t分数\n");while (p != NULL) {  printf("%-16lld", p->stu.stuNum);printf("%-16s", p->stu.name);printf("%-16d", p->stu.age);printf("%-16d\n", p->stu.score);p = p->pNext;  }cleanScreen();
}//保存学生信息
void SaveStudent() {//打开文件FILE* fp = fopen("C:\\Users\\14185\\Desktop\\stuinfo.dat", "w");if (fp == NULL) {printf("文件打开失败\n");return;}//将数据写入文件(遍历链表)Node* p = g_pHead;while (p != NULL) {fwrite(&p->stu, 1, sizeof(Student), fp);p = p->pNext;}//关闭文件fclose(fp);printf("数据保存成功!\n");cleanScreen();
}//读取文件中的数据
void ReadStudent() {FILE* fp = fopen("C:\\Users\\14185\\Desktop\\stuinfo.dat", "r");if (fp == NULL) {printf("读取文件失败!\n");return;}Student stu;while (fread(&stu, 1, sizeof(Student), fp)) {Node* pNewNode = (Node*)malloc(sizeof(Node));pNewNode->pNext = NULL;memcpy(pNewNode, &stu, sizeof(Student));if (g_pHead == NULL) {g_pHead = pNewNode;}else {pNewNode->pNext = g_pHead;g_pHead = pNewNode;}fclose(fp);printf("文件读取成功!\n");cleanScreen();}
}
//统计所有学生人数
void CountStudent() {int cnt = 0;Node* p = g_pHead;while (p != NULL) {++cnt;p = p->pNext;}printf("学生的总人数为:%d\n", cnt);cleanScreen();
}//查找学生
void FindStudent() {long long stuNum;   //学号printf("请输入需要查找学生的学号:\n");scanf("%lld", &stuNum);Node* p = g_pHead;while (p != NULL) {if (p->stu.stuNum == stuNum) {printf("学号:%lld  姓名:%s  年龄:%d  分数:%d\n",p->stu.stuNum, p->stu.name, p->stu.age, p->stu.score);cleanScreen();return;}p = p->pNext;}printf("没有找到相关学生信息。\n");cleanScreen();
}//修改学生信息
void ModifyStudent() {printf("请输入需要修改学生信息的学号:\n");long long stuNum;scanf("%lld", &stuNum);Node* p = g_pHead;while (p != NULL) {if (p->stu.stuNum == stuNum) {printf("请输入修改后的信息(学号/姓名/年龄/分数):\n");scanf("%lld %s %d %d", &p->stu.stuNum, p->stu.name, &p->stu.age, &p->stu.score);cleanScreen();return;}p = p->pNext;}printf("没有找到学生信息。\n");cleanScreen();
}//删除学生信息
void DeleteStudent() {printf("请输入需要删除的学生信息的学号:\n");long long stuNum;scanf("%lld", &stuNum);Node* p1, *p2;    //注意这里p2前面也要加星号!//如果一开始链表为空if (g_pHead == NULL) {printf("没有找到学生信息。\n");cleanScreen();return;}//如果要删除的点正好是头结点if (g_pHead->stu.stuNum == stuNum) {p1 = g_pHead;g_pHead = g_pHead->pNext;free(p1);printf("删除成功!\n");cleanScreen();return;}//要删除的点位于中间位置Node* p = g_pHead;while (p->pNext != NULL) {if (p->pNext->stu.stuNum == stuNum) {p2 = p->pNext;p->pNext = p->pNext->pNext;free(p2);printf("删除成功!\n");cleanScreen();return;}}printf("没有找到学生信息。\n");cleanScreen();return;
}

C语言简易学生管理系统(含源码)相关推荐

  1. java毕业设计高校学生管理系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计高校学生管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计高校学生管理系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S ...

  2. 软件工程通信录管理系统c语言,软件工程设计管理系统附源码.doc

    软件工程设计管理系统附源码 学 年 设 计 课程名称: 软件工程学年设计 实验项目: 通讯录管理系统 姓 名: XXX 专 业: 计算机科学与技术 班 级: XXX班 学 号: XXX 指导教师 XX ...

  3. Java学生成绩管理系统(含源码+论文+答辩PPT等)

    该项目采用技术JSP.Servlet.jdbc.Tomcat服务器.MySQL数据库 ,项目含有源码.论文.配套开发软件.软件安装教程.项目发布教程 下面是系统运行起来后的部分截图:

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

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

  5. 毕设项目 Spring Boot毕业设计管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2.1 界面展示 3 设计方案 3.1 概述 3.2 系统流程 3.2.1 系统开发流程 3.3.2 教师登录流程 3.3.3 系统操作流程 3.3 系统结构设计 ...

  6. 微信小程序之教学管理系统(含源码+论文+答辩PPT等)

    项目功能简介: 该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的教学管理系统前台和Java做的后台管理系统: 微信小程序--教学管理系统前台涉及技术:W ...

  7. Java SSM毕设 勤工助学管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2.1 界面展示 3 设计方案 3.1 概述 3.2 系统流程 3.2.1 系统操作流程 3.2.2 信息添加流程 3.2.3 信息删除流程 3.3 系统结构设计 ...

  8. 毕设springBoot+vue 勤工助学管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2.1 界面展示 3 设计方案 3.1 概述 3.2 系统流程 3.2.1 系统操作流程 3.2.2 信息添加流程 3.2.3 信息删除流程 3.3 系统结构设计 ...

  9. java毕业设计 Vue勤工助学管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2.1 界面展示 3 设计方案 3.1 概述 3.2 系统流程 3.2.1 系统操作流程 3.2.2 信息添加流程 3.2.3 信息删除流程 3.3 系统结构设计 ...

  10. 微信小程序之考勤签到管理系统(含源码+论文+答辩PPT等)

    项目功能简介: 该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的考勤前台和Java做的后台管理系统: 微信小程序--考勤前台涉及技术:WXML 和 WX ...

最新文章

  1. tcptracerte参数_探究 wireshark 的 tcptrace 时序图
  2. 你知道Spring是怎么解析配置类的吗?
  3. PMCAFF微分享 | 供应链金融套利套汇介绍
  4. 斥资2亿加码新消费,“瓜子之王”洽洽要圆“坚果梦”?
  5. virtualenv在ubuntu系统中的缺点
  6. 中国大学mooc慕课python语言程序设计答案_中国大学MOOC(慕课)_Python语言程序设计基础_网课答案...
  7. 剑指offer-3(替换空格)
  8. Windows2003下DHCP服务器备份、还原、迁移、绑定
  9. oracle liunx 6.5安装目录,linux redhat 6.5 多路径配置
  10. 话说P2P理财纷纷暴雷之后,那些投资者的钱去了哪里?
  11. oracle 查询脚本分析,一个oracle数据查询脚本
  12. Matlab图像识别/检索系列(8)—开源工具介绍之vlfeat
  13. 如何做项目总结与汇报
  14. Java实现验证码制作
  15. 命令行运行ktr和kjb
  16. s71500技术手册_SIMATIC S7-1500 PLC用户手册
  17. 二维C语言,二维FFT,IFFT,c语言实现
  18. 什么造就了中国的XP系统依赖症
  19. 刚子:走马观花奋达创“芯”发布会
  20. windows命令行关闭已占用的端口

热门文章

  1. Antelope 和Barracuda区别
  2. javax.persistence.TransactionRequiredException: No transactional EntityManager available
  3. 转: Protobuf 的 proto3 与 proto2 的区别
  4. 多线程Thread和Runnable
  5. 【转】Gnuplot基本介绍
  6. EXTJS4:如何改变grid某一个单元格的背景颜色
  7. 将PowerPCB 中的pcb文件导入到Protel中使用
  8. [hadoop源码阅读][0]-初衷和各种资源
  9. ios开发笔记之 emoji表情字符编码集合
  10. M8的USB工作模式切换工具