《C语言程序设计案例式教程》课件 第9章 结构体_第1页
《C语言程序设计案例式教程》课件 第9章 结构体_第2页
《C语言程序设计案例式教程》课件 第9章 结构体_第3页
《C语言程序设计案例式教程》课件 第9章 结构体_第4页
《C语言程序设计案例式教程》课件 第9章 结构体_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章结构体《C语言程序设计案例式教程(AI助学)》学习目标/Target了解结构体的概念,能够说出结构体类型的特点。

掌握结构体类型与结构体变量的定义方法,能够定义结构体类型与结构体变量。掌握结构体变量的初始化方法,能够完成结构体变量的初始化。了解结构体变量的存储方式,能够说出结构体变量的存储特点。学习目标/Target掌握结构体变量成员的访问方法,能够使用“.”运算符和“->”运算符实现结构体变量成员的访问。

掌握嵌套结构体变量成员的访问方法,能够使用“.”运算符和“->”运算符实现嵌套结构体变量成员的访问。了解嵌套结构体的内存管理方法,能够说出嵌套结构体的存储特点。掌握结构体数组的定义与初始化方法,能够完成结构体数组的定义与初始化。学习目标/Target掌握结构体数组的访问方法,能够完成结构体数组的访问。

掌握结构体变量、结构体数组、结构体指针作为函数参数的使用方法,能够使用结构体变量、结构体数组、结构体指针传递数据。掌握typedef关键字的使用方法,能够使用typedef关键字简化构造数据类型的定义与使用。了解共用体的概念,能够说出共用体类型的特点。章节概述/Summary前文介绍的数据类型都是分散的、互相独立的,例如定义整型变量a和字符型变量b,这两个变量是毫无内在联系的。但在实际生活和工作中,经常需要处理一些具有相关性的数据,例如公司员工的数据(包括姓名、部门、职位、电话、邮箱地址等)。由于这些数据的类型不完全相同,要想对这些数据进行统一管理,仅靠前面介绍的基本数据类型和数组很难实现。为此,C语言提供了结构体类型,它能够将相同类型或者不同类型的数据组织在一起,使之成为集合,以解决复杂的数据处理问题。本章将对结构体进行详细讲解。目录/Contents010203【案例9-1】名片制作【案例9-2】员工生日福利【案例9-3】计算学生平均成绩04【案例9-4】打鱼晒网目录/Contents050607【案例9-5】角色与权限【案例9-6】学生成绩管理系统使用AIGC工具进行项目设计与模块划分【案例9-1】名片制作01案例描述本案例要求编写一个程序,从键盘输入个人信息,在控制台输出一张名片,名片内容包括姓名、职位、联系方式、公司单位、地址,如下图。知识需求名片不同类型数据统一管理结构体了解结构体的概念,能够说出结构体类型的特点。学习目标知识讲解1.结构体类型的定义结构体是一种构造数据类型,可以把相同或者不同类型的数据整合在一起,这些数据称为结构体类型的成员。在使用结构体变量存储数据前,要定义结构体类型。struct结构体类型名{

数据类型

成员名1;

数据类型

成员名2; ……

数据类型

成员名n;};定义结构体类型的关键字结构体成员注意分号必不可少知识讲解1.结构体类型的定义1.结构体类型定义假设定义一个学生结构体,学生信息包含学号(num)、姓名(name)、性别(sex)、年龄(age)、地址(address),定义如下。structStudent{ intnum; charname[10]; charsex; intage; charaddress[30];};结构体名称结构体Student的成员知识讲解1.结构体类型的定义1.结构体类型定义1.结构体类型定义以关键字struct开头,后面的结构体类型名称命名符合标识符命名规则。注2.结构体类型与整型、浮点类型、字符类型等类似,只是数据类型,而非变量。3.定义结构体类型不会分配内存,只有通过结构体类型定义了结构体变量,系统才会为变量分配内存。4.定义结构体类型时,末尾的分号不可缺少。项意事知识讲解1.结构体类型的定义掌握结构体类型与结构体变量的定义方法,能够定义结构体类型与结构体变量。学习目标知识讲解2.结构体变量的定义2.结构体变量的定义01先定义结构体类型,再定义结构体变量。struct结构体类型名结构体变量名;定义示例。structStudentstu1,stu2;结构体变量stu1与stu2的内存分配知识讲解2.结构体变量的定义2.结构体变量的定义使用结构体类型定义变量时,struct关键字不可少,structStudent作为整体才表示一个结构体类型。Studentstu1;知识讲解2.结构体变量的定义错误,缺少struct关键字2.结构体变量的定义02在定义结构体类型的同时定义结构体变量。struct结构体类型名称{

数据类型

成员名1;

数据类型

成员名2; …

数据类型

成员名n;}结构体变量名列表;知识讲解2.结构体变量的定义2.结构体变量的定义02在定义结构体类型的同时定义结构体变量。定义示例。structStudent{ intnum; charname[10]; charsex;}stu1,stu2;知识讲解2.结构体变量的定义掌握结构体变量的初始化方法,能够完成结构体变量的初始化。学习目标知识讲解3.结构体变量的初始化知识讲解3.结构体变量的初始化结构体变量初始化,其实就是为结构体变量中的各个成员赋值。结构体初始化有两种方式。01在定义结构体类型时定义结构体变量,同时对结构体变量初始化。structPerson{ intID; charname[10]; charsex;}p={0001,"ZhangSan",'M'};知识讲解3.结构体变量的初始化02先定义结构体类型,之后定义结构体变量并对结构体变量初始化。structPerson{ intID; charname[10]; charsex;};structPersonp={0001,"ZhangSan",'M'};知识讲解3.结构体变量的初始化编译器在初始化结构体变量时,按照成员声明顺序从前往后匹配,而不是按照数据类型自动匹配。在初始化成员变量时,如果没有按顺序为成员变量赋值,或者只给一部分成员变量赋值,往往会匹配错误。structPerson{ intID; charname[10]; charsex;};structPersonp={"ZhangSan",'M'};“ZhangSan“匹配给ID成员,'M'匹配给name成员错误示例。了解结构体变量的存储方式,能够说出结构体变量的存储特点。学习目标知识讲解4.结构体变量的存储方式知识讲解结构体变量中各成员在内存中的存储遵循字节对齐机制。010203结构体变量的首地址能够被其最大基本类型成员的大小整除。结构体变量每个成员相对于结构体首地址的偏移量都是该成员大小的整数倍,且能够被最大基本类型成员的大小整除。如有需要,编译器会在成员之间加上填充字节。结构体变量的总大小为结构体最大基本类型成员大小的整数倍,如有需要,编译器会在最末一个成员后面加上填充字节。4.结构体变量的存储方式知识讲解定义一个结构体类型与结构体变量。structNote{ chara; doubleb; intc; shortd;};structNotent;//定义structNote结构体变量nt内存分配4.结构体变量的存储方式掌握结构体变量成员的访问方法,能够使用“.”运算符和“->”运算符实现结构体变量成员的访问。学习目标知识讲解5.结构体变量成员的访问访问结构体变量成员的方式有两种:直接访问、通过指针访问。

