# 学生成绩管理系统

效果

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. windbg 学习

    常用的 windbg 命令 .ecxr 用来切换到异常发生时的上下文,主要用在分析静态 dump 文件的时候.当我们使用 .reload 命令去强制加载库的 pdb 文件后,需要执行 .ecxr 命令 ...

  2. GPS坐标系转换 go golang 版本

    GPS坐标系转换 坐标系 解释 WGS84坐标系 地球坐标系,国际通用坐标系 GCJ02坐标系 火星坐标系,WGS84坐标系加密后的坐标系:Google国内地图.高德.腾讯地图 使用 BD09坐标系 ...

  3. 详细的BoltDB学习记录文档

    最近项目中用到了boltdb这个go开发的key/value 数据库,但是之前并有接触过,所以特意去看了官方,也找了些资料,网上找的资料要不就是官方文档的翻译,要不就是简单的介绍一点,都不是很全,所以 ...

  4. 【Azure 应用程序见解】在Azure门户中,创建App Service(应用服务)时,无法一起创建Application Insights的问题

    问题描述 创建Web应用时启用监视的问题.Azure管理员(Admin)用户下分配了 一个子用户.但是在使用子用户创建WEB应用的时候,启用 Application Insights 选项的 &quo ...

  5. Python实现snap:对齐多张遥感影像的空间范围

      本文介绍基于Python中ArcPy模块,实现基于栅格图像批量裁剪栅格图像,同时对齐各个栅格图像的空间范围,统一其各自行数与列数的方法.   首先明确一下我们的需求.现有某一地区的多张栅格遥感影像 ...

  6. Java final 关键字使用

    1 package com.bytezreo.finaltest; 2 3 /** 4 * 5 * @Description final 关键字使用 6 * @author Bytezero·zhen ...

  7. 安卓app设置背景音乐循环播放另有强制不能调节音量软件无法退出(仅供个人学习)

     步进式调节:(直接调到那个音量): setStreamVolume (int streamType, int index, int flags) int streamType 需要调整的音量类型 ( ...

  8. 聚焦企业流程智能化发展新趋势,中国信通院2022 RPA创新产业峰会即将开启

    机器人流程自动化(Robotic Process Automation,RPA)是数字时代的重要劳动力之一,流程的自动化.智能化运行是企业释放运营能效.提升客户服务水平的重要路径. 近年来,各行业对R ...

  9. [学习笔记] Linux 环境下搭建基于Ngnix的反向代理服务

    ​之前为了方便同事测试微信小程序,搭建了基于CentOS的预发布环境,.Net5 程序也已经部署好在上面,在公网上可以通过http协议的临时域名(jevonsflash.xxx.net)访问到后台Ap ...

  10. windows10 使用gcc编译生成可执行文件exe实例解析

    一 操作步骤 1.生成可执行程序 cd xxx # 先进入源程序所在的目录 gcc hello.cpp # 一次性编译,windows系统生成a.exe文件,Linux系统生成a.out文件 gcc ...