学生成绩管理程序及链表管理程序样本_第1页
学生成绩管理程序及链表管理程序样本_第2页
学生成绩管理程序及链表管理程序样本_第3页
学生成绩管理程序及链表管理程序样本_第4页
学生成绩管理程序及链表管理程序样本_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《程序设计基础》课程设计题目:1.学生成绩管理程序2.链表信息管理计算机与信息工程学院年10题目1:学生成绩管理程序[问题描述]设计一种实用小型学生成绩管理程序,它规定不用链表,而用数组来设计这个程序。它有查询和检索等功能,并且可以对指定文献操作,也可将各种文献构成一种文献。[基本规定]1.功能规定(涉及输入、输出、精度等方面规定)设计规定实现功能较多,因此将它们分为几种某些论述。1.建立文献(1)可以使用默认文献名或指定文献名将记录存储到文献;(2)文献保存成功返回0,失败返回-1;(3)设立保存标志savedTag作为与否已对记录进行存储操作信息;(4)写同名文献将覆盖本来文献内容;2.增长学生记录(1)可在已有记录背面追加新记录;(2)可以随时用它增长新记录,它们仅保存在构造数组中;(3)可以将一种文献读入,追加在已有记录之后;(4)如果已经采用用文献追加方式,在没有保存到文献之前,将继续保持文献追加状态,以便实现持续文献追加操作方式;(5)如果没有记录存在,给出提示信息。3.新建学生信息文献(1)用来重新建立学生信息记录;(2)如果已有记录存在,可以覆盖原记录或者在原记录背面追加,也可以将原有记录信息保存到一种指定文献,然后重新建立记录;(3)给出相应提示信息。4.显示记录(1)如果没有记录可供显示,给出提示信息;(2)可以随时显示内存中记录;(3)显示表头。5.文献存储(1)可以按默认名字或指定名字存储记录文献;(2)存储成功返回0,否则返回-1;(3)更新存储标志。6.读取文献(1)可以按默认名字或指定名字将记录文献读入内存;(2)读取成功返回0,否则返回-1;(3)可以将指定或默认文献追加到既有记录尾部;(4)可以将文献持续追加到既有记录并更新记录名次。(5)更新存储标志。7.删除记录(1)可以按“学号”、“姓名”或“名次”方式删除记录;(2)给出将被删除记录信息,经确认后再删除;(3)如果已经是空表,删除时应给出提示信息并返回主菜单;(4)如果没有要删除信息,输出没有找到信息;(5)应当更新其她记录名次;(6)删除操作仅限于内存,只有执行存记录时,才干覆盖原记录;(7)更新存储标志。8.修改记录(1)可以按“学号”、“姓名”或“名次”方式修改记录内容;(2)给出将被修改记录信息,经确认后进行修改;(3)如果已经是空表,应给出提示信息并返回主菜单;(4)如果没有找到需要修改信息,输出提示信息;(5)应当同步更新其她记录名次;(6)修改操作仅限于内存,只有进行存储操作时,才干覆盖原记录;(7)更新存储标志。9.查询记录(1)可以按“学号”、“姓名”或“名次”方式查询记录;(2)能给出查询记录信息;(3)如果查询信息不存在,输出提示信息。10.对记录进行排序(1)可以按学号进行升序或降序排序;(2)可以按名称进行升序和降序排序;(3)可以按名次进行升序和降序排序;(4)如果属于选取错误,可以及时退出排序;(5)更新存储标志。11.头文献(1)使用条件编译定义头文献;(2)函数原型声明;(3)数据构造及包括文献;12.测试程序(1)应列出测试大纲对程序进行测试;(2)应保证测试用例测试到程序各种边沿状况是基本规定,但愿通过对本章设计理解,重新考虑如何改进设计。2.运营环境规定devc++[系统分析]程序系统构造分析程序(系统)构造主程序名称子程序名称调用关系阐明主函数(main)insert(Students[],intn)输入“1”时调用show(Students[],intn)输入“2”时调用sort(Students[],intn)输入“3”时调用search(Students[],intn)输入“4”时调用save(Students[],intn)输入“5”时调用del(Students[],intn)输入“6”时调用子程序分析程序描述子程序名称参数名称类型含义子程序功能阐明insert(Students[],intn)s[]Student学生信息表地址添加学生信息nint学生人数show(Students[],intn)s[]Student学生信息表地址显示学生信息nint学生人数sort(Students[],intn)s[]Student学生信息表地址按规定对信息排序nint学生人数search(Students[],intn)s[]Student学生信息表地址按需要查找信息nint学生人数save(Students[],intn)s[]Student学生信息表地址保存信息nint学生人数del(Students[],intn)s[]Student学生信息表地址按规定删除信息nint学生人数开始依照需求调用子函数开始依照需求调用子函数结束并返回与否继续调用主函数流程:YN添加学生信息:开始开始输入学生信息返回继续输入Y N输入选取菜单:输入选取菜单:1.按学号排序2.按姓名排序3.按成绩排序开始返回与否有重新排序相应记录进行修改相应排序方式Y N选取查询方式:1.选取查询方式:1.按学号2.按姓名3.按成绩开始返回与否有重新排序相应显示记录与否有记录 YYN N删除记录流程:开始开始选取选取删除方式:1.按学号2.按姓名3.按成绩4.按名次输入删除记录相应信息输入删除记录相应信息与否有相应记录 N与否有相应记录输出删除相应记录信息 Y输出删除相应记录信息与否删除记录? N与否删除记录? Y删除记录,删除记录,修改相应信息结束返回结束返回输出学生信息流程:开始开始输出学生信息返回结束返回i<n结束返回i<n关闭文献,并赋值savedTag=0;n++文献与否打开读取记录保存到文献中开始定义输出文献流 Y N Y Y N[测试数据]功能测试数据及成果正常值、边界值及异常值测试数据及成果在主菜单选取功能时,调用子函数,若输入数不是1-6则程序忽视这次输入,进入下一次调用,进行输入。选取功能数为2时,若输入成员代号不存在,则程序给出提示信息。调试记录调试记录序号程序名称调试记录解决办法1save()学生信息最后一条记录显示不对的值保存记录时,最后一条记录不用保存换行符,否则读取记录时,换行符独占一行,导致数据显示错误2del()浮现二义性修改错误[课程设计小结]通过对程序三编写,进一步加深学习了while循环、for循环等循环语句。学会了通过函数间返回值控制程序运营,使程序实现了菜单选取功能。在修改程序时通过对错误修改和完善,使思路更加谨慎和完善。锻炼了思路,完善了编程习惯。[源代码]#include<iostream>#include<fstream>#include<iomanip>usingnamespacestd;structStudent//定义构造体{stringnum;//学号stringname;//姓名floatscore;//成绩shortintmingci;//名次};Students[100];//构造体数组变量intinsert(Students[],intn)//输入学生信息{boolsf;inti=0;stringsr;while(sr!="n"||sr!="N"){cout<<"请输入学生学号:"<<endl;cin>>s[n+i].num;cout<<"请输入学生姓名:"<<endl;cin>>s[n+i].name;cout<<"请输入学生成绩:"<<endl;cin>>s[n+i].score;cout<<"与否继续输入记录?(Y/N)"<<endl;cin>>sr;i++;}return(n+i);}intshow(Students[],intn)//显示{inti;cout<<setw(7)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"成绩"<<setw(10)<<"名次"<<endl;cout<<endl;for(i=0;i<n;i++){cout<<setw(6)<<s[i].num<<setw(10)<<s[i].name<<setw(10)<<s[i].score<<setw(10)<<s[i].mingci<<endl;}}voidsort(Students[],intn)//排序{Studentp;inti,j;intm,w,t;cout<<"请选取排序方式:"<<endl;cout<<"1.按学号排序:"<<endl;cout<<"2.按姓名排序:"<<endl;cout<<"3.按成绩排序:"<<endl;cin>>m;switch(m){case1:for(i=0;i<n;i++)for(j=i;j<n;j++)if(s[i].num>s[j].num){p=s[i];s[i]=s[j];s[j]=p;}gotopx;case2:for(i=0;i<n;i++)for(j=i;j<n;j++)if(s[i].name>s[j].name){p=s[i];s[i]=s[j];s[j]=p;}gotopx;case3:for(i=0;i<n;i++)for(j=i;j<n;j++)if(s[i].score>s[j].score){p=s[i];s[i]=s[j];s[j]=p;}px:cout<<"请选取输出方式:1:升序,0:降序"<<endl;cin>>t;cout<<endl;if(t==1){for(i=0;i<n;i++){s[i].mingci=i+1;cout<<"学号姓名成绩名次"<<endl;cout<<s[i].num<<""<<s[i].name<<""<<s[i].score<<""<<s[i].mingci<<endl;}cout<<endl;}else{for(i=n-1;i>-1;i--){s[i].mingci=n-i;cout<<"学号姓名成绩名次"<<endl;cout<<s[i].num<<""<<s[i].name<<""<<s[i].score<<""<<s[i].mingci<<endl;}cout<<endl;}break;}}intdelnum(Students[],intn)//按学号删除{inti,j;stringa;charsr;cout<<"请输入该学生学号:"<<endl;cin>>a;for(i=0;i<n;i++){if(s[i].num==a){cout<<"与否保存删除记录?(Y/N)"<<endl;cin>>sr;if(sr=='y'||sr=='Y'){for(j=i;j<n;j++){s[j]=s[j+1];}cout<<"信息删除成功!"<<endl;returnn-1;}else{returnn;}}}cout<<"无法找到该信息!"<<endl;return(n);}intdelname(Students[],intn)//按姓名删除{inti,j;stringa;charsr;cout<<"请输入该学生姓名:"<<endl;cin>>a;for(i=0;i<n;i++){if(s[i].name==a){cout<<"与否保存删除记录?(Y/N)"<<endl;cin>>sr;if(sr=='y'||sr=='Y'){for(j=i;j<n;j++){s[j]=s[j+1];}cout<<"信息删除成功!"<<endl;returnn-1;}else{returnn;}}}cout<<"无法找到该信息!"<<endl;return(n);}intdelscore(Students[],intn)//按成绩删除{inti,j;floatm;charsr;cout<<"请输入该学生成绩:"<<endl;cin>>m;for(i=0;i<n;i++){if(s[i].score==m){cout<<"与否保存删除记录?(Y/N)"<<endl;cin>>sr;if(sr=='y'||sr=='Y'){for(j=i;j<n;j++){s[j]=s[j+1];}cout<<"信息删除成功!"<<endl;returnn-1;}else{returnn;}}}cout<<"无法找到该信息!"<<endl;returnn;}intdelsort(Students[],intn)//按名次删除{inti,j;intm;charsr;cout<<"请输入该学生名次:"<<endl;cin>>m;for(i=0;i<n;i++){if(s[i].mingci==m){cout<<"与否保存删除记录?(Y/N)"<<endl;cin>>sr;if(sr=='y'||sr=='Y'){for(j=i;j<n;j++){s[j]=s[j+1];}cout<<"信息删除成功!"<<endl;returnn-1;}else{returnn;}}}cout<<"无法找到该信息!"<<endl;return(n);}intdel(Students[],intn)//删除{intt;cout<<"请选取删除方式:"<<endl;cout<<"1.按学号删除:"<<endl;cout<<"2.按姓名删除:"<<endl;cout<<"3.按成绩删除:"<<endl;cout<<"4.按名次删除:"<<endl;cin>>t;switch(t){case1:n=delnum(s,n);break;case2:n=delname(s,n);break;case3:n=delscore(s,n);break;case4:n=delsort(s,n);break;}returnn;}voidsearch(Students[],intn)//查询方式修改记录{stringa;Studentq;inti=0;intb=0;floatp;cout<<"请输入查询方式:"<<endl;cout<<"1.按学生学号查找:"<<endl;cout<<"2.按学生姓名查找:"<<endl;cout<<"3.按学生成绩查找:"<<endl;cout<<"4.按学生名次查找:"<<endl;intm;charsr;cin>>m;switch(m){i=0;case1:{cout<<"请输入要查询学生学号:"<<endl;cin>>a;while(i<n)if(s[i].num==a)gotoloop;}case2:{cout<<"请输入要查询学生姓名:"<<endl;cin>>a;while(i<n)if(s[i].name==a)gotoloop;}case3:{cout<<"请输入要查询学生成绩:"<<endl;cin>>p;while(i<n)if(s[i].score==p)gotoloop;}case4:{cout<<"请输入要查询学生名次:"<<endl;cin>>b;while(i<n)if(s[i].mingci==b)gotoloop;}loop:{cout<<"该学生学号:"<<s[i].num<<endl;cout<<"该学生学号:"<<s[i].name<<endl;cout<<"该学生成绩:"<<s[i].score<<endl;cout<<"与否要修改该学生记录:(Y/N)"<<endl;cin>>sr;if(sr=='Y'||sr=='y'){cout<<"请输入新学生学号:"<<endl;cout<<"请输入新学生姓名:"<<endl;cout<<"请输入新学生成绩:"<<endl;cin>>q.num;cin>>;cin>>q.score;s[i].num=q.num;s[i].name=;s[i].score=q.score;cout<<"该学生学号:"<<s[i].num<<endl;cout<<"该学生学号:"<<s[i].name<<endl;cout<<"该学生成绩:"<<s[i].score<<endl;return;}i++;if(sr=='n'||sr=='N')return;if(i==n){cout<<"无法找到该信息!"<<endl;return;}break;}return;}}voidsave(Students[],intn)//保存{inti=0;ofstreamfout("xueshengxinxi.txt");if(!fout){cout<<"打开文献失败"<<endl;return;}fout<<"学生学号"<<";"<<"学生姓名"<<";"<<"学生成绩"<<";"<<"学生名次"<<endl;while(i<n){fout<<s[i].num<<";"<<s[i].name<<";"<<s[i].score<<";"<<s[i].mingci<<endl;i++;}cout<<"文献保存成功!";fout.close();}intmain(){intn=0;while(1){intr;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):"<<endl;cin>>r;switch(r){case0:exit(0);break;case1:n=insert(s,n);break;case2:n=show(s,n);break;case3:sort(s,n);break;case4:search(s,n);break;case5:save(s,n);break;case6:n=del(s,n);break;default:cout<<"请选取选项操作:(0-6):"<<endl;}}system("pause");return0;}

