C语言程序设计报告

时间:2024.3.19

C语言程序设计报告?  

前言

我们学习C语言课程设计的主要目的是为了了解和熟悉C语言的编程。学习C语言要经过一个“理论→实践→在理论→在实践”的过程。而学习C语言课程设计就是要我们进行实践,从中发现问题,解决问题,提高我们运用C语言的能力。是我们能够运用C语言解决一些问题。通过不断的编程,熟能生巧,是我们的理论学习也有了实践基础,学习理论知识就较为容易一些,然后再通过实践不断的提高,如此良性循环就能是我们的C语言编程能力更上一成楼。

正文

一.题目原文

杂志订阅管理软件

[要求]

使用计算机对一种杂志的订阅进行管理,该杂志拥有的最多用户不超过10人,每个订户信息包括:姓名,性别,地址,电话号码,杂志单价,订阅数,订阅期限(××年××月)。

现要求用菜单选择并完成下述功能。

(1)增加新订户,即将订户的全部信息输进到文件中。

(2)根据当天的日期对订户文件进行查询,删除以到期的订户记录。

(3)统计本期杂志订户数并打印运算结果。

二.题目的分析

本题主要是要求我编一个程序来管理订阅,包括增加和删除用户记录,统计运算结果。增加用户就是在原有的文件中写入一个新的用户信息,但有一个前提就是用户数不能超过10人。删除以到期的用户,就是从原有的文件中去掉一个用户信息,这里需要把日期与当天的日期进行比较,而统计结果就是把文件中的用户进行统计,并输出。

三.整体设计和板块划分

本程序总思路

本程序有一个主函数和三个被调函数,三个被调函数分别解决增加新订户,删除订户记录,统计订户信息打印运算结果三个问题。

板块划分

组织结构图

1.  主要的结构体为magzine,他包括用户的基本信息:姓名,性别,地址,电话号码,单价,订阅数和期限。全局变量为结构体变量mag。主函数用的是switch语句,3个结果分别对应3个函数,便于操作。

2.  被调函数1,解决增加新用户的问题。先打开文件,要判断用户数是否超过10,然后将新的用户信息写入文件中,这里用的是do……while语句对文价进行读和写,读文件需要计算出订户数,并判断。写即是写入新订户。

3.  被调函数2,解决删除订户记录的问题。进行文件的读出操作,并输入当天的日期,用strcmp语句与定户信息中的期限进行比较,如果订户信息中的期限与当日的期限相同,那么在写文件时,该订户的记录就不用写入了,反之,就应当写入。这样变完成了删除操作了。

4.  被调函数3,统计用户信息并打印运算结果。这里主要是进行文件的读和写,运用if语句完成,统计结果即是根据单价和数量算出总价格并把所有的价格求和即可。然后只需输出用户的姓名,订阅数,单价和金额

                                  

流程图

                          

  

1.增订新用户模块

C语言程序设计报告

struct magazine mag;

int n=0;

 void insert(struct magazine mag)

{

    FILE *fp;

    char ch;

    if((fp=fopen("E:\\magazine","w"))==NULL)

     {

        printf("此文件不存在");

       exit(0);

    }

    do

    {

       if(n<10)

       {

           printf("请输入姓名:");gets(mag.name);

            printf("请输入性别:");gets(mag.sex);

           printf("请输入地址:");gets(mag.address);

           printf("请输入电话号码:");gets(mag.tel);

            printf("请输入订阅期限:");gets(mag.dataline);

           printf("请输入杂志单价:");scanf("%f",&mag.price);

           printf("请输入订阅数:");scanf("%d",&mag.mount);

          

           fwrite(&mag,sizeof(struct magazine),1,fp);

           n++;

       }

       else printf("用户已满");

       printf("是否还有新订户?");

       scanf("%c",&ch);

       system("cls");

    }while(ch=='y'||ch=='Y');

    fclose(fp);

}

2. 删除过期用户模块

C语言程序设计报告

void del()

