# 学生成绩管理系统

效果

1.菜单选项

void welcome()//菜单
{
printf("欢迎使用学生管理系统\n");
printf(" 1.增加学生信息\n");
printf(" 2.展示学生信息\n");
printf(" 3.删除学生信息\n");
printf(" 4.修改学生信息\n");
printf(" 5.查看学生信息\n");
printf(" 6.保存学生信息\n");
printf(" 7.读取学生信息\n");
printf(" 0.退出\n");
}

2.增加学生信息

void addstudnet()//增加学生信息
{
node* pnewnode=(node*)malloc(sizeof(node));
pnewnode->pnext=NULL;
if(head==NULL)
{
head=pnewnode;
}
else
{
pnewnode->pnext=head;
head=pnewnode;
}
printf("请输入学生的学号\n");
scanf("%d",&pnewnode->stu.no);
printf("请输入学生的姓名\n");
scanf("%s",pnewnode->stu.name);
printf("请输入学生的年龄\n");
scanf("%d",&pnewnode->stu.age);
printf("请输入学生的分数\n");
scanf("%s",pnewnode->stu.score);
printf("学生信息录入成功\n");
system("pause");
system("cls");
}

3.展示学生信息

void showstudent()//展示学生信息
{
node* p=head;
printf("学号\t姓名\t年龄\t分数\n");
while(p!=NULL)
{
printf("%d\t%s\t%d\t%s\n",p->stu.no,p->stu.name,p->stu.age,p->stu.score);
p=p->pnext;
}
system("pause");
system("cls");
}

4.删除学生信息

void deletestudent()//删除学生信息
{
int dno;
printf("请输入需要删除学生的学号:");
scanf("%d",&dno);
if(head->stu.no==dno)
{
node* p1=head;
head=head->pnext;
free(p1);
printf("删除成功\n");
system("pause");
system("cls");
return;
}
node* p=head;
node* p2;
while(p->pnext!=NULL)
{
if(p->pnext->stu.no==dno)
{
p2=p->pnext;
p->pnext=p->pnext->pnext;
free(p2);
printf("删除成功\n");
system("pause");
system("cls");
return;
}
p=p->pnext;
if(p->pnext==NULL)
{
break;
}
}
if(p->pnext==NULL)
{
printf("查无此人\n");
system("pause");
system("cls");
}
}

5.修改学生信息

void editstudent()//修改学生信息
{
int eno;
printf("请输入需要修改学生的学号:");
scanf("%d",&eno);
node* p=head;
while(p->pnext!=NULL)
{
if(p->stu.no==eno)
{
printf("请输入学生的学号\n");
scanf("%d",&p->stu.no);
printf("请输入学生的姓名\n");
scanf("%s",p->stu.name);
printf("请输入学生的年龄\n");
scanf("%d",&p->stu.age);
printf("请输入学生的分数\n");
scanf("%s",p->stu.score);
printf("学生信息修改成功\n");
system("pause");
system("cls");
return;
}
p=p->pnext;
if(p==NULL)
{
break;
}
}
printf("查无此人!\n");
system("pause");
system("cls");
}

6.查找学生信息

node* findstudent()//查看学生信息
{
int fno;
printf("请输入需要查找学生的学号:");
scanf("%d",&fno);
node* p=head;
while (p!=NULL)
{
if(p->stu.no==fno)
{
printf("学号\t姓名\t年龄\t分数\n");
printf("%d\t%s\t%d\t%s\n",p->stu.no,p->stu.name,p->stu.age,p->stu.score);
system("pause");
system("cls");
return p;
}
p=p->pnext;
}
printf("查无此人\n");
return NULL;
system("pause");
system("cls");
}

7.保存学生信息

void savestudent()
{
FILE* fp = fopen("D:\\demo02.txt", "w");
if(fp==NULL)
{
printf("打开文件失败\n");
system("pause");
system("cls");
return;
}
node* p=head;
while(p!=NULL)
{
fwrite(&p->stu,sizeof(student),1,fp);
p=p->pnext;
}
fclose(fp);
printf("保存成功\n");
system("pause");
system("cls");
}

8.读取学生信息

void readstudent()
{
FILE* fp=fopen("D:\\demo02.txt","r");
if(fp==NULL)
{
printf("打开文件失败\n");
system("pause");
system("cls");
return;
}
student stu1; while(fread(&stu1,sizeof(student),1,fp))
{
node* p = (node*)malloc(sizeof(node));
p->pnext=NULL;
memcpy(p, &stu1,sizeof(student));
if (head == NULL)
{
head = p;
}
else
{
p->pnext = head;
head = p;
}
}
fclose(fp);
printf("读取成功\n");
system("pause");
system("cls");
}

