1、public:student *next;string name;/姓名 long num;/学号 int x,y,z;/数学,语文,英语 int AA;/总分 void play()coutname学生的学号是num,数学:x,语文:y,英语:z,总分:AAnext;delete stu;stu=p;void sadd(); /录入void sremove(); /删除 void samend(); /修改 void ssearch(); /查询 void staxis(); /排序 void sload(); /读取/排序函数 void pxh();void pAA();private:s
2、tudent *stu; /头接点 void cla:sadd()/录入student *q;string name1;long num1;int x1,y1,z1;system(cls);coutname1num1x1y1z1;q=new student(name1,num1,x1,y1,z1);q-next=0;AA=x1+y1+z1;if(stu) student *t;t=stu;if(t-num=num1) 学号已存在,请重新输入return;while(t-next) t=t-t-next=q;else stu=q;输入完毕3.2删除记录sremove()/删除int num1;n
3、* 删除学生信息 *n;请输入想要删除学生的学号:num1;/查找要删除的结点student *p1,*p2;p1=stu;while(p1)if(p1-num=num1)break;elsep2=p1;p1=p1-/删除结点if(p1!=NULL)/若找到结点,则删除p1-play();确定删除吗?Y/Nchar c;c;if(toupper(c)!=Y) return;if(p1=stu) /若要删除的结点是第一个结点stu=p1-delete p1;else /若要删除的结点是后续结点p2-next=p1-找到学号为num1xyz;AA=p1-x+p1-y+p1-修改成功else /未找
4、到接点 未找到!3.4查询记录 void cla:ssearch()/查询 n* 查询学生信息 *n请输入查询方式:1.按学号查询2.按姓名查询3.返回 cinswitch (c) case 1要查询的学号/查找要查询的结点 姓名: 数学: 语文: 英语:查询完毕.2要查询的学生姓名name1;name=name1) name1 n+; p1=p1- 共有n条信息.int i;for(i=1;inumnext-num) / 如果头结点大于第二个的 p2=p1-next=p1; /头结点交换 stu=p2;next) /中间的交换 num) p1=p2- /交换 do while(p1);pAA
5、()/按总分排序 p1=stu;AAAA) / 如果头结点大于第二个的 p2=p1- p2=p1;AA) p1-staxis()/排序 请选择以何种方式排序:1以学号排序2以总分排序3返回请选择(1-3)pxh(); break;pAA();4、调试分析在设计过程中主要遇到下列问题:(1)、析构函数的构建。通过查阅c+高级语言程序设计一书得到解决.(2)、成员原函数的调用。通过查阅c+高级语言程序设计一书得到解决。(3)、指针的运用。通过查阅c语言程序一书得到解决。5、测试结果下面是我的测试函数及运行结果:#includeiomanipfstreamstringusing namespace std;#define max 100;float ave; /平均分,平均分:ave /读取 void qave();ave=(x1+y1+z1)/3;sremove()/删除 /查找要删除的结点 /删除结点 =NULL)/若找到结点,则删除 if(p1=stu) /若要删除的结点是第一个结点 else /若要删除的结点是后续结点 else /未找到结点 总分:fo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1