计算机C语言课程设计学生通信录管理系统实验报告_第1页
计算机C语言课程设计学生通信录管理系统实验报告_第2页
计算机C语言课程设计学生通信录管理系统实验报告_第3页
计算机C语言课程设计学生通信录管理系统实验报告_第4页
计算机C语言课程设计学生通信录管理系统实验报告_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

计算机C语言课程设计学生通信录管理系统实验报告计算机C语言课程设计学生通信录管理系统实验报告/计算机C语言课程设计学生通信录管理系统实验报告***大学*****学院综合设计报告设计名称:程序设计综合设计设计题目:学生通讯录管理系统的设计学生学号:******专业班级:****学生姓名:*****学生成绩:指导教师(职称):*****课题工作时间:11年12月26日至12年1月6日说明:1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。答辩小组成员应由2人及以上教师组成。5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。成绩评定表学生姓名:***学号:***班级:***类别合计分值各项分值评分标准实际得分合计得分备注平时表现1010按时参加综合设计,无旷课、迟到、早退、违反实验室纪律等情况。完成情况3020按设计任务书的要求完成了全部任务,能完整演示其设计内容,符合要求。10能对其设计内容进行详细、完整的介绍,并能就指导教师提出的问题进行正确的回答。报告质量3510报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合理;报告字数符合相关要求,工整规范,整齐划一。5课题背景介绍清楚,综述分析充分。5设计方案合理、可行,论证严谨,逻辑性强,具有说服力。5符号统一;图表完备、符合规范要求。5能对整个设计过程进行全面的总结,得出有价值的结论或结果。5参考文献数量在3篇以上,格式符合要求,在正文中正确引用。答辩情况2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。总评成绩:分补充说明:指导教师:***(签字)日期:2012年1月6日答辩记录表学生姓名:***学号:*****班级:****答辩地点:***答辩内容记录:答辩成绩合计分值各项分值评分标准实际得分合计得分备注2510在规定时间内能就所设计的内容进行阐述,言简意明,重点突出,论点正确,条理清晰。15在规定时间内能准确、完整、流利地回答教师所提出的问题。答辩小组成员(签字):2012年1月6日指导教师评语指导教师:(签字)日期:2012年1月6日一、综合设计目的、条件、任务和内容要求:《程序设计基础》在计算机科学中是一门重要的基础课程,也是培养学生编程能力的入门性课程。通过介绍C语言及其编程技术,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。《程序设计综合设计》是计算机科学与技术专业学生的一门实践课程,是学习完程序设计课程后的课程设计。本课程的目的是运用所学到的有关知识与技能,结合实践教学环节,进行工程技术人员所需的基本程序设计训练,为学生进一步学习有关专业课程和日后从事程序设计工作打下基础。《学生通讯录管理系统》是设计一个实用的小型通讯录程序。每个记录(好友信息)包括姓名、电话号码、号码、电子邮箱、住址等信息。为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,用户通过菜单选项选择希望进行的操作项目。程序的功能包括:1、插入好友的信息

2、显示好友的信息

3、给定姓名,查找相关的信息

4、给定姓名,修改相关的信息

5、给定姓名,删除好友的信息

6、按照姓名排序。