{

    struct magazine mag;

    FILE *fp,*fp1;

    char datatime[8];

     int m;

     if((fp=fopen("E:\\magazine","r"))==NULL)

    {

       printf("此文件不存在");

        exit(0);

    }

    printf("请输入当天日期:");

    gets(datatime);

    while(fread(&mag,sizeof(struct magazine),1,fp)==1)

    {                                         

       m=strcmp(datatime,mag.dataline);

       if(m<1)

       {

          

           

if((fp1=fopen("E:\\magazine1","a"))==NULL)/*将没有过期的用户写入新的文件中*/

           {

              printf("此文件不存在");

              exit(0);

           }

            fwrite(&mag,sizeof(struct magazine),1,fp1);

           fclose(fp1);

       }

       else n--;

    }

    fclose(fp);

}

3. 统计本期杂志订户信息模块

C语言程序设计报告

void total()

{

    struct magazine mag;

    FILE *fp;

    float totalprice;

    int totalmount=0;

     float price1;

    float sum=0.0;

    if((fp=fopen("E:\\magazine1","r"))==NULL)

    {

       printf("此文件不存在");

        exit(0);

      }

    printf("订户名\t订阅数\t单价\t金额\n");

    while(fread(&mag,sizeof(struct magazine),1,fp)==1)

    {

       totalmount+=mag.mount;

       price1=mag.price;

       totalprice=mag.mount*mag.price;

     

sum+=totalprice;

       printf("%s\t%d\t%3.2f\t%3.2f\n",mag.name,mag.mount,mag.price,totalprice);

    }

    printf("合计\t%d\t%3.2f\t%3.2f\n",totalmount,price1,sum);

    fclose(fp);

}

运行结果

1.       增加新订户

2.       擅长到期用户

3.       统计订户数

用户姓名  订阅数    单价   金额   

华进        3       5.03   15.09

宋选        2       5.03   10.06

李成龙      5       5.03   25.15

合计        10      5.03   50.30

运行与测试报告

下面是个模块的的界面

(一)主菜单

 

(二)增加新订户模块

 

(三)删除到期用户信息

(三)删除到期用户

 

(四)统计订户信息

 

 

  

后记

课程设计过程中遇到的问题以及解决方法

刚开始那到这个题目的时候,感到一片茫然,不知道如何下手。前面的C语言实习似乎还没让我找到感觉。结果就产生了一些错误的念头,便从网上搜索出来一些相关的程序,结果运行时出现了很多错误,漏洞百出。后来认识到这样做不对,不仅投机取巧,还对我的程序设计能力没有一点提高。但是还给了我许多提示。让我有了一定的思路了。在设计程序的过程中,用到被调函数,我经常将整体变量和局部变量混淆,以致在运行时无法满足要求。于是看前面的温故知新逐渐分清了一些概念才将这个问题解决。还有在写完程序后,出现了100多个错误,当时我看着就不想改了,后来才发现数字只是表面,通过不断的修改,错误变少的很快。

课程设计的体会

学习和练习C程序的设计是一个漫长的过程,这几天的学习只是让我们接触到了C语言程序设计,只是肤浅的了解了它的一些基本操作,我们学习C语言需要不断的练习积累才能使我们的水平提高,虽然学习C语言有时很枯燥,我们需要认真的对待它,虽然编写一个程序需要很长的时间,因此我们需要耐心,最重要的是,我们需要独立的思考和编写程序。这样才能提高我们的C语言设计的能力,更好的运用它解决一些问题。

附录

源程序:

#include

#include

#include

#include

struct magazine{

    char name[20];

    char sex[4];

    char address[30];

    char tel[11];

    float price;

    int mount;

    char dataline[8];

};

struct magazine mag;

int n=0;/*用户计数器*/

void insert(struct magazine mag)/*增订新用户*/

{

    FILE *fp;

    char ch;

    if((fp=fopen("E:\\magazine","w"))==NULL)

    {

       printf("此文件不存在");

       exit(0);

    }

    do

    {

       if(n<10)

       {

           printf("请输入姓名:");gets(mag.name);

            printf("请输入性别:");gets(mag.sex);

           printf("请输入地址:");gets(mag.address);

           printf("请输入电话号码:");gets(mag.tel);

            printf("请输入订阅期限:");gets(mag.dataline);

           printf("请输入杂志单价:");scanf("%f",&mag.price);

           printf("请输入订阅数:");scanf("%d",&mag.mount);

          

           fwrite(&mag,sizeof(struct magazine),1,fp);

           n++;

       }

       else printf("用户已满");

       printf("是否还有新订户?");

       scanf("%c",&ch);

       system("cls");

    }while(ch=='y'||ch=='Y');

    fclose(fp);

}