01直接访问结构体变量的成员直接访问结构体变量的成员可以通过“.”运算符实现。结构体变量名.成员名;知识讲解5.结构体变量成员的访问访问结构体变量成员的方式有两种:直接访问、通过指针访问。

01直接访问结构体变量的成员应用示例:structPerson{ //定义结构体类型structPerson intID; charname[10]; charsex;};intmain(){ structPersonp={0001,"ZhangSan",'M'};//定义结结构体变量p printf("name:%s\n",);}知识讲解5.结构体变量成员的访问访问结构体变量成员的方式有两种:直接访问、通过指针访问。

01直接访问结构体变量的成员通过“.”运算符可以访问结构体变量成员,那么也可以通过这种方式修改结构体成员变量的值。chararr[20]="lisi"; //定义字符数组p.ID=002; //修改成员ID的值strcpy(,arr); //修改成员name的值p.sex='F'; //修改成员sex的值知识讲解5.结构体变量成员的访问访问结构体变量成员的方式有两种:直接访问、通过指针访问。

01直接访问结构体变量的成员通过“.”运算符也可以初始化结构体变量,这就解决了未按照顺序初始化各成员变量时编译器匹配错误的问题。structPersonp={.name="chenwu",.sex='F',.ID=0006}; //未按顺序初始化structPersonp={.name="chenwu",.sex='F'}; //只初始化一部分成员知识讲解5.结构体变量成员的访问访问结构体变量成员的方式有两种:直接访问、通过指针访问。

02通过指针访问结构体变量的成员定义指向结构体变量的指针后,可以通过“指针名→成员变量名”的方式访问结构体变量中的成员。知识讲解5.结构体变量成员的访问应用示例。structPerson{ //定义结构体类型structPerson intID; charname[10]; charsex;};intmain() { structPersonp={0002,"zhouli",'F'};//定义结结构体变量p structPerson*ptr=&p; //定义指向变量p的指针ptr

printf("%04d\n",ptr->ID); //输出成员ID的值

printf("%s\n",ptr->name); //输出成员name的值

printf("%c\n",ptr->sex); //输出成员sex的值 return0; }知识讲解5.结构体变量成员的访问巩固前面所学知识,能够利用前面所学知识实现案例9-1。学习目标案例实现案例实现名片内容包括姓名、职位、联系方式、单位、地址,这些内容都需要使用字符数组进行存储,可以定义结构体类型structCard,在该结构体类型内定义这5个字符数组。从键盘输入相应数据,然后整理数据的格式,以名片的形式输出。1.案例设计案例实现本案例中可以实现的效果图如下。代码实现2.完整代码

【案例9-2】员工生日福利02案例描述近日,公司为加强员工对企业的归属感与认同感,让每位员工都感受到公司大家庭的温暖,同时也为进一步推动公司企业文化建设,特为员工提供生日福利。在系统中录入员工的生日信息,当某个员工生日时,系统会自动弹出提示消息。本案例要求编写一个程序,在员工信息中添加员工生日信息,并在生日时祝福员工生日快乐,通知员工领取生日礼物。知识需求员工信息员工信息结构体员工生日员工生日结构体添加嵌套结构体掌握嵌套结构体变量成员的访问方法,能够使用“.”运算符和“->”运算符实现嵌套结构体变量成员的访问。学习目标知识讲解1.访问嵌套结构体变量的成员结构体中定义另一个结构作为其成员,这样的结构体称为嵌套结构体。访问嵌套结构体变量成员时,需要使用两次“.”运算符。嵌套结构体变量成员访问示例。structA{ intnum; }; //定义结构体类型structAstructB{ //…; structAa; }; //嵌套structA类型变量astructBb={10};

//定义structB类型变量bprintf("%d",b.a.num); //访问嵌套结构体变量a的成员num知识讲解1.访问嵌套结构体变量的成员结构体不能嵌套自身结构体类型的变量,因为嵌套自身结构体类型变量时,结构体类型还未定义,编译器无法确定自身类型的变量需要分配多少内存空间。知识讲解1.访问嵌套结构体变量的成员structPerson //定义结构体类型structPerson{ intID; charname[10]; charsex;

structPersonp1;//错误,嵌套自身结构体类型的变量};知识讲解1.访问嵌套结构体变量的成员虽然结构体不能嵌套自身类型的变量,但可以自身结构体类型的指针变量,因为指针大小是固定的。structPerson //定义结构体类型structPerson{ intID; charname[10]; charsex;

structPerson*ptr;

//正确,嵌套自身结构体类型的指针变量};嵌套自身结构体类型的指针变量,定义示例。知识讲解1.访问嵌套结构体变量的成员虽然结构体不能嵌套自身类型的变量,但可以自身结构体类型的指针变量,因为指针大小是固定的。structPersonp1={0010,"lisi",'M'};structPersonp2={0007,"wangwu",'F',&p1}; //取变量p1的地址赋值给ptr//通过变量p2中的指针ptr可以访问到变量p1中的成员p2.ptr->ID;

//访问structPerson结构体变量p1的成员IDp2.ptr->name;

//访问structPerson结构体变量p1的成员namep2.ptr->sex;

//访问structPerson结构体变量p1的成员sex定义structPerson结构体类型的变量p1和p2,并对它们进行初始化。知识讲解1.访问嵌套结构体变量的成员了解嵌套结构体的内存管理方法,能够说出嵌套结构体的存储特点。学习目标知识讲解2.嵌套结构体的内存管理知识讲解2.嵌套结构体的内存管理嵌套结构体在内存中的存储依旧遵循内存对齐机制,此时结构体以其普通成员和结构体成员中的最长数据类型为准,对各成员进行对齐。知识讲解2.嵌套结构体的内存管理structBirth{intyear;intmonth;intday;};structPerson{ intID; charname[10]; charsex;

structBirthbirthDate;

};内存分配巩固前面所学知识,能够利用前面所学知识实现案例8-1。学习目标案例实现010203定义表示生日的结构体类型structBirth。定义员工结构体类型structEmployee,在structEmployee结构体中定义一个structBirth变量birth。定义两个int类型变量month、day,从键盘输入变量month和变量day的值,模拟系统日期。如果变量month、day的值与员工生日日期相同,则输出提示信息。案例实现1.案例设计本案例中可以实现的效果图如下。代码实现案例实现1.案例设计

【案例9-3】计算学生平均成绩03案例描述每次考试结束之后,老师都会对学生成绩进行各个维度的评估,以判定学生的学习情况,假设一个小组中有3个学生,每个学生有3门课程的成绩需要统计。本案例要求编写一个程序,对这3个学生的成绩进行统计,具体要求如下。(1)从键盘输入学生的学号、姓名和3门课程的成绩。(2)计算出每个学生的平均成绩,并依次把每个学生的学号、姓名和平均成绩打印在屏幕上。知识需求学生信息与学生成绩使用结构体存储。多个学生的信息使用数组存储。存储结构体的数组称为结构体数组。所以,需要学习结构体数组。掌握结构体数组的定义与初始化方法,能够完成结构体数组的定义与初始化。学习目标知识讲解1.结构体数组的定义与初始化结构体数组的定义方式有两种。

01先定义结构体类型,后定义结构体数组structStudent{ //定义structStudent结构体类型 intnum; charname[10]; charsex;};structStudentstus[20];

//定义structStudent结构体数组stus知识讲解1.结构体数组的定义与初始化结构体数组的定义方式有两种。

02在定义结构体类型的同时定义结构体数组structStudent{ //定义structStudent结构体类型 intnum; charname[10]; charsex;}stus[20];知识讲解1.结构体数组的定义与初始化结构体数组中的每个元素都是一个结构体变量,因此,在为结构体数组中的元素赋值时,需要将值依次放到一对大括号{}中。结构体数组初始化有两种方式:先定义结构体类型,然后定义结构体数组并初始化。在定义结构体类型的同时定义结构体数组并初始化。知识讲解1.结构体数组的定义与初始化1先定义结构体类型,然后定义结构体数组并初始化。structStudent{ intnum; charname[10]; charsex;};structStudentstudents[3]={{1001,"ZhangSan",'M'}, {1002,"LiSi",'W'}, {1003,"ZhaoLiu",'M'}};知识讲解1.结构体数组的定义与初始化2在定义结构体类型的同时定义结构体数组并初始化。structStudent{ intnum; charname[10]; charsex;}students[3]={{1001,"ZhangSan",'M'}, {1002,"LiSi",'W'}, {1003,"ZhaoLiu",'M'}};知识讲解1.结构体数组的定义与初始化初始化结构体数组时,也可以不指定数组大小,系统根据元素个数分配内存。structStudent{ intnum; charname[10]; charsex;}students[]={{1001,"ZhangSan",'M'}, {1002,"LiSi",'W'}, {1003,"ZhaoLiu",'M'}};知识讲解1.结构体数组的定义与初始化掌握结构体数组的定义与初始化方法,能够完成结构体数组的定义与初始化。学习目标知识讲解2.结构体数组的访问结构体数组的访问其实是对数组中结构体变量的成员进行访问,访问格式如下。结构体数组[索引].成员名知识讲解2.结构体数组的访问2.结构体数组的访问结构体数组访问示例。structStudent{

intnum;

charname[10];

charsex;};structStudentstudents[3]={{1001,"ZhangSan",'M'},

{1002,"LiSi",'W'},

{1003,"ZhaoLiu",'M'}

};for(inti=0;i<3;i++) {

printf("%04d%s%c\n",

students[i].num,students[i].name,students[i].sex);}知识讲解2.结构体数组的访问巩固前面所学知识,能够利用前面所学知识实现案例8-1。学习目标案例实现12定义一个结构体数组,用来存放3个学生的信息;用for循环依次读取3个学生的信息,再用for循环分别计算成绩总和并求出平均值。2.结构体数组的访问1.案例设计案例实现本案例中可以实现的效果图如下。代码实现案例实现2.结构体数组的访问2.完整代码

【案例9-4】打鱼晒网04案例描述俗语三天打渔两天晒网,用来比喻学习或做事时断时续,没有恒心,不能坚持下去。但是对于我们来说,学习是一件持之以恒的事情,日积月累,才能有质的飞跃,正所谓不积跬步,无以至千里;不积小流,无以成江海。所以要想在某一方面有所成就,必得经过坚持不懈的努力,不能三天打渔两天晒网。三天打渔两天晒网案例描述在本案例中,假设某人从2000年1月1日起,三天打鱼,两天晒网,请编写一个程序,判断从键盘输入的日期(2000年1月1日后的任意一天)是“打鱼”还是“晒网”。知识需求打渔晒网的日期使用结构体进行存储。定义函数计算结构体中的日期距离2000年1月1日有多少天。结构体作为函数参数掌握结构体变量作为函数参数的使用方法,能够使用结构体变量传递数据。学习目标知识讲解1.结构体变量作为函数参数知识讲解1.结构体变量作为函数参数结构体变量作为函数参数的用法与普通变量类似,都需要保证调用函数的实参类型和被调用函数的形参类型相同。结构体变量作为函数参数时,也是值传递,被调函数中改变结构体成员变量的值,主调函数中的结构体变量不受影响。掌握结构体数组作为函数参数的使用方法,能够使用结构体数组传递数据。学习目标知识讲解2.结构体数组作为函数参数知识讲解2.结构体数组作为函数参数函数间不仅可以传递一般的结构体变量,而且可以传递结构体数组。结构体数组作为函数参数与普通数组作为函数参数一样,都是进行数组起始地址的传递。被调函数中结构体数组元素的成员改变,主调函数中结构体数组元素的成员也会随之改变。掌握结构体指针作为函数参数的使用方法,能够使用结构体指针传递数据。学习目标知识讲解3.结构体指针作为函数参数知识讲解结构体指针用于存放结构体变量的起始地址,将结构体指针作为函数参数传递,其实就是传递结构体变量的起始地址。在被调函数中改变结构体变量成员的值,则主调函数中结构体变量成员的值也会随之改变。3.结构体指针作为函数参数掌握typedef关键字的使用方法,能够使用typedef关键字简化构造数据类型的定义与使用。学习目标知识讲解4.typedef关键字知识讲解4.typedef关键字typedef关键字用于为现有数据类型取别名,使用typedef关键字可以方便程序的移植,减少对硬件的依赖性。typedef数据类型别名;知识讲解4.typedef关键字01为基本类型取别名使用typedef关键字为unsignedint类型取别名。typedefunsignedintuint;uinti,j,k;02为数组类型取别名使用typedef关键字为数组类型取别名。typedefcharNAME[10];NAMEclass1,class2;知识讲解4.typedef关键字03为结构体取别名使用typedef关键字为结构体类型structStudent取别名。typdef关键字最常用的就是为结构体取别名。typedefstructStudent{intnum; charname[10]; charsex;}STU;STUstu1; //等同于structStudentstu1知识讲解4.typedef关键字使用typedef关键字只是对已存在的数据类型取别名,而不是定义新的数据类型。巩固前面所学知识,能够利用前面所学知识实现案例9-4。学习目标案例实现(1)利用循环求出指定日期距2000年1月1日的天数。(2)注意问题:闰年。闰年二月29天,平年二月28天。(3)怎么判断闰年?能被4整除且不能被100整除,或者能被400整除,则该年是闰年,否则不是闰年。案例实现1.案例设计案例实现本案例中可以实现的效果图如下。代码实现1.案例设计

【案例9-5】角色与权限05案例描述假设学校购买一个学生信息管理系统,该系统有3个角色,教务员、老师、学生,3个角色的权限分别如下。教务员:管理学生信息,如对姓名、年龄、性别、学号、籍贯、班级、宿舍等信息进行添加、修改、删除等操作。老师:管理学生成绩,如添加成绩、修改成绩、对成绩进行排序等。学生:查看自己的个人信息,并添加、修改手机号。案例描述本案例要求编写一个程序,模拟用户登录,如果是教务员,就提示进入学生信息管理页面,为学生添加学号;如果是老师,就提示进入学生成绩管理页面,为学生添加成绩;如果是学生,就提示进入个人信息查看页面,添加自己的手机号。知识需求老师教务员学生用户登录角色关联单选共用体了解共用体的概念,能够完成共同体类型的定义。学习目标知识讲解1.共用体类型的定义共用体也是构造类型,它的定义与结构体类似。union共用体类型名称{

数据类型

成员名1;

数据类型

成员名2;……

数据类型

成员名n;};定义共用体的关键字共用体成员分号不可少知识讲解1.共用体类型的定义1.共用体类型共用体类型定义示例。union

data{ intm; floatx; charc;};知识讲解1.共用体类型的定义了解共用体变量的定义,能够完成共同体变量的定义。学习目标知识讲解2.共用体变量的定义2.共用体变量的定义共用体类型的变量定义方式有3种。1先定义共用体类型,再定义共用体变量。uniondata{intm;floatx;charc;};uniondataa,b;2在定义共用体类型的同时定义共用体变量。uniondata{intm;floatx;charc;}a,b;知识讲解2.共用体变量的定义2.共用体变量的定义共用体类型的变量定义方式有3种。3直接定义共用体类型变量。union{intm;Doublex;charc;}a,b;知识讲解2.共用体变量的定义知识讲解共用体内存分配共用体的内存分配必须要符合以下两项准则。(1)共用体的内存必须大于或等于其成员变量中大数据类型(包括基本数据类型和数组)的大小。(2)共用体的内存必须是最大基本数据类型的整数倍,如果不是,则填充字节。接下来通过两个共用体的内存分析来解释上述准则。知识讲解共用体内存分配示例1:成员变量都是基本数据类型的共用体变量。union{intm;floatx;charc;}a;知识讲解共用体内存分配示例2:成员变量包含数组的共用体变量。union{intm;floatx;charc;charname[5];}b;了解共用体变量的初始化和引用,能够完成共用体变量的初始化和引用。学习目标知识讲解3.共用体变量的初始化和引用知识讲解3.共用体变量的初始化和引用在共用体变量定义的同时,只能对其中一个成员的类型值进行初始化,这与它的内存分配也是相应的。union共用体类型名共用体变量名={其中一个成员的初始值};共用体变量初始化示例。uniondataa={8};知识讲解3.共用体变量的初始化和引用共用体变量的成员访问也通过“.”运算符与->指针运算符。uniondata{intm;floatx;charc;};uniondataa={12},*p=&a;a.m;

//引用共用体变量a中的成员mp->m; //引用共用体指针变量p所指向的变量成员m知识讲解3.共用体变量的初始化和引用VS结构体在程序执行的任何时刻,结构体变量中的所有成员是同时驻留在该结构体变量所占用的内存空间中共用体在程序执行的任何时刻,共用体变量仅有一个成员驻留在共用体变量所占用的内存空间中。案例实现声明登录结构体,在结构体中定义登录需要的数据,姓名、角色,需要进行的操作以共用体形式存储。第1步第2步从键盘输入登录用户姓名、角色,根据角色判断要执行的操作。1.案例设计案例实现本案例中可以实现的效果图如下。代码实现2.完整代码

【案例9-6】学生成绩管理系统06【案例9-6】学生成绩管理系统巩固前面所学知识,能够利用前面所学知识实现案例9-6。学习目标案例描述本案例要求开发一个学生成绩管理系统,该系统的功能需求如下。(1)添加学生信息。学生信息包括学号、姓名、语文成绩、数学成绩。(2)显示学生信息。将所有学生信息输出。(3)修改学生信息。根据学号查找学生信息,然后修改学生姓名、成绩等。(4)删除学生信息。根据学号查找学生信息,并将查找到的信息删除。(5)查找学生信息。根据姓名查找学生信息,并将查找到的信息输出。(6)将所有学生的信息按总成绩由高到低进行排序。(7)退出系统。案例实现学生信息可以使用结构体数组进行存储,学生成绩管理系统架构图如下。1.案例设计案例实现每个功能定义一个函数来实现。

01添加记录—add()函数当用户在菜单界面中输入数字“1”时,会调用add()函数进行添加记录操作,提示用户输入学生的学号、姓名、语文成绩、数学成绩。当用户输入完毕后,会提示用户是否继续添加,Y表示继续,N表示返回。需要注意的是,学号不能重复,如果重复输入相同的学号,就会提示此学号已存在。1.案例设计案例实现

02显示记录—showAll()函数当用户在菜单界面中输入数字“2”时,程序会调用showAll()函数进行显示记录操作,并在控制台输出所有学生的学号、姓名、数学成绩、语文成绩和总成绩。

03修改记录—modify()函数当用户在菜单界面中输入数字“3”时,程序会调用modify()函数进行修改记录操作,提示用户输入要修改记录的学生学号。如果学号存在,即可修改除学号外的其他信息,否则提示没有找到该学生的记录。1.案例设计案例实现

04删除记录—del()函数当用户在菜单界面中输入数字“4”时,程序会调用del()函数进行删除记录操作,提示用户输入要删除记录的学生学号。如果学号存在,即可删除该学生的所有信息,否则提示没有找到该学生的记录。

05查找记录—search()函数当用户在菜单界面中输入数字“5”时,程序会调用search()函数进行查找记录操作,提示用户输入要查找的学生姓名。如果姓名存在,则输出该学生的全部信息,否则提示没有找到该学生的记录。1.案例设计案例实现

06排序—sort()函数当用户在菜单界面中输入数字“6”时,程序会调用sort()函数进行排序操作,按总成绩由高到低输出所有学生的信息。1.案例设计案例实现2.完整代码本案例中可以实现的效果图如下。功能菜单界面添加记录界面案例实现2.完整代码本案例中可以实现的效果图如下。显示记录界面案例实现2.完整代码本案例中可以实现的效果图如下。修改记录界面案例实现2.完整代码本案例中可以实现的效果图如下。删除记录界面案例实现2.完整代码本案例中可以实现的效果图如下。查找记录界面案例实现2.完整代码本案例中可以实现的效果图如下。排序界面案例实现2.完整代码本案例中可以实现的效果图如下。退出系统案例实现2.完整代码

使用AIGC工具进行项目设计与模块划分07使用AIGC工具进行项目设计与模块划分了解使用AIGC工具进行项目设计与模块划分,能够使用AIGCG工具开发一个学生成绩管理系统。学习目标使用AIGC工具进行项目设计与模块划分问题描述:要开发一个学生成绩管理系统,该系统的功能需求如下。显示学生信息。将所有学生信息输出。12添加学生信息。学生信息包括学号、姓名、语文成绩、数学成绩。3修改学生信息。根据学号查找学生信息,然后修改学生姓名、成绩等。4删除学生信息。根据学号查找学生信息,并将查找到的信息删除。使用AIGC工具进行项目设计与模块划分问题描述:要开发一个学生成绩管理系统,该系统的功能需求如下。将所有学生的信息按总成绩由高到低进行排序。56查找学生信息。根据姓名查找学生信息,并将查找到的信息输出。7退出系统。使用AIGC工具进行项目设计与模块划分想要的界面效果如下图。使用AIGC工具进行项目设计与模块划分AIGC工具的解答:可从数据结构设计、模块划分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论