《c语言课程设计个人总结.doc》由会员分享,可在线阅读,更多相关《c语言课程设计个人总结.doc(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、c语言课程设计个人总结C语言课程设计总结报告丽水学院C语言课程设计总结报告题目计算器卢敏工学院计算机科学与技术计1616103330127(24)徐明志指导教师院专班学姓成系业级号名绩_七年六月二十二日丽水学院工学院C语言课程设计报告评分表班级:计16学号16103330127(24)姓名:徐明志机器编号:51设计报告格式规范风格统一。102第一章系统功能说明。153作品设计报告4第二章程序结构(程序结构、重要数据说明、函数清单)。35第三章使用说明(安装手册和使用手册完整)。155第四章系统设计难点及其解决方法。156第五章不足之处。10合计表1进度安排表短学期实践综合实验进度表选题名称:运
2、动会分数统计系统班级:计16任课教师:卢敏一、系统设计2021.6.262021.6.27二、系统实现2021.6.272021.6.29三、测试2021.6.92021.6.30学号:16103330127(24)姓名:徐明志表2中期报告表C语言课程设计中期报告(系统设计)选题名称:运动会分数统计系统班级:计16任课教师:卢敏一、题目(问题)描述该计算器主要实现的是四则运算以及N次方的运算阶乘运算和累加运算;其中对溢出需要进行控制对错误的输入进行提示以及对运算结果进行清零或继续运算;另外需要一个列举功能的实现计算器功能的菜单有需要时可设置二级或者三级菜单使条理更加清楚。二、问题分析实现最基本
3、计算器的功能需要进行进行加减乘除的运算这时就有两种思路:一是利用线性关系进行处理将数字进行一次一次的运算这样的运算效果低。二是利用栈进行处理可输入数字的表达式通过栈的工作原理结合人为规定的符号优先级关系进行直接给出答案提高了运算的效率和功能但是运行时的溢出或出错很难进行处理。对一般的小数可进行四则运算之外还需可对大数进行运算这个需要进行独自的算法设计。除此之外就只有阶乘累加和N次方了其中N次方的溢出最难处理需要对两个数进行判断。处理溢出的办法若是进行逐步运算例如对ab两个数进行运算得到结果c想要判断c是否是溢出可以将c与b进行逆运算求值得到d若是a等于d说明运算无误没有溢出反之则溢出。学号:1
4、610333127(24)姓名:徐明志起始时间及计划完成时间:2021.6.262021.6.30三、系统设计1程序总体结构2界面设计界面设计运用了简单的菜单布局设计了二级菜单可以进行随意来返两个菜单之间。菜单第一行都是提示输入信息或进行该菜单的描述后面若干行都是该菜单功能的描述。一级主菜单/_计算器_/_请按照提示进行输入数字_/1.进行加减乘除运算2.N次方运算3.阶乘运算4.累加运算5.大数的加减乘除6.退出小数二级菜单/_请按照提示进行输入数字_/1.N次方运算2.阶乘运算3.累加运算4.清零并返回大数二级菜单/_请按照提示进行输入数字_/1.加法运算2.减法运算3.乘法运算4.除法运
5、算5.返回菜单目录第一章系统功能说明.1第二章程序结构.221程序结构说明.222重要数据说明.223函数清单.3第三章使用说明.1331安装手册.1332使用手册.13第四章系统设计难点及其解决方法.1541栈的四则运算.1542大数的加减乘除.15421大数的加法.15422大数的减法.15423大数的乘法.16423大数的除法.16第五章不足之处.17运动会分数统计系统丽水学院C语言课程设计总结报告第一章系统功能说明本程序可实现简单的计算机功能对数字进行加减乘除的运算N次方的运算阶乘和累加并能对错误的输入进行提示对溢出进行判断以及继续运算和返回菜单的功能。对小数的加减乘数是利用栈来实现的
6、因此与一般的须分步进行运算的计算器不同该计算器可直接输入一串关于运算的表达式并以#结束可直接输出结果无需人为的判断优先关系进行分步运算因此在运算操作上大大节省了用户的时间减少了繁琐的步骤。为了使得栈的运用更加灵活对栈的四则运算也使用了继续运算的功能并且可在任意位置插入该存储值进行需要的四则运算这已经使得计算的功能更加完善。唯一的不足是对栈的溢出和错误输出难以判定所以在输入之前必须仔细检查输入的格式是否正确。N次方的运算是是直接调用库函数实现的。其中设置了一个判断的操作若是第一次进行运算需要输入两个数来实现a的b次方;若是原先已有运算结果存储在计算机内可直接输入一个b实现a的b次方的运算通过该操
7、作实现了继续运算的功能同时对n次方的运算进行了溢出的判断若是结果小于等于0则说明一定溢出。阶乘的运算运用的是累乘的原理从1累乘到n实现阶乘的运算在控制溢出方面巧妙的应用了上限来判断由于阶乘的值会很大对于32位的整形来说累乘至12就是上限了只需判断输入的值是否大于12即可。与N次方一样对阶乘的处理也可以进行继续运算若是之前的计算结果已有存储值可直接进行阶乘计算。累加的求和应用了公式(1+n)_n/2进行计算在控制溢出的方面和N次方相同对结果值进行判定是否小于等于0同样的也可以进行继续运算若是原先已有计算结果的存储将会直接输出累加结果若是没有存储需要按照提示输入一个数来实现累加求和。本计算机的结构
8、模拟了一个循环实则是调用调用函数的嵌套进入该程序首先展示的是主菜单界面前四个选项分别为小数的加减乘数运算N次方运算阶乘运算累加运算该四个运算只可运用与小数的处理。第五个选项为大数的四则运算可进入大数四则运算的二级菜单在大数的二级菜单中可以选择大数加法大数减法大数乘法和大数除法最高可进行1000位的大数运算。主菜单的第六个选项为退出该选项有个小小的缺陷由于该结构的构建运用的是函数的调用若是反复运算来返于两个菜单之间容易造成循环嵌套可能在最后退出界面的时候需要输入多次退出才能达到退出的效果因此在最后的退出时设置了退出的提示若是选择了该选项还未退出就需要多次输入该选项。在对小数的运算中需要继续运算则
9、可进入小数的二级运算菜单小数的二级菜单里只有小数的四则运算N次方运算阶乘运算和累加运算。同样的大数的四则运算也可继续运算不同的是由于大数运算结构存储困难并且继续运算意义不大所以未设置大数的继续运算但可回到主菜单。1运动会分数统计系统丽水学院C语言课程设计总结报告第二章程序结构21程序结构说明该计算器程序大体结构如图2-1所示。程序结构如图所示通过主菜单可直接进入栈的四则运算N次方运算阶乘运算和累加运算;另外也可通过主菜单进入大数菜单的界面进而选择大数加法运算大数减法运算大数乘法运算或大数除法运算。22重要数据说明/-全局变量-intN=0;/作为全局变量使用用于存储运算结果/-函数结果状态代码
10、-#defiRUE1#defineFALSE0#defineOK1#defineERROR0#defineOVERFLOW-2/用于分配地址空间错误时的返回#defineMN1000/大数的存放位数上限/-定义函数类型返回结果状态代码-typedefintStatus;2运动会分数统计系统丽水学院C语言课程设计总结报告/-定义栈的元素类型-typedefintElemType;/-栈的顺序存储表示-#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10/-顺序栈的定义并定义栈顶和栈底元素-typedefstructElemType_base;ElemT
11、ype_top;intstacksize;Stack;23函数清单/-大数运算基本操作的函数原型说明-1intInversion(char_str);/该函数为倒置函数可引入一个数组将数组中元素倒置存放。倒置函数如图2-2所示。2intnump(char_a,char_b);/该函数为字符串大小比较的函数对个数组中元素进3运动会分数统计系统丽水学院C语言课程设计总结报告行逐一比较若相等返回0不然返回第一次出现差异的两数之差。该函数大体流程如图2-3所示。3intcarry(char_num);/进位函数引入数组利用算法使得原先以ASCII存储的非09的元素以09的字符存储。该函数大体流程如图2
12、-4所示。4intabdicate(char_num);/退位函数引入数组利用算法使得原先以ASCII存储的非09的元素以09的字符存储。4运动会分数统计系统丽水学院C语言课程设计总结报告该函数大体流程如图2-5所示。5intnumclear(char_num);/清零函数引入数组从第一位开始寻找直到找到第一个不为0的值为止从该值开始向前推进达到清零效果。该函数大体流程如图2-6所示。6intnumadd(char_a,char_b,char_sum);/大数加法引入两个数组需要进行加法的数组以及用来存放其和的空数组。该函数大体流程如图2-7所示。5运动会分数统计系统丽水学院C语言课程设计总结
13、报告7intnumsm(char_a,char_b,char_mul);/大数乘法的主要运算函数引入两个需要进行相乘的数组和一个用于存放其乘积的数组通过b中的第一位与a中的每一位进行相乘从而模拟乘法运算。该函数大体流程如图2-8所示。8intnummul(char_a,char_b,char_mul);/大数乘法引入两个需要进行相乘的数组和一个用于存放其乘积的数组主要通过调用上述函数实现乘法运算。6运动会分数统计系统丽水学院C语言课程设计总结报告该函数大体流程如图2-9所示。9intnumsub(char_a,char_b,char_sub);/大数减法引入两个需要进行相减的数组和一个用于存放
14、其差值的数组求大数除法操作与大数加法类似。该函数大体流程如图2-10所示。7运动会分数统计系统丽水学院C语言课程设计总结报告10intnumdiv(char_a,char_b);/大数除法引入两个需要进行相除的数组进行逐步相减来模拟大数除法。该函数大体流程如图2-11所示。11voidNum_div;/用于调用的大数除法12voidNum_mul;/用于调用的大数乘法13voidNum_sub;/用于调用的大数减法13voidNum_add;/用于调用的大数加法以上四个均为大数算法调用的主要函数其功能就是调用各自的算法进行运算主要功能的函数以在上述说明。14voidAdd;/累加函数该函数大体
15、流程如图2-12所示。8运动会分数统计系统丽水学院C语言课程设计总结报告15voidFactorial;/阶乘函数该函数大体流程如图2-13所示。16voidN_power;/N次方函数该函数大体流程如图2-14所示。/-输出说明函数说明-17voidprint_menu;/主菜单18voidprint_judge;/是否继续运算的判定19voidprintf_state;/大数二级菜单的说明9运动会分数统计系统丽水学院C语言课程设计总结报告/-菜单函数函数说明-20intmain_f;/小数菜单21intmain_m;/大数菜单22intmain_menu;/主菜单23intmain;/主函
16、数菜单函数接程序结构说明中已经详细说明。/-栈的基本操作的函数原型说明-24StatusInitStack(Stack&;S);/构造一个空栈。该函数大体流程如图2-15所示。25StatusGetTop(StackS,ElemType&;e);/取栈顶元素若栈不空则用e返回S的栈顶元素并返回OK否则返回ERROR。该函数大体流程如图2-16所示。26StatusPush(Stack&;S,ElemTypee);/进栈该函数大体流程如图2-17所示。10运动会分数统计系统丽水学院C语言课程设计总结报告27StatusPop(Stack&;S,ElemType&;e);/出栈该函数大体流程如图2
17、-18所示。28StatusShowStack(StackS);/栈的输出引入一个栈进行对栈的输出。该函数大体流程如图2-19所示。29voidArithmetic;/栈的核心算法该函数大体流程如图2-20所示。11运动会分数统计系统丽水学院C语言课程设计总结报告/-In函数-30intIn(charch);/判定输入的符号字符是否为“#”若是#就返回1否则返回0。31charPrecede(chara,charb);/判定运算符栈的栈顶运算符i与读入的运算符j之间优先关系的函数认为定义了一个二维数字将所有字符的两两之间的所有关系以10-12存储起来。32intOperate(inta,cha
18、rf,intb);/栈的四则运算函数引入两个数和一个字符通过switch将两个数进行所读入的符号的运算操作。12运动会分数统计系统丽水学院C语言课程设计总结报告第三章使用说明31安装手册该计算机程序无需安装已由exe运行程序的形式导出只需双击打开并运行即可。主界面有关于功能的提示运行时也有相关的输入提示和错误的提示对界面的跳转和返回也有相关选项说明并且可以随时暂停二级运算回到主界面进行其他功能的选择。32使用手册打开名为计算器.exe的程序进入主界面/_计算器_/_请按照提示进行输入数字_/1.进行加减乘除运算2.N次方运算3.阶乘运算4.累加运算5.大数的加减乘除6.退出主界面有6个选项前四
19、个为小数运算第五个可进入大数运算的菜单选项6为退出程序。选择选项1进行小数四则运算若不是继续运算则会提示“请输入四则运算表达式并以'#'结束”;若为继续运算则提示“请输入四则运算表达式,用于继续运算的值以''代替并以'#'结束”。按照提示输入一串四则运算的表达式并以#结束可直接输出答案。选择选项2进行N次方运算若不是继续运算则会提示“请输入两个数第一个为底数第二个为自变量”;若为继续运算则提示“请输入自变量”按照提示输入一个或两个数即可。若所求值会造成数据溢出则提示“所求N次方过大溢出”。选择选项3进行阶乘运算若不是继续运算则会提示“请输入需要求
20、阶乘的数”;若是继续运算直接对该数进行程序运算。按提示进行操作若所求值会造成数据溢出则会提示“所求阶乘数过大溢出请选择其他功能进行操作”。选择选项4进行累加运算若不是继续运算则会提示“请输入需要求累加的数”;若是继续运算直接对该数进行程序运算。按提示进行操作若所求值会造成数据溢出则会提示“所求累加数过大溢出”。选择选项5进入大数操作的菜单。选择选项6退出该程序若是无法退出。则会提示“请再次输入6来结束程序”按照13运动会分数统计系统丽水学院C语言课程设计总结报告提示操作即可退出程序。对小数操作的过程中运行一次之后会跳出提示“是否进行继续运算(y/n)”按照提示进行输入。、若选择y将会跳转到小数
21、的二级菜单;若选择n退回到主菜单界面可选择其他操作。/_请按照提示进行输入数字_/1.进行加减乘除运算2.N次方运算3.阶乘运算4.累加运算5.清零并返回该小数运算界面有六个选项前四个选项均为继续运算的操作功能与上述相同这里不在介绍选项6为返回功能若不想继续运算可选择选项6对原有数据进行清零并返回主菜单。/_请按照提示进行输入数字_/1.加法运算2.减法运算3.乘法运算4.除法运算5.返回菜单该界面为大数运算界面在上述中已提到该界面有五个选项前四个均为运算功能实现大数的加减乘除选项5可返回主菜单。14运动会分数统计系统丽水学院C语言课程设计总结报告第四章系统设计难点及其解决方法41栈的四则运算
22、为了使得关于小数的四则运算更加方便因此选用了栈作为基本数据结构来完成计算器功能即可通过直接输入一串表达式直接求出该运算的结果。我运用了栈来处理小数首先是构建两个栈分别为OPTR和OPND用来存储加减乘除以及#、(、)等符号和进行运算的各类数据然后对输入的字符进行逐个判断分类若读入的是09的数字将其用数组存储起来直至下一个读入的不再是数字就利用atoi将在数组中以字符形式存储的数字字符转化为整形然后压入数字栈。在字符栈中首先默认压入一个#之后每次若入栈的字符为运算符或#就需要与符号栈中的栈顶元素进行比较通过优先级关系来判定下一步操作是进行四则运算还是继续对符号位进行入栈(优先关系是人为规定的通过
23、已知的四则运算法则将各各字符两两之间的关系通过10-1的形式存储在二维数组之中便于调用)若是等待入栈的符号位比栈顶符号的优先级高则从数字栈中弹出两个数字进行与待入栈符号有关的四则运算;若是等待入栈的符号位与栈顶符号的优先级相等则脱括号并进行接收下一字符;若是等待入栈的符号位比栈顶符号的优先级低则将该待入栈的符号也入栈成为新的栈顶元素。如此反复直至读入的字符为#说明已经结束就可以将数字栈中的最后结果输出即可。42大数的加减乘除421大数的加法为了使得算法更加简洁易懂简化运算步骤方便运算之前须先定义一个数组倒置的函数Inversion在加法运算中讲存放两个大数的数组进行逆序存放然后从第一位开始逐项
24、相加减去0存放在sum数组中而不一开始就进行进位把两数相加之和以ASCII码的形式存放起来直到有一个数组已经全部进行累加然后将另一个没有进行累加的数组中所有的元素通过strcat加至sum数组之后然后调用carry对sum数组从第一位开始进行逐项进位若是该位大于9说明已经将和以ASCII码存放起来就对该位减0的值与10相处后的值与该位的后一位进行累加并对该位减0的值对10求模再加上0以字符形式存储一起来后面几位以此类推最后若是最高位有进位就将其字符化存储起来并在后一位赋0若是最高位无进位对后一位直接赋0即可。最后将sum数组倒置(每次倒置最末位始终会有0作为字符串的标记)输出即可。422大数的
25、减法调用nump对读入的两个字符串进行对比若是相等说明作差为0直接输出0即可15运动会分数统计系统丽水学院C语言课程设计总结报告若是前者大从两个字符串的末尾往前逐项作差再加上0与大数加法相同将值以ASCII码的形式存储在sub数组中然后以此类推直至短的字符串比较完毕然后将长的字符串中未比较的部分直接赋给sub数组完成与大数相加类似的操作。与大数相反的大数相减在最后需要进行的是退位操作调用abdicate函数从末尾开始逐一判断若是小于0对该位进行加10运算然后对前一位减一依次类推。最后调用numclear进行清零即可(在相减过程中可能会使得最高位甚至前面n位均为0所以需要清零找到从第几个位置开始
26、不为0将后面的数字逐一向前推进实现该效果)。423大数的乘法大数乘法利用乘法法则将短的字符串作为参考系调用numsm与长的字符串中的各个字符进行逐项相乘这里同样以ASCII码进行存储但是对于9的乘法需要注意的是可能会超出ASCII的数值上线于是对9进行特殊处理若读入的数是9则降低为8并标记为1在进行逐项相乘最后再做一次加法即可然后像大数加法一样进行进位。由于按照乘法法则每位乘法后都会向前进位因此为了运算方便每多做一次乘法可以在该字符串的后面多补一个0(在调用numsm()时对引用的短字符串进行长度计算通过长度来判断要在最后补几个0)最后进行累加即可依次类推直至该短字符串全部进行乘法运算即可最后
27、对结果进行进位输出即可。423大数的除法与大数乘法相同大数除法是通过减法进行模拟先比较两个数组的长度长度之差即是需要进行比较的的次数而每次比较时作差的次数即是商的某一位的位数每次从最高位进行比较一一对字符进行作差直至短的数组均被减完为止最后调用退位函数进行退位即可(此时需要注意的是被除数在作差的过程中可能会出现最高位在下一次进行比较时要被除数的第一位要以第一非零元素算起保证每次比较都能从两个数字的非零元素开始作差)每次比较对除数数组的每一位进行后移移位第一位补0使得其与被除数的非零第一位元素对齐因此每次比较都会使得除数的长度加1最后结束循环的条件即是两个数组的长度相等并且被除数要小于除数。最后
28、就是对商的输出了只须找到记录商的数组中第一个非0元素对后面的所有值进行输出即可。16运动会分数统计系统丽水学院C语言课程设计总结报告第五章不足之处该计算器程序基本上实现了简单的计算机功能在溢出判别输入错误提示等方面有很好的完善应用简单的算法实现了大数的加减乘除用栈实现了小数的四则运算以及简单的N次方运算阶乘和累加。但是在栈的错误输入方面有很大的缺陷由于栈的组成原理很难做到在每一次入栈时都能准确进行判别是否出错一旦出错栈内还有元素栈外元素又无法压入容易造成程序卡壳无法进行继续操作或者造成死循环无法结束。另外在阶乘的算法设计多有不当阶乘的算法过于简单由于没有设计大数的阶乘算法最高的运算次数只有12
29、次无法实现较大位的阶乘运算。在结构布置上菜单的规划不太合理由于算法不同分为小数算法和大数算法因此功能也不是很齐全无法对所有的运算函数进行循环调用在模拟菜单的来返即循环操作的时候使用的函数嵌套使得最后的退出过程过于繁琐若是在判定是否继续的时候返回主菜单则无需担心若是在大数菜单或小数菜单想直接返回主菜单则会使得多次调用主菜单这就意味着若是想退出主菜单需要多次输入主菜单的选项6才行为了尽量弥补这一缺陷在出现多次嵌套时会提示继续输入选项6防止用户觉得程序出错。界面的设置也不是很美观只是用了简单的列表式布局。在算法上虽然已经对代码进行了尽可能的精简但也并不是最优化的因此还有待提高。17运动会分数统计系统
30、丽水学院C语言课程设计总结报告丽水学院工学院C语言课程设计评分表班级:计16学号16103330127(24)姓名:徐明志机器编号:5评价项目序评定标准号比例得分评分实际1完成系统的设计系统能够正确运行。25作品答2输入测试数据能够得到正确的结果并且能够能对输入内容进行数据合法性检测并进行相应的异常处理。253辩成绩4程序结构合理有充足的(30%以上)注释。12在正确的基础上提高效率或者增加创新的一些功能。135对问题的理解及对源程序的理解。25合计18c语言课程设计总结报告附表2C+(或C)语言课程设计语言课程设计总结报告C+(或C)语言课程设计总结报告学生学号专业姓名班级所属学期一、项目介
31、绍与设计目的项目介绍:这是一个“学生通讯录管理系统”的程序。它具有如下功能(1)产生一个菜单选项根据用户的需要进行选择进行相关的操作;(2)对通讯录的内容进行创建(输入学生的学号姓名以及电话号码)(3)显示通讯录的全部记录(4)按学号查询学生的相关信息(5)按学号删除通讯录的记录(6)对通讯录的内容进行修改设计目的:(1)巩固c语言的基础知识进一步了解c语言的内容(2)加深对数组、指针等重点难点的理解(3)掌握C语言编程和程序调试的基本技能(4)利用C语言进行基本的软件设计(5)激发学习兴趣养成良好的编程习惯二、项目环境要求在vc环境下都可运行三、项目功能模块本程序中主要定义了七个函数:(1)
32、主函数voidmain/_能够调用其他的功能的函数,在switch语句中根据用户的选择调用其他功能的函数。_/(2)voidmyprint/_显示菜单选项供用户选择_/(3)voidmycreate(charnumN12,charnameN12,chartelN15,int_n)/_创建通讯录的函数;输入学生的学号、姓名电话号码当输完最后一个学生的电话时按其他任意键结束输入(除了数字以外)并统计通讯录中实际记录数。_/(4)voidmydisplay(charnumN12,charnameN12,chartelN15,intn)/_显示通讯录的内容的函数_/(5)voidmysearch(ch
33、arnumN12,charnameN12,chartelN15,intn)/_按学号查询通讯录的函数根据用户输入的学号查找是否有该学生如果有的话就输出学号姓名电话号码;如果没有的话就输出“无此人”。_/(6)voidmydelete(charnumN12,charnameN12,chartelN15,int_n)/_删除通讯录的记录的函数;根据用户输入的学号查找要删除的人找到的_/话就删掉此人总记录数减少一个(7)voidmymodify(charnumN12,charnameN12,chartelN15,intn)/_修改通讯录内容的函数;根据用户输入的学号查找是否有此人如果有的话就从新输入
34、学生的信息没有的话就输出“无此人”。_/四、小组成员名单及分工情况(要求包括小组成员名单、工作分配及小组各成员贡献度)本程序是由我一个人编写完成。五、程序用户名及密码本程序无六、体会与感想通过这次编程实践巩固了c语言的知识对c语言的内容有了进一步的了解增强了动手能力感受到了c语言的奥妙找到了学习编程的乐趣。同时在编程过程中也发现了自身学习态度的问题。由于上学期上课没认真听讲课后又没及时花时间去复习造成了许多知识的缺漏很多知识不能很好的运用编写过程面临困难。事实告诫了我:今后上课一定要认真听讲及时复习多动手去编程增强实践能力。七、指导教师意见指导教师(签名):年注:该表格由学生填写内容采用小四号
35、宋体。月日源代码:/_学生通讯录管理系统能够实现对通讯录的内容进行创建、显示、查询、删除以及修改等功能_/#include<stdio.h#include<string.h#include<conio.h#include<ctype.h#defineN100voidmyprint;voidmycreate(charnumN12,charnameN12,chartelN15,int_n);voidmydisplay(charnumN12,charnameN12,chartelN15,intn);voidmysearch(charnumN12,charnameN12,cha
36、rtelN15,intn);voidmydelete(charnumN12,charnameN12,chartelN15,int_n);voidmymodify(charnumN12,charnameN12,chartelN15,intn);/_主函数_/voidmaincharchoose,yes_no,numN12,nameN12,telN15;intn=0;domyprint;choose=getch;switch(choose)case'1':mycreate(num,name,tel,&;n);break;case'2':if(n=0)printf(“
37、n无记录请创建通讯录!n”);break;mydisplay(num,name,tel,n);break;case'3':if(n=0)printf(“n无记录请创建通讯录!n”);break;mysearch(num,name,tel,n);break;case'4':if(n=0)printf(“n无记录请创建通讯录!n”);break;mydelete(num,name,tel,&;n);break;case'5':if(n=0)printf(“nbreak;mymodify(num,name,tel,n);break;case'0
38、':break;default:printf(”n%c为非法选项!n“,choose);if(choose='0')break;printf(”n要继续选择吗(Y/N)?n“);doyes_no=getch;while(yes_no!='Y'&;&;yes_no!='y'&;&;yes_no!='N'&;&;yes_no!='n');while(yes_no='Y'&;&;yes_no='y');无记录请创建通讯录!n”);/_定义显示菜单界面的函数_/voidmyprint
39、printf(“请输入选项编号(0-5):n”);printf(“1创建通讯录n”);printf(“2显示通讯录n”);printf(“3查询通讯录n”);printf(“4删除通讯录中的记录n”);printf(“5修改通讯录n”);printf(“0退出n”);/_定义创建通讯录的函数_/voidmycreate(charnumN12,charnameN12,chartelN15,int_n)inti=0;chartempnum12,tempname12,temptel15;printf(“n请输入六十三百一、章七共书本这啦泪掉都心伤去死病为因小孵别用法办想就个虎秋送蛋下生来配交公和母家
40、让叔大邱给子鸽这把他后”然。亮般一璃琉睛眼只两泽光的金紫蓝似出发很是头疼只能去向其他人寻求帮助在别人的帮助和提示下我编完了修改程序但编译时老是容易出错修改后的内容将文本内的信息全部覆盖了。困难之时我们组的其他人帮助了我完成了修改和删除。这样整个程序基本上全部完成了就剩下完善工作了。我们组写了两个程序最后两个程序相互组合互补大功告成虽然设计时完成了但是我觉得其中还是由一些不足之处1.警告句。程序中缺少一些警告句?例如:“是否真的删除?y/n?”。2.重名的情况。由于考虑的不够周全没有设计遇到重名的情况该怎么处理。3.选择单一。我们设计的程序中只设计了按名字选择进行操作忽略了重名的这种情况。虽然整个程序完成了都是还有很多不完善的地方希望自己以后办事的时候要认真、仔细、考虑周全。短短的三周课程设计结束了但是这段时间里我又学到了更多C语言的知识?如:对象数组、string类、以及文件流等同时我也被提醒以后办事的时候要认真仔细、考虑周全也意识到了团队精神和互帮互助的重要性。这一点会让我终生受益。通过三周的课程设计我觉得自己肚子里的墨水多了收获第 36 页 共 36 页