# 学生成绩管理系统

效果

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. Java Console类

    用于从控制台设备读取字符信息,通常是文本和密码.尤其读取密码字符时是看不见的. 下面给出一个例子: import java.io.Console; /** * @author xusucheng * ...

  2. centos上使用makefile编译sliver时 提示gcc 错误,cannot find -ldl cannot find -lpthread cannot find -lc

    github.com/bishopfox/sliver/server /usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit ...

  3. [BUUCTF][Web][GXYCTF2019]Ping Ping Ping 1

    打开靶机对应URL 提示有ip参数 尝试构造url http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0. ...

  4. 2021-07-20 JavaScript中关于eval()方法

    eval()常见用途 1.使用ajax获取到后台返回的json数据时,使用 eval 这个方法将json字符串转换成对象数组 let jsonString = JSON.stringify({fang ...

  5. mp4v2开发笔记(一): mp4v2库介绍,mp4v2在ubuntu上交叉编译移植到海思Hi35xx平台

    前言   在海思上需要将h264码流封装成mp4可使用mp4v2库.   其他相关   <Qt开发笔记之编码x264码流并封装mp4(四):mp4v2库的介绍和windows平台编译>   ...

  6. day03--实际操作演示linux系统挂载过程

    # 第一步骤: 拥有一个存储设备-光驱,使光驱加载光盘 # 第二步骤: 在linux系统中找到光驱设备 ls -l /dev/cdrom # 第三步骤: 需要将存储设备进行 挂载 挂载命令语法格式: ...

  7. picgo如何设置又拍云图床

    1. 打开又拍云官网.正常注册,并且实名认证. 2. 选择产品,然后选择云存储,激活后进入控制台. 3. 创建云存储服务.注意服务名称.后续会用到 4. 新建一个操作员,并且给权限全部打勾. 添加好操 ...

  8. 【easy52pojie】一款方便看吾爱论坛帖子的爬虫程序

    众所周知吾爱论坛一页最多显示十来条回帖,且间隔很大,每页的信息密度太低了.在帖子很庞大的情况下,一页一页翻页,着实有点痛苦. 故简单敲敲代码,使用request xpath技术做了一个论坛帖子回复查看 ...

  9. 在Linux平台使用wps卡顿现象解决方法

    是因为软件占据的内存过多,需要关掉目前不使用的软件,以释放系统内存.

  10. day06-多表查询02

    多表查询02 4.表复制 自我复制数据(蠕虫复制) 有时,为了对某个sql语句进行效率测试,我们需要海量数据时,可以用此法为表创建海量数据 -- 为了对某个sql语句进行效率测试,我们需要海量数据时, ...