C语言程序设计课程设计

上传人:m**** 文档编号:174458336 上传时间:2022-12-15 格式:DOCX 页数:23 大小:178.51KB
返回 下载 相关 举报
C语言程序设计课程设计_第1页
第1页 / 共23页
C语言程序设计课程设计_第2页
第2页 / 共23页
C语言程序设计课程设计_第3页
第3页 / 共23页
点击查看更多>>
资源描述
通讯录信息管理系统设计计算机学院 计算机科学与技术专业1.课程设计的目的学习了 C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握 C 语言的语法特点、及其数据结构,提高自身编写程序的能力。通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便 减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。此外通过课程设计 提高逻辑思考能力和解决实际问题的能力。程序设计中,语句的语法和常量变量 的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通 过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误, 可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学 习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养, 又有一个不怕失败、百折不挠品格的锻炼。通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。本程序设计具有通讯信息的录入,进行保存、查找、删除等功能,操作界 面简洁美观,易于操作。 程序用了条件、循环、指针、结构体等知识点,综合 了文件的打开和保存编写的。软件运用菜单实现交互式 管理,用户轻松的按键 既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。通过对通讯录理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基2.设计方案论证21 设计思路建立一个函数,用来添加、显示、删除、查询、修改、保存通讯录等信息, 完成通讯录的功能。主函数可以调用六个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、退出系统等功能。在主函数中可以以1、2、3、4、5、6数字键分别可以执行某个功能模块。2.2程序设计1定义数据类型建立函数typedef structchar Num;/编号char Name10;/姓名char Tel15;/电话号码char Email20;/邮箱char age8;/年龄char adds20;/住址Person;2.2.2 主函数及其流程图定义主函数 main() 和一系列的功能函数,只有通过这些函数才可实现程序的功能。每次使用都会调用主函数。主函数主要是利用 switch 语句对数据进行处理,流程图如下:Y选择1NY选择2NY选择3N结Y束选择4NY选择5NY选择6N开始添加记录删除记录修改记录保存记录显示记录查询记录.厶2.2.3 增加函数及其流程图2.2.3.1.添加通讯录记录流程图:开始223.2.显示通讯录记录流程图:开贻mt i; i二 1rfr输岀一个记录/f 结束2.2.3.3删除通讯录记录流程图2.2.3.4.查询通讯录记录流程图:输只查询的姓名 jrf输龙删除的鼎JJfII亡二甸断通讯录中是否有此忘二N:III/输出萤通讯录中汝有此疋 /IIJI显示请人所有记录输出嘔讯录中没有此Qr厂 、 ; 结東 i223.5.修改通讯录记录流程图:X!输入修改的姓名/二二宙断通讯录中是否有此丈二| FII1/输出“通讯录中没有此人种/JJJf依次输入修改的内容2.3 源程序#includevstdio.h#includevstdlib.h#includevstring.h typedef struct编号char Num;char Name10;/姓名char Tel15;/电话号码char Email20;/邮箱char age8;/年龄char adds20;/住址char relation40;Person;Person pe80;int menu_select()char c;/关系dosystem(cls); printf(tt * 通讯录* n)printf(tt1 n);printf(ttj1.添加记录|n);printf(tt|2.显示记录| n);printf(tt|3.删除记录| n);printf(tt| 4.查询记录|n);printf(tt| 5.修改记录|n);printf(tt| 6.保存记录|n);printf(tt| 0.退出程序|n);printf(tt1 n);printf(tt 请您选择(0-6):); c=getchar();while(c6); return(c-0);int Input(Person per,int n)int i=0;char sign,x10; while(sign!=n&sign!=N) printf(t 编号:”); scanf(t%d,&pern+i.score); printf(t 姓名:”); scanf(t%s,pern+i.name); printf(t 年龄:”); scanf(t%s,pern+i.age); printf(t 电话号码:”); scanf(t%s,pern+i.num);printf(t 通讯住址:); scanf(t%s,pern+i.adds);printf(t 电子邮箱:); scanf(t%s,pern+i.email);printf(“t 关系:”); scanf(“t%s”,pern+i.relation);gets(x);printf(nt 是否继续添加?(Y/N);scanf(t%c,&sign);i+;return(n+i);void Display(Person per,int n)int i;printf(n);/*格式*/printf(编号姓名年龄关系电话号码通讯地址电子邮箱n);printf(n);for(i=1;i1&i%10=0)printf(tn);printf(t);system(pause);printf(tn);printf(n);system(pause);int Delete_a_record(Person per,int n)char s20;int i=0,j;printf(t 请输入想删除记录中的名字:); scanf(%s,s);while(strcmp(peri.name,s)!=0&in) i+; if(i=n)printf(t通讯录中没有此人!n); return(n);for(j=i;jn-1;j+)strcpy(perj.num,perj+1.num); strcpy(perj.name,perj+1.name); strcpy(perj.age,perj+1.age); strcpy(perj.relation,perj+1.relation); strcpy(perj.adds,perj+1.adds); strcpy(perj.email,perj+1.email); perj.score=perj+1.score;printf(ttt 已经成功删除!n);return(n-1);void Query_a_record(Person per,int n)int m;printf(tn请选择查询方式:n);printf(t |1 n);printf(t | 1姓名 | n);printf(t | 2电话 | n); printf(t| 3地址 | n);printf(t| 4返回 | n);printf(t 11 n);printf(请选择:”);scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) printf(输入错误,请重新选择:”);scanf(%d,&m);if(m=1)char s20;int i=0;printf(t 请输入想查询的姓名:); scanf(t%s,s);while(strcmp(peri.name,s)!=0&in) i+; if(i=n)printf(t通讯录中没有此人!n); return;printf(t 此人编号:dn,peri.score); printf(t 此人年龄:%sn,peri.age);printf(t 与我的关系:sn,peri.relation); printf(t 电话号码:sn,peri.num); printf(t 通讯地址:%sn,peri.adds);printf(t 电子邮箱:sn,peri.email); ;if(m=2)char s20;int i=0;printf(t请输入想查询的电话:”);scanf(t%s,s);while(strcmp(peri.num,s)!=0&in) i+;if(i=n)printf(t通讯录中没有此人!n); return;printf(t 此人编号:dn,peri.score); printf(t 此人姓名:%sn,peri.name); printf(t 此人年龄:%sn,peri.age);printf(t 与我的关系:sn,peri.relation); printf(t 通讯地址:%sn,peri.adds);printf(t 电子邮箱:sn,peri.email); ;if(m=3)char s20;int i=0;printf(t 请输入想查询的地址:); scanf(t%s,s);while(strcmp(peri.adds,s)!=0&in) i+; if(i=n)printf(t通讯录中没有此人!n); return;printf(t 此人编号:dn,peri.score); printf(t 此人姓名:%sn,peri.name); printf(t 此人年龄:%sn,peri.age);printf(t 与我的关系:sn,peri.relation); printf(t 电话号码:sn,peri.num);printf(t 电子邮箱:sn,peri.email); ;void Change(Person per,int n)char s20;int i=0;printf(t请输入想修改的记录中的名字:”);scanf(%s,s);while(strcmp(peri.name,s)!=0&in) i+; if(i=n)printf(t通讯录中没有此人!n); return;printf(t 编号:”); scanf(t%d,&peri.score);printf(t 姓名:”); scanf(t%s,peri.name);printf(t 年龄:”); scanf(t%s,peri.age); scanf(t%s,peri.relation);printf(t 关系:”); printf(t 电话号码:”); scanf(t%s,peri.num);printf(t 通讯住址:); scanf(t%s,peri.adds); printf(t 电子邮箱:); scanf(t%s,peri.email); printf(t 修改成功!);void WritetoText(Person per,int n)int i=0;FILE *fp;char filename20;printf(t保存到文件n);printf(t请输入所保存的文件名:”); scanf(t%s,filename); if(fp=fopen(filename,w)=NULL)printf(t无法打开文件n);system(pause);/定义文件指针/定义文件名/输入文件名return;fprintf(fp,11 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1 1 Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx讯录*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* f f *n);fprintf(fp, 编号姓名 年龄 关系 电话号码通讯地址电子邮箱n);fprintf(fp,n);while(in)fprintf(fp,%-3dt%-6st%-3st%-40st%-13st%-20st%-20sn,peri.score,peri.name,peri .age,peri.relation,peri.num,peri.adds,peri.email);i+;fprintf(fp,n);fprintf(fp,11 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1 1 Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx%d条记录/关闭文件/主函数*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* t t *n,n);fclose(fp); printf(” 保存成功!n);void main()int n=0;for(;)switch(menu_select()case 1:printf(nt添加记录到通讯录5);添加记录n=Input(pe,n);break;case 2:printf(nttt通讯录记录表5);显示记录Display(pe,n);break;case 3:printf(nt从通讯录中删除记录5);n=Delete_a_record(pe,n);/删除记录printf(t);system(pause);break;case 4:printf(nt在通讯录中查找记录5);Query_a_record(pe,n);/查找记录printf(t);system(pause);break;case 5:printf(nt修改通讯录中的记录5);Change(pe,n);/修改数据printf(t);system(pause);break;case 6:printf(nt 保存功能5);WritetoText(pe,n);/保存数据printf(t);system(pause);break;case 0:printf(ntt谢谢使用,再见!n);结束程序printf(ntt);system(pause);exit(O);3 .设计结果与分析将源程序编译、链接后生成可执行文件,运行该文件会看到如图8所示界面。1-添迦远邈2 -显己孚:3.删除记录4- 査谨九己录5- 修决记录6- 探存记妻 0-退出程岸请您选S =运行主函数时,首先调用函数menu();,该函数主要是利用输出函数printf 进行输出,其结图所示。3.2增加信息3.2.1输入1显示添加通讯录界面。加示搐拿出SWIMH韋录薬录養请您选扌李汛9 誉i己录到逋计L录oom適-i住址理折江宁波j 占口井目=?u.c 3_ lcX2G -是 否色曲童卖添加言 mo.这一函数实现了对字符串赋值的功能1。系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。每次输入结束后,系统输出询问是否继续添加 的信息,然后执行switch语句,如果返回值是“y”,则继续执行addnewcard() 函数添加用户,否则返回主菜单。3.2.2输入2显示显示通讯录界面。12 3 4 5 6 0请您选择0 6?:2通讯录记录希编号姓驾年龄电话号码通迅地址电子邮箱味超1234567896123459874 11122233344 0123&98547.comi 区穿 han Ina&cn kxxk12 3.COA xjnhyaJiiDO cn乐 20222620这一函数实现了对字符串赋值的功能2。系统提示通讯录使用者输入相应 信息,然后用scanf函数获取输入数据。,然后执行switch语句,如果返回值是 “y”,则继续执行函数显示,否则返回主菜单。3.2.3在主菜单输入3显示删除通讯录界面。录录录录 记记记记记记程 却示脣改存田 添显删查修保退12 3 4 5 6 0录录录录录it 记记记记记记程 加示常改存岀 济艮删京修保込鬻燼鑑驟的名字:请您选择9-6=3从通御录申删悔记录请输入想删除乜录审的名字=邹善 己经成功删除M 请按任意犍继续.在主菜单界面输入数字“3”,执行deletecard()函数删除用户。当通讯录 执行者输入要删除学生的姓名,系统会搜索数据库并将搜索结果输出。然后征求 确认。每次删除成功后系统会询问是否继续删除,然后执行相应操作。删除后, 通讯录里的显示记录显示:记记记记记记程加示改存岀丽显刑查修保退1 2 3 4 -LJ 6 0 kJ-購膵W电话号码1W11 电禅隗2612345678962911122233344200123698547|大州 宀丁利省删除通讯录记录时首先选择出名字,其次在显示删除后程序才真正的删除, 再进入显示界面就不会再显示原来所谓信息xueqile(12b.con xnhvaJ3.2.4在主菜单输入4显示查询通讯录界面。N Jt N JC Jt甫 I” 亭 Jt NX NX录录录录录 己己己己己己呈 加示曙譬出 添显豐保退 2 3 5 G 0请您迭扌華5-3 g在:!庫讦I录中査找记录谯选捋=査:旬方式:1 姓名2 电壬舌3 世班令返回青选择匸这一函数提示通讯录管理人员可以有姓名、电话、地址三种输入方式,调用scanf 函数获取输入信息,然后执行if语句,则会显示查询用户信息信息;此外在此 操作过程中选择1、2、3、分别可以按照姓名、电话号码、家庭住址进行快速查 询。3.3.5在主菜单输入5显示修改通讯录界面。录录录录录 讨记记记记记程 加一亦翳改存岀 添显删查修保退1 Z 3 4 5 G S请您远样 = 6保存功起逐拄到対牛1A所保存的文件名:tongxublu.txt 呆存成功會请按任复键继续- 这一函数实现了对字符串赋值的功能5。系统提示通讯录使用者输入相应 信息,然后用scanf函数获取输入数据。每次输入结束后,系统输出询问是否继 续修改信息,然后执行if语句,如果返回值是“y”,则继续执行修改信息,否 则返回主菜单。修改后,通讯录里的显示记录:录录录录录 _d己己一亡己己王 M/.- -1/- n.- IZ- 加一不垢改存岀 榻显删查修保退12 3 4 5 6 0通讯录记录義漏号姓名年龄 电话号码 通讯地址电子邮瑕5XXX1111111111ilXXXXXXXXXXXXXXXXXXXX3 饶奇2011122233344武汉科谟丈学xxxxP4 弓趙2&0123699547湖北智鄂井 | 市xnhPyahoo-cn聶鬲丢矗纂二I:3.3.6在主菜单输入6显示保存通讯录界面。录录录录厅 己己己己己己呈 加示醫改存出 淪显刪盍修保退 1 2 4 5 fi 0请您选择C9-6 = t保存功能txt诫输天所燥存的文件名:tontfxiJihlu. 呆存成功豊请按任包键继续.进入保存功能后,系统会调用void Wri tet oTex t( Person per,in tn)函 数并且提示通讯录管理者关于保存的信息进行记录自动保存。从而便于我们直接查 询。保存后打开tongxunlu.txt文件的截图:tongxublu -记事本丈件迥鯛眄腕查着观翻迸編号 姓名 年龄电话号羽通讯葩扯电子邮箱黑!111111111111昭册翻牆芻奇23111222333武收科常学XMXx123.coni超290123698547xnhyahoo,cn往事如观流水,来者如昂高山!转眼间学习C语言也有半年了。这次的程序实设计实验是对自己进入大学以来学习C语言结果的一 次大检验。自己动手启己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考, 不断查阅资料和上机运行,解决其中大部分问题.当然还存在一些问 题没有解决。相信在以后的学习能够解决好它们。但是,收获还是不 小的,我不仅对C的操作有了进一步的掌握,还了解到了程序设计 的书写风格及其注释的格式。当我选择通讯录这个题目时l开始想运用大链表及指针来完成,但是在慢慢琢磨之后觉得这个S不一定要用链表*于是改变了编程思路。当然还有不少文件的读写问题不过还是通过不断测试之后 顺利解决了。另外一点要说的就是这个程序用了很多的循环,因此对 于循环的控制要+分小心,有时while和do-while的区别也是十分 重要的。还有一点体会就是.书上和老师教的内容是有限的我们需要不 断地靠自己去学习,向他人请教,了解和掌握更多的知识,这样我们才能编出更好的C程序。总体来说,这次 C 语言课程设计还是比较顺利的,虽然最终程 序还存在一些不足,但能在有限的时间里完完整整的完成任务我还是 比较高兴的。最后,要感谢学校为我们提供这次课设机会,也要感谢刘伟老师 的指导和同学们对我的帮助与支持。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!