程序设计7(结构体3)课件_第1页
程序设计7(结构体3)课件_第2页
程序设计7(结构体3)课件_第3页
程序设计7(结构体3)课件_第4页
程序设计7(结构体3)课件_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

程序设计7(结构体3)课件2023-2026ONEKEEPVIEWREPORTINGWENKUDESIGNWENKUDESIGNWENKUDESIGNWENKUDESIGNWENKU目录CATALOGUE结构体概述结构体与指针结构体嵌套与递归文件操作与结构体案例分析:学生信息管理系统设计课程总结与拓展延伸结构体概述PART01使用`struct`关键字定义结构体类型,指定结构体名称和成员列表。结构体类型定义由多个成员组成,每个成员可以是基本数据类型或其他结构体类型。成员列表结构体的大小等于其所有成员大小之和,同时要考虑内存对齐规则。结构体大小结构体定义

结构体变量结构体变量的声明声明结构体变量时需要指定结构体类型名称。结构体变量的初始化可以在声明时或后续代码中为结构体变量的成员赋值。结构体变量的访问使用`.`运算符访问结构体变量的成员。结构体数组的初始化可以在定义时或后续代码中为结构体数组的每个元素赋值。结构体数组的访问使用数组下标访问结构体数组中的元素,再使用`.`运算符访问元素的成员。结构体数组的定义定义结构体数组时需要指定数组大小和结构体类型。结构体数组结构体与指针PART02通过定义指向结构体的指针变量,可以存储结构体变量的地址。定义指向结构体的指针使用箭头运算符(->)可以通过指向结构体的指针访问结构体的成员。访问结构体成员可以对指向结构体的指针进行加、减等运算,以访问结构体数组中的元素。指针的运算指向结构体的指针03提高效率使用指针传递结构体可以避免整个结构体的复制,提高程序的运行效率。01函数参数传递方式可以将指向结构体的指针作为函数的参数,实现函数对结构体的操作。02函数内部对结构体的修改在函数内部,可以通过传递的指针修改结构体的成员,实现对结构体的改变。结构体指针作为函数参数指针成员的定义可以在结构体中定义指针类型的成员,用于存储指向其他数据类型的指针。动态内存分配可以使用指针成员在结构体中动态分配内存,以存储可变大小的数据。指针成员的操作可以通过结构体中的指针成员访问和操作所指向的数据,实现灵活的数据处理。结构体中指针成员的使用结构体嵌套与递归PART03结构体嵌套定义01在一个结构体的定义中,可以包含另一个结构体作为成员,这种包含关系称为结构体嵌套。被包含的结构体称为子结构体,包含子结构体的结构体称为父结构体。嵌套结构体的声明02在声明嵌套结构体时,需要先声明子结构体,然后在父结构体中声明子结构体的成员。嵌套结构体的访问03访问嵌套结构体的成员时,需要使用“.”运算符逐级访问。结构体嵌套定义123一个结构体可以包含指向自身类型的指针或引用作为成员,这种定义方式称为结构体递归定义。结构体递归定义在声明递归结构体时,需要在结构体内部声明一个指向自身类型的指针或引用成员。递归结构体的声明递归结构体通常用于实现链表、树等数据结构,可以通过指针或引用来实现数据的动态分配和访问。递归结构体的使用结构体递归定义链表链表是一种常见的数据结构,可以使用结构体递归定义来实现。链表的每个节点包含一个数据域和一个指向下一个节点的指针域,通过指针的链接可以形成一个线性的数据结构。二叉树二叉树是一种树形数据结构,可以使用结构体嵌套定义来实现。二叉树的每个节点包含一个数据域和两个分别指向左子树和右子树的指针域,通过指针的链接可以形成一个层次分明的数据结构。图图是一种复杂的数据结构,可以使用结构体嵌套和递归定义来实现。图的每个节点可以包含一个数据域和一个指向相邻节点的指针域或数组,通过指针或数组的链接可以形成一个网状的数据结构。结构体嵌套与递归应用举例文件操作与结构体PART04文件打开与关闭使用fscanf()、fprintf()、fgets()、fputs()等函数进行文件读写操作。文件读写函数文件定位使用fseek()、ftell()、rewind()等函数进行文件定位操作。使用fopen()函数打开文件,fclose()函数关闭文件。文件读写操作回顾定义结构体打开文件写入数据关闭文件将结构体数据写入文件根据需要定义结构体类型,包含所需的数据成员。使用fprintf()函数将结构体数据按照格式写入文件。使用fopen()函数以写入方式打开文件。使用fclose()函数关闭文件。使用fopen()函数以读取方式打开文件。打开文件使用fscanf()函数从文件中读取数据,并按照结构体的格式进行解析。读取数据将读取的数据赋值给相应的结构体变量,并进行后续处理。处理数据使用fclose()函数关闭文件。关闭文件从文件中读取结构体数据案例分析:学生信息管理系统设计PART05系统需求分析与设计思路系统需求学生信息管理系统需要实现对学生信息的录入、查询、修改和删除等功能,同时要保证数据的准确性和安全性。设计思路采用结构体来存储学生信息,包括学号、姓名、性别、年龄、成绩等字段;使用文件操作来实现数据的持久化存储;通过菜单选择的方式来实现不同功能的选择和操作。结构体定义structStudent{```c关键代码实现及讲解03chargender;01intid;02charname[20];关键代码实现及讲解intage;floatscore;关键代码实现及讲解};```文件操作函数关键代码实现及讲解```cvoidsave_students(structStudentstudents[],intcount){关键代码实现及讲解关键代码实现及讲解关键代码实现及讲解if(fp==NULL){printf("Failedtoopenfile!n");return;关键代码实现及讲解关键代码实现及讲解}for(inti=0;i<count;i){fprintf(fp,"%d%s%c%d%.2fn",students[i].id,students[i].name,students[i].gender,students[i].age,students[i].score);}fclose(fp);关键代码实现及讲解VS}voidload_students(structStudentstudents[],int*count){关键代码实现及讲解关键代码实现及讲解FILE*fp=fopen("students.txt","r");if(fp==NULL){printf("Failedtoopenfile!n");关键代码实现及讲解关键代码实现及讲解return;关键代码实现及讲解010203while(!feof(fp)){structStudentstudent;}关键代码实现及讲解students[*count]=student;关键代码实现及讲解(*count);关键代码实现及讲解}fclose(fp);关键代码实现及讲解123}```主函数实现关键代码实现及讲解关键代码实现及讲解01```c02intmain(){structStudentstudents[100];03intcount=0;intchoice;关键代码实现及讲解010203do{printf("nMenu:n");printf("1.Addstudentn");关键代码实现及讲解关键代码实现及讲解01printf("2.Querystudentn");02printf("3.Modifystudentn");03printf("4.Deletestudentn");printf("5.Exitn");printf("Pleaseinputyourchoice:");关键代码实现及讲解01scanf("%d",&choice);02switch(choice){03case1://addstudent关键代码实现及讲解add_student(students,&count);关键代码实现及讲解break;case2://querystudentquery_student(students,count);关键代码实现及讲解case3://modifystudentmodify_student(students,count);break;关键代码实现及讲解关键代码实现及讲解break;02case4://deletestudent03delete_student(students,&count);01case5://exitprintf("Goodbye!n");break;关键代码实现及讲解关键代码实现及讲解030201break;default://invalidchoiceprintf("Invalidchoice,pleasetryagain.n");break;关键代码实现及讲解}}while(choice!=5);关键代码实现及讲解return0;关键代码实现及讲解}```关键代码实现及讲解系统测试与运行结果展示添加3个学生信息,然后进行查询、修改和删除操作。测试数据程序能够正确执行各项操作,并显示相应的结果。例如,查询操作可以显示指定学号的学生信息;修改操作可以修改指定学号的学生信息;删除操作可以删除指定学号的学生信息。运行结果课程总结与拓展延伸PART06结构体指针讲解了结构体指针的概念和使用方法,包括如何定义结构体指针、如何进行指针的初始化和赋值操作,以及如何通过指针访问结构体的成员。结构体定义与初始化介绍了如何在程序中定义结构体类型,以及如何进行结构体的初始化操作。结构体成员访问详细讲解了如何访问结构体的成员,包括使用点运算符和箭头运算符进行访问的方法。结构体数组介绍了如何定义结构体数组,以及如何进行结构体数组的初始化和访问操作。课程重点内容回顾010203编写一个学生信息管理系统建议学生使用结构体来表示学生信息,包括学号、姓名、性别、年龄等字段,并使用数组或链表来存储多个学生的信息。通过编写函数来实现对学生信息的添加、删除、修改和查询等操作。编写一个图书管理系统建议学生使用结构体来表示图书信息,包括书号、书名、作者、出版社等字段,并使用文件来存储图书信息。通过编写函数来实现对图书信息的添加、删除、修改和查询等操作,并实现借书、还书等图书借阅管理功能。编写一个员工工资管理系统建议学生使用结构体来表示员工信息,包括员工号、姓名、基本工资、奖金等字段,并使用数组或链表来存储多个员工的信息。通过编写函数来实现对员工信息的添加、删除、修改和查询等操作,并实现工资的计算和统计功能。编程实践建议与指导建议学生参考《C语言程序设计》、《数据结构与算法》等相关教材,以及网上丰富的C语言学习资源,如博客、在线课程等。建议学生按照以下步骤进行学习和实践推荐资源

温馨提示

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

评论

0/150

提交评论