收藏 分销(赏)

C语言课程设计报告电话薄.doc

上传人:二*** 文档编号:4496073 上传时间:2024-09-25 格式:DOC 页数:21 大小:762KB 下载积分:5 金币
下载 相关 举报
C语言课程设计报告电话薄.doc_第1页
第1页 / 共21页
本文档共21页,全文阅读请下载到手机保存,查看更方便
资源描述
《C语言程序设计》 课程设计报告书 题目:通讯录程序设计 系 别:计算机工程系 专 业:计算机网络 设计班级:网12 姓 名:胡玉婷 学 号: 指导教师:耀军、新爱 二○一一年六月七日 一、课程设计(论文)的容 编写学生通讯录程序,包括以下功能模块: 1、通讯录的每一条信息包括学号、、(字符数组)。 2、输入功能:可以一次完成若干条信息的输入。 3、显示功能:完成全部通讯录信息的显示。 4、查找功能:完成按查找通讯信息,并显示。 5、增加功能:增加通讯信息。 6、删除功能:完成按删除通讯信息。 7、将通讯录信息存在文件addrbook中。 8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观! 二、课程设计(论文)的要求与数据 1、用C语言实现系统; 2、利用结构体数组或动态链表实现学生通讯录的数据结构设计; 3、系统具有增加,查询,删除等基本功能; 4、系统的各个功能模块要求用函数的形式实现; 5、将通讯录信息存在文件中; 6、完成设计任务并编写课程设计说明书。 7、每个同学提交源程序(*.c),可执行程序(*.exe),保存通讯录信息的文件addrbook,课程设计说明书电子文档(word)。 每班交一光盘,包含所有学生的资料(按学号排序),每个学生的资料放在以学号命名的文件夹中。 三、课程设计(论文)应完成的工作 1.完成程序的编制、调试,并能正确运行。 2.完成课程设计说明书的编写,其容包括 (1)封面 (2)任务书 (3)目录 (4)正文 (1)总体设计(包含几大功能模块)。 (2)详细设计(各功能模块的具体实现算法——流程图) (3)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。 (4)调试分析(包含各模块的测试用例,与测试结果。) (5)总结(课程设计完成了哪些功能,还有哪些地方需要改进,与通过一周的课程设计有何收获,调试程序的体会等) (5)参考文献 四、应收集的资料与主要参考文献 [1] 谭浩强著. C程序设计(第三版). :清华大学,2005 [2] 谭浩强著. C程序设计题解与上机指导. :清华大学,2005 目 录 一、总体设计(包含几大功能模块)4 二、详细设计(各功能模块的具体实现算法——流程图)5 第一个函数为输入函数:5 第二函数为显示函数:5 第三个函数为查找函数:5 第四为排序函数6 第五为插入函数:6 第六删除函数.7 三、数据结构设计描述,各模块(函数)的功能介绍,参数说明等9 (一):结构设计描述9 (二)功能介绍9 四、调试分析(包含各模块的测试用例,与测试结果)。12 五、总结(课程设计完成了哪些功能,还有哪些地方需要改进,与通过一周的课程设计有何收获,调试程序的体会等)16 六、参考文献16 一、总体设计(包含几大功能模块) 1、 输入功能 2、 显示功能 3、 查找功能 (1)用学号查找 (2)用查找 4、 删除功能 5、 插入功能 6、 排序功能 7、 复制功能 二、详细设计(各功能模块的具体实现算法——流程图) 第一个函数为输入函数:N-S流程图: 定义整型变量i,j. for(i=0;i<SIZE;i++) 输入学生的学号.、性别。 sum=0 打开文件“score.dat” 将数据写入文件 关闭文件 第二函数为显示函数: N-S流程图: 打开文件“stu.dat” 将数据读出显示出来 关闭文件 第三个函数为查找函数:N-S流程图: 定义整型i,n,定义字符型数组 打文件“stu.dat” 将文件数据读出 并确定记录个数n 关闭文件 打印“输入学号” 输入要查找的学号 输入学号分别与文件中各学号对比 是一样 不同 把这个学号对应学生资料打印出来 第四为排序函数: N-S流程图 定义整型I,j,n,结构体变量struct student temp 打开文件 将文件数据读出 并确定记录个数n 关闭文件 for(I=0;I<n;I++) for(j=i+1;j<n;j++) strcmp(stu[i].num,stu[j].num)>0) T F 交换I,j两项 打开文件 for(I=0;I<n;I++) 排好n个记录写入文件 显示该记录的学号、 关闭文件 第五为插入函数: N-S流程图: 定义整型i,j,n结构体变量s 打印”输入学号:” 输入学号 打印”输入:” 输入 打印”输入:” 输入 打开文件 stu .dat 将文件数据读出 并确定记录个数n 关闭文件 使新记录赋给stu[n],n=n+1 打开文件 for(i=0;i<n;i++) 向文件输出数据并显示 关闭文件 第六删除函数. N-S流程图: 定义整形i,j,n,flag,字符数组name 打开文件stu.dat 读取文件数据并确定记录个数n 关闭文件 n=i 输入待删除学生的name For(flag=1,i=0,flag&&<n;I++) strcmp(name,stu[i].name)==0 T F for(j=i;j<n-1;j++) 将第j+1个学生的数据移到第j个 flag=1 Flag=1 T F n=n-1 显示"没有发现" 打开stu.dat文件 for(i=0;i<n;i++) 将第i个学生的数据写入文件并显示 关闭文件 三、数据结构设计描述,各模块(函数)的功能介绍,参数说明等 (一):结构设计描述 用#include<stdio.h>#include<string.h>命令;用宏定义SIZE以便修改学生数目;定义结构体用于输入学生数据资料。 主函数,main()前不加void编译系统会提示funstion should return a value,不过不会出错。在主函数开头先声明子函数,设一界面菜单,用do-while语句实现不断执行直到选择退出。 (二)功能介绍 1输入功能 可以一次完成若干条信息的输入。并将输入的数据保存在文件stu.dat中. 2显示功能 如,将上面的输入的数据显示出来: ********************************************************* No. name phone ********************************************************* 06693宋昌恩 234567 06694 王淑其 234568 06695王壮辉 234569 06696 吴浩龙 234570 ********************************************************* 3查找功能 在主函数开头先声明子函数,设一界面菜单,用do-while语句实现不断执行直到选择学号或查找、还是退出。 (1) 用学号查找 定义字符型数组用于输入要查找的学生学号。 如:输入学号:06694 显示 Input num:06694 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * The record you search is :No. name phone 06694 王淑其 234568 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (2)用插入功能 用查找该学生的资料:(跟学号一样都是字符型,在比较输入的/学号都是用strcmp()实现的。原理一样。只是把学号换成。如:输入: 打印结果跟上一题一样。) 如输入 王淑其 显示 Input name:王淑其 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * The record you search is :No. name phone 06694 王淑其 234568 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4 删除功能 按删除 若有两个一样的 则两个一起删除;删除后把新的记录写人文件并显示出来 ; 5 增加功能 可无限的增加记录;记录后把新的记录写人文件并显示出来 ; 6 排序功能 可根据学好由小到大排序;排序后新的记录写人文件并显示出来 ; 原来的记录为: 显示: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * No. name phone l * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06694 王淑其 234568 06693宋昌恩 234567 06695王壮辉 234569 06696 吴浩龙 234570 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 排序后的结果显示: No. name phone * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06693宋昌恩 234567 06694 王淑其 234568 06695王壮辉 234569 06696 吴浩龙 234570 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 7 复制功能 可把当前记录从stu.dat复制到别的文件; 四、调试分析(包含各模块的测试用例,与测试结果)。 1输入功能 请选择(0~7): 0 Input score of student1: NO.:06694 name:王淑其 phone:234568 Input score of student2: NO.:06693 name:宋昌恩 phone:234567 Input score of student3: NO.:06695 name:王壮辉 phone:234569 Input score of student4: NO.:06696 name:吴浩龙 phone:234570 Input score of student5: NO.:00 name: phone:234571 2显示功能 请选择(0~7): 1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * No. name phone * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06694 王淑其 234568 06693 宋昌恩 234567 06695 王壮辉 234569 06696 吴浩龙 234570 00 234571 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3查找功能 请选择(0~7): 2 * * * * * * * * MENU* * * * * * * * * * * * * * * * * * * * * * * * * * * * 8----------------------用学号查找. 9----------------------用查找 10---------------------安全退出. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (1)用学号查找 请选择(8~10): 8 Input num:06694 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * The record you search is :No. name phone 06694 王淑其 234568 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (2)用查找 请选择(8~10): 9 Input name:王淑其 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * The record you search is :No. name phone 06694 王淑其 234568 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4删除功能 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 请选择(0~7): 3 Input name deleted: Now the list is: ?* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * No. name phone 06694 王淑其 234568 06693 宋昌恩 234567 06695 王壮辉 234569 06696 吴浩龙 234570 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 5插入功能 请选择(0~7): 4 NO.:06697 name:丹萍 phone:234572 Now the new list is: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * No. name phone * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 06694 王淑其 234568 06693 宋昌恩 234567 06695 王壮辉 234569 06696 吴浩龙 234570 06697 丹萍 234572 6排序功能 请选择(0~7): 5 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * No. name phone 06693 宋昌恩 234567 06694 王淑其 234568 06695 王壮辉 234569 06696 吴浩龙 234570 06697 丹萍 234572 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 五、源程序代码: #include<stdio.h> #include<string.h> #include<stdlib.h> # define SIZE 5 # define LEN sizeof(struct student) struct student { char num[10]; char name[20]; char phone[15]; }stu[SIZE]; void main() {void enter(void); void list(void); void search(void); void Delete(void); void sort(void); void add(void); void copy(void); int m; do {printf("* * * * * * * * * ** * * * *MENU * * * * * * * * * * * * * * * * * * * * *\n"); printf(" 0--------输入资料\n"); printf(" 1--------显示资料\n"); printf(" 2--------查找已有的记录\n"); printf(" 3--------删除一个记录\n"); printf(" 4--------添加记录\n"); printf(" 5--------重新排序\n"); printf(" 6------- 复制\n"); printf(" 7--------安全退出\n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("\n请选择(0~7):\n"); scanf("%d",&m); switch(m) {case 0:enter();break; case 1:list();break; case 2:search();break; case 3:Delete();break; case 4:add();break; case 5:sort();break; case 6:copy();break; case 7:exit(0); default:printf("input error.\n");break; } }while(m!=7); } void enter(void) {FILE*fp; int i,j; for(i=0;i<SIZE;i++) {printf("\nInput score of student%d:\n",i+1); printf("NO.:"); scanf("%s",stu[i].num); printf("name:"); scanf("%s",stu[i].name); printf("phone:"); scanf("%s",stu[i].phone); } if((fp=fopen("stu.dat","wb"))==NULL) {printf("Can not open the file.\n"); exit(0); } for(i=0;i<SIZE;i++) if(fwrite(&stu[i],LEN,1,fp)!=1) printf("file write error\n"); fclose(fp); } void list(void) { FILE*fp; int i,n; if((fp=fopen("stu.dat","rb"))==NULL) {printf("Can not open the file.\n"); exit(0); } for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++; n=i; for(i=0;i<n;i++) fread(&stu[i],LEN,1,fp); fclose(fp); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("No.\tname\tphone\n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); for(i=0;i<n;i++) printf("%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); } void search(void) {void sea_num(void); void sea_name(void); int b; do{ printf("* * * * * * * * * * * * * *MENU * * * * * * * * * * * * * * * * * * * * * *\n"); printf(" 8----------------------用学号查找.\n" ); printf(" 9----------------------用查找.\n"); printf(" 10---------------------安全退出.\n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("\n请选择(8~10):\n"); scanf("%d",&b); switch(b) {case 8:sea_num();break; case 9:sea_name();break; case 10:break; default:printf("input error.\n");break; } }while(b!=10); printf("exit.\n"); } void sea_num(void) {FILE*fp; int i,flag,n; char num[10]; if((fp=fopen("stu.dat","rb"))==NULL) {printf("Can not open the file.\n"); exit(0); } for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++; n=i; for(i=0;i<n;i++) fread(&stu[i],LEN,1,fp); fclose(fp); printf("\nInput num:"); scanf("%s",num); for(flag=0,i=0;i<n;i++) {if(strcmp(num,stu[i].num)==0) {printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("The record you search is\n:"); printf("No.\tname\tphone\n"); printf(" %s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone); flag=1; } } printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); if(flag!=1)printf("Not found the record\n"); } void sea_name(void) {FILE*fp; int i,j,flag,n; char name[10]; if((fp=fopen("stu.dat","rb"))==NULL) {printf("Can not open the file.\n"); exit(0); } for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++; n=i; for(i=0;i<n;i++) fread(&stu[i],LEN,1,fp); fclose(fp); printf("\nInput name:"); scanf("%s",name); for(flag=0,i=0;i<n;i++) {if(strcmp(name,stu[i].name)==0) {printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("The record you search is\n:"); printf("No.\tname\tphone\n"); printf(" %s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone); flag=1; } } printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); if(flag!=1)printf("Not found the record\n"); } void sort(void) {FILE*fp; int i,j,n; struct student temp; if((fp=fopen("stu.dat","rb"))==NULL) {printf("Can not open the file.\n"); exit(0); } for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++; n=i; for(i=0;i<n;i++) fread(&stu[i],LEN,1,fp); fclose(fp); for(i=0;i<n;i++) for(j=i+1;j<n;j++) if(strcmp(stu[i].num,stu[j].num)>0) {temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("No.\tname\tphone\n"); for(i=0;i<n;i++) printf("%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone); fp=fopen("stu.dat","wb"); for(i=0;i<n;i++) fwrite(&stu[i],LEN,1,fp); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); fclose(fp); } void add(void) { int i,j,n; FILE*fp; struct student s; printf("NO.:"); scanf("%s",s.num); printf("name:"); scanf("%s",s.name); printf("phone:"); scanf("%s",s.phone); if((fp=fopen("stu.dat","rb"))==NULL) {printf("\nCan not open the file.\n"); exit(0); } for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++; n=i; for(i=0;i<n;i++) fread(&stu[i],sizeof(struct student),1,fp); fclose(fp); strcpy(stu[n].name,s.name); strcpy(stu[n].num,s.num); strcpy(stu[n].phone,s.phone); n=n+1; printf("\nNow the new list is:\n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("No.\tname\tphone\n"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); fp=fopen("stu.dat","wb"); for(i=0;i<n;i++) {fwrite(&stu[i],sizeof(struct student),1,fp); printf("%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone); } fclose(fp); } void Delete(void) {FILE*fp; int i,j,n,flag; char name[10]; if((fp=fopen("stu.dat","rb"))==NULL) {printf("\nCan not open the file.\n"); exit(0); } for(i=0;fread(&stu[i],LEN,1,fp)!=0;)i++; n=i; printf("\nInput name deleted:"); scanf("%s",name); for(flag=1,i=0;i<n;i++) {if(strcmp(name,stu[i].name)==0) {for(j=i;j<n-1;j++) {strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j].num,stu[j+1].num); strcpy(stu[j].phone,stu[j+1].phone); } flag=0; n=n-1; } } printf("\nNow the list is:\n?"); fp=fopen("stu.dat","wb"); for(i=0;i<n;i++) fwrite(&stu[i],LEN,1,fp); fclose(fp); fp=fopen("stu.dat","rb"); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); printf("No.\tname\tphone\n"); for(i=0;fread(&stu[i],LEN,1,fp)!=0;i++) printf("%s\t%s\t%s\n",stu[i].num,stu[i].name,stu[i].phone); printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"); if(flag) printf("\nNot found the record\n"); fclose(fp); } void copy(void) {FILE * in,* out; if((in=fopen("stu.dat","rb"))==NULL) {printf("Can not open the infile.\n"); exit(0); } if((out=fopen("stu2.dat","wb"))==NULL) {printf("Can not open the outfile.\n"); exit(0); } wh
展开阅读全文

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


开通VIP      成为共赢上传

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

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

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

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

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服