//学生成绩管理系统
//开发语言:C语言
//开发工具:Visual Studio 2019
//开发时间:2019.4.14
//开发者:summer
#include "StudentManageSystem.h"
/*
<> 直接从系统目录下查找包含这个文件
"" 先从工程的项目目录下查找这个,如果没有,再到系统目录下查找
*/
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();
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;
}
//菜单
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");
}
//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");
}
//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");
}
//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);
fprintf(pFile,"*\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;
}
//关闭文件
fclose(pFile);
printf("数据保存成功。\n");
system("pause");
system("cls");
}
//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);
break;
default:
Node* pNewNode = (Node*)malloc(sizeof(Node));
pNewNode->pNext = NULL;
p->pNext = pNewNode;
p = pNewNode;
p->stu.nStuNo = atoi(str);
i = 0;
break;
}
i++;
}
}
//打印读取结果
PrintStudent();
}
//5.统计所有学生人数
void CountStudent() {
int countStu = 0;
//遍历链表
Node* p = g_pHead;
while (p != NULL)
{
countStu++;
p = p->pNext;
}
printf("学生总人数:%d\n\n", countStu);
system("pause");
system("cls");
}
//6.查找学生信息
void FindStudent() {
system("cls");
//以学号为查找示例,其他信息查找流程基本相似
int stuNum;
printf("请输入查找学生学号:");
scanf("%d", &stuNum);
//遍历链表查找,查找到后进行信息显示
Node* p = g_pHead;
//对表头进行展示一次
bool isShowHead = false;
//记录是否有找到该学号的学生信息
bool isFindStu = false;
while (p != NULL)
{
if (stuNum == p->stu.nStuNo) {
if (!isShowHead) {
printf("*********************************************************************************\n");
printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
printf("*********************************************************************************\n");
isShowHead = true;
}
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
);
isFindStu = true;
printf("*********************************************************************************\n");
}
p = p->pNext;
}
if (!isFindStu) {
printf("学号输入有误,系统中暂无该学生信息。\n\n");
}
system("pause");
system("cls");
}
//7.修改学生信息
void ChangeStudent() {
//以学号为查找示例,其他信息查找流程基本相似
int stuNum;
printf("请输入欲修改学生的学号:");
scanf("%d", &stuNum);
//遍历链表查找,查找到后进行信息显示
Node* p = g_pHead;
//对表头进行展示一次
bool isShowHead = false;
//记录是否有找到该学号的学生信息
bool isFindStu = false;
while (p != NULL)
{
if (stuNum == p->stu.nStuNo) {
if (!isShowHead) {
printf("*********************************************************************************\n");
printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
printf("*********************************************************************************\n");
isShowHead = true;
}
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
);
//修改学生信息
printf("请输入学生姓名:\n");
scanf_s("%s", p->stu.szName, sizeof(p->stu.szName));
printf("请输入性别:\n");
scanf_s("%s", p->stu.szSex, sizeof(p->stu.szSex));
printf("请输入学生年龄:\n");
scanf_s("%d", &p->stu.nAge);
printf("请输入学号:\n");
scanf_s("%d", &p->stu.nStuNo);
printf("请输入成绩:\n");
scanf_s("%d", &p->stu.nScore);
isFindStu = true;
printf("******************************
没有合适的资源?快使用搜索试试~ 我知道了~
C语言开发简单的学生成绩管理系统
共28个文件
tlog:6个
pdb:2个
ipch:2个
5星 · 超过95%的资源 需积分: 37 140 下载量 156 浏览量
2019-10-12
08:11:50
上传
评论 39
收藏 2.46MB 7Z 举报
温馨提示
C语言开发简单的学生成绩管理系统,包含如下功能: 1.录入学生信息:用户可以自由输入学生信息到系统中。 2.打印学生信息:格式化展示系统中的学生信息。 3.保存学生信息:将系统中的学生信息保存到本地文档。 4.读取学生信息:读取本地文档中的学生信息并显示。 5.统计所有学生人数 6.查找学生信息:根据用户给定的信息(学号)在系统中查找该学生的信息 7.修改学生信息 8.删除学生信息 0.退出系统
资源推荐
资源详情
资源评论
收起资源包目录
StudentManageSystem.7z (28个子文件)
StudentManageSystem
.vs
StudentManageSystem
v16
Browse.VC.db 5.23MB
.suo 31KB
ipch
AutoPCH
215e20dca6177113
STUDENTMANAGESYSTEM.ipch 3.25MB
a6730596ebf88ad0
STUDENTMANAGESYSTEM.ipch 3.63MB
StudentManageSystem.vcxproj.user 168B
StudentManageSystem.cpp 10KB
StudentManageSystem.h 830B
stuinfo.dat 96B
appendix
StudentManageSystem.md 15KB
20190415_200600.gif 567KB
20190415_200358.mp4 824KB
StudentManageSystem.vcxproj 6KB
StudentManageSystem.vcxproj.filters 1KB
StudentManageSystem.sln 1KB
Debug
StudentManageSystem.ilk 392KB
StudentManageSystem.log 142B
vc142.pdb 84KB
StudentManageSystem.obj 39KB
StudentManageSystem.pdb 588KB
vc142.idb 51KB
StudentM.41E8BB15.tlog
CL.write.1.tlog 568B
CL.read.1.tlog 4KB
StudentManageSystem.lastbuildstate 215B
CL.command.1.tlog 782B
link.write.1.tlog 636B
link.command.1.tlog 1KB
link.read.1.tlog 3KB
StudentManageSystem.exe 46KB
共 28 条
- 1
资源评论
- 普通网友2020-05-06可以可以,值得参考学习的好资源
- 重庆可可2019-11-27功能不错,不过是C++语言,我要的是C语言!只有自己改了!
渣渣的夏天
- 粉丝: 2410
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功