C++程序设计论文
计算机程序设计范文

计算机程序设计范文计算机程序设计的目的是解决实际问题。
它可以用来自动化任务、处理数据、控制硬件设备等。
在程序设计过程中,程序员首先需要分析问题的需求,然后设计出程序的算法和数据结构。
接下来,在选定的编程语言中实现这些算法和数据结构,最后进行测试和调试。
在程序设计中,算法是最重要的部分。
算法是一系列解决问题的步骤,它描述了问题的解决方法。
程序员需要选择合适的算法来解决问题,并根据具体的应用场景来优化算法。
常用的算法包括排序、查找、图算法等。
数据结构是程序设计中用来组织和存储数据的方式。
不同的数据结构适用于不同的应用场景。
常见的数据结构包括数组、链表、树、图等。
程序员需要选择合适的数据结构来提高程序的效率和可维护性。
编程语言是实现程序设计的工具。
不同的编程语言特点不同,适用于不同的应用场景。
常见的编程语言有C、C++、Java、Python等。
程序员需要熟悉一种或多种编程语言,以便能够用它们来实现程序的功能。
计算机体系结构是程序设计的基础。
它涉及到计算机的硬件组成和运行原理。
程序员需要了解计算机的指令集、内存管理、输入输出等方面的知识,以便编写高效的程序。
在进行程序设计过程中,程序员还需要注意软件工程的原则和方法。
这包括模块化、代码重用、测试驱动开发等。
这些原则和方法能够提高程序的可读性、可维护性和可重用性。
总之,计算机程序设计是一个复杂而有挑战性的过程。
它需要程序员具备扎实的计算机科学知识和丰富的实践经验。
只有不断学习和实践,才能成为一名优秀的程序员。
独立学院C语言程序设计实验教学改革与实践论文

浅谈独立学院C语言程序设计实验教学的改革与实践摘要:独立学院的培养目标是培养应用型技术人才,而实验教学是培养学生应用技能和创新能力的重要途径之一。
c语言程序设计是我院工科类专业都开设的一门课程,本文在分析了c语言实验中普遍存在问题后,结合我院在实际探讨了c语言实验教学改进,并提出了具体的改进方法。
关键词:独立学院应用型 c语言实验教学改进1 c语言程序设计实验教学的重要性及存在的问题c语言不但可以编写系统软件,而且可以根据用户的需要编写出满足用户要求的应用软件,尤其是c语言具有很好的对计算机的硬件编程能力。
我院计算机类、电子类和通信类专业都开设了c语言程序设计这门课程,它也是“数据结构”、“java程序设计”、“单片机”等课程的选修课程。
由于c语言这门课程比较抽象,具有较强的逻辑性和实践性,且c语言的数据类型较多、表达式丰富、语法结构较复杂,使它成为一门教师难教、学生难学的课程。
所以在重视理论教学的同时,必须加强实践训练。
通过实践,学生能更好的掌握c语言理论知识。
那么学生上机实验的重要性绝不亚于课堂听课,是巩固和发展课堂知识的十分重要的环节,而实验教学主要存在以下几个问题:1.1 学生刚开始学习时兴趣很高,但随着深入学习,兴趣逐渐减小。
学生在刚开始学习这门课程的时候,教师都会告诉学生这门课程很重要,学生当然也比较重视,但随着深入学习,有的学生就觉得c语言很难、很枯燥,再加上独立学院大多数学生学习自觉性和主动性不高,不懂的知识点越来越多,兴趣也就逐渐减小。
1.2 现在大多数c语言教材只注重对c语言语法的剖析,对算法进行剖析过于简单,使学生在上机编程时没有软件工程的概念。
现在大多数的教材在编写时对算法问题只用了很少的章节来分析,使得学生在编程时只有理论知识而不知道怎样把理论知识用来解决实际问题。
1.3 在实验设置上只有验证性实验而没有综合性实验。
在实验设置上,c语言实验课是随着理论课的开设的,都是一些验证性的实验,只验证了一些c语言的知识点,而没有综合性实验,没把c 语言与实际程序开发联系起来。
c语言课程设计论文

