C语言学生信息管理系统管理-程序设计报告(附完整代码).pdf
《C语言学生信息管理系统管理-程序设计报告(附完整代码).pdf》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统管理-程序设计报告(附完整代码).pdf(47页珍藏版)》请在咨信网上搜索。
博U询嗜2总 程序设计报告 题 目:简单学生信息管理专业软件工程(NHT)学生姓名*班级学号_*指导教师_*指导单位软件学院日期2010-4-23评分项成绩评遵守机房规章制度(5分)上机时的表现(5分)学习态度(5分)分程序准备情况(5分)程序设计能力(10分)团队合作精神(5分)细课题功能实现情况(10分)算法设计合理性(10分)用户界面设计(10分)则报告书写认真程度(5分)内容详实程度(10分)文字表达熟练程度(10分)回答问题准确度(10分)简 短 评 语教师签名:_年_月一日评分等级备 注评分等级有五种:优秀、良好、中等、及格、不及格2学生管理系统一、课题内容和要求1、系统的基本功能实现学生信息的录入、查询和更新。2、要求(1)从键盘上录入学生资料,并保存到文件中。学生资料文件中的数据记录不得少于 30条。相关数据要求格式如下:学生资料文件存放了学号、姓名、性别、出生日期、A课程成绩、B课程成绩、C 课程成绩格式如下:B051001 张三女 19870201 80 82 77B051002 李四女 19870301 80 80 80B051003 王二男 19870401 85 80 80O O O O O O(2)可以随时补录学生资料。(3)能够按照不同的条件查询学生信息,并显示在屏幕上。a)按学号排序b)按姓名排序c)按单科总分排序d)按学号查找学生各门课成绩和平均分数e)按姓名查找学生各门课成绩和平均分数f)按学生总分排序g)查询各门课程的平均分数3二、需求分析需要设计并实现一个综合的学生信息管理系统,要求系统能实现以下功能:录入、查 询和更新学生信息,并保存到文件中;学生资料文件中的数据记录不得少于30条;可以 随时补录学生资料;可以按学号排序、按姓名排序、按单科总分排序、按学号查找学生各 门课成绩和平均分数、按姓名查找各门课成绩和平均分数、按学生总分排序、实现各门课 程的平均分数。根据题目要求的功能,用结构化程序设计的思想,将系统分成5大功能模块:显示基 本信息、基本信息管理、学生成绩管理、根据条件排序、根据条件查询。“显示基本信息”模块实现了学生基本信息的显示;“基本信息管理”模块实现了“插入学生记录”、“删除 学生记录”以及“修改学生记录”功能;“学生成绩管理”模块实现了“计算学生总分”、“计算学生名次”、“计算三门课程平均分”以及“计算各门课程的平均分数”功能;“根 据条件排序”模块实现了“按学号排序”、“按姓名排序”、“按A课程成绩排序”、“按B课 程成绩排序”、“按C课程成绩排序”以及“按学生总分排序”功能;“根据条件查询”模 块实现了“按学号查找学生各门课成绩和平均分数”和“按姓名查找学生各门课成绩和平 均分数”功能。为此需要设计一个比较综合的系统来体现“自顶向下、逐步细化、模块化”的思想。而为了在学生管理系统中体现结构化的程序设计思想,需要在系统采用多个文件多个函数 来实现功能,通过对功能的逐步细化使得最终的每一个函数都完成一个非常具体又简单的 功能。而且每一个函数在设计时要充分考虑好入口(形参)与出口的设置(函数返回值),这是保证每个模块相对独立又能为其他模块合理使用的前提。系统应通过流程控制组织,分层调用各个函数,完成整个系统预期的任务。4、概要设计学生管理系统根据条件查询修改学生记录删除学生记录插入学生记录计算各门课程的平均分数计算三门课程平均分数计算学生名次计算学生总分设计流程图如下:6根据题目要求,一个学生信息包含:学号、姓名、性别、3门课的成绩、总分、各科 成绩平均分、所有学生单科平均分以及名次。显然,将不同类型的成员作为同一个变量的 不同成分来存储,必须用结构类型来定义。而管理系统显然要处理一批学生的信息,鉴于书本定义了以Type类型为数据域成分 的结点类型,学生信息在内存中以单链表形式存放。完整定义如下:struct Student(char num10;char name20;char sex10;char birthday10;int score3;int total,rank;double aver,average;);typedef struct Student Type;const int sizeStu=sizeof(Type);struct node(Type data;struct node*next;);const int size=sizeof(struct node);由以上定义,结点含有两个域,即数据域data,其所属类型为Type,指针域next。这 里的Type类型是struct Student类型的别名,是一个结构体类型。这样定义的好处是对 于各种关于单链表的操作此时同样适用。当数据成员的类型发生变化时,只需要到该文件 中进行相应的修改,使Type成为新的数据成员类型的别名,结点类型struct node类型 的定义都无需修改。对链表而言,其结点永远只含有两个成员:Type类型的data成员和 7struct node*类型的 next 成员。四、详细设计学生管理系统采用了两级菜单四层函数实现,充分考虑模板的合理划分,代码的可重 用性,完整的程序由 5 个文件组成:(1)node,h(2)Prepare,h(3)file,h(4)list,h(5)B09050329.Co而文件(5)B09050329.c是系统实现的最主要的文件。所有的菜单都是通过定义函数,并被其他函数调用后实现的。根据操作时显示的顺序,5个菜单分为两级。两级菜单的使用提高了人机交互性,而且同一菜单可多次选择在结束,操作更便捷灵活。系统中各个菜单的具体信息菜单一级菜单二级菜单(1)二级菜单(2)二级菜单(3)三级菜单(4)函数名menu();menuBase();menuScore();menuSort();menuSearch();对应功 能模块学生信息管理系统基本信息管理学生成绩管理根据条件排序根据条件查询调用mainbaseManagescoreManagesortManagesearchManage函数函数函数函数函数函数1、首先执行文件打开操作,调用函数readFile(),如果原始文件不存在,则调用函数 createFile。创建文件,输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生 的三门课程成绩等相关信息;其中调用函数Insert 0函数。判断原始文件不存在的关键代码如下:if(fp=fopen(student,txt”,rb)=NU LL)(printf(z,can not open file!n,z);exit(0);如果原始文件存在,则读出文件中第一条记录,并在文件未结束时按学号顺序循环将8学生记录插入链表,在读出下一条记录,其关键代码如下:fread(&data,sizeStu,1,fp);while(Ifeof(fp)(head=Insert(head,data,1);printf(n);fread(&data,sizeStu,1,fp);如果原始文件不存在,则调用函数createFileO创建文件并循环将读入的记录写入文 件,部分关键代码如下:readNode(&data);while(!endWith(data)(fwrite(&data,sizeStu,1,fp);readNode(&data);fclose(fp);2、进入一级菜单,调用dowhile语句可以实现多次进入一级菜单,调用一级菜单函 数menu。显示一级菜单,输入一级菜单选择项,如果输入的数据在可能选项内,调用 runMainO函数完成系统功能。runMainO函数采用switchcase语句根据选择执行各个模 板功能(显示基本信息模块、基本信息管理模块、学生成绩管理模块、根据条件排序模块、根据条件查询模块),此时要充分考虑好入口(形参)与出口的设置(函数返回值),保 证其相对独立又能为其他模块合理使用。3、显示基本信息模块:先调用表头函数printHead。输出表头,调用printList(head)函数来执行链表的遍历,并在其中调用printNode(p-data);来输出学生信息,包括总分 和平均分。其关键代码如下:for(p=head;p;p=p-next)p从头指针开始,每循环一次向后移动1节点的位置(printNode(p-data):/p非空时执行循环体,调用printNode函数输出节点的元 9素值,最后换行printf(n);3、基本信息管理模块:可用baseManage(head)函数来实现,并调用menuBase 0;显示 二级菜单。dowhile语句和switchcase语句的嵌套使用,使程序逐步细化,且更人性化,便于终端用户使用。readNode(&data);和Insert(head,data,1);的使用执行了学生信息 的插入功能。Delete(head,data);函数 执行了学生信息的删除,SearchNode(head,data,1);函数执行了学生信息的修改。此时充分体现了单链表的优越 性。Insert(head,data,1);函数的关键代码如下:struct node*p,*p2;p2=head;p=(struct node*)malloc(size);利用指针p申请结点动态空间p-data=data;/数 据 域 赋 值p-next=NU LL;指针域直接赋值为空,以后根据插入位置再修改 if(head=NU LL)原链表为空时的插入(head二p;新插入的结点为头结点p2=p;return head;p2-next=p;p2作为p的后继结点,即p插在pl和p2之间 return p2;Delete(head,data);函数的关键代码如下:if(P)如果找到要删除的结点P(if(q)如果删除的不是第一个结点q-next=p-next;修改q的next域,使p的后继成为q的后继else 如果删除的不是第一个结点10head=head-next;修改 head 指针free(p);释放指针p所指向的结点空间SearchNode(head,data,1);函 数 关 键 代 码 如 下 while(p&!equal(p-data,data,condition)/equal 用来判断两个参数是否相等 当P非空且当前结点的数据值不等于要搜索的值data时p=p-next;指针p顺着链向后移动,个位置if(p)return p;循环停止时p非空,表示找到了结点,返回指针P4、学生成绩管理模块:通过调用scoreManage()函数来实现,仍然使用dowhile语 句和switchcase语句,调用menuScore();显示二级菜单。表头函数printHead();输出 表头,执行了“计算学生总分”的关键代码如下:for(p二head;p;p=p-next)(p-data).total=0;for(i=0;idata).total+=(p-data).scorei;printNode(p-data);“计算学生名次”调用了 rankCalculate(head);函数的关键代码如下:for(p=head;p;p=p-next,count+)head链是按学号排序的,逐个读出学生记录 head2=Insert0rder(head2,p-data,2);依次将学生记录依总分由低到高建链表head2rankprintHead();输出表头for(p=head2;p;p=p-next)再依次访问head2链中的结点(current+;每扫描到一个结点计算器current加1q=SearchNode(head,p-data,1);对head2中当前结点依学号在head链中找到(q-data).rank=count-current+l;/对 head 链中名次进行修改rankprintNode(p-data);/输出记录printf(nn);1-1return head;“计算三门课程平均分”调用averMark(head);函数,其关键代码如下:for(p二head;p;p=p-next)(double m=0;for(i=0;idata).scorei;(p-data).aver=m/3.0;averprintNode(p-data);输出记录 printf(n);“计算各门课程的平均分数调用average(head,aver);函数,其关键代码如下:int i,count=0;for(p二head;p;p=p-next)(count+;/count用来统计总人数for(i=0;idata).scorei;/aver i中存放的是某门课的和for(i=0;idata,2);执行函数功能。1-2部分关键代码如下:int count=0,current=O;/count统计学生总人数,即单链表的结点个数 for(p=head;p;p=p-next,count+)/head链是按学号排序的,逐个读出学生记录 head2=Insert0rder(head2,p-data,2);依次将学生记录依总分由低到高建链表head2 rankprintHeadO;for(p=head2;p;p=p-next)再依次访问head2链中的结点(current+;每扫描到一个结点计算器current加1q=SearchNode(head,p-data,1);对head2中当前结点依学号在head链中找到(q-data).rank=count-current+l;对 head 链中名次进行修改 rankprintNode(p-data);输出记录printf(nn);InsertOrder(head2,p-data,2);的部分关键代码如下:struct node*p,*pl,*p2;p2=head;p=(struct node*)malloc(size);利用指针p申请结点动态空间 p-data=data;数据域赋值p-next=NU LL;指针域直接赋值为空,以后根据插入位置再修改 if(head=NU LL)原链表为空时的插入(head二p;新插入的结点为头结点 return head;while(p2&larger(p-data,p2-data,condition)第一参数大于第二参数,返回真(pl=p2;pl是p2的前趋结点,二者同时后移 p2=p2-next;13if(head=p2)前插入,修改head指针head二p;else 否则p插在pl的后面pl-next=p;p-next=p2;在函数 InsertOrder(head2,p-data,2);中又调用 了调用 了函数 larger(p-data,p2-data,condition),这是通过比较确定参数的函数,关键代码如 下:if(condition=l)if(strcmp(datal.num,data2.num)=0)比较学号return 1;else return 0;if(condition=2)if(strcmp(datal.name,data2.name)=0)比较姓名return 1;else return 0;else if(condition=3)return datal.score1data2.score1;else if(condition=4)return datal.score2data2.score2;else if(condition=5)return datal.score3data2.score3;else if(condition=6)return datal.totaldata2.total;return 1;6、根据条件查询模块:通过函数searchManage();分级调用函数,函数menuSearch();显示二级菜单,通过输入项选择调用函数来完成根据姓名查询与根据学号查询。关键代码:if(choice=l&choicedata);输出记录printf(nn);)elseprintf(,znit is not in the listnn);/如果没有找到,输出提示信息 函数sort_printHead();执行输出表头的功能,函数sort_printNode();实现了输出 记录的功能。而最主要的是函数SearchNode();其关键代码:i f(head=NU LL)如果链表原来就为空,输出提示信息并返回空指针(printf(,znNo Records);return 0;while(p&!equal(p-data,data,condition)/equal 函数用来判断两个参数是否相等 当P非空且当前结点的数据值不等于要搜索的值data时p=p-next;指针P顺着链向后移动一个位置if(p)return p;循环停止时p非空,表示找到了结点,返回指针P 其代码简单,主要比较是否找到匹配项,如果找到就输出。判断是否找到匹配项用了 函数 equal(p-data,data,condition),其关键代码如下:if(condition=l)if(strcmp(datal.num,data2.num)=0)如果 condition 的值为 1,比较学号 return 1;else return 0;else if(condition=2)如果参数condition的值为2,比较姓名1$if(strcmp(datal.name,data2.name)=0)return 1;else return 0;else return 1;分级调用函数,每个函数功能简单,自顶向下,便于理解。7、保存文件,采用函数saveFileO;关键代码如下:if(head=NULL)(printf(nNo Recordsn);return;while(p)(fwrite(&p-data,sizeStu,1,fp);p=p-next;fclose(fp);1-6五、测试数据及其结果分析进入界面数据显示如下:欣迎进入学生成绩管理系统MMMMMMMMl.显示基本信息、.*2.基/d 飞管理Please input your choice:显示学生基本信息数据如下:lease input your choice:1学号姓名性别出生日期A保程成绩Bi果程成绩C保程成绩总分名次B09050301gengyoushengmale199006228989902682B090s0302yangwenlimale199002058989892671插入学生信息数据如下:.插入学生记录NNNNNNNN NNNNNZNN2.删除学生记录NNNNNNNN%NNNNNNN3.修改学生记录NNNNNNNN ZNNNNNNZ。返回上层菜单NNNNNNNNhoose one operation you want to do:1Input one students information num:B09050302 nane:SFangv/enli sex:female birthday:19900205Input three courses of the student:89 88 87计算学生总分和名次数据显示如下:11分次Wpppppppp eeeeeeee F 埸分 ppppppppb平均分数既既既既peeeepeenoose one operation you want to do:2学号姓名性别总分名次B09050301genguoushengmale268B09050302yangwenlifemale234ppppppppi.ppppppp3.分次 总名课量pppppppp epeeeeee F 均分 eepeeeepb平均分数既既(?(?既eppeeeee生生o z w21求三门课程平均分数数据显示如下:学号姓名性别三门课程平均分数B09050301gengyoushengmale 89.33B09050302Vangwenlifemale 78.00求每科平均分数数据显示如下:he auerage score of each course:89.00 83.50 78.50按学号查询数据显示如下:&1.&我&2.&0.hoose one operation you wantto do:1&Input a studentJ s num will besearched:B09050301学号姓名性别A课程成绩B课程成绩C课程成绩平均分109050301gengyoushengmale89899089.33&.接学号章弦争&2.按姓名查找学&M.返回上层菜单口课成绩和生均分数&门葆成绩和幸施分教&按姓名查询数据显示如下:Input a students name will be searched:geng;ousheng学号 姓名 性别 A课程成绩B课程成绩C课程成绩平均分B09050301 genguousheng male 89 89 90 89.33攵&1.按学号章找竽生各门课成绩和垩均分数&兑.接蛙考查塞辛生图1谏最绩而申以分数&攵&0.返回上层菜单&1-8六、调试过程中的问题问题一、系统报错:undeclareed identifier(i是没有声明的变量)解决办法及步骤:查看定义的变量,增加变量i的定义,再使用该变量。问题二、系统报错:missing before Type解决办法及步骤:将变量集中在语句快处开始处定义,变量定义不能放在可执行语句中间问题三、系统报错:missing before J a解决办法及步骤:找到出错位置,添加分号。问题四、程序不能执行解决办法及步骤:关闭可执行文件。问题五、函数功能无法实现解决办法及步骤:分析函数代码,改变部分代码,使之执行函数功能。问题六、输出信息为一段乱码解决办法及步骤:一个个检查格式转换说明符,最后发现格式转换说明符错误,以及部分 变量类型错误。问题七、学生信息未分行显示解决办法及步骤:在输出函数中增加代码:printf(n);问题八、学生平均分数明显偏大解决办法及步骤:查看变量,发现本应该定义为局部变量的m定义为全局变量,改变变量 m的定义位置。问题九、运行后发现死循环解决办法及步骤:逐步查看代码,确定发生错误的函数,结果发现格式转换说明符错误,改变错误的格式转换说明符。问题十、文件无法打开解决办法及步骤:查看数据文件,发现数据文件丢失。1-9七、课程设计总结我的C语言程序设计课程的考试题目是学生信息管理系统。通过这次课程设计我对C语言的神奇功能更加佩服(只是一个程序运行却可以完成学 生管理系统功能),我默默在心里发誓一定要把C语言学好,而且现在正在学习C#语言,熟练的掌握编程的方法。本次课程设计,我设计的是学生管理系统,本程序若完全靠现有 的知识,是很难编写出来的,幸亏有我的指导老师闵丽娟老师的耐心指导以及同学们的无 私帮助,我才能顺利完成。经过两周的课程设计,觉得学到挺多的东西,开始时都不知道怎么开始,觉得好担心,什么都不会,做不出来怎么办?看了书,书中有例题,而且有这方面功能的函数,可以参 考,就一个小函数一个小函数试试,虽然是按书中的,有时还是有很多错误,有时改来改 去都运行不了很着急,最后可以运行时很开心,不懂得问问同学,学到不少知识。这两周 的课程设计让我们巩固以前的知识并在此基础上有所突破。经过这两周的学习觉得C语言挺有趣的,也好难!我们了解到要设计一个完整的程序,其中最难的可能就属设计整个程序的框架,其中可能会需要经过很多次的修改与调试,所 以必须要有耐心,直至最后设计出自己想要的程序。感谢这次的课程设计,它使我更加深刻地体会到c语言程序编写过程的严谨与细致,还有就是无论做任何事都要有耐心。当然团队合作也是非常重要的一个环节,这会使你在 学习过程中倍感轻松。只要肯动手,我们就一定能行的,这是我这次作业中的最大体会。20附:各模块的代码(不属于报告内容)文件node,h的完整代码:#ifndef _N0DE#define _N0DE struct Student(char num10;char name20;char sex10;char birthday10;int score3;int total,rank;double aver,average;);typedef struct Student Type;const int sizeStu=sizeof(Type);struct node(Type data;struct node*next;);const int size=sizeof(struct node);#endif文件Prepare,h的完整代码:#ifndef _PREP#define _PREP#include,znode.h#include void printNode(Type data)2-1int i;printf(%9s”,data,num);printf(%15s”,data,name);printf(%8 s”,data,sex);printf(,%10s,data,birthday);for(i=0;i3;i+)(printf(z,%8 d,data,scorei);printf(%8 d”,data,total);printf(%6d”,data,rank);void sortprintNode(Type data)(printf(%9s”,data,num);printf(%15s”,data,name);printf(%8 s”,data,sex);printf(%8 d,data,rank);void sort_printNode(Type data)(int i;printf(%9s”,data,num);printf(%15s”,data,name);printf(%8 s”,data,sex);for(i=0;inum);printf(name:);scanf(s”,pdata-name);informationn);23printf(z,sex:);scanf(s”,pdata-sex);strcpy(pdata-birthday,);printf(birthday:);scanf(s”,pdata-birthday);pdata-average=O;pdata-aver=O;pdata-total=0;printf(Input three courses of the student:n,z);for(i=0;iscore i);pdata-rank=O;int endWith(Type data)(if(strcmp(data,num,NU T)=0)return 1;else return 0;int equal(Type datal,Type data2,int condition)(if(condition=l)if(strcmp(datal.num,data2.num)=0)如果参数 condition 的值为 1,比较学号 24return 1;else return 0;else if(condition=2)如果参数condition的值为2,比较姓名if(strcmp(datal.name,data2.name)=0)return 1;else return 0;else return 1;int larger(Type datal,Type data2,int condition)(if(condition=l)if(strcmp(datal.num,data2.num)=0)比较学号 return 1;else return 0;if(condition=2)if(strcmp(datal.name,data2.name)=0)比较姓名 return 1;else return 0;else if(condition=3)return datal.score1data2.score1;else if(condition=4)return datal.score2data2.score2;else if(condition=5)return datal.score3data2.score3;else if(condition=6)return datal.totaldata2.total;return 1;#endif25文件file,h的完整代码:#include#includettincludelist.hvoid createFile()rtType data;FILE*fp;if(fp=fopen(student.txt,wb)=NU LL)(printf(z,can not open file student,txt!n);exit(0);printf(input students、information,ended with num二NU Tn);readNode(&data);while(!endWith(data)(fwrite(&data,sizeStu,1,fp);readNode(&data);fclose(fp);struct node*readFile(struct node*head)(Type data;FILE*fp;head=NU LL;if(fp=fopen(student.txt,rb)二二NU LL)26printf(z,can not open file!n,z);exit(0);fread(&data,sizeStu,1,fp);while(!feof(fp)(head=Insert(head,data,1);printf(n);fread(&data,sizeStu,1,fp);fclose(fp);return head;void saveFile(struct node*head)(struct node*p=head;FILE*fp;if(fp=fopen(student.txt,wb)=NU LL)(printf(z,can not open file!n,z);exit(0);if(head二二NU LL)(printf(z,nNo Recordsll);return;while(p)27fwrite(&p-data,sizeStu,1,fp);p=p-next;fclose(fp);文件list,h的完整代码:#ifndef _LIST#define _LIST#includeprepare.hstruct node*CreateBackward();struct node*CreateForward();struct node*CreateInsert();struct node*printList(struct node*head);struct node*SearchNode(struct node*head,Type data,int condition);struct node*InsertAfter(struct node*head,Type data);struct node*InsertOrder(struct node*head,Type data,int condition);struct node*Delete(struct node*head,Type data);struct node*Reverse(struct node*head);struct node*printList(struct node*head)/链表的遍历(struct node*p;if(head=NU LL)/如果链表原来为空(printf(,znNo RecordsnrT);输出提示信息,返回28return NU LL;for(p二head;p;p=p-next)p从头指针开始,每循环一次向后移动1节点的位置(printNode(p-data):/p非空时执行循环体,调用printNode函数输出节点的元素值,最后换行printf(n);return head;返回头指针struct node*SearchNode(struct node*head,Type data,int condition)单链表 的查找(struct node*p=head;/p 从 head 开始if(head=NU LL)如果链表原来就为空,输出提示信息并返回空指针(printf(z,nNo Recordsll);return 0;while(p&!equal(p-data,data,condition)/equal 函数用来判断两个参数是 否相等 当P非空且当前结点的数据值不等于要搜索的值data时p=p-next;指针P顺着链向后移动一个位置if(p)return p;循环停止时p非空,表示找到了结点,返回指针Preturn 0;此时隐含条件为p等于空,未找到,返回空指针struct node*InsertOrder(struct node*head,Type data,int condition)29struct node*p,*pl,*p2;p2=head;p=(struct node*)malloc(size);/利用指针p申请结点动态空间p-data=data;数据域赋值p-next=NU LL;指针域直接赋值为空,以后根据插入位置再修改if(head=NU LL)原链表为空时的插入(head二p;新插入的结点为头结点return head;原链表不为空时的插入,larger是一个通用函数while(p2&larger(p-data,p2-data,condition)第一参数大于第二参数,返回真(pl=p2;pl是p2的前趋结点,二者同时后移p2=p2-next;if(head=二p2)前插入,修改head指针head二p;else 否则p插在pl的后面pl-next=p;p-next=p2;return head;返回头指针struct node*Insert(struct node*head,Type data,int condition)(struct node*p,*p2;p2=head;30p=(struct node*)malloc(size);/利用指针p申请结点动态空间p-data=data;数据域赋值p-next=NU LL;指针域直接赋值为空,以后根据插入位置再修改if(head二二NU LL)原链表为空时的插入(head=p;新插入的结点为头结点return head;p2-next=p;p2作为p的后继结点,即p插在pl和p2之间return head;返回头指针struct node*CreateInsert()(struct node*head;Type data;head=NU LL;printf(Input data end with 0:n);readNode(&data);while(!endWith(data)(head=InsertOrder(head,data,1);readNode(&data);return head;struct node*Delete(struct node*head,Type data)删J除节点struct node*p=head,*q=NU LL;3-1if(head二二NU LL)如果由原来是空链,则给提示信息并返回printf(z,nNo Recordsll);return head;while(p&!equal(p-data,data,1)如果链表非空,则从第一个节点开始比较,这里equal是针对数据域类型定义的相等函数(q二P;如果没有找到要删除的结点,则q和p同时向后移动一个结点的位置,q始终是P的前趋p=p-next;if(p)(if(q)q-next=p-next;elsehead=head-next;free(p);elseprintf(z,it is not in the list.n);return head;struct node*Reverse(struct node*head)struct node*- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 信息管理 系统管理 程序设计 报告 完整 代码
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文