C语言上机实验报告

时间:2024.3.31

长江大学计算机系

课程实验报告

目录

一.课程设计的题目与要求. 3

1.题目:. 3

2.遇到的问题:. 3

3.要求:. 3

二.课程设计题目功能. 3

1.系统功能模块框图设计. 3

2.数据结构説明. 4

3.输出数据. 5

三.课程设计总结. 8

附录. 9

一.课程设计的题目与要求

1.题目:

C语言简易图书信息管理系统

2.遇到的问题:

用到一些生疏的函数。例如:fputs,fprintf,fopen。

还有一些没遇到的C语言设计的思想。

3.要求:

1)        查询图书基本信息

2)        按书名查询

3)        查询数量>=2的图书信息

4)        显示图书全部信息

5)        按图书数量排序

6)        按图书种类排序

7)        每本图书总价

8)        全部图书总价

9)        修改图书信息

10)     借出图书    

二.课程设计题目功能

1.系统功能模块框图设计

 

                  :功能函数模块

                  :函数调用

 

2.数据结构説明

用到的数据:

int 整型、float 单精度浮点型、char 字符型;

struct 结构体;

函数:

menu()、readfile()、showbooks()、Qrybybookname()、Qrycount()、Qrylbooks()、sortbycount()、sortbychass()、abookprice()、allbookprice()、xie()、faxbook()、write()、brwbook()、exit(0);

F0LE *p 指针;

For循环;

if 如果;

while 循环;

switch 选择;

scanf 输入;

printf 输出;

return 返回;

strcmp 比较数组

fopen 打开文件;

fclose关闭文件;

fgets,fscanf 读文件;

fputs,fprintf 写文件;

3.输出数据

QQ截图20120629170227.png

查询图书基本信息

QQ截图20120629170748.png

按书名查询

QQ截图20120629170938.png

查询数量>=2的图书信息

显示图书全部信息

按图书数量排序

按图书种类排序

每本图书总价

全部图书总价

修改图书信息

借出图书

三.课程设计总结

程序过大,不够精简,无用文字太多。

学习耐心与细心不足,如scanf(“%d”,&n);中的“&”经常忘记。

编程思想不够发散。

在今后学习中应更多的动脑,综合运用所学。

基本功不够,如fputs()等函数用的不好,有时同样的问题多次犯,给实验课老师带来很大的麻烦。这说明我的知识不够广,有很多有用但不做考试要求的书中内容没有学好,认识程度不够深刻。

就算以后C语言这门课程结束后,也应多看相关东西,多上机练习,才能真正从本质上提高自己。

知识不够广泛,如VC++6.0等程序,自己试了好一阵也不会用;说明我电脑水平还是不够,自学能力不够。已会的东西掌握的还是不够好。

实验心得

通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。其间开心过、郁闷过、无奈过、彷徨过……随着实验的胜利成功与实验报告的胜利完成,有点微微的自豪感使人难忘。感谢肖颗老师的高标准、严要求。

感谢实验课上老师的耐心指点,也感谢我在实验中经历过的点点滴滴……伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对C语言,我会更加努力。

附录

#include"stdio.h"

#include "stdlib.h"

#include"string.h"

#define N 10

struct book

{

    int ID;

    char Chass[10];

    char Bookname[25];

    char Author[10];

    char Publishing[25];

    int Count;

    float Price;

};

struct book books[N];

int i;

char h[100];

void menu()

{

    printf("          ****************************           ");

    printf("                 简易图书信息管理系统              ");

    printf("          **************************        ");

    printf("              1.查询图书基本信息            ");

    printf("            2.按书名查询                 ");

    printf("             3.查询数量>=2的图书信息              ");

    printf("             4.显示图书全部信息         ");

    printf("                 5.按图书数量排序          ");

    printf("                 6.按图书种类排序          ");

    printf("                 7.每本图书总价            ");

    printf("                 8.全部图书总价            ");

    printf("                 9.修改图书信息            ");

    printf("                 10.借出图书               ");

    printf("             11.退出                  \n");

}

void readfile()

{

    FILE *p;

    p=fopen("E:\\梅亚龙201162075.txt","r");

    if(p==0)

    {

       printf("图书信息打开文件错误!\n");

       return;

    }

    fgets(h,100,p);

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

    {

       fscanf(p,"%d%s%s%s%s%d%f",&books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,&books[i].Count,&books[i].Price);

    }

    fclose(p);

}

void Showbooks()                                  /*查询图书基本信息*/