c语言课程设计论文一、教学目标本课程的目标是让学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生独立思考、解决问题的能力,并培养学生的团队协作意识和创新精神。
1.掌握C语言的基本语法和编程规则。
2.理解并掌握基本数据类型、运算符、表达式。
3.熟悉函数的定义和调用,掌握常用的库函数。
4.掌握数组、指针、字符串的基本操作。
5.理解并掌握控制结构,如if、for、while等。
6.了解并使用常用的数据结构,如链表、栈、队列等。
7.掌握基本算法和排序算法。
8.能够使用C语言编写简单的程序,解决实际问题。
9.具备基本的编程能力和代码调试能力。
10.能够阅读和理解C语言的代码和文档。
11.具备一定的编程思维和逻辑思维能力。
情感态度价值观目标:1.培养学生对计算机科学的兴趣和热情。
2.培养学生的团队协作意识和沟通能力。
3.培养学生的创新精神和解决问题的能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和编程思想。
1.C语言的基本语法和编程规则。
2.基本数据类型、运算符、表达式。
3.函数的定义和调用,常用的库函数。
4.数组、指针、字符串的基本操作。
5.控制结构,如if、for、while等。
6.数据结构,如链表、栈、队列等。
7.基本算法和排序算法。
三、教学方法本课程将采用讲授法、案例分析法、实验法等多种教学方法相结合的方式进行教学。
1.讲授法:通过讲解和演示,使学生掌握C语言的基本语法和编程规则。
2.案例分析法:通过分析实际案例,使学生理解和掌握基本数据类型、运算符、表达式等。
3.实验法:通过动手实验,使学生熟悉和掌握数组、指针、字符串的基本操作。
4.讨论法:通过分组讨论和团队协作,使学生理解并掌握控制结构、数据结构和基本算法。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:《C程序设计语言》(K&R)2.参考书:《C Primer Plus》、《C和指针》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络设备、编程软件五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面反映学生的学习成果。
C语言课程设计论文

学生成绩管理系统设计1、课程设计简介1.1 要求参加本课程设计的学生,应当认真完成本课程设计的全部过程。
并以最终课程设计成果来证明其独立完成各种实际任务的能力。
从而,反映出理解和运用本课程知识的水平和能力。
1.2 意义和目的意义:C语言是电子科学与技术专业的重要专业基础课。
在很多后续课程中,都要使用到C语言。
学生通过对C语言的学习,已经具备了使用C语言编写简单的应用程序的能力。
为了加强程序设计基础,开设课程设计课,使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。
目的:1)提高用程序设计解决实际问题的能力。
2)通过提出算法、指定输入输出来设计一个解决方案。
3)用C语言合理地开发两个简洁有效的程序代码来实现该设计。
4)测试程序是否工作且满足设计指标并评价其效率。
1.3 内容链表文件操作题(包括文件输入、文件输出、链表建立、结点插入、结点删除、输出打印等)(参考教材);2、具体实现2.1 程序总体方案2.1.1程序设计思想通过在主函数循环调用各个函数,从而实现文件输出及对链表的连续操作,最终实现链表的新建、打印、查找、保存、读取、更新、删除等等操作,进而管理学生信息,并保存学生的各种信息,方便下一次操作。
链表是以学生学号排序,当出现学号为0时结束本次操作,成功实现一个学号对应一位学生。
2.1.2程序结构或流程图2.2 具体方案 2.2.1 首界面2.2.2文件输出struct student *read()//数据读取,写入内存; { FILE *fp;struct student *p1,*p2,*head;head=NULL; p1=p2=(struct student *)malloc(LEN); if((fp=fopen("G:\\C\\file1.dat","rb"))==NULL) {head=NULL;主函数1 成绩录入2 成绩查询7 成绩输出6 插入记录3 不及格 名单4 修改记录5 删除记录8退出fclose(fp);return(head);}fread(p1,sizeof(struct student),1,fp);head=p1;while(p1->next!=NULL){p2=p1;p1=(struct student *)malloc(LEN);fread(p1,sizeof(struct student),1,fp);p2->next=p1;}fclose(fp);return (head);}用fread函数将文件中的数据项写入内存,返回head,为下面子函数的调用做准备。
高职电子专业《C语言程序设计》课程教学改革论文