源码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h> typedef struct student
{
int no;
char name[10];
int age;
char score[10];
}student;
typedef struct node
{
struct student stu;
struct node * pnext;
}node; struct node* head=NULL; void welcome();//菜单
void addstudnet();//增加学生信息
void showstudent();//展示学生信息
void deletestudent();//删除学生信息
void editstudent();//修改学生信息
node* findstudent();//查找学生信息
void savestudent();//保存学生信息
void readstudent();//读取学生信息 int main()
{
int choice=0;
while (1)
{
welcome();
printf("请输入选择:");
scanf("%d",&choice);
switch (choice)
{
case 0:
return 0;
break;
case 1:
addstudnet();
break;
case 2:
showstudent();
break;
case 3:
deletestudent();
break;
case 4:
editstudent();
break;
case 5:
findstudent();
break;
case 6:
savestudent();
break;
case 7:
readstudent();
break;
default:
printf("输入错误!\n");
system("pause");
system("cls");
break;
}
}
} void welcome()//菜单
{
printf("欢迎使用学生管理系统\n");
printf(" 1.增加学生信息\n");
printf(" 2.展示学生信息\n");
printf(" 3.删除学生信息\n");
printf(" 4.修改学生信息\n");
printf(" 5.查看学生信息\n");
printf(" 6.保存学生信息\n");
printf(" 7.读取学生信息\n");
printf(" 0.退出\n");
} void addstudnet()//增加学生信息
{
node* pnewnode=(node*)malloc(sizeof(node));
pnewnode->pnext=NULL;
if(head==NULL)
{
head=pnewnode;
}
else
{
pnewnode->pnext=head;
head=pnewnode;
}
printf("请输入学生的学号\n");
scanf("%d",&pnewnode->stu.no);
printf("请输入学生的姓名\n");
scanf("%s",pnewnode->stu.name);
printf("请输入学生的年龄\n");
scanf("%d",&pnewnode->stu.age);
printf("请输入学生的分数\n");
scanf("%s",pnewnode->stu.score);
printf("学生信息录入成功\n");
system("pause");
system("cls");
} void showstudent()//展示学生信息
{
node* p=head;
printf("学号\t姓名\t年龄\t分数\n");
while(p!=NULL)
{
printf("%d\t%s\t%d\t%s\n",p->stu.no,p->stu.name,p->stu.age,p->stu.score);
p=p->pnext;
}
system("pause");
system("cls");
} void deletestudent()//删除学生信息
{
int dno;
printf("请输入需要删除学生的学号:");
scanf("%d",&dno);
if(head->stu.no==dno)
{
node* p1=head;
head=head->pnext;
free(p1);
printf("删除成功\n");
system("pause");
system("cls");
return;
}
node* p=head;
node* p2;
while(p->pnext!=NULL)
{
if(p->pnext->stu.no==dno)
{
p2=p->pnext;
p->pnext=p->pnext->pnext;
free(p2);
printf("删除成功\n");
system("pause");
system("cls");
return;
}
p=p->pnext;
if(p->pnext==NULL)
{
break;
}
}
if(p->pnext==NULL)
{
printf("查无此人\n");
system("pause");
system("cls");
}
} void editstudent()//修改学生信息
{
int eno;
printf("请输入需要修改学生的学号:");
scanf("%d",&eno);
node* p=head;
while(p->pnext!=NULL)
{
if(p->stu.no==eno)
{
printf("请输入学生的学号\n");
scanf("%d",&p->stu.no);
printf("请输入学生的姓名\n");
scanf("%s",p->stu.name);
printf("请输入学生的年龄\n");
scanf("%d",&p->stu.age);
printf("请输入学生的分数\n");
scanf("%s",p->stu.score);
printf("学生信息修改成功\n");
system("pause");
system("cls");
return;
}
p=p->pnext;
if(p==NULL)
{
break;
}
}
printf("查无此人!\n");
system("pause");
system("cls");
} node* findstudent()//查看学生信息
{
int fno;
printf("请输入需要查找学生的学号:");
scanf("%d",&fno);
node* p=head;
while (p!=NULL)
{
if(p->stu.no==fno)
{
printf("学号\t姓名\t年龄\t分数\n");
printf("%d\t%s\t%d\t%s\n",p->stu.no,p->stu.name,p->stu.age,p->stu.score);
system("pause");
system("cls");
return p;
}
p=p->pnext;
}
printf("查无此人\n");
return NULL;
system("pause");
system("cls");
} void savestudent()
{
FILE* fp = fopen("D:\\demo02.txt", "w");
if(fp==NULL)
{
printf("打开文件失败\n");
system("pause");
system("cls");
return;
}
node* p=head;
while(p!=NULL)
{
fwrite(&p->stu,sizeof(student),1,fp);
p=p->pnext;
}
fclose(fp);
printf("保存成功\n");
system("pause");
system("cls");
} void readstudent()
{
FILE* fp=fopen("D:\\demo02.txt","r");
if(fp==NULL)
{
printf("打开文件失败\n");
system("pause");
system("cls");
return;
}
student stu1; while(fread(&stu1,sizeof(student),1,fp))
{
node* p = (node*)malloc(sizeof(node));
p->pnext=NULL;
memcpy(p, &stu1,sizeof(student));
if (head == NULL)
{
head = p;
}
else
{
p->pnext = head;
head = p;
}
}
fclose(fp);
printf("读取成功\n");
system("pause");
system("cls");
}

