目录

  • 1 C语言概述
    • 1.1 课件
    • 1.2 vc2010编译环境介绍
    • 1.3 例1-1显示“Hello World!”
    • 1.4 Dev c软件及在线编程网址
    • 1.5 课后拓展-中国大学慕课视频
    • 1.6 主题讨论:C语言的作用
    • 1.7 章节测验
  • 2 C语言基本数据类型
    • 2.1 课件
    • 2.2 课后拓展-中国大学慕课视频
    • 2.3 动画讲解位运算
    • 2.4 主题讨论:++a和a++的区别
    • 2.5 章节测验
  • 3 简单程序设计
    • 3.1 课件
    • 3.2 例3-3获取三位数的个十百位
  • 4 分支结构
    • 4.1 课件
    • 4.2 例4-2一元二次方程求实根
    • 4.3 例4-4判断字符的类别
    • 4.4 例4-6百分制分数分等级
    • 4.5 视频讲解-双分支结构
    • 4.6 课后拓展-中国大学慕课视频
    • 4.7 章节测验
  • 5 循环结构
    • 5.1 课件
    • 5.2 例5-2求 1-1/3+1/5-… 的前n项的和
    • 5.3 例5-4求各位数字之和
    • 5.4 例5-5素数判断
    • 5.5 例5-10求e的值
    • 5.6 for循环
    • 5.7 while和do--while循环
    • 5.8 视频讲解-循环嵌套
    • 5.9 视频讲解-循环辅助语句
    • 5.10 视频讲解-百钱百鸡问题
    • 5.11 课后拓展-中国大学慕课视频
    • 5.12 章节测验
  • 6 函数
    • 6.1 课件
    • 6.2 例6-1计算公式
    • 6.3 例6-3观察程序的输出结果
    • 6.4 例6-8递归法计算阶乘
    • 6.5 例6-12静态局部变量的值
    • 6.6 视频讲解-函数1(定义和调研)
    • 6.7 视频讲解-函数2(嵌套和递归调用)
    • 6.8 视频讲解-函数3(局部全局变量+预处理命令)
    • 6.9 课后拓展-中国大学慕课视频
    • 6.10 动画详解C语言函数基础及其底层原理
    • 6.11 章节测验
  • 7 数组
    • 7.1 课件
    • 7.2 例7-6指定数据插入到已排序序列
    • 7.3 例7-8求矩阵的最大值及对应行列位置
    • 7.4 例7-13删除指定字符
    • 7.5 例7-16连接两个字符串
    • 7.6 视频讲解-一维数组(逆序,排序,求平均找最大值,插入排序)
    • 7.7 视频讲解-二维数组
    • 7.8 视频讲解-字符数组
    • 7.9 课后拓展-中国大学慕课视频
    • 7.10 冒泡排序动画讲解
    • 7.11 补充其他排序讲解
    • 7.12 章节测验
  • 8 指针
    • 8.1 课件
    • 8.2 例8-2观察程序输出结果
    • 8.3 例8-8交换两个数
    • 8.4 例8-14二级指针访问变量
    • 8.5 视频讲解-指针2
    • 8.6 课后拓展-中国大学慕课视频
    • 8.7 动画讲解指针
    • 8.8 主题讨论:数组变量和指针的关系
    • 8.9 章节测验
  • 9 结构体和共用体
    • 9.1 课件
    • 9.2 例9-1计算平均成绩
    • 9.3 例9-3整班学生信息输出
    • 9.4 视频讲解-结构体类型定义和结构体变量定义
    • 9.5 章节测验
  • 10 文件
    • 10.1 课件
    • 10.2 例10-2字符写入文件并在屏幕输出
    • 10.3 例10-5存储并输出学生信息
    • 10.4 例10-7学生信息二进制读写
    • 10.5 视频讲解-文件
    • 10.6 文件应用综合实例
    • 10.7 章节测验
  • 11 拓展大作业
    • 11.1 题目要求及部分源代码
文件应用综合实例

利用所学数据文件知识,设计一综合实例:学生成绩管理系统。

该系统中的学生信息包括学号、姓名、8门课成绩(课程分别为:大学计算机、大学化学、大学物理、高等数学、外语、线性代数、C语言、马克思主义原理)

该系统能够完成如下功能:

1新建学生成绩数据文件,输入班级学生成绩保存到文件中。

