600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C语言项目—学生成绩管理系统(完结)

C语言项目—学生成绩管理系统(完结)

时间:2023-04-22 13:20:52

相关推荐

C语言项目—学生成绩管理系统(完结)

C语言项目

1、学生成绩管理系统

本项目旨在增强,学习C语言的指针和链表部分知识

1.1 功能需求部分介绍

此处首先介绍一下该项目要完成的功能主要包括如下9个功能:

1、录入学生信息:即链表的功能

2、打印学生信息:链表元素的遍历

3、保存学生信息:文件的“写”功能,数据持久化

4、读取学生信息:文件的“读”功能

5、统计学生人数:链表元素的遍历

6、查找学生信息:链表元素的搜索

7、修改学生信息:链表元素的修改

8、删除学生信息:链表元素的删除

9、系统的保持、清屏、退出。

1.2 头文件的准备

在头文件中准备好学生信息操作的链表节点结构体,以及学生信息结构体,头文件命名为StudentInfoSystem.h

代码如下:

#define _CRT_SECURE_NO_WARNINGS#pragma once#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <string.h>typedef struct _Student {char name[20];//姓名int age;//年龄char stuNum[10];//学号float score;//成绩}Student;typedef struct _Node {Student stu;struct _Node * pNext;}Node;Node* g_pHead = NULL;//欢迎void welcome();//录入学生信息void inputStuInfo();//打印学生信息void printStuInfo();//保存学生信息void saveStuInfo();//读取学生信息void readStuInfo();//统计所有学生人数void countStuNum();//查找学生Node* findStudentByName(char name[20]);//修改学生信息void changeStuInfo();//删除学生信息void delStuInfo();

1.3 学生管理系统欢迎界面的制作

代码实现:

包括 switch语句实现按键选择功能,以及一个欢迎的展示。

#define _CRT_SECURE_NO_WARNINGS#include "StudentInfoSystem.h"int main(){while (1) {welcome();//从键盘接受一个字符,进入等待和选择//scanf//getch//getchar();char ch = _getch();char name[20];Node* stu;switch (ch){case '1'://录入学生信息inputStuInfo();break;case '2'://打印学生信息printStuInfo();break;case '3'://保存学生信息saveStuInfo();break;case '4'://读取学生信息readStuInfo();break;case '5'://统计学生人数countStuNum();break;case '6'://查找学生信息printf("请输入要查找的学生姓名:");scanf("%s", name);stu = findStudentByName(name);if (stu != NULL) {printf("学生姓名为:%s\n", stu->stu.name);printf("学生学号为:%s\n", stu->stu.stuNum);printf("学生年龄为:%d\n", stu->stu.age);printf("学生成绩为:%f\n", stu->stu.score);}else {printf("没有该学生的信息");}system("pause");system("cls");break;case '7'://修改学生信息changeStuInfo();break;case '8'://删除学生信息delStuInfo();break;case '0'://退出系统printf("bye bye\n");return 0;break;default:printf("您的输入有误请重新输入\n");system("pause");system("cls");}}return 0;}void welcome() {printf("*************************************************\n");printf("*\t欢迎使用高校学生成绩管理系统V1.0\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\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.4 录入学生信息功能实现

代码实现:

void inputStuInfo() {//创建链表,首先开辟空间Node* pNewNode = (Node*)malloc(sizeof(Node));pNewNode->pNext = NULL;//头插法,尾插法//头插法if (g_pHead == NULL) {g_pHead = pNewNode;}else {pNewNode->pNext = g_pHead;g_pHead = pNewNode;}printf("请输入学生姓名:\n");scanf("%s", pNewNode->stu.name);printf("请输入学生年龄:\n");scanf("%d", &pNewNode->stu.age);printf("请输入学生学号:\n");scanf("%s", pNewNode->stu.stuNum);printf("请输入学生成绩:\n");scanf("%f", &pNewNode->stu.score);printf("学生信息录入成功\n");system("pause");system("cls");}

功能展示:

1.5 打印学生信息

代码实现:

//打印学生信息void printStuInfo() {system("cls");printf("*************************************************\n");printf("*\t欢迎使用高校学生成绩管理系统V1.0\t*\n");printf("*************************************************\n");printf("* 学号 * 姓名 * 年龄 * 成绩 *\n");printf("*************************************************\n");Node* curPoint = g_pHead;while (curPoint != NULL) {printf("* %s * %s * %d * %f *\n", curPoint->stu.stuNum, curPoint->stu.name, curPoint->stu.age, curPoint->stu.score);printf("*************************************************\n");curPoint = curPoint->pNext;}system("pause");system("cls");}

功能展示(包含信息录入):

1.6 保存学生信息

代码实现:

//保存学生信息void saveStuInfo() {//打开文件FILE* fp = fopen("F:\\C++\\StudentInfoSystem\\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");system("pause");system("cls");}

功能展示:

1.7 读取学生信息

代码实现:

void readStuInfo() {//打开文件FILE* fp = fopen("F:\\C++\\StudentInfoSystem\\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("是否要打印学生信息y/n\n");char choose;scanf("%c", &choose);if (choose == 'y') {system("cls");//打印文件中的学生信息printStuInfo();}else {printf("读取成功\n");system("pause");system("cls");}}

功能展示:

1.8 统计学生人数

代码实现:

//统计学生人数void countStuNum() {Node* p = g_pHead;int count = 0;while (p != NULL) {count++;p = p->pNext;}printf("学生的人数为%d\n", count);system("pause");system("cls");}

功能展示:

1.9 查找学生信息

代码实现:

//查找学生Node* findStudentByName(char name[20]) {system("cls");Node* p = g_pHead;while (p != NULL) {if (strcmp(p->stu.name, name)==0) {return p;}p = p->pNext;}return NULL;}

功能展示:

1.10 修改学生信息

代码实现:

//修改学生信息void changeStuInfo() {system("cls");char name[20];printf("请输入要修改的学生姓名:");scanf("%s", name);Node* stu = findStudentByName(name);if (stu == NULL) {printf("不存在该学生");}else {printf("原先的姓名为:%s,请输入要修改的姓名:", stu->stu.name);scanf("%s", stu->stu.name);printf("原先的学号为:%s,请输入要修改的学号:", stu->stu.stuNum);scanf("%s", stu->stu.stuNum);printf("原先的年龄为:%d,请输入要修改的年龄:", stu->stu.age);scanf("%d", &stu->stu.age);printf("原先的成绩为:%f,请输入要修改的成绩:", stu->stu.score);scanf("%f", &stu->stu.score);printf("修改成功");}system("pause");system("cls");}

功能展示:

1.11 删除学生信息

代码实现:

//删除学生信息void delStuInfo() {system("cls");char name[20];printf("请输入要删除的学生姓名");scanf("%s", name);Node *p1, *p2;//判断是不是头结点if (strcmp(g_pHead->stu.name, name) == 0) {p1 = g_pHead;g_pHead = g_pHead->pNext;free(p1);printf("删除成功");system("pause");system("cls");return;}//不是头结点Node *p = g_pHead;while (p->pNext != NULL) {if (strcmp(p->pNext->stu.name, name)) {p2 = p->pNext;p->pNext = p->pNext->pNext;free(p2);system("pause");system("cls");return;}p = p->pNext;}if (p->pNext == NULL) {printf("没有该学生");}else {printf("删除成功");}system("pause");system("cls");}

功能展示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。