学生管理系统(C语言简单实现)
仅供借鉴、仅供借鉴、仅供借鉴(整理了一下大一C语言每个章节的练习题、没得题目、只有程序了)
1 、实训名称
实训12:文件
2、实训目的及要求
1、文件的基本应用
2、综合运用已学的知识,包括循环结构、函数、数组、指针等来解决问题。结合程序调试功能和程序3、调试技巧解决程序中存在的逻辑问题。
实现效果:



3、 源码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 2
struct student{
char num[10];//学号
char name[10];//名字
float score_c;//语文
float score_m;//数学
float score_e;//英语
float score_sum; //总成绩
};
void inputfile(struct student *stu,int n);//输入文件函数
int outputfile(struct student *stu);//输出文件函数
void input(struct student *stu);//输入函数,从键盘输入数据
void output(struct student *stu);//输出函数,将数据输出在屏幕上显示
void rank(struct student *stu);//排序函数,按总成绩排序后调用输出函数输出排序后的情况
void locating(struct student *stu);//查询函数,按姓名进行查询,并输出查询到的数据
void mainview();//界面函数
void inputfile(struct student *stu,int n){
FILE *f;
int i;
if((f=fopen("student.txt","w"))!=NULL)
{
for(i=0;i<n;i++)
{
fprintf(f,"学号:%s\t姓名:%s\t语文:%.2lf\t数学:%.2lf\t英语%.2lf\t总分%.2lf\n",
stu[i].num,stu[i].name,stu[i].score_c,stu[i].score_m,stu[i].score_e,stu[i].score_sum);
}
printf("文件写入成功");
fclose(f);
}else{
printf("文件打开失败!\n");
}
}
int outputfile(struct student *stu){
FILE *f;
int i,n;
if((f=fopen("stu.txt","r"))!=NULL)
{
for(i=0;feof(f)==0;i++)//feof(f)函数:指针f所指向的文件若文件结束,该函数返回值为非0值
fscanf(f,"学号:%s\t姓名:%s\t语文:%.2lf\t数学:%.2lf\t英语%.2lf\t总分%.2lf\n",
stu[i].num,stu[i].name,stu[i].score_c,stu[i].score_m,stu[i].score_e,stu[i].score_sum);
fclose(f);
}else{
printf("文件打开失败");
}
n=i-1;
return n;
}
void input(struct student *stu){
int i;
for(i=0;i<N;i++)
{
printf("\n\t请输入学生信息:\n\t\t学号:");
scanf("%s",stu[i].num);
printf("\t\t姓名:");
scanf("%s",stu[i].name);
printf("\t\t语文:");
scanf("%f",&stu[i].score_c);
printf("\t\t数学:");
scanf("%f",&stu[i].score_m);
printf("\t\t英语:");
scanf("%f",&stu[i].score_e);
stu[i].score_sum=stu[i].score_c+stu[i].score_m+stu[i].score_e;
}
inputfile(stu,N);
}
void output(struct student *stu){
int i,n;
printf("\t学号\t姓名\t语文\t数学\t英语\t总分\n");
for(i=0;i<N;i++)
{
printf("\t%-8s%-8s%-8.lf%-8.lf%-8.lf%-8.lf\n",stu[i].num,stu[i].name,
stu[i].score_c,stu[i].score_m,stu[i].score_e,stu[i].score_sum);
}
}
void rank(struct student *stu){
int i,k;
struct student temp;
for(k=1;k<N;k++)
for(i=N-1;i>=k;i--)
if(stu[i].score_sum>stu[i-1].score_sum)
{
temp=stu[i];
stu[i]=stu[i-1];
stu[i-1]=temp;
}
output(stu);
}
void locating(struct student *stu){
int i;
char ch[10];
if(N==0)
{
printf("没有记录!\n");
return;
}
printf("请输入你要查找的姓名:");
scanf("%s",&ch);
for(i=0;i<N;i++)
if(strcmp(stu[i].name,ch)==0)
{
printf("\n\t\t查找到的学生,信息如下\n\n");
printf("\t学号\t姓名\t语文\t数学\t英语\t总分\n");
printf("\t%-8s%-8s%-8.lf%-8.lf%-8.lf%-8.lf\n",stu[i].num,stu[i].name,
stu[i].score_c,stu[i].score_m,stu[i].score_e,stu[i].score_sum);
return;
}
if(i==N)printf("\t\t未找到要查找的学生的信息!\n");
}
void mainview(){
int c,f;
struct student stu[N];
while(1)
{
system("CLS");
printf("*********************************************************\n");
printf("*\t\t\t\t\t\t\t*\n");
printf("*\t\t 学生管理系统! \t\t*\n");
printf("*\t\t\t\t\t\t\t*\n");
printf("*********************************************************\n");
printf("*\t\t\t\t\t\t\t*\n");
printf("*\t\t 1--输入信息 \t\t*\n");
printf("*\t\t 2--查看信息 \t\t*\n");
printf("*\t\t 3--按成绩排序 \t\t*\n");
printf("*\t\t 4--按姓名查找 \t\t*\n");
printf("*\t\t 0--退出系统 \t\t*\n");
printf("*\t\t\t\t\t\t\t*\n");
printf("*********************************************************\n");
printf("请输入选项编号(0 ~ 4): (按回车键结束输入)\n");
scanf("%d",&c);
switch(c)
{
case 1:input(stu);break;
case 2:output(stu);break;
case 3:rank(stu);break;
case 4:locating(stu);break;
case 0: return;
default:printf("输入错误,请重新输入!\n");fflush(stdin);//fflush清空缓冲区残余信息
}
printf("\n\n");
system("pause");
}
}
int main()
{
mainview();
system("pause");
getchar();
getchar();
return 0;
}
4、实验小结
通过本次的作业,了解到文件的读写方式和存储的形式。通过不同函数的结合使用可以解决生活中的一些实际问题。指针的使用能够方便的定位,便于操作。但是指针使用不好会对程序造成危害。数组的使用可以存储大量的数据,在内存中按连续的顺序存储数据有利于数据的操作。
学生管理系统(C语言简单实现)的更多相关文章
- 学生管理系统 Python语言
def show_student(): print(('*'*20).center(55)) print('1.添加学生信息'.center(50)) print('2.修改学生信息'.center( ...
- 【IOS开发笔记02】学生管理系统
端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...
- 【IOS开发笔记01】学生管理系统(上)
端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...
- Java 小型学生管理系统心得
这个学生管理系统相对来说比较简单,主要就是复习下java怎么连接数据库,然后你怎么来实现这个功能,我简单的说下思路吧. 首先你要构思好这个界面,他包括增删查改这些基本功能,然后你去分析这些功能都能怎么 ...
- Maven+JSP+SSM+Mysql+C3P0实现的学生管理系统
项目简介 项目来源于:https://gitee.com/wu_yun_long/student_management_system 本系统是基于Maven+JSP+SSM+Mysql+C3P0实现的 ...
- c语言之学生管理系统
0x00 学生管理系统 说到学生管理系统,对于每一个初学c语言的人都是一道不得不过的砍.不过,学习c,我觉得每个人都应该写一个学生管理系统,至于为什么,我想倘若连一个学生管理系统都写不好,哪么他的c是 ...
- 学生管理系统-火车订票系统 c语言课程设计
概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...
- Java写一个简单学生管理系统
其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...
- C++ 实现简单命令行学生管理系统
C++ 实现简单命令行学生管理系统 预览: 编译环境是macOS.system("clear") 在windows下请换成 system("cls") #inc ...
随机推荐
- 基于图像二维熵的视频信号丢失检测(Signal Loss Detection)
1 图像二维熵 图像二维熵作为一种特征评价尺度能够反映出整个图像所含平均信息量的高低,熵值(H)越大则代表图像所包含的信息越多,反之熵值(H)越小,则图像包含的信息越少.对于图像信息量,可以简单地认 ...
- 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(10)-Fiddler如何设置捕获Firefox浏览器的Https会话
1.简介 经过上一篇对Fiddler的配置后,绝大多数的Https的会话,我们可以成功捕获抓取到,但是有些版本的Firefox浏览器仍然是捕获不到其的Https会话,需要我们更进一步的配置才能捕获到会 ...
- java-Servlet生命周期与jsp
容器如何处理请求资源路径? 比如,在浏览器地址栏输入:ip地址路径/abc.html. Step1.默认访问的是一个servlet,会从web.xml中查找有没有匹配的servlet. ...
- KubeEdge:下一代云原生边缘设备管理标准DMI的设计与实现
摘要:KubeEdge设备管理架构的设计实现,有效帮助用户处理设备数字孪生进程中遇到的场景. 本文分享自华为云社区<KubeEdge:下一代云原生边缘设备管理标准DMI的设计与实现>. 随 ...
- 简易的AutoPlayCarousel 轮播控件
原理是使用StackPanel 的margin属性的偏移来实现轮播的效果 废话不多说直接上代码 AutoPlayCarousel核心代码 [ContentProperty(nameof(Childre ...
- SpringBoot集成Thymeleaf发送Html邮件报错
由于业务需求需要使用Thymeleaf作为模板发送Html邮件,开发调试过程中发生以下错误 org.thymeleaf.exceptions.TemplateInputException: Error ...
- KingbaseES sys_blocking_pids 函数
会话出现了锁等待,想要快速查询到堵塞的会话,可以使用 sys_blocking_pids 函数来实现这一目的. sys_blocking_pids:获取哪些会话阻塞了某个会话(输入参数). sys_b ...
- 最新一线大厂Redis使用21条军规及详细解读
说明:个人原创,本人在一线互联网大厂维护着几千套集群,关于redis使用的一些坑进行了经验总结,希望能给大家带来一些帮助 适用场景:并发量大.访问量大的业务 规范:介绍军规内容 解读:讲解军规设置原因 ...
- vue3中defineComponent 的作用
vue3中,新增了 defineComponent ,它并没有实现任何的逻辑,只是把接收的 Object 直接返回,它的存在是完全让传入的整个对象获得对应的类型,它的存在就是完全为了服务 TypeSc ...
- Openstack neutron:目录
为什么? 最近一直在学习SDN方面的知识,本着"最好的学习就是分享"的精神,记录下本系列的文章,尝试更好地去理解SDN这一正当红的技术. 如何? SDN领域现在已经充斥了大量的公司 ...