2统计:

1)学生的总分及平均分;

2)课程的平均分。

3排序:按学号从高到低排序学生数据。

4查找:输入一个学号或姓名,输出对应学生的学号、姓名、班级名次、各科成绩及平均成绩。

5.实现学生信息的维护功能,包括新增学生、学生删除(留级或退学)或修改学生信息。



部分源程序:

#include <stdio.h>

#include <unistd.h>                     /*声明access函数的头文件*/

#include <stdlib.h>

#include <string.h>

#define N 100                             /*最多学生人数*/

#define M  8                             /*课程门数*/

struct student

{

       charno[10];

       charname[20];

       floatscore[M];

}stu[N];

int num=0;                                  /*实际学生人数*/

void init();                                  /*系统初始化*/

void newfile();                            /*创建数据文件*/

void read();                                 /*读取学生信息*/

void output();                              /*输出学生信息*/

void preserve();                           /*学生信息维护*/

void search();                              /*查找*/

void sort();                                 /*排序*/

void save();                                 /*保存并退出系统*/

void init()

{

       if(access("d:\\stu.dat",0))

/*判断学生成绩文件是否存在,函数原型包含在头文件“unistd.h”中*/

              newfile();                     /*文件不存则创建新数据文件*/

       else

              read();                          /*若文件存在,则从文件中读取学生信息*/

}

void newfile()

{

       inti,j;

       FILE*fp;

       if((fp=fopen("d:\\stu.dat","wb"))==NULL)

       {

              printf("文件创建失败!请重新运行程序。\n");

              exit(0);

       }

       printf("请输入学生人数:");

       scanf("%d",&num);      

       getchar();                            /*吃掉回车符*/

for(i=0;i<num;i++)

       {

              printf("请输入第%d学生的学号:",i+1);

              gets(stu[i].no);

              printf("姓名:");

              gets(stu[i].name);

              for(j=0;j<M;j++)

              {

                     printf("%d成绩:",j+1);

                     scanf("%f",&stu[i].score[j]);

              }

              getchar();

       }

       for(i=0;i<num;i++)

              fwrite(&stu[i],1,sizeof(structstudent),fp);

       fclose(fp);

       printf("你刚才输入的数据共有%d个学生成绩。详细数据为:\n",num);

       output();

}

void read()

{

       FILE*fp;

       num=0;

       fp=fopen("d:\\stu.dat","rb");

       if(fp==NULL)

{

              printf("文件打开失败!请重新运行程序。\n");

              exit(0);

       }

       while(!feof(fp))

       {

              fread(&stu[num],1,sizeof(structstudent),fp);

              num++;

       }

       fclose(fp);

       printf("现在共有%d个学生成绩,初始数据为:\n",num--);

output();

}

void save()

{

       int i;

       FILE*fp;

       if((fp=fopen("stu.dat","wb"))==NULL)

       {

              printf("文件创建失败!请重新运行程序。\n");

              exit(0);

       }

       for(i=0;i<num;i++)

              fwrite(&stu[i],1,sizeof(structstudent),fp);

       fclose(fp);

}

int main( )

{

       intchoice=1;

       printf("欢迎使用本系统!!!\n");

       input();

       while(choice!=5)

       {

              printf("                  ********************************\n");

              printf("                  *       主菜单                 *\n");

              printf("                  *    1:学生信息维护            *\n");

              printf("                  *    2:学生成绩统计            *\n");

              printf("                  *    3:学生信息排序            *\n");

              printf("                  *    4:学生信息查找            *\n");

              printf("                  *    5:保存学生信息并退出      *\n");

       printf("                 ********************************\n");

              printf("                  请选择:");

              scanf("%d",&choice);

              getchar();

              switch(choice)

              {

                  case 1:

                            preserve();      /*学生信息维护功能由读者自行设计编写*/

                            break;

                     case2:

                            statistics();      /*学生成绩统计功能由读者自行设计编写*/

                            break;

                     case3:

                            sort();            /*学生信息排序功能由读者自行设计编写*/

                            break;

                     case4:

                            search();         /*学生信息查找功能由读者自行设计编写*/

                            break;

                     case5:

                            save();

                            printf("谢谢使用本系统!\n");

                            break;

                     default:

                            printf("选择错误,请重新选择!\n");

              }

              }

              return 0;

}