输入要求:应用程序运行后,在屏幕上显示一个菜单,用户可以根据要求选择相应的操作项目,进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息;输出要求:要求用户输出数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。指导教师签字:2012年12月20日二、进度安排:第18周(12.26-12.27):学生熟悉课题的任务和要求,查阅相关文献和资料,并做好编码准备第18周(12.28-12.31):程序编码、调试第19周(1.4-1.5):程序编码、调试和测试,书写报告第19周(1.6):答辩、检查、验收、提交设计报告三、应收集资料及主要参考文献:应收集的资料:面向对象程序设计思想和方法语言参考手册主要参考文献:[1]姬涛等.计算机程序设计基础(上册)教程.第一版.北京.中国传媒大学出版社,2010.p109~323.[2]张俊等面向对象程序设计.第一版,北京.中国铁道出版社,2008.p323~366四、综合设计(课程设计)摘要(中文):本着为了提高学生对已学习过的程序设计的巩固,学校特意为学生安排这次课程设计。课程设计的课题是让学生自主设计一个学生通信录管理系统。整个程序设计主要通过c语言来实现。本课程的目的是运用所学到的有关知识与技能,结合实践教学环节,进行工程技术人员所需的基本程序设计训练,为学生进一步学习有关专业课程和日后从事程序设计工作打下基础。《学生通讯录管理系统》是设计一个实用的小型通讯录程序。每个记录(好友信息)包括姓名、电话号码、号码、电子邮箱、住址等信息。为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,用户通过菜单选项选择希望进行的操作项目。程序的功能包括:输入、查找、插入、排序、删除、显示好友的信息等,、可以把输入的信息保存到系统文件当中,也可以在程序运行的时候从系统文件读取之前保存的学生信息,再通过程序完成相应的操作,实现通信录管理智能快捷化。从设计这个程序的大体思路上来说,首先本程序运行时会有有一个提示,对本程序做一个简介,然后,用户通过提示可以进入一个设计好的主菜单。主菜单上面有10个选项可供用户选择,用户通过自己将要进行的操作选择对应的选项,然后程序执行相应操作。整个程序在用户使用时都会有选项可供用户选择,用户只需通过程序的提示,便可以一步一步完成操作,不管你是普通的用户还是程序设计人员,你都可以方便快捷的通过本程序完成对学生通信录的管理,给每一个用户一个非常不错的体验。关键字:c语言;通信录管理;主菜单;快捷。五、综合设计(课程设计)(英文):,,.'a.c.,,,."a.(),,,,.a,,,.:,,,,,,,,,,.I,aa,,a.10,,.,,,,,a.:C;"""";.目录摘要…………………………...第一章课题背景(或2.1……………………..………….…x2.2……………………..………….…x2.3……………………..………….…x第三章 详细设计…………..………………..x3.1……………………..………….…x3.1……………………..………….…x第四章 设计结果及分析…………………..………………..x4.1…………….………………..….…x绪论、概述)……………………..11.1…………………...11.2……………………..……………x第二章 设计简介及设计方案论述………..x4.2….…………………..………….…x4.3…….………………..………….…x总结…….……………………..………….…x致谢…….……………………..………….…x参考文献…….………………..………………..………….…x附录主要程序代码………...………………..………….…x摘要本着为了提高学生对已学习过的程序设计的巩固,学校特意为学生安排这次课程设计。课程设计的课题是让学生自主设计一个学生通信录管理系统。整个程序设计主要通过c语言来实现。本课程的目的是运用所学到的有关知识与技能,结合实践教学环节,进行工程技术人员所需的基本程序设计训练,为学生进一步学习有关专业课程和日后从事程序设计工作打下基础。《学生通讯录管理系统》是设计一个实用的小型通讯录程序。每个记录(好友信息)包括姓名、电话号码、号码、电子邮箱、住址等信息。为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,用户通过菜单选项选择希望进行的操作项目。程序的功能包括:输入、查找、插入、排序、删除、显示好友的信息等,、可以把输入的信息保存到系统文件当中,也可以在程序运行的时候从系统文件读取之前保存的学生信息,再通过程序完成相应的操作,实现通信录管理智能快捷化。整个程序在用户使用时都会有选项可供用户选择,用户只需通过程序的提示,便可以一步一步完成操作,不管你是普通的用户还是程序设计人员,你都可以方便快捷的通过本程序完成对学生通信录的管理,给每一个用户一个非常不错的体验。关键字:c语言;通信录管理;主菜单;快捷。,,.'a.c.,,,."a.(),,,,.a,,,.:,,,,,,,,,,.,,,,,a.:C;"""";.第一章课题背景(或绪论、概述)1.1研究背景 当下计算机技术高速发展,信息处理自动化和智能化已经深入人心。而在计算机还未普及之前,通讯管理都是由联系人采用名片笔录手工记录的方式来操作的,现在一般的通讯录管理都是采用计算机作为工具通讯录管理程序来帮助人们进行更有效的通讯录信息管理。本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,程序运用C语言对学生通讯实现输入、显示、插入、删除、修改、查找、保存等功能。使用户能快速方便的更新通讯录,查找联系人信息。通过本课程设计,学生可以从运用C语言及其编程技术,使了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力1.3研究的意义为保存好友信息,通信录已成为每一个人必不可少的东西。本程序正好可以完成用户对通信录的录入,查找,修改,排序,保存等各项功能,让用户高速快捷的管理自己的通信录。1.4完成的功能用户输入学生信息列表所有学生信息通过学生姓名将学生信息排序插入好友信息通过学生姓名完成对该学生信息的查找、删除、修改可以将学生信息保存记录成文档程序可以从文档读取学生信息第二章设计简介及设计方案论述2.1程序主要流程图执行完后返回到主菜单(没有选退出)执行对应操作执行完后返回到主菜单(没有选退出)执行对应操作用户选择其中一项载入信息显示好友信息排序查找修改删除插入保存信息退出输入信息主菜单2.2主要设计思路 用户进入系统后会通过提示进入主菜单栏,对应有10个选项,用户输入自己要执行的编号后,程序内部就会调用相应的函数,实现相应功能。 首先,设计好一个主菜单以及各种功能函数,那么主函数就很简单了,用一个无限循环语句加一个选择语句,语句后面有10个相应的功能函数与菜单里的编号一一对应。当用户输入不同的数值,语句将会调用对应的功能函数,来执行操作。执行完之后,又会进入主菜单,让用户选择下一步将要执行什么选项,直到用户选择退出。同时为了简洁屏幕,让用户方便查阅,程序会有这个设计:每次输入主菜单对应的选项,系统会对当前屏幕进行清屏;每次回主菜单,系统也会对当前屏幕进行清屏。所以在后面的每一个函数的第一个语句就是清屏,即把主菜单去掉,显得更简洁;每次执行完一个功能后会循环到函数,函数的第一个语句也是清屏。这样保证了查阅的美观。 主函数截图第三章详细设计3.1所有定义的函数和主函数()*显示菜单*/(t[])*输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/(t[]n);/*显示记录,参数为记录数组和记录条数*/(t[]n);/*记录保存为文件*/(t[])*读入函数,参数为结构体数组*/(t[]n)*将文件保存到指定位置*/(t[])*从指定位置读入函数,参数为结构体数组*/(t[]n)*菜单中的保存函数*/(t[])*菜单中的载入函数*/(t[]n);/*按姓名查找记录*/()*显示指定的一条记录*/(t[]n)*插入函数,参数为结构体数组和记录数*/(**y)*结构体的复制函数*/(t[]n);/*删除函数,参数为记录数组和记录条数*/(t[]n)*排序函数,参数为结构体数组和记录数*/(t[]n)*根据姓名修改相关信息*/(){ ("学生通信录管理系统\n"); ("本程序是可以帮你管理学生通讯录,包括学生的姓名、电话号码、号码、电子邮箱、住址等信息,它将会给你带来方便、高效的体验!\n\n"); a[M];/*定义结构体数组*/ ;/*保存记录长度*/ (;;)/*无限循环*/ { ("按任意键进入主菜单。"); (); ();/*显示菜单*/ 100;/*初始化*/ ()*清空输入缓冲区*/ (""); (i>=0<=11) { (i) { 1(a);/*输入记录*/ 2(a)*载入学生信息表*/ 3();/*显示全部记录*/ 4();/*查找记录*/ 5();/*修改学生信息*/ 6();;/*插入记录*/ 7();/*排序*/ 8();/*删除记录*/ 9();/*保存文件*/ 0(0);/*退出*/ } } { ("不要乱按!!!\n"); } }}3.2功能函数(1).菜单函数(){ ("")清屏 ("\n******************菜单*********************\n\n"); a[50]="1.输入好友信息"; b[50]="2.载入好友信息"; c[50]="3.显示所有好友列表"; d[50]="4.按学生姓名查找好友信息"; e[50]="5.按好友姓名修改好友信息"; f[50]="6.按学生姓名删除好友信息"; g[50]="7.按学生姓名将好友信息排序"; h[50]="8.插入新的好友信息"; i[50]="9.保存好友信息为文档"; j[50]="0.退出"; ("\3535s\n\n\3535s\n\n\3535s\n\n\3535s\n\n\3535s\n\n"); ("****************************************\n"); ("请选择你要执行的操作对应的序号:\n");}当调用菜单函数的时候,显示屏上显示菜单选择语句可供用户选择的操作序号,然后就会调用到对应的函数,来完成相应功能。(2)输入函数(t[]){ ("")清屏 ; ("\n请输入学生人数:\n");/*提示信息*/ ("");/*输入记录数*/ ("请依次输入每位学生的如下信息:\n");/*提示输入记录*/ ("姓名 电话号码 号 电子邮箱 住址\n"); ("\n"); (0<) { (""[i][i][i][i][i]);/*输入记录*/ ("\n"); } ("你已成功输入所有学生信息!\n");/*提示输入记录*/ n;/*返回记录条数*/}定义学生信息为结构体数组,根据学生人数,通过循环,依次录入学生的信息(3)列表函数(t[]n){ ("")清屏 i; ("\n\n*******************************************\n"); ("姓名 电话号码 号 电子邮箱 住址\n"); (0<) { ("\n"); ("1015122515s\n"[i][i][i][i][i]); } ((1)%100)/*判断输出是否达到10条记录*/ { ("按任意键继续...\n");/*提示信息*/ ();/*压任意键继续*/ } ("***********************************************\n");}要列表所有学生信息的时候首先显示一列标题,然后按照这样的格式对应输出所有学生的信息,方便用户查阅.此函数中同样用到了循环,(4)保存函数(t[]n){ i; *;/*指向文件的指针*/ ((("","")))/*打开文件,并判断打开是否正常*/ { ("打开文件失败。\n")*没打开*/ (1);/*退出*/ } ("\n正在保存文件...\n");/*输出提示信息*/ (,"");/*将记录数写入文件*/ (,"\r\n");/*将换行符号写入文件*/ (0<) { (,"1015122515s\n"[i][i][i][i][i])*格式写入记录*/ (,"\r\n");/*将换行符号写入文件*/ } ()*关闭文件*/ ("***************保存成功!**************\n");/*显示保存成功*/}为了不让程序关闭时丢失刚刚输入的所有好友信息,我们通常需要保存输入的学生信息,这个函数恰好可以实现把好友信息保存成文档,方便以后查看和操作.本函数是一种默认保存方式,即调用时将学生信息保存成文档,存在这个程序的工程所在的目录里面,方便信息不丢失,以后对学生信息进行操作也很方便.(5)载入函数(t[]){ ; *;/*指向文件的指针*/ ((("","")))/*打开文件*/ { ("文件打开失败\n");/*不能打开*/ (1);/*退出*/ } (,"");/*读入记录数*/ (0<) (,"%1015122515s"[i][i][i][i][i]);/*按格式读入记录*/ ();/*关闭文件*/ ("你已经成功从文件中读取数据!!!\n");/*显示读取成功*/ n;/*返回记录数*/}当用户不是第一次在用这个程序的时候,可能会需要查看调用以前自己输入的好友信息,所以,这个函数实现了从文档中读取学生的信息.(6)将文件保存到指定位置函数(t[]n){ *; i; ("请输入你要保持位置的指定路径和文件名:(例如:d:\\我的文档\\学生通讯录\\通讯录)"); a[30]; (""); (((a,""))) { ("操作失败!"); (1); } ("\n正在保存文件...\n");/*输出提示信息*/ (,"");/*将记录数写入文件*/ (,"\r\n");/*将换行符号写入文件*/ (0<) { (,"1015122515s\n"[i][i][i][i][i])*格式写入记录*/ (,"\r\n");/*将换行符号写入文件*/ } ()*关闭文件*/ ("***************保存成功!**************\n");/*显示保存成功*/}这个函数类似于上面的保存函数,但是它可以将文档自己命名并且保存到用户指定的路径,更方便用户对通信录的管理.(7)从指定位置读入函数(t[]){ ; *;/*指向文件的指针*/ ("请输入你要读取文件的指定路径和文件名:(例如:d:\\我的文档\\学生通讯录\\通讯录)"); a[30]; (""); (((a,""))) { ("操作失败!"); (1); } (,"");/*读入记录数*/ (0<) (,"%1015122515s"[i][i][i][i][i]);/*按格式读入记录*/ ();/*关闭文件*/ ("你已经成功从该文件中读取数据!!!\n");/*显示读取成功*/ n;/*返回记录数*/}用户可以再指定位置载入学生信息(8)菜单中的保存函数,集成了上面两个保存函数(t[]n){ ("")清屏 0; ("请按你将要进行的操作选择序号:\n\n\t1.将文件保存到本工程\t\t2.将文件保存到指定路径\n"); (""); (i) { 1(t,n); 2(t,n); ("你的输入有误!\n"); }}(9)菜单中的载入函数,集成上面两个载入函数(t[]){ ("")清屏 0; ("请按你将要进行的操作选择序号:\n\n\t1.从本工程载入文档\t\t2.从指定路径载入文档\n"); (""); (i) { 1(t); 2(t); ("你的输入有误!\n"); } ;}(10)按姓名查找记录函数(t[]n){ ("")清屏 s[20];/*保存待查找姓名字符串*/ i;/*保存查找到结点的序号*/ ("请输入你要查找的姓名:\n"); ("");/*输入待查找姓名*/ (0<) { (([i])0) { ("你查询的学生的信息如下:\n"); (t[i]);/*找到,调用显示函数显示记录*/ ; } } () ("没有你要找的学生。\n");}运用函数,比较输入的字符串和所有学生的姓名,当找到了输入的学生的时候,就输出学生的信息,否则i经过循环就会和n相等,屏幕就会输出没有找到的提示。(11)显示指定的一条记录函数(t){ ("\n\n*******************************************************\n"); ("姓名 电话号码 号 电子邮箱 住址\n"); ("\n"); ("1015122515s\n"); ("********************************************************\n");}此函数可以根据学生的序号来显示学生信息,方便其他的函数调用/(12)插入记录函数(t[]n)/*插入函数,参数为结构体数组和记录数*/{ ("")清屏 ;/*新插入记录信息*/ ; s[20];/*确定插入在哪个记录之前*/ ("请输入要插入的学生的信息:\n"); ("****************************************************\n"); ("姓名 电话号码 号 电子邮箱 住址\n"); ("\n"); ("");/*输入记录*/ ("\n"); ("你要插入哪个学生之前就输入该学生的姓名:\n"); ("");/*输入插入位置的姓名*/ (0<) { (([i])0) { (>)/*从最后一个结点开始向后移动一条*/ ([j][1]);/*调用结构体复制函数*/ ([i]);/*将新插入记录拷贝到第i个位置*/ ("插入成功!\n"); /*;/*记录数加1*/ ; } } () ("请正确输入你要插入位置之前的学生的姓名。\n"); 1;}还是用函数,这个里面定义了一个变量,把输入的学生信息赋值到里面,然后插入,先找到要插入学生的序号,然后从第n个开始,依次把这个学生里面的信息赋值到后面一个学生的信息里面,总人数1。(13)结构体的复制函数(**y){ ((*x),(*y)); ((*x),(*y)); ((*x),(*y)); ((*x),(*y)); ((*x),(*y));}这个函数对结构体之间进行复制,在插入,更改学生信息函数中会有调用(14)删除函数(t[]n){ ("")清屏 s[20];/*要删除记录的姓名*/ 0; ; ("请输入要删除的学生的姓名:\n");/*提示信息*/ ("")*输入姓名*/ (0<) { (([i])0) { ("你确定要删除一下学生信息?(确认请按1,否则请按2)\n"); (t[i]);/*找到,调用显示函数显示记录*/ (""); (1) { (<)/*删除该记录,实际后续记录前移*/ { ([j][1]);/*将后一条记录拷贝到前一条*/ } ("删除的信息成功。\n"); ;/*记录数减1*/ } { ("你已取消删除操作。\n"); } ; } } () ("没有找到你要删除的学生。\n"); n;}用户输入好友信息,信息被赋值到s[20]中,通过函数找到要删除的学生,然后显示这个学生的信息,让用户确认是否删除,以免误删信息。(15)按照姓名排序函数(t[]n){ ("")清屏 ; ; (0<1) { (1<) (((t[i][j]))>0) { ([j]); ([j][i]); ([i]); } } ("按照姓名排序成功!\n");}(16)根据姓名修改相关信息(t[]n){ ("")清屏 i; s[20];/*要修改的学生的姓名*/ ("请输入你要修改信息的学生的姓名:\n"); ("");/*输入修改信息的学生的姓名*/ (0<) { (([i])0) { ("该学生以前的信息如下:\n"); (t[i]); ("请按以下顺序输入该学生的新信息:\n");/*提示输入记录*/ ("姓名电话号码号电子邮箱 住址\n"); ("\n"); (""[i][i][i][i][i]);/*输入记录*/ ("\n"); ("修改成功!\n"); ; } } () ("没有找到你要修改的学生,修改失败!\n");}第四章设计结果及分析3.1调试过程提示用户本程序可以完成的功能,然后按任意键,可以进入下面的主菜单:我们选择1,然后按照提示输入4个好友的信息如下:即完成信息的输入。然后回主菜单。选择3,看一下所有学生信息列表情况如下:再进主菜单,选择4,输入“白鹏”,查找他的信息:查找正常。进主菜单,选择5,把程家山的信息更改:显示修改成功,进主菜单,选择列表所有好友信息,可以看到:显示修改成功。再进主菜单,选择6,删除王剑桥的信息,先选择2取消删除:显示列表还是有四个人得信息。再来一次,然后选择1确认删除:再回主菜单,显示所有好友列表,会得到这样的结果,说明已经删除成功:到主菜单中选择8插入好友信息,然后按如下输入,然后插入到白鹏的前面:再显示所有好友信息如下:插入成功!会主菜单,选择7,将所有好友排序,提示成功:再显示所有好友信息列表会得到:说明已经将学生信息按照姓名排好序了。最后退出之前,将输入的信息保存成文档(进主菜单选9):先选择1,保存到工程,提示成功,然后选择0退出程序。再执行此程序,进主菜单选择2,载入文档;选择1,提示成功:进主菜单列表所有好友信息,显示如下:正常显示。进主菜单,选择9,保存信息为文档,这次我们选择2,输入路径d:\\通信录打开我的电脑D盘,文件夹,看到通讯录文件通讯录文件内容如下:然后退出程序,再进程序,选择2载入信息,这次我们选择从d:\\通信录载入再显示好友信息:显示正常。至此,程序的所有功能都正常实现了!3.2调试中出现的一些问题和解决方案(1)当没有清屏函数时,每次都会看到屏幕满满的,阅读起来很不方便,如下:解决的方案就是在函数和每个后面的函数里的第一个语句加入("");清屏函数,这样每次选择操作后就会把菜单清除掉,而每次执行完一个操作后进入主菜单时又会把之前的操作所剩下的无关信息删除,使屏幕很简洁。(2)("");语句当输入的不是整型数据,比如说是字母,当第二次循环到这个语句是,由于i中的数据是一个随机值,没有被初始化,所以会被跳过,使主菜单陷入死循环解决方案,在每次输入i值之前给i一个初始值,然后清空缓冲区,在运行到("");语句时就不会被跳过,从而当输入的不是数字时不会陷入无限循环(3)结构体复制函数当这样定义时就不能完成复制:(b){ ; ; ; ; ;}因为调用函数时,只把实参的值赋值给形参,而实参里面的数值没有改变。所以要用到指针,定义如下:(**y){ ((*x),(*y)); ((*x),(*y)); ((*x),(*y)); ((*x),(*y)); ((*x),(*y));}总结 通过两周的课程设计,使我对上学期学习的C语言有了更深的了解,也能更熟练的掌握对C语言的运用。以前对C语言的学习大多是基于书本上的,做的实验相对较少,不能很熟练的在计算机中去操作和调试,以致当书写程序时时常会遇到很多错误,不能完成整个程序的正确设计。刚刚开始的时候,感觉很迷茫,这么大一个课题不知从何做起,但是后来,通过课题的设计要求,画出了程序主要的流程图,这样整个程序的设计思路也就清晰了,然后写出了要定义的功能函数,并设计了一个主函数。随后的工作就是一个一个地完成功能函数的定义。做完这个课题后,知道了要设计一个程序,首先要清楚要完成什么样的功能,然后根据设计的要求去依次书写函数,并且在主函数里面能够很适当的调用这些功能函数,使得用户完成各项功能。在程序调试的时候,不是把所有的函数都写好然后一起调试,而是写完一个或几个函数调试一下,这样就不会一下出现很多很多错误以至于不知从何该起。课程设计中也会遇到一些小细节问题,比如说清屏、用户输入有误时陷入死循环等,通过查阅相关资料知道了问题的解决问题方案,也了解到了书本上以外的更多知识,了解了更多C语言的库函数。同时,也让我了解到程序设计中不仅要考虑到用户输入正确时会如何执行下一步,而且要考虑在用户输入有误时不至于让程序出现错误,而是提示用户输入的信息不对。又如,当删除一个学生的信息时,要输出他要删除的学生的信息,会出现警告,提示用户确认是否删除,来确保不会误删。两周的上机实验让我了解到C语言实践的重要性,实验让我了解C语言的更多库函数和一些典型错误,也加深了对C语言的认识,为以后的程序语言的学习打下好的基础。致谢 感谢邹君老师对我在调试程序中的指导,感谢张军同学的热情帮助,感谢百度知道热心网友。附录主要程序代码:/*************学生通讯录管理系统程序**************//************作者:王志超。日期:2011.12.31*******//******头文件()***********/<>/*函数*/""/*标准库函数*/<>/*控制台输入输出函数*/""/*字符串函数*/""/*字符操作函数*/M50/*定义常数表示记录数*//*定义数据结构*/{[20];/*姓名*/[15];/*电话*/[15]*号*/[30]*电子邮件*/[30];/*地址*/};/*所有定义的函数*/()*显示菜单*/(t[])*输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/(t[]n);/*显示记录,参数为记录数组和记录条数*/(t[]n);/*记录保存为文件*/(t[])*读入函数,参数为结构体数组*/(t[]n)*将文件保存到指定位置*/(t[])*从指定位置读入函数,参数为结构体数组*/(t[]n)*菜单中的保存函数*/(t[])*菜单中的载入函数*/(t[]n);/*按姓名查找记录*/()*显示指定的一条记录*/(t[]n)*插入函数,参数为结构体数组和记录数*/(**y)*结构体的复制函数*/(t[]n);/*删除函数,参数为记录数组和记录条数*/(t[]n)*排序函数,参数为结构体数组和记录数*/(t[]n)*根据姓名修改相关信息*/(){ ("学生通信录管理系统\n"); ("本程序是可以帮你管理学生通讯录,包括学生的姓名、电话号码、号码、电子邮箱、住址等信息,它将会给你带来方便、高效的体验!\n\n"); a[M];/*定义结构体数组*/ ;/*保存记录长度*/ (;;)/*无限循环*/ { ("按任意键进入主菜单。"); (); ();/*显示菜单*/ 100;/*初始化*/ ()*清空输入缓冲区*/ (""); (i>=0<=11) { (i) { 1(a);/*输入记录*/ 2(a)*载入学生信息表*/ 3();/*显示全部记录*/ 4();/*查找记录*/ 5();/*修改学生信息*/ 6();;/*插入记录*/ 7();/*排序*/ 8();/*删除记录*/ 9();/*保存文件*/ 0(0);/*退出*/ } } { ("不要乱按!!!\n"); } }}(){ ("")清屏 ("\n**************************************菜单**************************************\n\n"); a[50]="1.输入好友信息"; b[50]="2.载入好友信息"; c[50]="3.显示所有好友列表"; d[50]="4.按学生姓名查找好友信息"; e[50]="5.按好友姓名修改好友信息"; f[50]="6.按学生姓名删除好友信息"; g[50]="7.按学生姓名将好友信息排序"; h[50]="8.插入新的好友信息"; i[50]="9.保存好友信息为文档"; j[50]="0.退出"; ("\3535s\n\n\3535s\n\n\3535s\n\n\3535s\n\n\3535s\n\n"); ("********************************************************************************\n"); ("请选择你要执行的操作对应的序号:\n");}/*输入函数*/(t[]){ ("")清屏 ; ("\n请输入学生人数:\n");/*提示信息*/ ("");/*输入记录数*/ ("请依次输入每位学生的如下信息:\n");/*提示输入记录*/ ("姓名 电话号码 号 电子邮箱 住址\n"); ("\n"); (0<) { (""[i][i][i][i][i]);/*输入记录*/ ("\n"); } ("你已成功输入所有学生信息!\n");/*提示输入记录*/ n;/*返回记录条数*/}/*列表函数*/(t[]n){ ("")清屏 i; ("\n\n**********************************************************************\n"); ("姓名 电话号码 号 电子邮箱 住址\n"); (0<) { ("\n"); ("1015122515s\n"[i][i][i][i][i]); } ((1)%100)/*判断输出是否达到10条记录*/ { ("按任意键继续...\n");/*提示信息*/ ();/*压任意键继续*/ } ("***************************************************************************\n");}/*保存函数,参数为结构体数组和记录数*/(t[]n){ i; *;/*指向文件的指针*/ ((("","")))/*打开文件,并判断打开是否正常*/ { ("打开文件失败。\n")*没打开*/ (1);/*退出*/ } ("\n正在保存文件...\n");/*输出提示信息*/ (,"");/*将记录数写入文件*/ (,"\r\n");/*将换行符号写入文件*/ (0<) { (,"1015122515s\n"[i][i][i][i][i])*格式写入记录*/ (,"\r\n");/*将换行符号写入文件*/ } ()*关闭文件*/ ("***************保存成功!**************\n");/*显示保存成功*/}(t[]){ ; *;/*指向文件的指针*/ ((("","")))/*打开文件*/ { ("文件打开失败\n");/*不能打开*/ (1);/*退出*/ } (,"");/*读入记录数*/ (0<) (,"%1015122515s"[i][i][i][i][i]);/*按格式读入记录*/ ();/*关闭文件*/ ("你已经成功从文件中读取数据!!!\n");/*显示读取成功*/ n;/*返回记录数*/}/*将文件保存到指定位置*/(t[]n){ *; i; ("请输入你要保持位置的指定路径和文件名:(例如:d:\\我的文档\\学生通讯录\\通讯录)"); a[30]; (""); (((a,""))) { ("操作失败!"); (1); } ("\n正在保存文件...\n");/*输出提示信息*/ (,"");/*将记录数写入文件*/ (,"\r\n");/*将换行符号写入文件*/ (0<) { (,"1015122515s\n"[i][i][i][i][i])*格式写入记录*/ (,"\r\n");/*将换行符号写入文件*/ } ()*关闭文件*/ ("***************保存成功!**************\n");/*显示保存成功*/}/*从指定位置读入函数,参数为结构体数组*/(t[]){ ; *;/*指向文件的指针*/ ("请输入你要读取文件的指定路径和文件名:(例如:d:\\我的文档\\学生通讯录\\通讯录)"); a[30]; (""); (((a,""))) { ("操作失败!"); (1); } (,"");/*读入记录数*/ (0<) (,"%1015122515s"[i][i][i][i][i]);/*按格式读入记录*/ ();/*关闭文件*/ ("你已经成功从该文件中读取数据!!!\n");/*显示读取成功*/ n;/*返回记录数*/}(t[]n){ ("")清屏 0; ("请按你将要进行的操作选择序号:\n\n\t1.将文件保存到本工程\t\t2.将文件保存到指定路径\n"); (""); (i) { 1(t,n); 2(t,n); ("你的输入有误!\n"); }}(t[]){ ("")清屏 0; ("请按你将要进行的操作选择序号:\n\n\t1.从本工程载入文档\t\t2.从指定路径载入文档\n"); (""); (i) { 1(t); 2(t); ("你的输入有

温馨提示

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

评论

0/150

提交评论