仅供借鉴、仅供借鉴、仅供借鉴(整理了一下大一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. LeetCode使用JavaScript破解两数之和

    有人相爱,有人夜里开车看海,我是leetcode第一题都做不出来 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返 ...

  2. MySQL Shell无法拉起MGR集群解决办法

    MySQL Shell无法拉起MGR集群解决办法 用MySQL Shell要重新拉起一个MGR集群时,可能会提示下面的错误信息: Dba.rebootClusterFromCompleteOutage ...

  3. postgresql逻辑备份工具pg_dump和pg_resotre学习

    (一)pg_dump备份 pg提供了pg_dump和pg_dumpall命令进行数据库的备份,pg_dumpall是将整个pg集群转储到一个脚本文件中,而pg_dump命令可以选择一个数据库或者部分表 ...

  4. BMP位图之8位位图(三)

    起始结构 typedef struct tagBITMAPFILEHEADER { WORD bfType; //类型名,字符串"BM", DWORD bfSize; //文件大小 ...

  5. WebView2 通过 PuppeteerSharp 实现爬取 王者 壁纸 (案例版)

    此案例是<.Net WebView2 项目,实现 嵌入 WEB 页面 Chromium内核>文的续集. 主要是针对WebView2的一些微软自己封装的不熟悉的API,有一些人已经对 Pup ...

  6. 使用JMeter进行MySQL的压力测试

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 目录 前言 1. JMeter安装 2. 导入MyS ...

  7. MyBatis 01 概述

    官网 http://www.mybatis.org/mybatis-3/zh/index.html GitHub https://github.com/mybatis/mybatis-3 简介 MyB ...

  8. ceph 006 rbd高级特性 rbd快照 镜像克隆 rbd缓存 rbd增量备份 rbd镜像单向同步

    版本 [root@clienta ~]# ceph -v ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037b28a57 ...

  9. Linux应急响应学习

    Linux应急响应-系统日志排查-溯源 溯源 找到攻击者.系统日志分析攻击者的ip  攻击者可能留下了一些代码 样本 网上的信息很大程度上是不可信的. 方法: 蜜罐  高交互的蜜罐 溯源: ip 日志 ...

  10. 使用Apache Flink 和 Apache Hudi 创建低延迟数据湖管道

    近年来出现了从单体架构向微服务架构的转变.微服务架构使应用程序更容易扩展和更快地开发,支持创新并加快新功能上线时间.但是这种方法会导致数据存在于不同的孤岛中,这使得执行分析变得困难.为了获得更深入和更 ...