欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年2022年链表学生信息管理系统 .pdf

    • 资源ID:39900411       资源大小:113.50KB        全文页数:10页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年2022年链表学生信息管理系统 .pdf

    #include#include/定位小数点的头文件setprecision()#include using namespace std;struct List/定义数据结构存取文件里的数据 char name20;char id20;float score2;struct PList/定义链表结构体,如果在 c 语言中务必添加typedef struct来定义一个 PList struct PList*prior;/前一个节点 char name20;char id20;float score2;struct PList*next;/后一个节点;PList*head=NULL,*p,*p1,*p2;char FileName20,Judge;/文件名和判断字符int i,n;/n 学生人数void Create()/创造链表 int j,k;p1=new PList;List*stu=new Listn;/new学生结构体 FILE*fp;fp=fopen(FileName,a+);/附加方式打开,若无则新建一个FileName 的文件 if(fp!=NULL)fseek(fp,0,0);/文件指针挪到起始位置 for(i=0;iname,stui.name);/值传递到链表中strcpy(p-id,stui.id);/值传递到链表中p-score0=stui.score0;/值传递到链表中名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -p-score1=stui.score1;/值传递到链表中if(head=NULL)/如果链表头为空 head=p;p1=p;p-prior=NULL;/新 new 出来的为 head 节点(这里 p1 一定要指向 p 或 head,方便下面继续添加链表),头结点的前一节点为NULL else p1-next=p;p-prior=p1;/否则向后添加节点p1=p;p1-next=NULL;/最后 p1-next 为空,表示链表末尾 delete n stu;/释放不需要的空间 void Print()/输出链表数据 p=head;if(p=NULL)/如果 head 为空,标书没有数据 coutThere is no data!endl;else while(p!=NULL)/不为空时显示 couttName:nametID:idtProgram:setprecision(2)fixedscore0tEnglish:setprecision(2)fixedscore1next;/p指向后一个节点 void Insert1()/插入数据 p1=new PList;/新分配 p1 地址 coutp1-name;coutp1-id;coutp1-score0;coutp1-score1;if(head=NULL)/head为空 head=p1;p1-next=NULL;p1-prior=NULL;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -p2=p1;/利用 p2 便于继续添加节点 else/head 不为空是利用 p2 添加节点 p2-next=p1;p1-prior=p2;p1-next=NULL;p2=p1;coutJudge;if(Judge=y|toupper(Judge)=Y)/判断输入是否为y 和 Y,toupper 为转换大写 Insert1();/y 和 Y 继续插入节点,再次进入时将进入insert1 中的 else 语句 else/其他则退出 coutInsert Exit!n;void Insert2()/查找后在该节点(p)前方插入新的节点 p1=new PList;coutp1-name;coutp1-id;coutp1-score0;coutp1-score1;if(p=head)/查找的节点为头结点时 p-prior=p1;p1-next=p;p1-prior=NULL;head=p1;p=head;/new出来的 p1 设为头结点,p(原头节点)的前节点指向 p1,p1 后节点指向 p,然后 head 和 p 重新指向 p1 else/查找的节点非头结点 p2-next=p1;p1-prior=p2;p1-next=p;p-prior=p1;/p2与 p 之间插入 p1 p=p1;/方便继续插入p2 与 p 保持前后节点关系 coutJudge;if(Judge=y|toupper(Judge)=Y)Insert2();else coutInsert Exit!n;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -void Insert3()/查找后在该节点(p)后方插入新的节点 p1=new PList;coutp1-name;coutp1-id;coutp1-score0;coutp1-score1;if(p=head)/如果 p 是头结点 p1-next=p-next;/new出来的 p1-next 节点要指向 p-next 节点 if(p-next!=NULL)/如果 p 的后一节点不为空 p-next-prior=p1;/那必须使它的前一节点指向p1,如果为空那就是NULL 所以不用 p-next=p1;p1-prior=p;p=p1;/p的下一结点给 p1,p1 的前一节点给 p,p 指向 p1(方便继续插入,此时p2 指向 head,p2 和 p 保持前后节点)else/p 为非头结点,在 p 后方插入新节点,此时 p2 为 p 的前节点,需要判断 p 的下一结点是否为空 p2=p;p=p-next;p2-next=p1;p1-prior=p2;p1-next=p;/p2和 p 各向后移动一个节点,在 p2 与 p 之间插入一个 p1 节点 if(p!=NULL)/判断 p 是否为空,也就是刚开始的p-next 是否为空p-prior=p1;/不为空则需要设置前一节点给p1,为空则不需要 p=p1;/利于继续插入节点,保证 p2 与 p 保持前后节点关系 coutJudge;if(Judge=y|toupper(Judge)=Y)Insert3();else coutInsert Exit!n;void Delete()/删除查找到的 p 节点 coutJudge;if(Judge=y|toupper(Judge)=Y)if(p=head&p-next=NULL)/如果是头节点且只有一个节点名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -head=NULL;/head为空即可 if(p=head&p-next!=NULL)/如果是头节点且后面有节点 head=p-next;head-prior=NULL;/重新设置头结点为p 的后一节点,使该节点前节点为空 if(p-next!=NULL)/如果不是头结点且后一结点不为空 p-next-prior=p2;/p的后一结点的前节点指向p2(原指向 p)p2-next=p-next;/p2的后一节点指向p 的后一节点(原指向 p)else/如果不是头结点且后一结点为空 p2-next=NULL;/p2的后一节点为空即可 coutDelete Successful!endl;else coutDelete Exit!n;void Alter()/改变信息 coutJudge;if(Judge=y|toupper(Judge)=Y)/y或 Y 重新输入信息,重新赋值给该节点 coutp-name;coutp-id;coutp-score0;coutp-score1;else coutAlter Exit!n;void Search()/查询节点 char SearchID20,SearchName20;int num;p=head;p2=head;if(p=NULL)/头结点为空,则表示无数据 coutThere is no data!;coutJudge;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 10 页 -if(Judge=y|toupper(Judge)=Y)Insert1();else coutFind Exit!endl;else/头结点不为空,则显示要搜索的方式 coutnum;if(num=1)/按名字查询 continue1:coutSearchName;while(p!=NULL&strcmp(p-name,SearchName)!=0)/p不为空,则向后移动一个节点(注:此时p!=NULL 必须放在前面,否则 p 为空是由于 p-name 不存在而出错)p2=p;p=p-next;if(p=NULL)/链表遍历完后没找到该数据 coutCant find the Name!endl;coutJudge;if(Judge=y|toupper(Judge)=Y)Insert1();else/找到该数据时 coutThe info as follow:endlendl;couttName:nametID:idtProgram:setprecision(2)fixedscore0tEnglish:setprecision(2)fixedscore1endlendl;coutWhat do you want?endl;coutt*endlendl;coutt1.Alter This Info!endl;coutt2.Delete This Info!endl;coutt3.Insert A Info Before This!endl;coutt4.Insert A Info After This!endl;couttInput Others Will Exit!endlendl;coutt*endlendl;coutJudge;switch(Judge)case 1:Alter();break;case 2:Delete();名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 10 页 -break;case 3:Insert2();break;case 4:Insert3();break;default:coutExit!endl;break;coutJudge;if(Judge=y|toupper(Judge)=Y)/是否继续搜素?p=head;p2=head;goto continue1;/此时务必要把 p 和 p2 指向头结点,否则上边遍历过得无法再查找 else coutSearch Exit!endl;else if(num=2)/同上,唯一不同是利用ID 查找 continue2:coutSearchID;while(p!=NULL&strcmp(p-id,SearchID)!=0)p2=p;p=p-next;if(p=NULL)coutCant find the ID!endl;coutJudge;if(Judge=y|toupper(Judge)=Y)Insert1();else coutThe info as follow:endlendl;couttName:nametID:idtProgram:setprecision(2)fixedscore0tEnglish:setprecision(2)fixedscore1endlendl;coutWhat do you want?endl;coutt*endlendl;coutt1.Alter This Info!endl;coutt2.Delete This Info!endl;coutt3.Insert A Info Before This!endl;coutt4.Insert A Info After This!endl;couttInput Others Will Exit!endlendl;名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 10 页 -coutt*endlendl;coutJudge;switch(Judge)case 1:Alter();break;case 2:Delete();break;case 3:Insert2();break;case 4:Insert3();break;default:coutExit!endl;break;coutJudge;if(Judge=y|toupper(Judge)=Y)p=head;p2=head;goto continue2;else coutSearch Exit!endl;else coutSearch Exit!;void Save()/保存数据 FILE*fp;p=head;i=0;List*stu=new Listn;/重新 new 出学生结构体 fp=fopen(FileName,w);/打开文件,文件存在重写,不存在则新建后写入 if(head=NULL)/空链表 coutThere is no data need save!name);strcpy(stui.id,p-id);stui.score0=p-score0;stui.score1=p-score1;p=p-next;fwrite(&stui,sizeof(struct List),1,fp);i+;coutSave Successful!endl;delete n stu;/释放不需要的空间 void main()strcpy(FileName,student.txt);/默认文件名 n=100;/默认学生数 Create();/读取文件数据到链表 do system(cls);/清屏 couttWellcome To Students Management System!endl;couttYou Opened FileName is:(FileName)endl;coutt*endlendl;coutt1.Show All The Info!endl;coutt2.Search(Insert,Delete,Alter)Info!endl;coutt3.Save!endl;coutt4.Open Or Create New File!endl;coutt5.Alter The Number of Students!endl;couttInput Others Will Exit!endlendl;coutt*endlendl;coutJudge;switch(Judge)case 1:Print();break;case 2:Search();break;case 3:Save();break;case 4:coutFileName;Create();名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 10 页 -break;case 5:coutn;Create();break;default:coutJudge;if(Judge=y|toupper(Judge)=Y)coutExit!endl;exit(0);/程序正常退出,正常退出时刚才的save 才能起到效果 else break;system(pause);while(1);名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 10 页 -

    注意事项

    本文(2022年2022年链表学生信息管理系统 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开