推荐视频

【C/C++课程设计】史上最全最详细的学生成绩管理系统上线啦,完成大学课程设计不是问题!_哔哩哔哩_bilibili

学生成绩管理--C语言的更多相关文章

  1. 学生成绩管理C语言版

    [标题]学生成绩管理的设计与实现 [开发语言]C语言 [概要设计]使用结构体存储学生的学号.姓名和成绩信息,实现对学生成绩类的基本操作:增加.删除.查询.排序 [测试数据]按提示输入5组正确的正确的数 ...

  2. C语言文件实现学生成绩管理

    C语言实现学生成绩管理 项目简介 用C语言的链表及文件操作实现学生成绩的管理,实现主要的添加.修改.删除.查询的主要功能,并在程序关闭时将数据存储在二进制的文件中并加密.下一次打开程序,先解密二进制文 ...

  3. 学生成绩管理C++版

    [标题]学生成绩管理的设计与实现 [开发语言]C++ [主要技术]STL [概要设计]类名:student 类成员:No.Name.Math.Eng.Chn.Cpro.Sum 成员函数:getname ...

  4. JAVA课程设计 学生成绩管理

    学生成绩管理 可实现功能: 添加学生功能:姓名.学号.性别.出生年月日.(学号自动生成且唯一) 添加学生成绩功能:每个人都有数学.Java与体育四门课,可分课程输入成绩. 根据学生学号查找学生成绩功能 ...

  5. JAVA基础代码分享--学生成绩管理

    问题描述: 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10  等级为’A’   成绩>=最高分-20  等级为’B’ 成绩>=最高分-30  等级为’C’ ...

  6. JAVA课程设计个人博客 学生成绩管理 201521123001 张陈东芳

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现学生信息的添加功能.学生成绩的录入 ...

  7. 简易学生成绩管理管理系统(java描述)

    没正式学过java,但是系统学过C++后,初略的看了下java的基本语法,于是我就尝试着用java来写个简单的学生管理系统,功能不齐全,以后有空再补充吧. 写的时候定义了不同的包名字,如jeaven1 ...

  8. 开学考试学生成绩管理Java

    首先student类 package xuexi; public class Student { private String stunumber; private String name; priv ...

  9. 学生成绩管理系统-JAVA语言测试

     首先右键新建一个工程project 选择Java Project,单击next下一步 project命名为“学生成绩管理系统”,点击finish继续 右键src文件夹新建Package包,取名为te ...

  10. JAVA课程设计个人博客 学生成绩管理 201521123023 戴建钊

    1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现随机生成10万个学生及其姓名.学号 ...

随机推荐

  1. c++STL用法总结

    一.vector的用法 vector<int> vet; 1.排序:sort(vet.begin(), vet.end()), 时间复杂度O(nlogn) 2.查找:if(find(vet ...

  2. 多线程系列(七) -ThreadLocal 用法及内存泄露分析

    一.简介 在 Java web 项目中,想必很多的同学对ThreadLocal这个类并不陌生,它最常用的应用场景就是用来做对象的跨层传递,避免多次传递,打破层次之间的约束. 比如下面这个HttpSer ...

  3. CentOS8安装Docker报错问题解决

    问题描述 CentOS版本:8.5.2111. # cat /etc/redhat-release CentOS Linux release 8.5.2111 安装准备: # 安装所需软件包 sudo ...

  4. 项目实战:Qt中英文输入软键盘(支持Qt4、Qt5、触摸和键鼠混合输入等)

      需求   1. 全屏软键盘:  2. 输入英文:  3. 输入中文:  4. 支持触摸.键盘和输入混合输入:  5. 目前有黑色系皮肤:  6. Qt4和Qt5区分2个版本:   Demo:Qt5 ...

  5. 泛型类Generic注解

    在 Python 的 typing 模块中,Generic 是一个泛型类,用于创建参数化的类和函数,以便支持不同类型的参数.它允许你定义具有类型参数的类,这些类型参数在实例化时才确定.这样,你可以在不 ...

  6. Go语言实现记账本

    使用面向过程思想实现 package main import ( "fmt" ) func main(){ key := "" //设置初始金额 sum := ...

  7. 第130篇:BOM(window对象)

    好家伙,本篇为<JS高级程序设计>第十二章"BOM"学习笔记   什么是BOM? BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种 ...

  8. 【Azure 事件中心】Event Hub服务中的度量值指标介绍

    问题描述 Event Hub服务中的度量值指标解说 1)request和message的区别 2)capture backlog 和 capture message 怎么理解 3)quota exce ...

  9. gitee的 私人令牌 就是 Gitee Open API 的 access_token

    gitee的 私人令牌 就是 Gitee Open API 的 access_token

  10. obs 录制教程 手机录屏用 向日葵 手机投屏 能用有线用有线的连接

    obs 录制教程 手机录屏用 向日葵 手机投屏 稍微有点卡 华为手机有个投屏 笔记本不支持这个 miracast 淘宝有卖 投屏设备的,搜 miracast 100多米 免费的就用向日葵就得了. 最新 ...