仅供借鉴、仅供借鉴、仅供借鉴(整理了一下大一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语言简单实现)的更多相关文章

  1. 学生管理系统 Python语言

    def show_student(): print(('*'*20).center(55)) print('1.添加学生信息'.center(50)) print('2.修改学生信息'.center( ...

  2. 【IOS开发笔记02】学生管理系统

    端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...

  3. 【IOS开发笔记01】学生管理系统(上)

    端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...

  4. Java 小型学生管理系统心得

    这个学生管理系统相对来说比较简单,主要就是复习下java怎么连接数据库,然后你怎么来实现这个功能,我简单的说下思路吧. 首先你要构思好这个界面,他包括增删查改这些基本功能,然后你去分析这些功能都能怎么 ...

  5. Maven+JSP+SSM+Mysql+C3P0实现的学生管理系统

    项目简介 项目来源于:https://gitee.com/wu_yun_long/student_management_system 本系统是基于Maven+JSP+SSM+Mysql+C3P0实现的 ...

  6. c语言之学生管理系统

    0x00 学生管理系统 说到学生管理系统,对于每一个初学c语言的人都是一道不得不过的砍.不过,学习c,我觉得每个人都应该写一个学生管理系统,至于为什么,我想倘若连一个学生管理系统都写不好,哪么他的c是 ...

  7. 学生管理系统-火车订票系统 c语言课程设计

    概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...

  8. Java写一个简单学生管理系统

    其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来 ...

  9. C++ 实现简单命令行学生管理系统

    C++ 实现简单命令行学生管理系统 预览: 编译环境是macOS.system("clear") 在windows下请换成 system("cls") #inc ...

随机推荐

  1. Luogu2783 有机化学之神偶尔会做作弊 (树链剖分,缩点)

    当联通块size<=2时不管 #include <iostream> #include <cstdio> #include <cstring> #includ ...

  2. PerfView专题 (第七篇):如何洞察触发 GC 的 C# 代码?

    一:背景 上一篇我们聊到了如何用 PerfView 洞察 GC 的变化,但总感觉还缺了点什么? 对,就是要跟踪到底是什么代码触发了 GC,这对我们分析由于 GC 导致的 CPU 爆高有非常大的参考价值 ...

  3. Springboot连接数据库

    好家伙, 这里使用的软件是IDEA 2021 1.新建项目 2.更改配置项目文件目录 更改前: 更改后: 2.1.更改pom.xml文件 在该文件中添加: <dependency> < ...

  4. 校园网跨网段共享文件Samba+SSH

    Introduction This tutorial contains screenshots for the English version of Windows 10. Separate inst ...

  5. 手撸Router,还要啥Router框架?react-router/vue-router躺一边去

    有没有发现,在大家使用React/Vue的时候,总离不开一个小尾巴,到哪都得带着他,那就是react-router/vue-router,而基于它们的第三方框架又出现很多个性化约定和扩展,比如nuxt ...

  6. Kingbase V8R6存储过程变量数据导出到操作系统文件

    Kingbase V8R6存储过程变量数据导出到操作系统文件 说明: KingbaseES V8R6如何将自定义过程中的变量数据导出到操作系统文件中. 本次案例数据库版本: test=# select ...

  7. 引擎之旅 前传:C++代码规范

    自己以前写代码时,一个项目一个风格.单人开发的工作使得我并没有注意到代码规范性和可读性的问题.每当项目结束后,看到自己杂乱无章的代码,完全没有二次开发和重构的欲望. 写代码就应该像写诗一样优雅. by ...

  8. 走进Redis-扯扯集群

    集群 为什么需要切片集群 已经有了管理主从集群的哨兵,为什么还需要推出切片集群呢?我认为有两个比较重要的原因: 当 Redis 上的数据一直累积的话,Redis 占用的内存会越来越大,如果开启了持久化 ...

  9. haodoop高可用

    高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,两者的实现基本类似, 但 HDFS NameNode 对数据存储及其一致性的要求比 ...

  10. phpoffice文档笔记

    目录 phpword html转word phpexcel 从数据库导出 phpword html转word <?php namespace app\index\controller; use ...