《程序设计基础学习知识-课程教学设计报告.doc》由会员分享,可在线阅读,更多相关《程序设计基础学习知识-课程教学设计报告.doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-上海应用技术学院课程设计报告课程名称 程序设计基础C语言 设计题目 通讯录 姓 名 季昀杰 专业 电气 班级 14103004 学号 1410300423 指导教师 周兰凤 日期 2015-7-132010-7-16一、目的及要求本课程设计是非计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言课程后进行的一次全面的综合练习。一. 课程设计目的1) 巩固和加深学生对C语言课程的基本知识的理解和掌握;2) 掌握C语言编程和程序调试的基本技能;3) 利用C语言进行基本的软件设计;4) 掌握书写程序设计说明文档的能力5) 提高运用C语言解决实际问题的能力。二. 课程设计要求6) 分
2、析课程设计题目的要求;7) 写出详细设计说明;8) 编写程序代码,调试程序使其能正确运行;9) 设计完成的软件要便于操作和使用,有整齐、美观的使用界面;10) 设计完成后提交课程设计报告和源代码文件的电子文档。二、课程设计内容需求分析通讯录退出系统删除功能修改功能添加功能查询功能删除所有查询需要修改的人查询需要修改的人添加姓名,邮件,邮编,电话号码,QQ查询所有信息查询个人信息按姓名查询按姓名查询按电话号码查询按电话号码查询按QQ查询按姓名查询按电话号码查询修改所要修改的信息确认是否删除通讯录系统功能结构图查询个人信息模块流程图输出信息是是是否否查询方式是否存在否输入QQ输入号码输入姓名按号码
3、查询按姓名查询按QQ查询查询信息是否存在是否存在添加个人信息模块流程图 开始输入姓名 是 输入地址 输入手机号码 否是否为11位整数 是 否输入邮编是否为6位整数 是否为大于7小于11的整数输入QQ号码 是 否 结束 是 是否继续添加 否修改模块流程图开始按姓名查询按号码查询输入姓名输入号码是否存在否是否存在输入查询方式是是是否修改选择修改信息是否继续否是是否继续输入修改项目是输入修改信息是否修改是是否继续是否继续否是否是输入修改项目输入修改信息是结束是否继续修改成功否是删除模块流程图否否删除信息删除内容 删除单个 删除全部 是否删除是否删除查询删除人按电话查按姓名查是否存在否 否是否存在 是
4、 是删除信息删除信息删除信息删除信息三、运行结果添加个人信息模块1.功能介绍(使用说明):本模块旨在添加个人信息,在C盘中建立一个TXT文件用于存储通讯录中的信息,运行本模块,依照流程图一次输入姓名、地址、邮编、邮箱、qq号码即可。2.运行过程:当出现电话号码不为11位时程序会报错。当邮编不为6位时程序会报错当邮件不为xxx时系统会报错当QQ号码不为8,9,10位时系统报错查询个人信息模块功能介绍:该模块旨在通过姓名、号码、QQ三种方式来查询个人信息,程序先检查是否存在该信息,若不存在,则提示重新输入,若存在,则输出相符的个人信息。使用说明:在与界面的人机互动中,按步骤即可查询所需信息。运行过
5、程:按姓名查询按电话号码查询按QQ号码查询修改个人信息模块功能说明:使用户可以修改错误的信息。使用说明:主页面中选择修改信息,然后查询通讯录中联系人的信息,可以按姓名查找或按号码查找,然后显示联系人信息;如果没有联系人的信息,则显示没有该联系人的记录;如果需要修改,选择需要修改的项目,然后输入修改的信息,修改成功后是否继续修改。如果继续修改重复之前的操作 ;如果不修改,则回到主页面。运行过程:按姓名查询修改按电话号码修改选择你所需要修改的项目删除个人信息模块1.功能介绍:此模块用于用户想删除通讯录中的联系人时或清空通讯录时使用,将会把通讯录中的指定数据抹除。2.使用说明:用户在主菜单会看到选择
6、5删除单个和选择6删除所有,选择所需的功能输入数字,若为删除单个则需查询需要删除的人的信息,主界面将会跳转到查询模块,按人名或号码查询,若通讯录中有此人信息,你可选择是否继续删除,选择确定则会将记录除去,请用户谨慎选择。3.运行过程:选择删除单个选择删除全部四、结论及体会经过多天的编写,完成了通讯录这个项目,在此过程中我也体会颇多。首先就是最开始的需求部分,在这部分中我们需要考虑全面,这部分内容为下面奠定了基础。接下来是对于整个流程的思考,在这部分,我们要根据之前的需求来安排我们其中会用到的不同的模块。之后再是不同模块所行使的功能的编写。在这过程中,我体会到了在编程中,细节的重要性,有时候少了
7、一个标点也会导致结果的错误。参考文献1 美 Cay S.Horstmann,Gary Cornell叶乃文,广劲筠译JAVA2 核心技术 卷1:基础知识北京:机械工业出版社20062 美 Cay S.Horstmann,Gary Cornell陈昊鹏,王浩,姚建平译JAVA2 核心技术 卷2:高级特性北京:机械工业出版社2007程序补充#include #include #include #include struct person /每个元素都是结构体类型 char name20;/结构体数组,用于存储姓名 char celephone20; char QQ20; char addr50;
8、char e_mail20; char code20; per500;/定义一个per数组,它有500个元素 int num=0; /*外部变量num为文件中的纪录数*/ FILE *fp; void mainmenu();/*主菜单*/ void newrecord();/新添纪录(括写入到文件)*/void readfromfile();/*读取文件*/ void searchmenu();/*查询菜单*/ void searchbyname();/*按姓名查询*/ void searchbycelephone();/*按手机号码查询*/ void searchbyqq();/*按QQ查询
9、*/ void xiugaimenu();/*修改菜单*/ void xiugaibyname();/*按姓名查找修改*/ void xiugaibycelephone();/*按手机号码查找修改*/ void xiugaixiangmu(int a);/*查找后要修改的项目(分名字和号码) void deletemenu();/*删除菜单*/ void deleteall();/*删除所有信 息*/ void deleteone();/*删除单个*/ void deletebycelephone(); /*按手机号码删除*/ void deletebyname();/*按姓名删除*/ voi
10、d showall();/*输 出 全 部 信 息*/ void main()/*主函数*/ while (1) mainmenu(); void mainmenu() int a; printf(* 【通信录】*n);printf(n);printf(*n);printf(* 选择1:导入信息 *n);printf(* 选择2:新建信息 *n);printf(* 选择3:查询信息 *n);printf(* 选择4:修改信息 *n);printf(* 选择5:删除个人 *n);printf(* 选择6:删除所有 *n);printf(* 选择0:退出系统 *n);printf(n);print
11、f(*n);printf(请选择数字0-6n);loop1: scanf(%d,&a);switch (a) case 1:readfromfile();break;case 2:newrecord();break; case 3:searchmenu();break; case 4:xiugaimenu();break;case 5:deletemenu();break;case 6:deleteall();break;case 7:showall();break;case 0:exit(0); default:printf(对不起!您的输入有误!请重新输入: );getchar();got
12、o loop1; void readfromfile()/*读取文件*/ int i,j,k; if(fp=fopen(c:string.txt,rb)=NULL) printf(ntt*);printf(ntt* *);printf(ntt* *);printf(ntt* 通讯录文件不存在! *); if (fp=fopen(per.bin,wb)=NULL) printf(n* 建立失败! *);printf(n* *);printf(n* *);printf(n*);exit(0); else printf(ntt* 通讯录文件已建立! *); printf(ntt* *);printf
13、(ntt* *);printf(ntt*);printf(ntt 按任意键进入主菜单 ); printf(ntt 请输入您的数字选择: ); scanf(%d,&k);return; exit(0); fseek(fp,0,2); /*文件位置指针移动到文件末尾*/if (ftell(fp)0) /*文件不为空*/ rewind(fp); /*文件位置指针移动到文件开始位置*/ for (num=0;!feof(fp) & fread(&pernum,sizeof(struct person),1,fp);num+); printf(ntt*);printf(ntt* *);printf(nt
14、t* *);printf(ntt* 文件导入成功! *); printf(ntt* *);printf(ntt* *);printf(ntt*);printf(ntt 按1显示所有信息,按2回主菜单! ); printf(tt 请输入您的数字选择: );scanf(%d,&j); if(j=1) showall(); else printf(ntt*);printf(ntt* *);printf(ntt* *);printf(ntt* 文件导入成功! *); printf(ntt* 通讯录文件中无任何纪录! *); printf(ntt* *);printf(ntt* *);printf(nt
15、t*);printf(ntt请按任意数字键返回主菜单); scanf(%d,&i); return; void newrecord()/*添加纪录模块*/char s81;char *pp = NULL; int a; loop: printf(nnnntt 请输入您要添加的联系人的信息: n); printf(n请输入姓名:n);name: scanf(%s,&pernum.name); if(strlen(pernum.name)20) printf(对不起!您的输入有误!请重新输入); goto name; if(fp=fopen(c:string.txt,a)=NULL)/打开文件pr
16、intf(无法打开文件n); exit(1);printf(n请输入地址:n);addr: scanf(%s,&pernum.addr);if(strlen(pernum.addr)50) printf(对不起!您的输入有误!请重新输入);goto addr; if(fp=fopen(c:string.txt,a)=NULL) printf(文件无法打开n); exit(1); fprintf(fp, 姓名tt 电话ttt QQn 地址tt 邮编tt e_mailt ); /将字符串写进文件fprintf(fp,%-15s,pernum.name);fclose(fp);/关闭文件 print
17、f(n请输入手机号码:n); celephone: scanf(%s,&pernum.celephone); if(strlen(pernum.celephone)!=11) printf(对不起!您的输入有误!请重新输入n); goto celephone; printf(n请输入邮编:n);code: scanf(%s,&pernum.code); if(strlen(pernum.code)!=6) printf(对不起!您的输入有误!请重新输入n);goto code; printf(n请输入e_mail:n);e_mail: scanf(%s,&pernum.e_mail);pp =
18、 pernum.e_mail;while(pp & *pp != 0) if(*pp = & pp != pernum.e_mail & *(pp + 1) != 0)break;pp+;if(*pp = 0) printf(对不起!您的输入有误!请重新输入n);goto e_mail; if(fp=fopen(c:string.txt,a)=NULL) printf(无法打开文件n); exit(1);fprintf(fp,%-24s,pernum.celephone);fclose(fp);printf(n输入QQ号码:);QQ:scanf(%s,&pernum.QQ);if(strlen
19、(pernum.QQ)!=10&strlen(pernum.QQ)!=9&strlen(pernum.QQ)!=8) printf(对不起!您的输入有误!请重新输入); goto QQ; if(fp=fopen(c:string.txt,a)=NULL) printf(无法打开文件n); exit(1);fprintf(fp,%-20sn,pernum.QQ); fclose(fp); num+; printf(n是否继续添加?n); printf(n请按1和2(1代表继续;2代表不继续)n); printf(请输入您的选择 ); scanf(%d,&a); if(a=1) goto loop
20、; else return; void searchmenu()/*查询菜单*/ int a; printf(ntt 欢 迎 使 用 查 询 菜 单); printf(ntt 1-按姓名查询);printf(ntt 2-按手机号码查询);printf(ntt 3-按QQ查询); printf(ntt 其他键-返回主菜单); printf(ntt); printf(请输入您的选择 );scanf(%d,&a); switch (a) case 1:searchbyname();break; case 2:searchbycelephone();break; case 3:searchbyqq()
21、;break; default:mainmenu();break; void searchbyname()/*:按姓名查询*/ int mark=0; int i,j,findmark=0; int a=0;char name15; printf(n 按姓名查找 ); printf(n请输入姓名:); scanf(%s,name); for(i=a;inum;i+) if (strcmp(peri.name,name)=0) findmark+;printf(ntt 以下是您查找的联系人的信息 ); printf(ntt_); printf(ntt名字: %s,peri.name); prin
22、tf(ntt手机号码: %s,peri.celephone);printf(nttQQ号码:%s,peri.QQ);printf(ntt地址: %s,peri.addr);printf(ntt邮编: %s,peri.code);printf(ntte_mail: %s,peri.e_mail);printf(ntt_); if (i+1)num) printf(n是否继续查找相同名字的联系人的信息?(1代表继续;2代表不继续)); scanf(%d,&j);if (j=1) a=i; mark+;continue; else break; else printf(n请按任意数字键返回主菜单);
23、 scanf(%d,&j); return; if(mark!=0) printf(n对不起! 没有相同名字的该联系人的信息!!); printf(n请按任意数字键返回主菜单); scanf(%d,&j); return; else if(findmark=0) printf(n对不起!没有该联系人的信息!); printf(n请按任意数字键返回主菜单); scanf(%d,&j); return; void searchbycelephone()/*按手机号码查询*/ int mark=0; int i,j; int a=0; char celephone11; printf(n 按手机号码
24、查找 n); printf(n请输入手机号码:n); scanf(%s,celephone); for(i=0;inum;i+) if (strcmp(peri.celephone,celephone)=0) printf(n 以下是您查找的联系人的信息 ); printf(n_); printf(n名字: %s,peri.name); printf(n手机号码: %s,peri.celephone);printf(nQQ号码:%s,peri.QQ);printf(ntt地址: %s,peri.addr);printf(ntt邮编: %s,peri.code);printf(ntte_mail
25、: %s,peri.e_mail);printf(n_); printf(n请按任意数字键返回主菜单); mark+; scanf(%d,&j); return; if (mark=0) printf(n对不起!没有该联系人的信息!); printf(n请按任意数字键返回主菜单); scanf(%d,&j); return; void searchbyqq()/*按QQ查询*/ int mark=0; int i,j; char QQ10; printf(ntt 按QQ号码查找 n); printf(n请输入QQ号码:); scanf(%s,&QQ); for(i=0;inum;i+) if(
26、strcmp(peri.QQ, QQ) = 0) printf(ntt 以下是您查找的联系人的信息 ); printf(ntt_); printf(ntt名字: %s,peri.name); printf(ntt手机号码: %s,peri.celephone);printf(nttQQ号码:%s,peri.QQ);printf(ntt地址: %s,peri.addr);printf(ntt邮编: %s,peri.code);printf(ntte_mail: %s,peri.e_mail);printf(ntt_); printf(ntt请按任意数字键返回主菜单); mark+; scanf(
27、%d,&j); return; if (mark=0) printf(ntt对不起!没有该联系人的信息!); printf(ntt请按任意数字键返回主菜单); scanf(%d,&j); return; void xiugaimenu()/修改菜单/int i,j; if(num=0) printf(ntt对不起!文件中无任何纪录!); printf(ntt请按任意数字键返回主菜单); scanf(%d,&j); return; else printf(ntt 1-按姓名修改 2-按手机号码修改n); printf( 请输入您的数字选择: );loop6:scanf(%d,&i); switc
28、h (i) case 1:xiugaibyname();break; case 2:xiugaibycelephone();break; default:printf(对不起!您的输入有误!请重新输入: );goto loop6; void xiugaibyname()/*按姓名修改*/int a=0; int findmark=0; int xiugaimark=0; int i,j; char name15; printf(ntt请输入要修改联系人的姓名:); scanf(%s,name); for (i=a;inum;i+) if (strcmp(peri.name,name)=0) p
29、rintf(ntt以下是您要修改的联系人的纪录:); findmark+; printf(ntt_); printf(ntt名字: %s,peri.name); printf(ntt手机号码: %s,peri.celephone);printf(nttQQ号码:%s,peri.QQ);printf(ntt地址: %s,peri.addr);printf(ntt邮编: %s,peri.code);printf(ntte_mail: %s,peri.e_mail);printf(ntt_);printf(ntt是否修改?(1代表修改;2代表不修改)); printf( 请输入您的数字选择: );scanf(%d,&j);if (j=1) xiugaixiangmu(i);xiugaimark+; printf(nt