高职电子专业《C语言程序设计》课程教学改革的探索摘要:本文从高职院校电子专业开设c程序设计的培养目标着手,基于多年的实际教学经验和教学体会,探讨了当前高职院校电子专业c语言程序设计教学中存在的问题,针对c语言教与学现状,分析传统教学模式和教学内容应如何改革,创新理念,采用案例式教学,结合电子专业工业实践特性加强对学生程序设计能力的培养和训练,以提高教学效果给出一些建议。
关键词:高职教育;电子专业;c程序设计;教学改革中图分类号:g642 文献标识码:a文章编号:1009-0118(2012)04-0117-02《c语言程序设计》是高职电子专业的1门基础课程,在实际应用中使用非常广泛。
开设此门课程的目的是使学生掌握程序设计的基本方法,逐步形成正确的程序设计思想,提高学生逻辑思维、抽象思维和编程能力,并具有一定的程序调试能力,让学生在解决后续单片机课程和全国电子设计大赛实际应用中打下坚实的基础。
近几年,笔者一直承担高职电子专业的《c语言程序设计》教学任务,在教学过程中发现部分学生没有明确学习目标甚至对开设此课程的必要性提出质疑,认为c语言枯燥难学而厌学,有些学生学习不得法,最终丧失了继续学习的信心。
笔者在这几年的教学中,对c 语言课程的教学进行了一些研究和探索,对传统的c语言教学进行了一些改革,同时对于c语言课程的教学改革提出自己的一些看法和建议。
一、高职电子专业c语言教学存在问题探讨从近年招生情况来看,大部分电子专业的生源属于专科生源中基础比较弱的一部分,而且其生源性质也存在着多样性,有中职的、职高的,有理科的、文科的。
在这种情况下,大部分学生缺乏学习积极性和主动性,同时加上从高年级同学那里得知c语言学习难度大,因此就产生了先入为主的思想,对学习《c语言程序设计》这门课程产生恐惧和畏惧心理,甚至有厌学现象。
作为教师要在短时间内达到人才培养方案的要求倍感压力,与此同时,c语言课程有比较强的工业基础应用前景,是后续理论学习和实践应用的基础和重要工具,然而在高职教学目标的定位上没有突出基础理论的应用和电子工业实践能力的培养。
C语言论文程序代码论文

C语言论文程序代码论文摘要:c语言功能非常强大、应用广泛,一直是计算机专业学生的基础课程之一。
在c语言授课过程中,我发现学生虽然学习兴趣浓厚,但往往很难独立编写程序代码。
学生普遍反映c语言抽象难懂,很难在头脑中形成思路。
针对学生的学习障碍,我在教学过程中总结一些学习心得。
关键词:c语言;程序代码c-inquiry learningwang juan(computer and communicationengineering,heilongjiang college ofconstruction,harbin 150025,china)abstract:c-language is very powerful,widely used,one of the basic course for computer major students.in the c-language teaching process,i found that although students interested in learning,but it is often difficult to separate programmingcode.students generally reflect the c-language abstract and difficult,it is difficult to form in the minds of thinking.for students with learning disabilities,i summarize some of the learning processof teaching experience.keywords:c-language;program code一、重视c语言的地位c语言语法简洁、紧凑、使用方便灵活,生产目标代码质量高,程序执行效率高,很多操作系统的程序控制代码都是应用c语言编写的。
C语言课程设计论文

