# StudentManagerSystem
学生成绩管理系统(Student Grade Management System)是一个使用 C 语言开发的课程设计项目,旨在提供一个全面的学生成绩管理解决方案。该系统支持以下核心功能:
1. 学生信息录入:管理员可以通过系统录入学生的基本信息,包括学号、姓名、年龄和成绩。
2. 打印学生信息:管理员可以录入学生的成绩,并支持将学生成绩打印成绩单,以便于查阅和分发给学生和家长。
3. 信息保存与读取:系统支持将学生信息和成绩数据保存到文件中,以便在需要时进行读取和导入,确保数据的长期保存和可持续使用。
4. 学生信息统计:系统能够对学生人数进行统计,并提供相应的报告或摘要信息,包括总学生人数。
5. 学生信息查找:管理员可以通过学号或姓名等关键字进行学生信息的快速查找,便于定位和管理特定学生的信息。
6. 学生信息修改与删除:管理员可以对学生的信息进行修改和更新,包括姓名、年龄等字段,也可以删除学生的信息,以实现数据的准确性和及时性。
7. 退出信息:系统提供清晰的退出选项,使管理员可以安全地退出系统,确保数据的完整性和安全性。
学生成绩管理系统的设计旨在简化学生信息和成绩管理的流程,提供高效、可靠的数据管理和操作功能。通过支持录入、打印、保存、读取、统计学生人数、查找、修改、删除学生信息和退出信息等功能,该系统能够满足学校、教育机构或教师对学生成绩管理的需求,提升管理效率和数据可视化分析能力。
> 其他资料参考该网站:[WeiComp](https://weicomp.vercel.app/)
# 开发日志
程序运行画面
```c
void Welcome() {
printf("*************************************\n");
printf("*\t欢迎使用高校学生成绩管理系统v1.0\t*\n");
printf("*************************************\n");
printf("*\t\t\t1.录入学生信息\t\t\t*\n");
printf("*\t\t\t2.打印学生信息\t\t\t*\n");
printf("*\t\t\t3.保存学生信息\t\t\t*\n");
printf("*\t\t\t4.读取学生信息\t\t\t*\n");
printf("*\t\t\t5.统计所有学生人数\t\t*\n");
printf("*\t\t\t6.查找学生信息\t\t\t*\n");
printf("*\t\t\t7.修改学生信息\t\t\t*\n");
printf("*\t\t\t8.删除学生信息\t\t\t*\n");
printf("*\t\t\t0.退出系统\t\t\t\t*\n");
printf("*************************************\n");
}
```
<img src="https://raw.githubusercontent.com/Anson-zechaoWei/photos_blog/main/img/image-20230710195301134.png" alt="image-20230710195301134" style="zoom:50%;" />
循环执行主菜单操作:使用 `while` 循环可以实现在此系统中的持续执行,直到用户选择退出程序,即输入 `0`。这样的循环结构能够保持程序的运行,直到指定条件满足。
```c
while (1) {
Welcome(); //欢迎界面
char ch;
scanf("%c", &ch);
getchar(); // 清空输入缓冲区中的换行符
switch (ch) {
case '1'://录入学生信息
InputStudent();
break;
case '2'://打印学生信息
break;
case '3'://保存学生信息
break;
case '4'://读取学生信息
break;
case '5'://统计所有学生人数
break;
case '6'://查找学生信息
break;
case '7'://修改学生信息
break;
case '8'://删除学生信息
break;
case '0'://退出系统
break;
}
}
```
## 录入学生信息
```c
void InputStudent() {
Node* pNewNode = malloc(sizeof (Node)); //创建新的节点
pNewNode->next = NULL;
//插入-----> 头插法、尾插法
//头插法
if (head == NULL){
head = pNewNode;
} else{
pNewNode->next = head; //采用头插法,将新创建的节点加入到头节点前面
head = pNewNode; //将新创建的节点设置为头节点
}
printf("请输入学生姓名:\n");
scanf("%s",pNewNode->student.name); //不需要设置&符号,name是数组
printf("请输入学生年龄:\n");
scanf("%d",&pNewNode->student.age); //设置&符号,name是数组
printf("请输入学生学号:\n");
scanf("%s",pNewNode->student.stuNum);
printf("请输入学生成绩:\n");
scanf("%d",&pNewNode->student.score);
printf("学生信息录入成功.\n");
system("clear"); //清屏
}
```
![](https://raw.githubusercontent.com/Anson-zechaoWei/photos_blog/main/img/%E5%BD%95%E5%85%A5%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF%E6%A8%A1%E5%9D%97.gif)
到目前为止,这个程序似乎没有太多问题,但是在执行完录入学生信息后,按下回车键后会出现一个令人意外的 bug,即程序会执行两次 `welcome()` 函数😲😲😲。这个问题的原因是 `scanf("%c", &ch);` 会读取之前输入中保留在输入缓冲区中的换行符(`\n`)。
要解决这个问题,您可以在 `scanf` 语句中 `%c` 之前添加一个空格。这个空格告诉 `scanf` 跳过任何空白字符,包括换行符。因此,在 `main` 函数中只需要修改 `scanf` 语句即可。
```c
scanf(" %c", &ch); // 在%c之前添加空格,必不可少的空格
```
测试案例
![](https://raw.githubusercontent.com/Anson-zechaoWei/photos_blog/main/img/%E6%89%93%E5%8D%B0%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF%E6%A8%A1%E5%9D%97.gif)
打印结果的美观程度可能会因个人喜好而有所不同,因此可以根据个人偏好进行格式调整,以获得更满意的打印效果。每个人都可以根据自己的审美标准进行样式定制,使输出结果更符合个人喜好。这样,每个人都可以得到自己喜欢的打印样式。
## 打印学生信息
打印学生信息函数
```c
void PrintStudent() {
system("clear");
printf("*************************************\n");
printf("*\t欢迎使用高校学生成绩管理系统v1.0\t*\n");
printf("*************************************\n");
printf("*\t学号\t*\t姓名\t*\t年龄\t*\t成绩\t*\n");
//遍历链表 ----> 单链表
Node *p = head;
while (p != NULL) {
printf("*\t%s\t\t*\t%s\t*\t%d\t\t*\t%d\t\t*\n", p->student.stuNum, p->student.name, p->student.age,
p->student.score);
p = p->next;
}
printf("*************************************\n");
// system("pause"); //win暂停
// system("cls"); //win清屏
system("clear"); //mac清屏
}
```
![](https://raw.githubusercontent.com/zechaowei/photos_blog/main/img/%E6%89%93%E5%8D%B0%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF%E6%A8%A1%E5%9D%97.gif)
> ⚠️:在输入姓名或学号时,尽量使用简短的输入,这样可以确保最终打印出的结果更美观。虽然不会导致程序出现错误或缺陷,但较长的输入可能会影响最终打印结果的美观程度。建议大家自行尝试并体验,本文中不再进行详细演示。
## 保存学生信息
保存学生信息函数
```c
void SaveStudent() {
//打开文件
FILE *fp = fopen("/Users/zechaowei/Documents/003-Project/008-C/StudentManagerSystem/data.csv", "w");
if (fp == NULL){
printf("文件打开失败.\n");
return;
}
//遍历链表
Node* p = head;
while (p != NULL){
fwrite(&p->student,1,sizeof(Student),fp);
p = p->next;
}
//关闭文件
fclose(fp);
printf("\n数据保存成功.\n");
// system("pause"); //win暂停
// system("cls"); //win清屏
}
```
![](https://raw.githubusercontent.com/Anson-zechaoWei/photos_blog/main/img/%E4%BF%9D%E5%AD%98%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF.gif)
## 读取学生信息
```c
void ReadStudent() {
//打开文件
FILE *fp = fopen("/Users/zechaowei/Documents
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(HRM): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。HRM系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(CRM): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。CRM系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统
资源推荐
资源详情
资源评论
收起资源包目录
基于c语言的学生成绩管理系统.zip (43个子文件)
SJT-code
StudentManagerSystem.h 1KB
.DS_Store 6KB
CMakeLists.txt 163B
cmake-build-debug
build.ninja 9KB
.DS_Store 6KB
Testing
Temporary
LastTest.log 121B
CMakeFiles
cmake.check_cache 85B
StudentManagerSystem.dir
main.c.o 15KB
CMakeError.log 301B
clion-Debug-log.txt 481B
rules.ninja 2KB
CMakeOutput.log 14KB
clion-environment.txt 112B
3.24.2
CompilerIdC
CMakeCCompilerId.c 25KB
CMakeCCompilerId.o 2KB
CMakeSystem.cmake 360B
CMakeCCompiler.cmake 3KB
CMakeDetermineCompilerABI_C.bin 17KB
TargetDirectories.txt 343B
cmake_install.cmake 2KB
.ninja_deps 37KB
.ninja_log 6KB
StudentManagerSystem 35KB
CMakeCache.txt 13KB
.cmake
api
v1
reply
target-StudentManagerSystem-Debug-6f3f8ba74156249fef1f.json 1KB
cache-v2-2fa27e1736a12fe28504.json 20KB
directory-.-Debug-f5ebdc15457944623624.json 154B
toolchains-v1-ae04bbe1f607ca07f0b7.json 897B
cmakeFiles-v1-990325d0d9fe86e7f0f3.json 4KB
index-2023-07-11T09-01-43-0058.json 2KB
codemodel-v2-9e8cad6a5c5f0a7c9178.json 1KB
query
cmakeFiles-v1 0B
codemodel-v2 0B
cache-v2 0B
toolchains-v1 0B
.idea
StudentManagerSystem.iml 97B
vcs.xml 180B
misc.xml 137B
modules.xml 292B
.gitignore 176B
data.csv 96B
main.c 8KB
README.md 19KB
共 43 条
- 1
资源评论
JJJ69
- 粉丝: 6166
- 资源: 5674
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功