仅供借鉴、仅供借鉴、仅供借鉴(整理了一下大一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. Luogu3177 [HAOI2015]树上染色 (树形DP)

    考场上打出来个\(2^n n^2 \log (n)\),还文件错误RE了... 其实这不就是个变了一点点的树形背包,状态是节点\(u\)子树的\(贡献\). //#include <iostre ...

  2. 744. 寻找比目标字母大的最小字母--LeetCode

    来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/find-smallest-letter-greater-than-target 著作权归领扣网络所有. ...

  3. Canvas 线性图形(三):曲线

    前言 画曲线要用到二次贝塞尔曲线或三次贝塞尔曲线.贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如 PhotoShop. 二次贝塞尔曲线 二次贝塞尔曲线在 ...

  4. iommu分析之---intel iommu初始化

    intel 的iommu 是iommu框架的一个实现案例. 由于intel 的iommu 实现得比arm smmv3复杂得多,里面概念也多,所以针对intel 实现的iommu 案例的初始化部分进行一 ...

  5. Spring的俩大核心概念:IOC、AOP

    1.Spring 有两个核心部分: IOC 和 Aop (1)IOC:控制反转,把创建对象过程交给 Spring 进行管理   (2)Aop:面向切面,不修改源代码进行功能增强 2.Spring 特点 ...

  6. Java使用定时任务详解

    定时任务 目录 定时任务 SpringBoot定时任务 默认单线程 使用异步多线程 Spring定时任务XML配置(注解形式几乎同上) 使用springTask: ----springTask为spr ...

  7. 百度松果菁英班OJ【连载】

    第十六周 2 的 n 次幂 高精度乘法 #include<bits/stdc++.h> using namespace std; vector<int> mul(vector& ...

  8. electron 起步

    electron 起步 为什么要学 Electron,因为公司需要调试 electron 的应用. Electron 是 node 和 chromium 的结合体,可以使用 JavaScript,HT ...

  9. Linux下自动删除过期备份和自动异地备份

    每天自动删除过期备份 首先编写一个简单的Shell脚本DeleteExpireBackup.sh: #!/bin/bash # 修改需要删除的路径 location="/database/b ...

  10. 关于Ubuntu系统无法输入中文的问题,即使做了种种修改

    原网址:https://shurufa.sogou.com/linux/guide 在经历一晚上一及一下午的奋战后,找到了最终解决方案,该解决方案使用的是搜狗输入法 在操作之前有以下注意事项:所有操作 ...