题目4:链表信息管理[问题描述]设计目是学习建立链表,使用链表存储构造信息,增长链表节点及删除链表节点等基本操作.实际设计时,可以增长数据信息及检索等功能.[基本规定]1.功能规定(1).本课程设计时将重点放在整体设计上,直选成员代号和电话.(2).如果已有记录,只能在其后追加;(3).显示整个记录内容(具有新追加记录);(4).号可由6位字符和数字混合编码构成,例如下面形式:A2013405d01001(5).使电话号码可由18位支付和数字构成,例如下面形式:(86)--3456(6).以删除所有记录,可以随时增长新记录;(7).使用菜单实现增长,删除,和显示等功能选取;(8).测试程序;2.运营环境规定:devc++[系统分析]1.程序系统构造分析程序(系统)构造主程序名称子程序名称调用关系阐明主函数(main)insert(worker*&head)直接调用可添加成员信息display(worker*head)直接调用可输出成员信息del(worker*&head)直接调用可删除某个成员信息release(worker*&head)删除所有成员信息释放空间2.子程序分析程序描述子程序名称参数名称类型含义子程序功能阐明voidinsert(worker*&head)headworker*构造体类型指针添加成员信息voiddisplay(worker*head)headworker*构造体类型指针输出成员信息voiddel(worker*&head)headworker*构造体类型指针删除某个成员信息voidrelease(worker*&head)headworker*构造体类型指针删除所有成员信息释放空间3.算法分析阐明本程序所选用算法,计算公式和计算环节和流程图。在main()中依照提示信息,按照需要可以选取不同操作。程序中共有5个子程序,可以增长数据信息及检索等功能。实际设计时,在worker()构造体中定义了两个数组charnum[7]和chartelphone[19],还定义了一种指针structworker*next用于批示下一种结点位置便于操作。对于子程序insert()、display()、del()、release()是通过参数传递实现对链表操作;而exit()是对库内函数调用。主函数:输入要选取功能输入要选取功能依照输入调用相应子函数结束子函数返回值开始输出主菜单1.增长记录2.显示记录3.删除某个记录4.删除所有记录5.退出输入功能号voidinsert添加成员信息如下:开始开始表与否空空创立链表结点准备输入信息分别输入电话号码和代号与否继续输入输入结束开始表与否空空输出表空输出表中内容zhong开始表与否空空输出表空输出表中内容zhong返回主页面删除成员信息开始表与否空空开始表与否空空输出表空删除表中内容zhong返回主页面[测试数据]1.功能测试数据及成果2.正常值、边界值及异常值测试数据及成果在原始数据文献内没有数据时,选取2会显式“链表为空,无记录!”信息,当原始数据内容非空时,则显示成员信息。别的状况下,输入相应项都可执行相应功能。当输入1到5以外数据则给出是原始数据内容。3.调试记录调试记录序号程序名称调试记录解决办法1insert(worker*&head)编译不通过引用加入可解决2p->next指针指向不明确给指针指向适当位置[课程设计小结]通过对这次题目研究,发现自己诸多学习上问题,如掌握问题不够夯实,运用中总是得不到想要成果,仔细检查源代码寻找问题所在,修改使其合乎对的思路。遇到问与人多讨论交流有助于咱们学习和提高。扎夯实实学好理论基本,才干更好编写出合乎逻辑代码。[源代码]#include<iostream>#include<stdlib.h>usingnamespacestd;structworker//定义构造体{charnum[7];chartelphone[19];structworker*next;};voidinsert(worker*&head)//添加成员信息{structworker*p=NULL,*end=NULL;chartemple;cout<<"添加成员信息如下:"<<endl;if(head==NULL){ p=newstructworker;head=p;cout<<"输入成员代号:"<<endl;cin>>p->num;cout<<"输入成员电话:"<<endl;cin>>p->telphone;p->next=0;cout<<"与否继续输入?(y/n)"<<endl;cin>>temple;while(temple=='y'||temple=='Y'){p->next=newstructworker;p=p->next;cout<<"输入成员代号:"<<endl;cin>>p->num;cout<<"输入成员电话:"<<endl;cin>>p->telphone;p->next=0;cout<<"与否继续输入?(y/n)"<<endl;cin>>temple;p->next=0; }end=p;}else{do{p=end;p->next=newstructworker;p=p->next;cout<<"输入成员代号:"<<endl;cin>>p->num;cout<<"输入成员电话:"<<endl;cin>>p->telphone;p->next=0;cout<<"与否继续输入?(y/n)"<<endl;cin>>temple;p->next=0;end=p;}while(temple=='y'||temple=='Y');}}voiddisplay(worker*head)//输出成员信息{worker*p;p=head;cout<<"输出成员信息如下:"<<endl;if(p==NULL)cout<<"链表为空,无记录!"<<endl;else{while(p){cout<<"成员代号:"<<p->num<<endl;cout<<"成员电话:"<<p->telphone<<endl;p=p->next;}}}voiddel(worker*&head)//删除某个成员信息{worker*p=NULL,*q=NULL;charnumber[7],phone[19];cout<<"删除某个成员信息如下:"<<endl;if(head==NULL){cout<<"链表为空,无记录!"<<endl;return;}p=head;cout<<"删除成员代号"<<endl;cin>>number;cout<<"删除成员电话"<<endl;cin>>phone;if(p->num==number&&p->telphone==phone){head=p->next;deletep;return;}q=p-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论