收藏 分销(赏)

c语言通讯录专业课程设计报告模板.doc

上传人:天**** 文档编号:4465754 上传时间:2024-09-23 格式:DOC 页数:34 大小:183.50KB 下载积分:12 金币
下载 相关 举报
c语言通讯录专业课程设计报告模板.doc_第1页
第1页 / 共34页
c语言通讯录专业课程设计报告模板.doc_第2页
第2页 / 共34页


点击查看更多>>
资源描述
c语言通讯录专业课程设计报告模板 青岛工学院 C语言课程设计报告书 题 目 通讯录管理系统 学生姓名 指导教师 姜琴 学 院 信息工程学院 专业班级 软件工程2012级1班 组内分工 姓名 主要任务 占系统比例 程序的总体构思,写主函数,程序的调试 25% 写visit函数,分析程序代码结构,调试程序 25% 分析程序需求功能,写modifymenu函数调试程序 25% 写found函数,收集资料解决难点,调试程序 25% 目 录 1 前言 1 2 需求分析 2 3 模块设计图 3 4 NS流程图清单 4 5 存储结构及函数说明 5 6 课程设计结果································································8 7 实践心德体验·······························································9 8 源代码···························································10 1 前言 随着互联网的蓬勃与移动设备的发展,越来越多的联系人信息需要我们储存。不管是个人,还是企业,都需要一个功能齐全,稳定,快捷的通讯录系统来管理联系人资料。 现在我们要用c语言写一个简易的通讯录管理系统,实现通讯录的基本功能。由于我们学识浅薄,我们只能把程序简单化,太复杂的功能也无法实现。在此程序中只实现了创建、修改、删除的基本功能;在修改于删除里面带有查询功能,来查询需要修改于删除的对象。而且我们还参考了《c语言程序设计与应用》 与百度上的一些资料。 程序功能有限,又不好的地方尽请谅解。 2 需求分析 首先进入系统检测文件夹中是否有相关txt文档,有进入通讯录系统,没有创建一个txt文档用来存储联系人姓名; 建立一个通讯录,包括联系人姓名、电话号码、号,并保存在txt文档中; 能够根据联系人姓名来修改和删除联系人的所有信息,并修改保存在txt文档中的联系人; 可从主界面直接退出系统,下次使用时可导入上次存储的联系人信息、并进行操作。 3 模块设计图 此为通讯录重要函数流程: 通讯录管理系统 创建、读取文件函数loadfile() 创建通讯录系统found() 浏览通讯录系统visit() 推出通讯录系统exit(0) 删除通讯录系统deleted() 修改通讯录系统modifymenu() menu() Lodefile() Menu() exit(0) case5 case4 case3 case2 case1 deleted() modifymenu() visit() found() 4 NS流程图清单 : File *fp,打开该文件 是 是否有tellnfo 否 导入文件里面 创建一个文件 的联系人 关闭文件 2. found函数 输入联系人信息 NO++ 调用savefile函数 是 是否继续 否 调用found函数 getsch(); menu(); 5 存储结构及函数说明 头文件有: #include<> #include<> #include <> #include <> struct record 定义一个结构体,用来存储联系人的信息 { char name[20]; char tel[20]; char [20]; }TelInfo[500]; int NO; 定义变量NO,用来记入联系人的编号 FILE *fp; 定义文件指针 int loadfile(); 创建、读取文件 void savefile(); 保存创建的联系人到文件中 void menu(); 主菜单函数 void found(); 创建联系人函数 void modifymenu(); 修改联系人信息函数 void deleted(); 删除联系人函数 void visit(); 游览联系人函数 (1) 主函数main():调用loadfile()(/*创建文件,读取文件*/)函数;创建一个永真的条件while(1)以便循环使用;调用menu()(主菜单函数); (2) 创建、读取文件函数loadfile():定义一个文件指针,把0赋给NO;先判断电脑里是否有此文件,如果没有创建一个文件,如果有导入此文件中的信息; (3) 主菜单函数menu():在住界面显示所有功能,包括创建、游览、修改、删除、退出系统;用switch语句来控制我们的选择并进入相应的函数; (4) 创建联系人函数found():输入联系人的姓名、电话号码、号码,每输入一个联系人的资料NO就加一,并调用savefile()函数存储此联系人; (5) 保存创建的联系人函数savefile():用fwrite语句来存储已建的联系人; (6) 游览联系人函数visit():先判断NO是否为0,如果为0,则没有联系人,如果不为0,则依次按存储顺序输出联系人信息; (7) 修改联系人函数modifymenu():定义一个数组name[20];判断NO是否为0,不为0则显示所有联系人的姓名,然后输入要修改联系人的姓名,用strcmp语句来找到你需要修改的联系人并显示出来;确定修改此联系人后用swtich语句来控制需要修改的地方,包括姓名、电话号码、号码;调用savefile()函数存储; (8) 删除联系人函数deleted():定义一个数组name[20];判断NO是否为0,不为0则显示所有联系人的姓名,然后输入要删除联系人的姓名,用strcmp语句来找到你需要删除的联系人并显示出来;确定删除后,把此联系人以后的联系人的NO编号都向前移一位,从而把此联系人删除,用循环控制语句为“TelInfo[j]=TelInfo[j+1];”; 6 课程设计结果 在写程序时,我们尽力做到美观、可操作性强。每一个函数都有它的功能,并做到通用函数的循环调用,减小了程序的复杂度,让程序看上去结构层次分明。我们用文件形式来存储联系人信息,并保存,方便下次的使用,认程序更稳定。 程序虽然简陋,但能完美运行,一下为程序的部分界面: 7 实践心得体会 · 通过这次通讯录的设计,我对很多的函数有了新的认识,也学会了运用多种函数,明白了写软件的基本过程和基本方法。 · 在设计的过程中遇到了很多的困难,有程序上的也有实验报告上的,尤其是软件在一次一次的调试失败后,对我们打击很大。但最后我们还是咬牙让自己坚持了下来,通过小组的不断试验和讨论以及同学们的帮助,我们总算顺利的完成了程序设计。虽然在调试过程中遇到了许多困难,但当调试成功时那种喜悦的感觉,没有什么东西可以代替。在编写过程中我们都发现我们有许多的知识漏洞和缺陷,需要进一步努力来不断完善自己。 · 总之,此次过程不仅给我很多好的经验,同时加深了同学间的关系,增强了团队解决问题的能力。 8 源代码 #include<> #include<> #include <> #include <> struct record { char name[20]; char tel[20]; char [20]; }TelInfo[500]; int NO; FILE *fp; int loadfile(); void savefile(); void menu(); void found(); void modifymenu(); void deleted(); void visit(); int main() { loadfile(); while(1) menu(); } int loadfile() /*创建文件,读取文件*/ { FILE *fp; if((fp=fopen("","r"))==0) { printf("\n\n\n\n\n\t\t\t 电话簿文件不存在"); if ((fp=fopen("","wb"))==0) { printf("\n\t\t\t\t建立失败"); exit(0); } else { printf("\n\n\t\t\t 电话簿已建立"); printf("\n\n\t\t\t 按任意键进入主菜单"); getch(); NO=0; return(NO); } exit(0); } fseek(fp,0,2); /**/ if (ftell(fp)>0) { rewind(fp); for(NO=0;!feof(fp)&&fread(&TelInfo[NO],sizeof(struct record),1,fp);NO++); printf("\n\n\n\n\n"); printf("\n\t\t 文件导入成功!!! "); printf("\n\n\t\t\t\t按任意键返回主菜单"); getch(); return(NO); } else { printf("\n\t\t 没有可以访问的数据!!! "); printf("\n\n\t\t\t 按任意键返回主菜单进行添加"); getch(); NO=0; return(NO); } } void menu() /*主菜单*/ { int choice; system("cls"); printf("\n\n\t ********************欢迎使用通讯录系统********************\n"); printf("\n\t\t **********创建通讯录请按:1**********\n"); printf("\n\t\t **********游览通讯录请按:2**********\n"); printf("\n\t\t **********修改通讯录请按:3**********\n"); printf("\n\t\t **********删除联系人请按:4**********\n"); printf("\n\t\t **********退出通讯录请按:5**********\n"); printf("\n\t ********************这是通讯录的主菜单********************\n"); printf("\n\n\t\t 请输入你的选择[ ]\b\b"); scanf("%d",&choice); switch(choice) { case 1: found(); break; case 2: visit(); break; case 3: modifymenu(); break; case 4: deleted(); break; case 5: system("cls"); printf("\n\n\n\n\n\n\n\t\t 谢谢使用此通讯录系统,( ^_^ )/~~拜拜!!\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); exit(0); default: menu(); } } void found() /*创建通讯录*/ { system("cls"); printf("\n\t\t**************** 请输入联系人信息 ****************\n"); printf("\n\t\t 输入姓名:"); scanf("%s",&TelInfo[NO].name); printf("\n\t\t 输入联系电话:"); scanf("%s",&TelInfo[NO].tel); printf("\n\t\t 输入号码:"); scanf("%s",&TelInfo[NO].); NO++; savefile(); printf("\n\t\t 是否继续添加(y/n):[ ]\b\b"); if(getch()=='y') found(); else system("cls"); printf("\n\n\n\n\n\n\n\n\t\t\t 已成功保存所有联系人\n\n\t\t\t 请按任意键返回主菜单"); getch(); menu(); } void savefile() { int i; if((fp=fopen("","wb"))==0) printf("\n\t\t文件打开失败!\n"); for(i=0;i<NO;i++) if(fwrite(&TelInfo[i],sizeof(struct record),1,fp)!=1) printf("\n\t\t写入文件错误!\n"); fclose(fp); } void visit() /*游览通讯录*/ { int i; system("cls"); if(NO!=0) { printf("\n\t\t*************** 以下为通讯录所有信息************"); for(i=0;i<NO;i++) { printf("\n\n\t\t %d):",i+1); printf("\n\t\t 姓 名: %s",TelInfo[i].name); printf("\n\t\t 联系电话: %s",TelInfo[i].tel); printf("\n\t\t 号码: %s",TelInfo[i].); } printf("\n\t\t************************************************"); } else printf("\n\n\n\n\n\n\n\n\n\t\t\t 通讯录中无任何记录"); printf("\n\n\t\t\t 请按任意键返回主菜单进行添加"); getch(); menu(); } void modifymenu() /*修改通讯录*/ { int mark=0; int i,k; int a=0; int t=0; char choice; char name[20]; struct record modify; system("cls"); if(NO!=0) { printf("\n\n\n\t\t以下为所有联系人的姓名:\n\n"); printf("\t\t************************************************\n\n"); for(i=1;i<=NO;i++) { printf("\t\t%s\n",TelInfo[i-1].name); } printf("\n\t\t************************************************\n"); printf("\n\t\t请输入您要修改的姓名:"); scanf("%s",name); system("cls"); for(i=a;i<NO;i++) { if(strcmp(TelInfo[i].name,name)==0) { k=i; mark=1; modify=TelInfo[i]; system("cls"); printf("\n\t\t********** 以下是您将修改的联系人信息 **********"); printf("\n\n\t\t 姓 名: %s",TelInfo[i].name); printf("\n\t\t 联系电话: %s",TelInfo[i].tel); printf("\n\t\t 号码: %s",TelInfo[i].); printf("\n\n\t\t 是否继续?y/n[ ]\b\b"); if(getch()=='n') menu(); else { printf("\n\t\t 选择您要修改的选项:"); printf("\n\n\t\t\t(1)姓 名"); printf("\n\t\t\t(2)联系电话"); printf("\n\t\t\t(3)号码"); printf("\n\t\t\t(4)返 回\n\n"); choice=getch(); switch(choice) { case '1': printf("\n\t\t\t请输入姓 名:"); scanf("%s",TelInfo[i].name); break; case '2': printf("\n\t\t\t请输入联系电话:"); scanf("%s",TelInfo[i].tel); break; case '3': printf("\n\t\t\t请输入号码:"); scanf("%s",TelInfo[i].); break; case '4': modifymenu(); break; default: modifymenu(); } system("cls"); printf("\n\t\t 您的修改结果为:"); printf("\n\n\t\t 姓 名: %s",TelInfo[i].name); printf("\n\t\t 联系电话: %s",TelInfo[i].tel); printf("\n\t\t 号码: %s",TelInfo[i].); printf("\n\n\t\t 确认修改?y/n[ ]\b\b"); if(getch()=='n') { TelInfo[i]=modify; printf("\n\t\t 修改未保存!\n"); } else { printf("\n\t\t 修改成功!\n"); savefile(); } mark++; printf("\n\t\t 是否继续修改(y/n)\n"); if(getch()=='y') modifymenu(); else menu(); } } } if(mark==0) { printf("\n\n\n\t\t\t\t没有该联系人的纪录"); printf("\n\n\t\t\t\t是否继续修改(y/n)[ ]\b\b"); if(getch()=='y') modifymenu(); } } else { printf("\n\n\n\n\n\n\n\n\n\t\t\t 通讯录中无任何记录"); printf("\n\n\t\t\t 请按任意键返回主菜单进行添加"); getch(); menu(); } } void deleted() /*删除联系人*/ { int i,j; int mark=0; char name[20]; system("cls"); if(NO!=0) { printf("\n\n\n\t\t以下为所有联系人的姓名:\n\n"); printf("\t\t************************************************\n\n"); for(i=1;i<=NO;i++) { printf("\t\t%s\n",TelInfo[i-1].name); } printf("\n\t\t************************************************\n"); printf("\n\t\t 请输入要删除联系人姓名:"); scanf("%s",name); system("cls"); for(i=0;i<NO;i++) { if(strcmp(TelInfo[i].name,name)==0) { printf("\n\t\t 以下是您要删除的联系人纪录:"); printf("\n\n\t\t 姓 名: %s",TelInfo[i].name); printf("\n\t\t 联系电话: %s",TelInfo[i].tel); printf("\n\t\t 号码: %s",TelInfo[i].); printf("\n\n\t\t 是否删除(y/n)[ ]\b\b"); if(getch()=='y') { for(j=i;j<NO-1;j++) TelInfo[j]=TelInfo[j+1]; NO--; mark++; printf("\n\t\t 删除成功\n"); savefile(); printf("\n\t\t 是否继续删除(y/n)[ ]\b\b"); if(getch()=='y') deleted(); else menu(); } else menu(); } continue; } if(mark==0) { printf("\n\n\n\t\t\t\t没有该联系人的纪录"); printf("\n\n\t\t\t\t是否继续修改(y/n)[ ]\b\b"); if(getch()=='y') deleted(); } } else { printf("\n\n\n\n\n\n\n\n\n\t\t\t 通讯录中无任何记录"); printf("\n\n\t\t\t 请按任意键返回主菜单进行添加"); getch(); menu(); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服