题目:公交卡管理系统第一章绪论1.1 绪论C语言是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C 语言,具体应用比如单片机以及嵌入式系统开发。
C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。
许多著名的系统软件,如DBASE Ⅳ都是由C 语言编写的。
用C 语言加上一些汇编语言子程序,就更能显示C 语言的优势了,像PC- DOS 、WORDSTAR等就是用这种方法编写的。
归纳起来C 语言具有下列特点:1. C是中级语言。
它把高级语言的基本结构和语句与低级语言的实用性结合起来。
C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2.C是结构式语言。
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3.C语言功能齐全。
具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。
另外C语言也具有强大的图形功能,支持多种显示器和驱动器。
而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
4. C语言适用范围大。
适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。
C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。
它是数值计算的高级语言。
5.C语言文件由数据序列组成,可以构成二进制文件或文本文件常用的C语言IDE(集成开发环境)有Microsoft Visual C++,D ev-C++,Code::Blocks,Borland C++,Watcom C++ ,Borland C+ + Builder,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc 等等……对于一个初学者,Microsoft Visual C++是一个比较好的软件。
对中职学生C语言程序设计教学思考论文

浅谈对中职学生C语言程序设计的教学思考摘要:c语言程序设计课程是中职学校计算机专业的主要课程之一,目前由于各种原因导致进入中职学习的学生基础薄弱,使教师在教授这门课时普遍感到教学效果不理想。
怎样调动中职学生对程序设计课程的兴趣,如何才能取得比较满意的教学效果成为教师们共同关注的话题。
本文从教学环节的设计和考核方式的改革两个方面谈谈自己的看法。
关键词:中职学校 c语言程序设计教学设计考核方式c语言作为当今最流行的程序设计语言之一,不但被作为计算机专业的必修课,而且被选为非计算机专业的选修课。
它也是计算机应用人员应掌握的一种程序设计工具。
在中职学校开展程序设计语言的教学,由于学生在英语和数学方面的基础较差,他们在c语言学习中会遇到很多障碍,从而丧失学习热情。
在这种情况下,如果老师还是按照传统的方法来教学生的话,教学效果可想而知。
作为从事c 语言教学多年的一名老师,我认为针对当前中职学生的特点,要想在c语言的教学上取得比较满意的教学效果,可以在以下两个方面做些努力:1 教学环节的设计首先是教学内容的选择。
中职学生中相当一部分同学基础薄弱,尤其是数学方面,这就要求教师在教学内容的选择上要结合目前中职学生的知识水平,依据中职教学的培养目标,适当降低理论知识的难度和深度,教学内容力求浅显易懂。
本课程知识主要涉及程序设计的三种基本结构、数组、函数等内容,而指针及结构体作为选学内容,学生接受起来困难的话,可以不讲。
教学重点放在对程序设计方法的理解和使用上,着重于程序设计在实践中的应用。
教师应在整合各章知识点,精心安排教学内容上下大功夫。
经过学习能达到学生对基本概念要理解,编程思路要掌握,常用函数会使用,提高学生逻辑思维能力和计算机操作技能之目的。
其次是教学方法的选择。
教师在讲解每一个问题的时候,应当教会学生如何解决问题的方法。
此讲解过程一定要详细,思路清晰,使学生最终理解这个问题原来可以通过这样的方法来解决。
教材上有的问题的解决方法,如果我们照着课本原封不动讲给学生,学生在理解的过程中可能会觉得枯燥无味,很快就失去继续听下去的耐心。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++程序设计论文--通讯录管理系统一、题目要求:采用VC++实现通讯录管理,主要涉及的学生信息包括:学号、姓名、生日、性别、班级、电话、宿舍、地址等信息。
编写程序来完成如下功能:1、新建学生通讯录:采用头插入的方式建链表,并询问是否保存到文件。
2、向学生通讯录插入学生信息:采用头插入的方式把结点插进去。
3、在通讯录删除学生信息:删除结点(按学号、姓名删除),并询问是否从文件中删除。
4、在通讯录中查询学生信息:按姓名或学号的形式查找,然后显示学生信息。
5、在屏幕中输出全部学生信息:输出链表的每一个内容,按照一定格式进行显示。
6、修改学生信息:按学号、姓名修改查询到的位置对应的学生信息。
7、统计学生信息学生信息:按性别、班级统计查询到的位置对应的学生信息。
8、保存并退出:告知结束运行系统。
向文件写入学生通讯录信息,把链表中的结点都保存到文件中。
二、题目分析:1、总体思路如下:三、源代码:#include<iostream>#include<fstream>#include<string>#include<iomanip>using namespace std;struct DataType//定义所有信息{char number[20]; //学号char name[20]; //姓名char birthday[20]; //生日char sex[1]; //性别char class_num[20]; //班级char telephone[12]; //电话char dom[10]; //宿舍char address[20]; //地址};struct student //定义学生信息{DataType data;student *next;};class txl{private:student *head; //头指针student *currptr; //当前指针public:txl();~txl();void Creat();//新建学生通讯录void Insert();//向学生通讯录插入学生信息void Delete();//在通讯录删除学生信息void WriteFile();//从文件中读取通讯录的信息void ReadFile();//向文件写入学生通讯录信息void Search();//在通讯录中查询学生信息void Display();//在屏幕中输出全部学生信息void Revise();//修改通讯录中学生信息void Count();//在屏幕中按照统计输出学生信息void Exit(); //退出};txl::txl() //构造函数{head=currptr=NULL;};txl::~txl() //析构函数{student *temp=head;//释放空间while(temp){delete temp;}}//新建学生通讯录// 功能:采用头插入的方式建链表,并询问是否保存到文件// 参数:无//返回值:无void txl::Creat(){cout<<"你想要建立多少个学生的通讯录:";int i,n;char mf[1];cin>>n;cout<<"\n************录入工作开始**************\n"<<endl;for(i=1;i<=n;i++)//输入学生信息{currptr=new student;cout<<"请输入第"<<i<<"个学生的学号:";cin>>currptr->data.number;cout<<"请输入第"<<i<<"个学生的姓名:";cin>>currptr->;cout<<"请输入第"<<i<<"个学生的生日:";cin>>currptr->data.birthday;cout<<"请输入第"<<i<<"个学生的性别[m/f]:";cin>>*mf;while((*mf)!='m' && (*mf)!='f') //使输入为男女{cout<<"输入格式有误,请输入' m/f'。
"<<endl;cout<<"请输入第"<<i<<"个学生的性别:";cin>>*mf;}if((*mf)=='m'||(*mf)=='f')//保存{*(currptr->data.sex)=(*mf);}cout<<"请输入第"<<i<<"个学生的班级:";cin>>currptr->data.class_num;cout<<"请输入第"<<i<<"个学生的电话:";cin>>currptr->data.telephone;cout<<"请输入第"<<i<<"个学生的宿舍:";cin>>currptr->data.dom;cout<<"请输入第"<<i<<"个学生的地址:";cin>>currptr->data.address;cout<<"\n************华丽的分割线**************\n"<<endl;currptr->next=head;//头插入建链表head=currptr;}cout<<n<<"个学生的信息已全部输入完成!"<<endl<<endl;};//向学生通讯录插入学生信息// 功能:采用头插入的方式把结点插进去,并询问是否保存到文件// 参数:无//返回值:无void txl::Insert(){char mf[1];cout<<"你想要在哪个位置插入:";int k,n=0;//k记录插入位置,n记录链表长度cin>>k;student *p=head,*q=NULL,*t=hea d;while(t){t=t->next;n++;}if(k>n+1||k<1)//不存在此位置,不能存入{cout<<"此位置不合法";}else{currptr=new student;cout<<"请输入你要插入的学生的信息!"<<endl; //需插入的学生信息cout<<"请输入学生的学号:";cin>>currptr->data.number;cout<<"请输入学生的姓名:";cin>>currptr->;cout<<"请输入学生的生日:";cin>>currptr->data.birthday;cout<<"请输入学生的性别[m/ f]:";cin>>*mf;while((*mf)!='m' && (*mf)!='f ') //使输入为男女{cout<<"输入格式有误,请输入'm/f'。
"<<endl;cout<<"请输入学生的性别:";cin>>*mf;}if((*mf)=='m'||(*mf)=='f')//保存{*(currptr->data.sex)=(*mf);}cout<<"请输入学生的班级:";cin>>currptr->data.class_num;cout<<"请输入学生的电话:";cin>>currptr->data.telephone;cout<<"请输入学生的宿舍:";cin>>currptr->data.dom;cout<<"请输入学生的地址:";cin>>currptr->data.address;if(k==1)//建链表{currptr->next=head;head=currptr;}else{for(int i=1;i<k;i++){q=p;p=p->next;}q->next=currptr;currptr->next=p;}}}//在通讯录删除学生信息// 功能:删除结点,并询问是否从文件中删除(采用覆盖原有文件的形式)// 参数:无//返回值:无void txl::Delete(){if(head!=NULL)//链表存在时就做删除操作{int k,n=0;student *cu=head;student *p=head,*q=head->next, *t=head;cout<<"你可以通过以下方式删除:"<<endl;cout<<"1、按学号删除"<<endl;cout<<"2、按姓名删除"<<endl;cout<<"你想要按什么方式删除(1 或2):";char ch;cin>>ch;while(ch!='1'&&ch!='2'){cout<<endl;cout<<"操作错误,请重新输入:";cin>>ch;}//判断输入是否符合if(ch=='1'){char num[20];cout<<"请输入你要的学号:";cin>>num;while(cu!=NULL){n++;if(strcmp(cu->data.num ber,num)==0) //判断是否是所查学号{break;}cu=cu->next;}if(cu==NULL)cout<<"不存在这个学号!"<<endl;else{k=n;if(k==1)head=head->next;else{for(int i=1;i<k-1;i ++){p=q;q=q->next;}if(q==NULL)p=NULL;elsep->next=q->ne xt;}cout<<"删除成功!"<<endl;}}else{ int n=0;char nam[20];cout<<"请输入你要的姓名:";cin>>nam;while(cu!=NULL){n++;if(strcmp(cu->data.nam e,nam)==0) //判断是否是所查姓名{break;}cu=cu->next;}if(cu==NULL)cout<<"不存在这个姓名!未能成功删除!"<<endl;else{k=n;if(k==1)head=head->next;else{for(int i=1;i<k-1;i ++){p=q;q=q->next;}if(q==NULL)p=NULL;elsep->next=q->ne xt;}cout<<"删除成功!"<<endl;}}}}//向文件写入学生通讯录信息// 功能:把链表中的结点都保存到文件中// 参数:链表的一个结点//返回值:无void txl::WriteFile(){student *s=head;ofstream fop;fop.open("通讯录.dat",ios::binary|io s::trunc); //以二进制形式打开文件//覆盖原来的文件且重新保存删除后的内容if(!fop){cout<<"通讯录.dat 无法打开!"<<endl;abort();}char Y_N;cout<<"您需要保存更改到文件中吗?(Y/N):"; //询问是否保存到文件中cin>>Y_N;while(Y_N!='Y'&&Y_N!='y'&&Y_ N!='N'&&Y_N!='n') //使输入为yes 或no{cout<<"请输入'Y' 或'N':";cin>>Y_N;}if(Y_N=='Y'||Y_N=='y')//保存{while(s){while(fop.write((char *)& s->data,sizeof(s->data))){s=s->next;flush(cout);}}cout<<"保存成功!"<<endl;}fop.close();}//从文件中读取通讯录的信息// 功能:从文件中读取内容,并建链表// 参数:无//返回值:无void txl::ReadFile(){currptr=new student;ifstream fip("通讯录.dat",ios::in|io s::binary); //以二进制形式打开文件while(fip.read((char *)&currptr->d ata,sizeof(currptr->data))){currptr->next=head;head=currptr;currptr=new student;}fip.close();delete currptr;}//在通讯录中查询学生信息// 功能:按姓名或学号的形式查找// 参数:无//返回值:无void txl::Search(){cout<<"你可以通过以下方式查询:"<<endl;cout<<"1、按学号查询"<<endl;cout<<"2、按姓名查询"<<endl;cout<<"你想要按什么方式查询(1 或2):";char ch;cin>>ch;cout<<"你要查询的信息是:";while(ch!='1'&&ch!='2'){cout<<endl;cout<<"操作错误,请重新输入:";cin>>ch;}student *cu=head;if(ch=='1')//按学号查询{char num[20];cin>>num;while(cu!=NULL){if(strcmp(cu->data.number, num)==0) //判断是否是所查学号{cout<<"你要找的学生信息为:"<<endl;cout<<cu->data.numbe r<<" "<<cu-><<" "<<cu ->data.birthday<<" "<<cu->data.sex< <" "<<cu->data.class _num<<" "<<cu->data.telephone<<""<<cu->data.dom<<" "<<cu->data. address<<endl;break;}cu=cu->next;}if(cu==NULL)cout<<"不存在这个学生!"<<endl;}else//按姓名查询{char na[20];cin>>na;while(cu!=NULL){if(strcmp(cu->,na) ==0) //判断是否是所查姓名{cout<<"你要找的学生信息为:"<<endl;cout<<cu->data.numbe r<<" "<<cu-><<" "<<cu ->data.birthday<<" "<<cu->data.sex< <" "<<cu->data.class _num<<" "<<cu->data.telephone<<""<<cu->data.dom<<" "<<cu->data. address<<endl;break;}cu=cu->next;}if(cu==NULL) //查询不到cout<<"不存在这个学生!"<<endl;}}//在屏幕中输出全部学生信息// 功能:输出链表的每一个内容// 参数:无//返回值:无void txl::Display(){if(head==NULL)cout<<"通讯录里没有内容!\n\ n";else{student *k=head;cout<<setiosflags(ios::left)<<set w(10)<<"学号"<<setiosflags(ios::left)<< setw(10)<<"姓名"<<setiosflags(ios::left)<<setw (10)<<"生日"<<setiosflags(ios::left)<<se tw(6)<<"性别"<<setiosflags(ios::left)<<setw(1 0)<<"班级"<<setiosflags(ios::left)<<setw (15)<<"电话"<<setiosflags(ios::left)<<setw(6) <<"宿舍"<<setiosflags(ios::left)<<setw(1 0)<<"地址"<<endl;//设置左对齐输出while(k){cout<<setiosflags(ios::left)<<s etw(10)<<k->data.number<<setw(10)<<s etiosflags(ios::left)<<k-><<setw(10) <<setiosflags(ios::left)<<k->data.birthda y<<setw(6)<<setiosflags(ios::left)<<k ->data.sex<<setw(10)<<setiosflags(ios::l eft)<<k->data.class_num<<setw(15)<<setiosflags(ios::left)<<k ->data.telephone<<setw(6)<<setiosflags(i os::left)<<k->data.dom<<setw(10)<<setiosflags(io s::left)<<k->data.address<<endl;k=k->next;}cout<<endl;}}//修改学生信息// 功能:修改输入位置对应的学生信息// 参数:无//返回值:无void txl::Revise(){if(head!=NULL)//链表存在时就做删除操作{char mf[1];student *cu=head;student *p=head,*q=head->next, *t=head;cout<<"你可以通过以下方式修改:"<<endl;cout<<"1、按学号修改"<<endl;cout<<"2、按姓名修改"<<endl;cout<<"你想要按什么方式修改(1 或2):";char ch;cin>>ch;while(ch!='1'&&ch!='2'){cout<<endl;cout<<"操作错误,请重新输入:";cin>>ch;}//判断输入是否符合if(ch=='1'){char num[20];cout<<"请输入你要的学号:";cin>>num;while(cu!=NULL){if(strcmp(cu->data.num ber,num)==0) //判断是否是所查学号{break;}cu=cu->next;}if(cu==NULL)cout<<"不存在这个学号!"<<endl;else{cout<<"请输入你要更改的学生的信息!"<<endl;//需插入的学生信息cout<<"请输入学生的学号:";cin>>cu->data.number;cout<<"请输入学生的姓名:";cin>>cu->;cout<<"请输入学生的生日:";cin>>cu->data.birthda y;cout<<"请输入学生的性别[m/f]:";cin>>*mf;while((*mf)!='m' && (*mf)!='f') //使输入为男女{cout<<"输入格式有误,请输入'm/f'。