void del()/*删除过期用户*/

{

    struct magazine mag;

    FILE *fp,*fp1;

    char datatime[8];

    int m;

    if((fp=fopen("E:\\magazine","r"))==NULL)

    {

       printf("此文件不存在");

       exit(0);

    }

    printf("请输入当天日期:");

    gets(datatime);

    while(fread(&mag,sizeof(struct magazine),1,fp)==1)

    {

       m=strcmp(datatime,mag.dataline);

       if(m<1)

       {

          

            if((fp1=fopen("E:\\magazine1","a"))==NULL)/*将没有过期的用户写入新的文件中*/

           {

              printf("此文件不存在");

              exit(0);

           }

            fwrite(&mag,sizeof(struct magazine),1,fp1);

           fclose(fp1);

       }

       else n--;

    }

    fclose(fp);

}

void total()/*统计本期杂志订户数*/

{

    struct magazine mag;

    FILE *fp;

    float totalprice;

    int totalmount=0;

    float price1;

    float sum=0.0;

    if((fp=fopen("E:\\magazine1","r"))==NULL)

    {

       printf("此文件不存在");

       exit(0);

    }

    printf("订户名\t订阅数\t单价\t金额\n");

    while(fread(&mag,sizeof(struct magazine),1,fp)==1)

    {

       totalmount+=mag.mount;

       price1=mag.price;

       totalprice=mag.mount*mag.price;

       sum+=totalprice;

       printf("%s\t%d\t%3.2f\t%3.2f\n",mag.name,mag.mount,mag.price,totalprice);

    }

    printf("合计\t%d\t%3.2f\t%3.2f\n",totalmount,price1,sum);

    fclose(fp);

}

void main()

{

    int ch;

    char ch1;

    do

    {

       printf("1.增加新订户\n");

       printf("2.删除到期用户\n");

       printf("3.统计订户数\n");

       scanf("%d",&ch);getchar();

       switch(ch)

       {

           case 1:insert(mag);break;

           case 2:del();break;

           case 3:total();break;

           default:printf("输入有误!");break;

       }

       printf("是否继续其他操作?");

       scanf("%c",&ch1);

       system("cls");

    }while(ch1=='y'||ch1=='Y');

}

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院C语言程序设计课程设计题目院系专业年级班别指导教师组长同组成员图书信息管理系统电子工程学院电子信息工程20xx2班侯家利黄培周20xx41301208邹日宙20xx41301211陈俊杰20xx41...

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言程序设计报告—学生选修课程系统

C语言程序设计学校中国地址大学学院工程学院班级序号05507110学号20xx1001448姓名杨帆指导老师刘文中1C语言程序设计报告一C语言课程设计的目的高级语言课程设计是学习完高级语言程序设计课程后进行的一...

C语言课程设计报告书样本

海南大学三亚学院C语言程序设计课程设计贪吃蛇算法专业计算机科学与技术班级计科1001姓名杨凯文题目学号指导老师李春林目录C语言程序设计课程设计11程序要求32程序分析与设计33流程图44源程序清单45调试过程1...

C语言课程设计报告—人事管理系统

人事管理系统前言:现代计算机技术的发展为人们的学习、生活、工作提供了很大的帮助,各行各业都需要特定计算系统的运用,我们需要了解这些系统是怎么样为我们服务以及他们是怎样编辑出来的。我们需要学习C语言编程,根据课堂…

C语言课程设计报告(通讯录)

设计说明书通讯录系统起止日期20xx年01月03日至20xx年01月08日学班学成生姓名级号绩XXX指导教师签字计算机与通信学院20xx年01月08日一课题任务设计一个通讯录管理系统课题的主要任务是1对通讯录信...

C语言课程设计报告 扫雷

程序课程设计基础课程设计扫雷游戏院系计算机科学技术学院计算机科学与技术师范班级师计091设计者徐群杨松徐春辉杨雷刘安然学号3224312504指导教师黄绍义20xx年12月25日1目录1概述311研究的背景及意...

c语言程序设计课程设计报告(34篇)