ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:221.59KB ,
资源ID:11448510      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11448510.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计报告.docx

1、课程设计报告C/C+程序课程设计题目一: 建立简单学生成绩录入系统 题目二: 建立简单通话记录生成系统 班级 姓名 学号 题目一:建立简单学生成绩录入系统一 概述:本程序的目的是存储学生的信息,包括学号、姓名、成绩。程序运行后,输入相应的编号可以实现添加、删除、查询、打印学生信息,并且学生信息输入完毕后,学生将按照成绩由高到低进行排列,这点可以从打印出来的结果看出。二 软件结构: 本程序主要运用链表的使用规则来进行编写代码,从创建链表到插入链表,以及删除某个成员和显示链表等都是用指针来实现的。链表建立如下:numnamescorenextnumnamescorenextnumnamescore

2、nextnumnamescorenexthead- NULL 从图我们可以看出,如果要删除或是查询某个学生信息,只需找到head指针,然后用head=head-next,就可以依次找到所需要的东西。程序运行如下:添加:删除:查询:打印:三 关键代码struct Student int num; char name10; float score; Student *next;这一段是定义一个结构体类型Student,并且定义一个指向结构体的next指针,这是后面所有代码的铺垫,可谓是最基本的代码,同时也决定了后面的代码需实现链表的创建等操作。if(head=NULL) head=dest; el

3、se if(head-scorescore) dest-next=head; head=dest; else insert(head,dest);void insert(Student *head,Student *dest) Student *temp=head; while(temp-next!=NULL) if(head-scoredest-score&dest-score=temp-next-score) dest-next=temp-next; temp-next=dest; return; temp=temp-next; temp-next=dest; dest-next=NULL

4、;这段代码实现的是学生按成绩高低进行排列,分成三个部分:第一部分:当head=NULL;将dest赋给head,相当于添加第一个成员结构体。第二部分:需要在链表的最前面添加新成员结构体,dest-next=head;head=dest;运用此代码就可以达到目的。 第三部分:需要从链表的第二个成员结构体开始,实现插入新结构体的目的,此时,本程序新建了一个insert函数,通过调用此函数来添加新结构体,insert函数主要是判断成绩的高低,以确定需要插入的位置。难点代码:bool remove(Student* &head,float score) if(head=NULL) return NUL

5、L; if(head-score=score) Student *p=head; head=head-next; delete p; return true; Student* pf=head; Student* pc=head-next; if(pc=NULL) return false; do if(pc-score=score) break; pf=pc; pc=pc-next; while(pc!=NULL); pf-next=pc-next; delete pc; return true;删除,这段代码是本程序最难的代码,它没有想像的那么简单,也需要分成三个部分:第一部分:如果hea

6、d=NULL;return false;第二部分:如果要删除的是头节点,那么需先拿下头结点if(head-score=score) Student *p=head; head=head-next; delete p; return true; 用delete运算符撤销空间,并return true。第三部分:当所要删除的不是头结点时,就需要用循环来确定位置,并定义另外一个指针指向它,然后释放,并且 return true;如果循环结束还未找到要删除的节点,则return false。本部分重点在于remove函数的返回值,定义的类型为逻辑型,在判断链表中是否存在所要删除的节点时,可以从返回值为

7、true 和false 中得到,如果是true,打印“删除成功”。题目二:建立简单通话记录生成系统一 概述: 本程序的目的是记录通话记录,并把所有记录保存在一文件中,便于查看。具体目标是可以实现添加、删除、查询、保存和读取通话记录等操作。二 软件结构 程序与上一程序不同,利用的结构体数组的知识,将添加的通话记录保存在结构体数组中,之后的操作可以通过for循环及其他知识来实现。本程序没有用指针的方式,原因在于该程序软件要求能实现文件的保存和读取,用指针的方式很难实现,因此采用数组的方式以达到要求。typedef struct PhoneItemchar name20; int phonenum;

8、PI,*pPI; 此段代码是定义PhoneItem结构体 的内容,包含姓名和电话号码,并且将类型PhoneItem简写成PI,主要是为了方便以后的代码书写更简洁。PI phonerecord100;这句话就是定义PI类型数组,数组名为phonerecord,数组里的每个元素包含的内容就是结构体里定义的姓名和电话号码。通过phonerecordi.name,phonerecordi.phonenum来访问元素内容。运行结果如下:输入电话记录:删除电话记录:查询电话记录:读取电话记录:三 关键代码strcpy(phonerecordi.name,name);这句话的作用是将当前输入name 复制给

9、phonerecordi.name,这其中用了strcpy字符串复制函数,而且最简洁的方式就是运用此种方法。不能直接赋值过去的原因是name是数组名,name的值是地址,因而不可以这样做,以及代码中还会用到strcmp函数。static int i=0; int index; cinindex; if(index=1) i+=1; char name20; int phonenum; cout请输入信息:namephonenum; strcpy(phonerecordi.name,name); phonerecordi.phonenum=phonenum; static int i=0;定义一

10、个局部静态变量i,之所以用static的目的是这个i代表的是所添加的数组元素个数,因为元素个数会因为某些操作而变化,比如删除某个通话记录等,static的好处在于可以使i 的值保持为当前值且不被释放,这句话可以称为是本程序最巧妙的地方。之后的i+=1,是为了改变i的值,以保证i总是所输入的元素个数。else if(index=2) bool flag=false; int phonenum; coutphonenum; for(int j=1;j=i;j+) if(phonerecordj.phonenum=phonenum) for(;ji;j+) phonerecordj.phonenum

11、=phonerecordj+1.phonenum; strcpy(phonerecordj.name,phonerecordj+1.name); cout删除成功!endl; flag=true; break; if(flag=true) i-=1;这部分代码是实现删除通话记录这一操作,这里也定义bool型的flag来记录true 和false,通过嵌套循环找到要删除的数组元素,然后用赋值语句将该数组元素被下一元素遮盖,直到数组末尾,再写i-=1,将总数组元素个数减一,这样在以后的保存和读取中就不会显示已删除的元素,这段代码的内涵也较为丰富,知识覆盖面广。ofstream outfile; o

12、utfile.open(f1.txt,ios:binary); if(!outfile) coutfile open error!endl; exit(1); for(int j=1;j=i;j+) outfile.write(char*)&phonerecordj,sizeof(PI); outfile.close();这段是二进制文件的写入,运用ofstream,因此需要在开头写上#include,来包含头文件。这段代码是典型二进制文件写入的代码。else if(index=5) ifstream infile; infile.open(f1.txt,ios:binary); if(!infile) coutfile open error!endl; exit(1); PI temp; for(int j=1;j=i;j+) infile.read(char*)&temp,sizeof(PI); couttemp.name temp.phonenumendl; infile.close(); 这段代码是二进制文件读取的典型代码,与二进制文件写入相反,唯一区别的是定义了PI temp;利用temp.name 和temp.phonenum来实现数组元素的显示。本程序并没有将通话记录类似程序一那样进行排列,而是按照输入的顺序来显示的,这样从某一方面来可以体现程序的简洁性。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1