# 学生成绩管理系统

效果

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. centos7创建MySQL自动备份脚本

    说明 最近需要给wordpress站点搞一个定时备份mysql数据库,所以记录一下. 操作步骤 1.创建备份脚本 这一步最重要,创建目录:/home/wpblog_backup,然后在目录下创建she ...

  2. Oracle SQL 注入攻击

    All about Security - SQL Injection 最近做个一个有关ORACLE数据库安全的网上研讨.我们有1300多位参与者,反馈相当丰富. I recently did a we ...

  3. Springboot+Freemarker+Boostrap实现用户增删改查实战

    说明 做java web用的2大模板语言分别是:thymeleaf和freemarker,thymeleaf前面已经用了很多了,所以今天用一下这个freemarker. 技术栈 springboot ...

  4. [BUUCTF][WEB][ACTF2020 新生赛]Upload 1

    打开靶机url,右键查看网页源代码 其中有一段代码 <div class="light"><span class="glow"> < ...

  5. 列表相关函数,深浅拷贝,字典相关函数,集合相关操作及文件操作---day08

    1.列表的相关函数 append() 功能:向列表的末尾添加新的元素 格式:列表.append(值) 返回值:None 注意:新添加的值在列表的末尾,该函数直接操作原有列表 insert() 功能:在 ...

  6. 【华为机试ACM基础#01】字符串最后一个单词长度、计算某字符出现次数、提取不重复的整数(熟悉字符/字符串/整数的输入)

    字符串最后一个单词的长度 描述 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000.(注:字符串末尾不以空格为结尾) 输入描述: 输入一行,代表要计算的字符串,非空,长度小于5000 ...

  7. 【LeetCode双指针】合并两个有序数组,从后向前遍历

    合并两个有序数组 https://leetcode.cn/problems/merge-sorted-array/ 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m ...

  8. 闭关修炼180天 -- 手写SpringMVC框架(迷你版)

    SpringMvc知识须知 MVC设计模式 Model(模型):模型包含业务模型和数据模型,数据模型⽤于封装数据,业务模型⽤于处理业 务. View(视图): 通常指的就是我们的 jsp 或者 htm ...

  9. PostgreSql一个月学习计划

    1.背景 国内使用数据库最多的莫过于mysql,大部分程序员第一次接触数据库就是mysql.(毕竟免费的 = =!)但近年来,有一些黑马出现(如下图),其中表现最突出的莫过于PostgreSQL.特规 ...

  10. vscode ctrl + 鼠标左键 点击 不进入组件,弹出一个框再点才进入的问题 目录名和vue文件名 开头不能大写 需从起生效

    vscode ctrl + 鼠标左键 点击 不进入组件,弹出一个框再点才进入的问题 目录名和vue文件名 开头不能大写 需从起生效 就是这个,很讨厌,原来是开头不能大写字母的问题造成的. 小写字母就没 ...