{

    readfile();

    printf("编号 分类 书名 作者 出版社 数量 单价\n");

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

    {

       printf("%d %s %s %s %s %d %.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

    }

}

void Qrybybookname()                                 /*按书名查询*/

{

    char bookname1[25];

    printf("请输入书名:\n");

    scanf("%s",bookname1);

    printf("编号 分类 书名 作者 出版社 数量 单价\n");

    readfile();

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

    {

       if(strcmp(bookname1,books[i].Bookname)==0)

       {

           printf("%d %s %s %s %s %d %.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

       }

    }

}

void Qrycount()                               /*查询数量>=2的图书信息*/

{

    printf("编号 分类 书名 作者 出版社 数量 单价\n");

    readfile();

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

    {

       if(books[i].Count>=2)

       {

           printf("%d %s %s %s %s %d %.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

       }

    }

}

void Qryallbook()                             /*显示图书全部信息*/

{

    printf("编号 分类 书名 作者 出版社 数量 单价 总价\n");

    readfile();

    float s,x=0;

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

    {

       s=books[i].Count*books[i].Price;

       printf("%d %s %s %s %s %d %.2f %.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price,s);

       x=x+s;

    }

    printf("全部图书总价:%.2f\n",x);

}

void Sortbycount()                                   /*按图书数量排序*/

{

    int s=0;

    printf("编号 分类 书名 作者 出版社 数量 单价\n");

    readfile();

    for(s=0;s>=0;s++)

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

       {

           if(books[i].Count==s)

           {

              printf("%d %s %s %s %s %d %.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

           }

       }

}

void Sortbychass()                                   /*按图书种类排序*/

{

    int j;

    readfile();

    printf("编号 分类 书名 作者 出版社 数量 单价\n");

    struct book book1;

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

       for(j=i+1;j<N;j++)

           if(strcmp(books[i].Chass,books[j].Chass)>0)

           {

              book1=books[i];

              books[i]=books[j];

              books[j]=book1;

           }

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

           {

              printf("%d %s %s %s %s %d %.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

           }

}

void abookprice()                         /*每本图书总价*/

{

    printf("书名   总价\n");

    float s;

    readfile();

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

    {

       s=books[i].Count*books[i].Price;

       printf("%s  %.2f\n",books[i].Bookname,s);

    }

}

void allbookprice()                       /*全部图书总价*/

{

    float s;

    float x=0;

    readfile();

    printf("全部图书总价:");

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

    {

       s=books[i].Count*books[i].Price;

       x=x+s;

    }

    printf("%.2f\n",x);

}

void xie()

{

    FILE *fp;

    fp=fopen("E:\\梅亚龙201162075.txt","r");

    if(fp==0)

    {

       printf("图书信息打开文件错误!\n");

       return;

    }

    fputs(h,fp);

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

    {  

       fprintf(fp,"%s%s%s%s%d%f",books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

      

    }

    printf("修改成功!");

    fclose(fp);

}

void faxbook()                                       /*修改图书信息*/

{

    int a;

    readfile();

    printf("请输入修改书号:");

    scanf("%d",&a);

    printf("编号 分类 书名 作者 出版社 数量 单价\n");

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

    {

       if (a==books[i].ID)

       {

           printf("%d %s %s %s %s %d %.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

           printf("请输入修改后的信息:\n");

           scanf("%s%s%s%s%d%f",books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,&books[i].Count,&books[i].Price);

           printf("修改后的信息:\n");

           printf("编号 分类 书名 作者 出版社 数量 单价\n");

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

           {

              printf("%d %s %s %s %s %d %.2f",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

           }

           xie();

       }

    }

}

void write()

{

    FILE *fp;

    fp=fopen("E:\\梅亚龙201162075.txt","r");

    if(fp==0)

    {

       printf("图书信息打开文件错误!\n");

       return;

    }

    fputs(h,fp);

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

    {

       fprintf(fp,"%d",books[i].Count);

    }

    printf("借出成功!");

    fclose(fp);

}

void brwbook()                                          /*借出图书*/

{

    int a;

    readfile();

    printf("请输入借出图书的书号:");

    scanf("%d",&a);

    printf("编号 分类 书名 作者 出版社 数量 单价\n");

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

    {

       if (a==books[i].ID)

       {

           printf("%d %s %s %s %s %d %.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

           books[i].Count=books[i].Count-1;

           printf("借出后的图书信息:\n");

           printf("编号 分类 书名 作者 出版社 数量 单价\n");

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

           {

              printf("%d %s %s %s %s %d %.2f\n",books[i].ID,books[i].Chass,books[i].Bookname,books[i].Author,books[i].Publishing,books[i].Count,books[i].Price);

           }  

           write();

          

       }

    }

    if (a>=N)

    {

       printf("该图书已借出或不存在!");

       return;

    }

}

void main()

{

    int idt;

    while (1)

    {

       menu();

       printf("请输入编号:");

       scanf("%d",&idt);

       switch(idt)

       {

       case 1: Showbooks();break;

       case 2:    Qrybybookname();break;

       case 3:    Qrycount();break;

       case 4: Qryallbook();break;

       case 5:    Sortbycount();break;

       case 6:    Sortbychass();break;

       case 7: abookprice();break;

       case 8: allbookprice();break;

       case 9: faxbook();break;

       case 10: brwbook();break;

       case 11: exit(0);break;

       }

    }

}

更多相关推荐:
C语言上机实验心得

在科技高度发展的今天,计算机在人们之中的作用越来越突出。而C语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好C语言,这对我们以后的发展是十分重要的。说到这,上…

C语言集中上机实验报告

重庆邮电大学移通学院C语言集中上机实验报告学生学号班级专业重庆邮电大学移通学院20xx年5月重庆邮电大学移通学院目录第一章循环311实验目的312实验要求313实验基本内容3131题目一3132题目二5第二章数...

大一C语言上机实验试题及答案

实验一上机操作初步2学时一实验方式一人一机二实验目的1熟悉VC语言的上机环境及上机操作过程2了解如何编辑编译连接和运行一个C程序3初步了解C程序的特点三实验内容说明前三题为必做题目后两题为选做题目1输出入下信息...

川师C语言上机实验报告答案

四川师范大学计算机学院实验报告册院系名称计算机科学学院课程名称C语言程序设计实验学期20xx年至20xx年第二学期专业班级20xx级2班姓名黄涛学号20xx110210指导教师苏菡老师实验最终成绩本学期年开设实...

C语言上机实验报告样式

实验一实验的名称一、实验目的:1、熟悉VC++语言的上机环境及上机操作过程。2、了解如何编辑、编译、连接和运行一个C程序。3、初步了解C程序的特点。二、实验内容:1、建立VC++工程。2、编写HelloWorl…

C语言上机实验报告

中南大学C语言程序设计实验报告学生姓名学号专业班级指导教师学院信息科学与工程学院完成时间20xx年10月20xx年12月实验报告一顺序程序结构设计一目的要求1熟悉C语言的表达式语句空语句和复合语句2熟悉函数调用...

C语言_上机实验报告样例

实验报告课程名称程序设计语言C实验名称控制结构程序设计姓名潘登学号20xx120xx628专业班级材料1006实验日期20xx年5月20日成绩指导教师侯锐一实验目的1学会正确使用关系运算符和关系表达式逻辑运算符...

C语言集中上机实验报告

重庆邮电大学移通学院C语言集中上机实验报告学生学号班级专业重庆邮电大学移通学院年月重庆邮电大学移通学院目录第一章循环311实验目的312实验要求313实验基本内容3131题目一3132题目二3第二章数组421实...

青岛科技大学大学老师C语言上机实验答案

实验一上机操作初步2学时一实验方式一人一机二实验目的1熟悉VC语言的上机环境及上机操作过程2了解如何编辑编译连接和运行一个C程序3初步了解C程序的特点三实验内容说明前三题为必做题目后两题为选做题目1输出入下信息...

数据结构C语言版上机实验报告——折半查找

聊城大学环境与规划学院20xx级数据结构实验报告实验名称折半查找includeltstdiohgtincludeltmallochgttypedefstructintelemintlengthsstablein...

C程序设计上机实验报告6

C程序设计实验报告实验名称函数程序设计学时安排2学时实验类别上机操作型实验要求1人1组一实验目的1熟练掌握函数的定义和调用2熟练掌握使用函数编写程序3掌握函数的实参形参和返回值的概念及使用4掌握单步调试进入函数...

重庆大学C语言上机实验报告全集

实验一11材控02班20xx3808罗强Page0of3创建时间2输入一个较小的数据25结果显示正确3最后输入一个较大的数9273结果显示正确实验总结1源代码的输入一定要小心仔细最开始要不是没输入就是忘了写2三...

c语言上机实验报告(38篇)