基于C语言开发的学生成绩管理系统
资源文件列表(大概)
StudentManageSystem-master/
-
StudentManageSystem-master/README.md
14.97KB
StudentManageSystem-master/StudentManageSystem/
-
StudentManageSystem-master/StudentManageSystem/.vs/
-
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/
-
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/v16/
-
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/v16/.suo
31KB
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/v16/Browse.VC.db
5.23MB
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/v16/ipch/
-
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/v16/ipch/AutoPCH/
-
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/v16/ipch/AutoPCH/215e20dca6177113/
-
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/v16/ipch/AutoPCH/215e20dca6177113/STUDENTMANAGESYSTEM.ipch
3.25MB
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/v16/ipch/AutoPCH/a6730596ebf88ad0/
-
StudentManageSystem-master/StudentManageSystem/.vs/StudentManageSystem/v16/ipch/AutoPCH/a6730596ebf88ad0/STUDENTMANAGESYSTEM.ipch
3.63MB
StudentManageSystem-master/StudentManageSystem/Debug/
-
StudentManageSystem-master/StudentManageSystem/Debug/StudentM.41E8BB15.tlog/
-
StudentManageSystem-master/StudentManageSystem/Debug/StudentM.41E8BB15.tlog/CL.command.1.tlog
782B
StudentManageSystem-master/StudentManageSystem/Debug/StudentM.41E8BB15.tlog/CL.read.1.tlog
4.45KB
StudentManageSystem-master/StudentManageSystem/Debug/StudentM.41E8BB15.tlog/CL.write.1.tlog
568B
StudentManageSystem-master/StudentManageSystem/Debug/StudentM.41E8BB15.tlog/StudentManageSystem.lastbuildstate
213B
StudentManageSystem-master/StudentManageSystem/Debug/StudentM.41E8BB15.tlog/link.command.1.tlog
1.34KB
StudentManageSystem-master/StudentManageSystem/Debug/StudentM.41E8BB15.tlog/link.read.1.tlog
3.04KB
StudentManageSystem-master/StudentManageSystem/Debug/StudentM.41E8BB15.tlog/link.write.1.tlog
636B
StudentManageSystem-master/StudentManageSystem/Debug/StudentManageSystem.exe
45.5KB
StudentManageSystem-master/StudentManageSystem/Debug/StudentManageSystem.ilk
392.28KB
StudentManageSystem-master/StudentManageSystem/Debug/StudentManageSystem.log
140B
StudentManageSystem-master/StudentManageSystem/Debug/StudentManageSystem.obj
39.47KB
StudentManageSystem-master/StudentManageSystem/Debug/StudentManageSystem.pdb
588KB
StudentManageSystem-master/StudentManageSystem/Debug/vc142.idb
51KB
StudentManageSystem-master/StudentManageSystem/Debug/vc142.pdb
84KB
StudentManageSystem-master/StudentManageSystem/StudentManageSystem.cpp
9.21KB
StudentManageSystem-master/StudentManageSystem/StudentManageSystem.h
785B
StudentManageSystem-master/StudentManageSystem/StudentManageSystem.sln
1.39KB
StudentManageSystem-master/StudentManageSystem/StudentManageSystem.vcxproj
6.06KB
StudentManageSystem-master/StudentManageSystem/StudentManageSystem.vcxproj.filters
1.04KB
StudentManageSystem-master/StudentManageSystem/StudentManageSystem.vcxproj.user
165B
StudentManageSystem-master/StudentManageSystem/appendix/
-
StudentManageSystem-master/StudentManageSystem/appendix/20190415_200358.mp4
824.3KB
StudentManageSystem-master/StudentManageSystem/appendix/20190415_200600.gif
567.2KB
StudentManageSystem-master/StudentManageSystem/appendix/StudentManageSystem.md
14.77KB
StudentManageSystem-master/StudentManageSystem/stuinfo.dat
92B
StudentManageSystem-master/demo.gif
567.2KB
资源内容介绍
二、系统功能系统功能介绍1.录入学生信息:用户可以自由输入学生信息到系统中。2.打印学生信息:格式化展示系统中的学生信息。3.保存学生信息:将系统中的学生信息保存到本地文档。4.读取学生信息:读取本地文档中的学生信息并显示。5.统计所有学生人数6.查找学生信息:根据用户给定的信息(学号)在系统中查找该学生的信息7.修改学生信息8.删除学生信息0.退出系统系统main函数,while循环在外,系统程序能够持续运行,switch判断语句进行功能选择与函数切换。int main() {while (1){//打印菜单Menu();//读取一个字符 整数,字符在内存中映射为ASCII码char ch = _getch();switch (ch){case '1'://1.录入学生信息InputStudent();break;case '2'://2.打印学生信息PrintStudent();break;case '3'://3.保存学生信息SaveStudent(); <h1>学生成绩管理系统</h1><h5>开发语言:C语言</h5><h5>开发工具:Visual Studio 2019</h5><h5>开发时间:2019.4.14</h5><h5>开发者:summer</h5>[一、系统使用展示](#1)[二、系统功能](#2)[三、菜单](#3)[四、录入学生信息](#4)[五、打印学生信息](#5)[六、保存学生信息](#6)[七、读取学生信息](#7)[八、统计所有学生人数](#8)[九、查找学生信息](#9)[十、修改学生信息](#10)[十一、删除学生信息](#11)[十二、退出系统](#12)[十三、出错](#13)<h3 id="1">一、系统使用展示</h3><h3 id="2">二、系统功能</h3>1. 系统功能介绍```1.录入学生信息:用户可以自由输入学生信息到系统中。2.打印学生信息:格式化展示系统中的学生信息。3.保存学生信息:将系统中的学生信息保存到本地文档。4.读取学生信息:读取本地文档中的学生信息并显示。5.统计所有学生人数6.查找学生信息:根据用户给定的信息(学号)在系统中查找该学生的信息7.修改学生信息8.删除学生信息0.退出系统```2. 系统main函数,while循环在外,系统程序能够持续运行,switch判断语句进行功能选择与函数切换。```Cint main() {while (1){//打印菜单Menu();//读取一个字符 整数,字符在内存中映射为ASCII码char ch = _getch();switch (ch){case '1'://1.录入学生信息InputStudent();break;case '2'://2.打印学生信息PrintStudent();break;case '3'://3.保存学生信息SaveStudent();break;case '4'://4.读取学生信息ReadStudent();break;case '5'://5.统计所有学生人数CountStudent();break;case '6'://6.查找学生信息FindStudent();break;case '7'://7.修改学生信息ChangeStudent();break;case '8'://8.删除学生信息DeleteStudent();break;case '0'://0.退出系统return 0;break;default:printf("输入有误,没有该功能\n\n");system("pause"); //暂停system("cls"); //清屏break;}}return 0;}```<h3 id="3">三、菜单</h3>1. 菜单显示```C//菜单void Menu() {printf("*************************************************\n");printf("*\t欢迎使用高校学生成绩管理系统V1.0\t*\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\t0.退出系统\t\t\t*\n");printf("*************************************************\n");}```2. 打印菜单scanf()、getchar()输入后均需要按enter,而getch()不用```C//打印菜单Menu();//读取一个字符 整数,字符在内存中映射为ASCII码char ch = _getch();```<h3 id="4">四、录入学生信息</h3>1. 定义学生结构体、链表节点结构体```C//定义一个学生typedef struct tagStudent {char szName[20];//姓名char szSex[4];//性别int nAge;//年龄int nStuNo;//学号int nScore;//成绩}Student;//链表//节点typedef struct tagNode{Student stu;//学生信息struct tagNode* pNext;//指向下一个节点}Node;//创建头节点Node* g_pHead = NULL;//指向头节点```2. 利用学生结构体,以及链表操作输入学生信息```C//1.录入学生信息void InputStudent() {//创建一个人,在堆中分配内存Node* pNewNode = (Node*)malloc(sizeof(Node));//指针下一个指向空pNewNode->pNext = NULL;//查找链表的尾结点Node* p = g_pHead;while (g_pHead != NULL && p->pNext != NULL){p = p->pNext;}//把节点插到链表的尾节点if (g_pHead == NULL) {g_pHead = pNewNode;}else {p->pNext = pNewNode;}//录入学生信息printf("请输入学生姓名:\n");scanf_s("%s", pNewNode->stu.szName, sizeof(pNewNode->stu.szName));printf("请输入性别:\n");scanf_s("%s", pNewNode->stu.szSex, sizeof(pNewNode->stu.szSex));printf("请输入学生年龄:\n");scanf_s("%d", &pNewNode->stu.nAge);printf("请输入学号:\n");scanf_s("%d", &pNewNode->stu.nStuNo);printf("请输入成绩:\n");scanf_s("%d", &pNewNode->stu.nScore);printf("学生信息录入成功。\n\n");system("pause");system("cls");}```<h3 id="5">五、打印学生信息</h3>1. 读取链表结构,输出学生信息。先进行判空处理,如果无学生信息则输出提示信息,反之则正确输出学生信息。```C//2.打印学生信息void PrintStudent() {system("cls");//遍历链表Node* p = g_pHead;if (p == NULL) {printf("系统中暂无学生信息,请录入后再来打印查看。\n\n");}else {printf("*********************************************************************************\n");printf("*\t\t\t欢迎使用高校学生成绩管理系统V1.0\t\t\t*\n");printf("*********************************************************************************\n");printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");printf("*********************************************************************************\n");while (p != NULL){printf("*\t%d\t*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",p->stu.nStuNo,p->stu.szName,p->stu.szSex,p->stu.nAge,p->stu.nScore);//下一个节点p = p->pNext;printf("*********************************************************************************\n");}}system("pause");system("cls");}```<h3 id="6">六、保存学生信息</h3>1. 利用文件对学生信息进行存储```C//3.保存学生信息void SaveStudent() {//打开文件FILE* pFile;pFile = fopen(".\\stuinfo.dat", "w");if (pFile == NULL) {printf("打开文件失败。\n");return;}//写入数据Node* p = g_pHead;while (p != NULL){fwrite(&p->stu, sizeof(Node), 1, pFile);p = p->pNext;}//关闭文件fclose(pFile);printf("数据保存成功。\n");system("pause");system("cls");}```2. fopen在vs中会报错,解决方式(1)按照vs的提示,将fopen换成fopen_s(2)不修改函数,仅仅修改项目的属性。因为fopen_s是一种Microsoft的函数,若纯做Windows开发则直接改为_s也无妨,但是我们尽量还是用标准C++比较好,这样代码有较好的移植性。具体操作:右键工程名–>属性–>C/C++–>预处理器–>预处理器定义,编辑右边输入框加入: _CRT_SECURE_NO_WARNINGS 保存(注意用分号隔开)。<h3 id="7">七、读取学生信息</h3>1. 打开存储学生信息的文本,单个单词读取,判断非分隔符或者空时则赋值给链表中的节点,读取完毕后,直接调用PrintStudent()函数进行打印结果。```C//4.读取学生信息void ReadStudent() {system("cls");//打开文件FILE* pFile;pFile = fopen(".\\stuinfo.dat", "r");if (pFile == NULL) {printf("打开文件失败。\n");return;}//创建一个人,在堆中分配内存Node* p = (Node*)malloc(sizeof(Node));p->pNext = NULL;//重新建立链表g_pHead = p;//逐个单词读入文本内容char str[200];int i = 0;while (fscanf(pFile, "%s", str) != EOF) { //读文件 //单词不是*或者空时,进行赋值if (strcmp(str, "*") && str != NULL) {switch (i){case 0:p->stu.nStuNo = atoi(str);break;case 1:strcpy(p->stu.szName, str);break;case 2:strcpy(p->stu.szSex, str);break;case 3:p->stu.nAge = atoi(str);break;case 4:p->stu.nScore = atoi(str