C语言程序设计基础课件 第9章 综合案例与实战演练_第1页
C语言程序设计基础课件 第9章 综合案例与实战演练_第2页
C语言程序设计基础课件 第9章 综合案例与实战演练_第3页
C语言程序设计基础课件 第9章 综合案例与实战演练_第4页
C语言程序设计基础课件 第9章 综合案例与实战演练_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第9章综合案例与实战演练综合案例与实战演练作者:目录01

综合案例02

实战演练01综合案例综合案例分析项目概述:本节将制作一个简易的学生信息管理系统,对学生的学号、姓名、班级、宿舍号等进行统计,并可实现数据的增、删、改、查和更新,以方便学校统计学生信息。系统设计:功能结构设计如下图:综合案例分析系统界面预览:学生信息管理系统主界面上包括功能菜单和选择操作提示,如图9-2所示。输入0~5内的数字,能够切换为相应的模块,实现不同的功能。综合案例分析系统界面预览:学生信息管理系统主界面上包括功能菜单和选择操作提示,如图9-2所示。输入0~5内的数字,能够切换为相应的模块,实现不同的功能。综合案例分析系统界面预览:学生信息管理系统主界面上包括功能菜单和选择操作提示,如图9-2所示。输入0~5内的数字,能够切换为相应的模块,实现不同的功能。综合案例分析1.模块概述:预处理模块中需要引入库文件,定义学生结构体,声明各个功能函数。2.功能实现:①文件引用。使用#include命令引入库文件,对程序的一些系统函数进行支持。代码如下:#include<stdio.h>//包含标准输入/输出库函数#include<stdlib.h>//包含标准库,里面定义了一些宏和通用工具函数#include<string.h>//包含处理字符串处理函数综合案例分析2.功能实现:②结构体定义和函数声明。要实现项目的全部功能,需要定义学生结构体类型,以及很多函数。在定义函数之前需要先函数声明。代码如下://定义学生结构体typedefstruct{introllNo;//学号charclassName[50];//班级introomNo;//宿舍号}Student;//函数声明voidaddStudent();//功能:增加学生信息voiddeleteStudent();//功能:删除学生信息voidupdateStudent();//功能:更新学生信息voidsearchStudent();//功能:查询学生信息voiddisplayAllStudents();//功能:显示全部学生信息综合案例分析主函数设计:1)功能概述在学生信息管理系统的main()函数中,打印显示主功能菜单,如图9-8所示;在switch分支结构中调用各函数,可对学生信息进行增加、删除、更新、查询、显示等操作。综合案例分析主函数设计:2)函数实现在main()函数中,使用printf()函数输出文字作为信息提示。获取用户输入的数字后,调用不同的函数实现主体功能,见表9-1。综合案例分析main()代码:intmain(){intchoice;do{printf("\n学生信息管理系统\n");printf("1.增加学生信息\n");printf("2.删除学生信息\n");printf("3.更新学生信息\n");printf("4.查询学生信息\n");printf("5.显示所有学生信息\n");printf("0.退出\n");printf("请选择操作:");scanf("%d",&choice);switch(choice){case1:addStudent();//增加学生信息break;case2:deleteStudent();//删除学生信息break;case3:updateStudent();//更新学生信息break;case4:searchStudent();//查询学生信息break;case5:displayAllStudents();//显示全部学生信息break;case0:printf("程序已退出。\n");break;default:printf("无效的选择,请重新输入。\n");break;}}while(choice!=0);return0;}综合案例分析增加学生信息模块:1)模块概述在主界面中输入1,进入增加学生信息模块。根据输入提示语句,录入学生信息,如图9-9所示。如“请输入学号:”,对应输入学生的学号;“请输入班级:”,对应输入学生所在的班级;“请输入宿舍号:”,对应输入学生所在的宿舍的宿舍号。输入完毕一位学生的信息后会有“学生信息已更新”提示语句。综合案例分析功能实现:在addStudent()函数中,首先输入需增加的学生相关信息,然后将输入的信息存放至学生信息管理的文件中,从而完成对新增学生信息的录入。代码如下:voidaddStudent(){FILE*fp;StudentnewStudent;printf("请输入学号:");scanf("%d",&newStudent.rollNo);//进行对学生学号的输入printf("请输入班级:");scanf("%s",newStudent.className);//进行对学生班级的输入printf("请输入宿舍号:");scanf("%d",&newStudent.roomNo);//进行对学生的宿舍号的输入fp=fopen("students.dat","ab");//打开存储学生信息文件if(fp==NULL){printf("无法打开文件。\n");return;}fwrite(&newStudent,sizeof(Student),1,fp);//将添加的学生的信息写入学生文件中fclose(fp);printf("学生信息已添加。\n");}综合案例分析删除学生信息模块:1)模块概述在主界面中输入2,进入删除学生信息模块。根据输入提示语句,删除学生信息,如图9-10所示。如“请输入要删除的学号:”,对应输入学生的学号;输入完毕学号,系统会判断是否有对应学号的学生,若存在,则提示“学生信息已删除”,如图9-10所示;若不存在,则提示“未找到学生信息”,如图9-11所示。功能实现:在deleteStudent()函数中,首先输入需删除的学生的学号,然后打开学生信息文件,对应查看是否有该学号,若没有,则提示“未找到学生信息”,若有,则找到对应学号进行删除操作。代码如下:voiddeleteStudent(){FILE*fp,*temp;StudentdelStudent;intfound=0;printf("请输入要删除的学号:");//从用户处读取要删除的学号scanf("%d",&delStudent.rollNo);//以二进制读模式打开原文件students.datfp=fopen("students.dat","rb");//以二进制写模式打开临时文件temp.dattemp=fopen("temp.dat","wb");//检查文件是否成功打开if(fp==NULL||temp==NULL){//如果文件打开失败,则输出错误信息并返回printf("无法打开文件。\n");return;}while(fread(&delStudent,sizeof(Student),1,fp)==1){if(delStudent.rollNo!=delStudent.rollNo){

