好文档 - 专业文书写作范文服务资料分享网站

大数据结构基础 学生成绩管理系统 c语言

天下 分享 时间: 加入收藏 我要投稿 点赞

(8) 删除模块 void Delete() 为删除模块函数,按输入的学号删除信息,首先会根据用户输入的学号查找该学号对应的信息,如果记录中没有,则系统返回查无此人,如果查找成功,则会删除该学生的所有信息,代码同查找一样,在while循环中用了字符串比较函数,若查找成功,则删除,否则返回查无此人。 11 (9) 插入函数模块 void insert() 为插入函数,主要用了尾插法插入学生信息,主要代码如下 void insert() {………………… q=(student *)malloc(sizeof(student)); //建立新的结点 ………………….. //输入学生信息 while(p!=NULL) //循环 { if(strcmp(p->num,q->num)==0) //判断链表中是否已有该学号 { printf(\该学号已经存在,无法插入!\\n\ return; } //若链表中已有该学号,则返回 p=p->next;} p=head; for(i=0;inext; q->next=p->next; p->next=q; length++; //插入后链表长度增加 printf(\插入成功!\\n\返回成功 12 插入函数的难点在于新结点建立、信息输入、将信息插入链表等步骤的链接,还有结点的移动等核心算法。 (10) 排序函数模块 排序模块是我遇到的最大难题,难在不仅要对整形数比大小,还要对学号这个字符串比大小,在编译时,老是出错,也想了好些天,但在同学及老师的帮助下还是把问题解决了,而关键在于对字符串比较函数的应用 if(strcmp(p->num,p->next->num)>0) ,这样编写问题就迎刃而解了。 排序模块主要有按学号排序、按各科目成绩排序。按学号排序时,用的排序方法为结点交换的排序方法,主要代码为 while( head->next != tail ) //头指针不等于尾指针时 { prep = head; p = head->next; while( p->next != tail ) { if(strcmp(p->num,p->next->num)>0) //利用字符串比较函数对学号比较大小 { temp = p->next; //临时保存p的后继结点的值 prep->next = p->next; p->next = p->next->next; prep->next->next = p; p = temp; //完成交换 } p = p->next; // 节点后移 prep = prep->next; } tail = p; } //完成排序 13 而按科目成绩排序时,采用的都是插入法排序,按成绩递减序列排序,核心算法如下 void paixusf(student *&L) //将学生单链表按数分成绩递减排序 student *p,*pre,*q; p=L->next->next; //p指向L的第2个数据结点 L->next->next=NULL; //构造只含一个数据结点的有序表 while (p!=NULL) { q=p->next; //q保存*p结点后继结点的指针 pre=L; //从有序表开头进行比较,pre指向插入*p的前驱结点 while (pre->next!=NULL && pre->next->math>p->math) pre=pre->next; //在有序表中找插入*p的前驱结点*pre p->next=pre->next; //将*pre之后插入*p pre->next=p; p=q; //扫描原单链表余下的结点 } } 运行结果为 14 (11) 修改模块 修改的时候,首先是根据用户输入的学号查找该学生,若查找成功,则将用户输入的信息临时保存,然后替换原先的信息[5] while(p!=NULL) { if(strcmp(p->num,xg)==0) //查找成功,并显示被修改者的信息 { ………………………….. //显示要被修给的学生信息 printf(\请输入你要修改的学生的学号、姓名、数分、英语、数据结构:\\n\ scanf(\ strcpy(p->num,num1); //字符串复制函数修改学号,名字 strcpy(p->name,name1); p->math=math1;p->English=English1;p->Data=Data1;//修改成绩 printf(\修改成功\\n\ t=0; //修改成功,赋值为0 } p=p->next; //指针移动 } if(t==1) //查找失败,无修改者信息 { printf(\找不到要修改的学号!\\n\ } 运行结果比较 修改前 修改后 15

大数据结构基础 学生成绩管理系统 c语言

(8)删除模块voidDelete()为删除模块函数,按输入的学号删除信息,首先会根据用户输入的学号查找该学号对应的信息,如果记录中没有,则系统返回查无此人,如果查找成功,则会删除该学生的所有信息,代码同查找一样,在while循环中用了字符串比较函数,若查找成功,则删除,否则返回查无此人。11(9)插入函数模块voidinsert()为插入函数,主要用了尾插法
推荐度:
点击下载文档文档为doc格式
9lsxg688y94ncj33s2bw8iiwn479cv018dp
领取福利

微信扫码领取福利

微信扫码分享