网络安全编程基础--使用结构体数组完成信息录入

实验1:C语言基础实验

目录

实验1:C语言基础实验

实验步骤分析:

     1、定义结构体:

     2、信息录入

     3、信息修改

     4、信息展示

     5、主函数编写

结果展示:

源代码:


实验设备:   

目标系统:windows

软件工具:VS2022/vc6/dev

实验要求:

  1. 使用结构体数组完成中国四大名著的信息录入,包括:书名,作者,出版社,价格,页码等;
  2. 程序需使用到#define和typedef定义相关内容;
  3. 程序能完成名著的信息修改和展示。

实验步骤分析:

  1. 定义结构体

使用结构体定义相关内容。定义一个名为BOOK的结构体,结构体中定义相关结构成员变量,其中分别表示:Name--书名、Author--作者、Press--出版社、Value--价格、Page--页码。结构体变量book定义为全局数组。

    2、信息录入

编写Entry函数,利用形参变量将相关数据(四大名著的书名,作者,出版社,价格,页码)传到结构体数组中,

     3、信息修改

   编写Modify函数实现信息修改,以输入的i表示需要修改的书的相关内容对应的序号,其中分别表示0-退出 1-书名 2-作者 3-出版社 4-价格 5-页码,利用switch case来实现对应的内容修改,指出修改书籍中的哪一项信息。因为修改后的新信息为char *型,所以在修改price、page时还用到了atoi()函数,将字符数化为整型数。

4、信息展示

编写Show函数实现信息展示,用for循环遍历来展示之前录入在结构体数组中的内容。

5、主函数编写

调用Entry函数,将四大名著的相关信息调入进去,(char*)强制转换,不然编译会出现警告,printf打印相关提示信息。同时调用Show函数实现信息的展示。0,1,2,3表示书本在数组中的位置,即数组下标。

使用while(true),可以实现一直修改书籍信息,除非输入0选项退出,调用Show()函数实现每次修改完的信息展示。

结果展示:

源代码:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define MAX 4                   //使用宏定义将MAX的值定义为4

typedef struct BOOK{            //定义一个名为BOOK结构体

        char Name[40];              //书名

        char Author[40];            //作者

        char Press[40];             //出版社

        int  Value;                 //价格

        int  Page;                  //页码

}S;                            //结构体别名S

S book[MAX];                   //定义一个全局book数组   

//信息录入

void Entry(int i,char* name,char* author,char* press,int value,int page)

{

        strcpy(book[i].Name,name);

        strcpy(book[i].Author,author);

        strcpy(book[i].Press,press);

        book[i].Value = value;

        book[i].Page = page;

}

//修改书的信息

void Modify(int i)

{

        char str[40];

        int n = 0;

        printf("\n请选择要修改的相关信息对应的序号(0-退出 1-书名 2-作者 3-出版社 4-价格 5-页码 ):\n");

        scanf("%d",&n);

        if(n == 0) return;

        else if(n == 1||n ==2||n == 3||n == 4||n == 5){

                 printf("输入新的信息:");

                 scanf("%s",str);

                 switch(n){

                         case 1:strcpy(book[i].Name,str);break;

                         case 2:strcpy(book[i].Author,str);break;

                         case 3:strcpy(book[i].Press,str);break;

                         case 4:book[i].Value = atoi(str);break;

                         case 5:book[i].Page = atoi(str);break;

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

                 }

        }

}

//信息展示

void Show()

{

        for(int i = 0;i < MAX;i++){

                 printf("%8s %8s ",book[i].Name,book[i].Author);

                 printf("%12s %2d %2d\n",book[i].Press,book[i].Value,book[i].Page);        

        }

}             

int main()

{

    //调用Entry函数录入相关信息

        Entry(0,(char*)"西游记",(char*)"吴承恩",(char*)"人民出版社",100,83892);

        Entry(1,(char*)"水浒传",(char*)"施耐庵",(char*)"光明出版社",101,373892);

        Entry(2,(char*)"红楼梦",(char*)"曹雪芹",(char*)"清华出版社",102,262003);

        Entry(3,(char*)"三国演义",(char*)"罗贯中",(char*)"湖南出版社",103,93003);

        printf("当前信息显示:\n");

        printf("  书名     作者     出版社     价格 页码\n");

        Show();

        int n = 0;

        while(1){

                 printf("请选择修改的书籍序号(0-退出 1-西游记 2-水浒传 3-红楼梦 4-三国演义):\n");

                 scanf("%d",&n);

                 if(n == 0) break;

                 else if(n == 1||n == 2||n == 3||n == 4){

                         Modify(n-1);

                         Show();

                 }

                 else printf("输入错误!");    

        }

        return 0;

}

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值