fwrite(&delStudent,sizeof(Student),1,temp);}else{found=1;}}fclose(fp);fclose(temp);remove("students.dat");rename("temp.dat","students.dat");if(found){printf("学生信息已删除。\n");}else{printf("未找到学生信息。\n");}}}综合案例分析更新学生信息模块:1)模块概述在主界面中输入3,进入更新学生信息模块。根据输入提示语句“请输入要更新的学号:”,输入需更新学生信息的学号,若该名学生存在,则根据提示语句“请输入新的班级”,对应输入更新班级,“请输入新的宿舍号”,对应输入更新的宿舍号,如图9-12所示;若该名学生不存在,则输出提示语句“未找到学生信息”,如图9-13所示。综合案例分析功能实现:在updateStudent()函数中,首先输入需更新的学生的学号,然后打开学生信息文件,对应查看

是否有该学号,若没有,则提示“未找到学生信息”,若有,则找到对应学号进行更新操作,其中更新操作中,创建了一个用于存储更新后的学生信息文件,以便将更新前的学生信息进行删除替换。代码如下:voidupdateStudent(){FILE*fp;StudentupdateStudent,tempStudent;intfound=0,rollNo;charupdatedClassName[50];intupdatedRoomNo;printf("请输入要更新的学号:");scanf("%d",&rollNo);fp=fopen("students.dat","rb+");if(fp==NULL){printf("无法打开文件。\n");return;}//临时文件,用于存储更新后的学生信息FILE*tempFp=fopen("temp.dat","wb");if(tempFp==NULL){printf("无法创建临时文件。\n");fclose(fp);return;}while(fread(&tempStudent,sizeof(Student),1,fp)==1){if(tempStudent.rollNo==rollNo){found=1;printf("请输入新的班级:");scanf("%s",updatedClassName);printf("请输入新的宿舍号:");scanf("%d",&updatedRoomNo);//创建更新后的学生信息并写入临时文件updateStudent=tempStudent;

综合案例分析strcpy(updateStudent.className,updatedClassName);updateStudent.roomNo=updatedRoomNo;fwrite(&updateStudent,sizeof(Student),1,tempFp);//打印更新后的学生信息printf("学号:%d的信息已更新为:\n",rollNo);printf("班级:%s\n",updatedClassName);printf("宿舍号:%d\n",updatedRoomNo);printf("\n");break;}

else{//对于未更新的学生信息,直接写入临时文件fwrite(&tempStudent,sizeof(Student),1,tempFp);}}fclose(fp);fclose(tempFp);//如果找到并更新了学生信息,用临时文件替换原文件if(found){remove("students.dat");//删除原文件rename("temp.dat","students.dat");//重命名临时文件为原文件名}else{remove("temp.dat");//如果没有更新,删除临时文件printf("未找到学生信息。\n");}}综合案例分析查询学生信息模块:1)模块概述在主界面中输入4,进入查询学生信息模块。根据输入提示语句“请输入要查询的学号:”,输入需查询学生信息的学号,若该名学生存在,则输出对应学号学生的信息,如图9-14所示;若该名学生不存在,则输出提示语句“未找到学生信息”,如图9-15所示。综合案例分析功能实现:在searchStudent()函数中,首先输入需更新的学生的学号,然后打开学生信息文件,对应查看是否有该学号,若没有,则提示“未找到学生信息”,若有,则找到对应学号的信息进行对信息的打印输出。代码如下:voidsearchStudent(){FILE*fp;StudentsearchStudent;intfound=0,rollNo;

printf("请输入要查询的学号:");scanf("%d",&rollNo);fp=fopen("students.dat","rb");if(fp==NULL){printf("无法打开文件。\n");return;}while(fread(&searchStudent,sizeof(Student),1,fp)==1){if(searchStudent.rollNo==rollNo){printf("学号:%d\n",searchStudent.rollNo);printf("班级:%s\n",searchStudent.className);printf("宿舍号:%d\n",searchStudent.roomNo);found=1;break;}}fclose(fp);if(!found){printf("未找到学生信息。\n");}}综合案例分析显示学生信息模块:1)模块概述在主界面中输入5,进入显示所有学生信息模块。将打印出存储学生信息文件中所有学生的信息,如图9-16所示。综合案例分析功能实现:在displayAllStudents()函数中,首先打开存储学生信息的问题,然后遍历打印其文件中信息,完成后关闭文件。代码如下:voiddisplayAllStudents()

温馨提示

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

评论

0/150

提交评论