数据结构课程设计.pptx
2023/3/17A A题描述 Another Another 定义定义A定义结构体数组typedefPARTBstructPARTCstuPART问第1页/共34页基本操作函数学生成绩管理系统01 0102 0203 0304 04问题描述问题描述结构分析结构分析基本操作基本操作函数函数运行运行14计科2班 第12组voidStuSave(Student*);/学生成绩管理系统的存储函数,由主函数调用基本操作函数:voidStuOutput(Student*p);/输出函数intStuImport(Student*head,Student*p);/输入函数voidStuInputHand(Student*head);/学生成绩管理系统的手动输入函数,由输入函数调用voidStuInputFile(Student*head);/学生成绩管理系统的文件输入函数,由输入函数调用voidStuSelectErg(Student*head);/学生成绩管理系统的遍历函数,由查找函数调用voidStuSelectNumFind(Student*head);/学生成绩管理系统的按学号查找函数,由查找函数调用voidStuSelectSubFind(Student*head);/学生成绩管理系统的按科目查找函数,由查找函数调用第2页/共34页2023/3/17源程序第3页/共34页2023/3/17#include/输入输出头文件#include#include#include#includeclassstudent/班级学生private:charname20;/姓名doublecpro,english,math,sport,law,hbpro,computer;/课程intorder,number;/名次,学号public:student()student(charn20,intnu,doublecc,doubleeng,doublema,doublesp,double第4页/共34页2023/3/17l,doublehb,doublecom)strcpy(name,n);number=nu;cpro=cc;english=eng;math=ma;sport=sp;law=l;hbpro=hb;computer=com;friendvoidmain();voidmain()cout欢迎进入*学生成绩管理系统*!endl;cout*endl;第5页/共34页2023/3/17cout*学生成绩管理系统*endl;cout*endl;cout*endl;cout*0、输入数据*endl;cout*1、增加数据*endl;cout*2、修改数据*endl;cout*3、按姓名查询*endl;cout*4、按学号查询*endl;cout*5、输出所有学生的成绩*endl;cout*6、退出系统*endl;cout*endl;cout选择0-6数字进行操作p;if(p=0&p=6)flag=1;elsecout指令错误!请重新输入:endl;第7页/共34页2023/3/17while(flag=0);doswitch(p)/接收功能选项case0:/输入数据charc;/定义一个字符型ccharname20;intnumber;doublecpro,english,math,sport,law,hbpro,computer;/定义了一个数组,数组名为name,数组元素的个数为20定义docoutname;coutendlnumber;第8页/共34页2023/3/17coutcpro;coutendlenglish;coutendlmath;coutendlsport;coutendllaw;coutendlhbpro;coutendlcomputer;coutendl;filej=newofstream(“D:document”,ios:ate);/这是一个输出流,向文件输出的filej=newofstream(“d:document”,ios:ate);进行了动态内存分配*filej姓名name学号numberC+成绩cpro英语成绩english数学成绩math体育成绩sport网络基础成绩lawC成绩hbpro数据库成绩computerendl;j+;si=newstudent(name,number,cpro,english,math,sport,law,hbpro,computer);i+;coutc;coutendl;do第10页/共34页2023/3/17if(c!=y&c!=n)cout指令错误!请重新输入!endlc;/输入c的值elseflag=1;/变量1while(flag=0);while(c=y);break;case1:/增加数据charname20;/定义了一个数组,数组名为name,数组元素的个数为20,分别为a0-a19;可以存放的最大字符数为20intnumber;double/第11页/共34页2023/3/17cpro,english,math,sport,law,hbpro,computer;charc;docoutname;coutendlnumber;coutendlcpro;coutendlenglish;coutendlmath;coutendlsport;coutendllaw;coutendlhbpro;coutendlcomputer;coutendl;filej=newofstream(d:document,ios:ate);*filej姓名name学号第13页/共34页2023/3/17numberC+成绩cpro英语成绩english数学成绩math体育成绩sport网络基础成绩lawC成绩hbpro数据库成绩computerendl;j+;si=newstudent(name,number,cpro,english,math,sport,law,hbpro,computer);i+;coutc;coutendl;if(c!=y&c!=n)cout指令错误!请重新输入!endlc;第14页/共34页2023/3/17while(c=y);break;case2:/修改数据charname20;intnu;doublecc,eng,ma,sp,l,hb,com;flag=0;charc;if(i=0)cout管理系统中没有输入数据!endl;break;do第15页/共34页2023/3/17coutname;coutendl;for(inth=0;hname)=0)flag=1;coutnu;coutendlcc;coutendleng;coutendlma;coutendlsp;coutendll;coutendlhb;coutendlcom;coutcpro=cc;第17页/共34页2023/3/17sh-english=eng;sh-math=ma;sh-sport=sp;sh-law=l;sh-hbpro=hb;sh-computer=com;sh-number=nu;cout数据修改成功!endl;if(flag=0)/判断要修改的学生数据是否存在cout您要修改的学生本来就不存在!请检查重新输入!endl;第18页/共34页2023/3/17coutc;coutendl;if(c!=y&c!=n)cout指令错误!请重新输入!endlc;while(c=y);break;第19页/共34页2023/3/17case3:/按姓名查询charn20;intj=0;charc;if(i=0)/学生姓名不存在的情况cout管理系统中没有输入数据!endl;break;dointflag=0;/学生姓名存在的情况coutn;coutendl;for(intj=0;ji;j+)第20页/共34页2023/3/17if(strcmp(n,(*sj).name)=0)flag=1;cout您要查询的学生是:(*sj).nameendl;cout(*sj).name的成绩是:C+:(*sj).cpro英语:(*sj).english数学:(*sj).math体育:(*sj).sport法律:(*sj).lawC:(*sj).hbpro数据库(*sj).computerendl;if(flag=0)cout对不起!您要查询的学生不存在!endl;coutc;第21页/共34页2023/3/17coutendl;if(c!=y&c!=n)cout指令错误!请重新输入!c;while(c=y);/输入Y表示继续按照姓名查询break;case4:/按学号查询intn,j=0;charc;第22页/共34页2023/3/17if(i=0)/学生数据不存在的情况cout管理系统中没有输入数据!endl;break;dointflag=0;/学生数据存在按照学生学号查询coutn;coutendl;for(intj=0;jnumber=n)flag=1;第23页/共34页2023/3/17cout您要查询的学生是:(*sj).nameendl;cout(*sj).name的成绩是:C+:(*sj).cpro英语:(*sj).english数学:(*sj).math体育:(*sj).sport法律:(*sj).lawC:(*sj).hbpro数据库(*sj).computerendl;if(flag=0)cout对不起!您要查询的学生不存在!endl;coutc;coutendl;if(c!=y&c!=n)cout指令错误!请重新输入!c;第24页/共34页2023/3/17while(c=y);/;/*y=x是赋值语句,表示将x的值赋值给y,那么while(y=x)可以理解为当x=0,即y=x=0时跳出循环,如果x为其它非零数,则执行循环体*/break;case5:/输出cout本系统所有学生数据如下:endl;/输出if(i=0)cout管理系统中没有输入数据!endl;cout姓名学号c+英语数学体育网络基础C语言数据库endl;for(intk=0;ki;k+)第25页/共34页2023/3/17coutnamesetw(7)numbersetw(6)/*函数setw(intn)用来控制输出间隔。超出则按实际长度输出*/(*sk).cprosetw(6)(*sk).englishsetw(6)/cpro与english间隔为6(*sk).mathsetw(6)(*sk).sportsetw(7)(*sk).lawsetw(10)(*sk).hbprosetw(10)(*sk).computersetw(10)endl;break;case6:/退出exit(0);coutByebye!endl;/输出Byebyecoutw;/标准输入流相当于c的scanfcoutendl;if(w!=y&w!=n)cout指令错误!请重新输入!endl;elseflag=1;while(flag=0);if(w=y)cout请输入操作代码:0输入数据endl;cout1增加数据endl;cout2修改数据endl;cout3按姓名查询endl;第27页/共34页2023/3/17cout4按学号查找endl;cout5输出所有学生成绩endl;cout6退出系统p;while(w=y);cinw;coutendl;if(w!=y&w!=n)cout指令错误!请重新输入!endl;elseflag=1;while(flag=0);第28页/共34页2023/3/17if(w=y)cout请输入操作代码:0输入数据endl;cout1增加数据endl;cout2修改数据endl;cout3按姓名查询endl;cout4按学号查找endl;cout5输出所有学生成绩endl;cout6退出系统p;while(w=y);cinw;coutendl;第29页/共34页2023/3/17if(w!=y&w!=n)cout指令错误!请重新输入!endl;elseflag=1;while(flag=0);if(w=y)cout请输入操作代码:0输入数据endl;cout1增加数据endl;cout2修改数据endl;cout3按姓名查询endl;cout4按学号查找endl;cout5输出所有学生成绩endl;cout6退出系统p;while(w=y);第31页/共34页 2023/3/17第32页/共34页2023/3/1714计科计科2 第第12组组 指导教师指导教师 余文森余文森第33页/共34页感谢您的观看!第34页/共34页