收藏 分销(赏)

C语言优秀课程设计优质报告.doc

上传人:天**** 文档编号:2727278 上传时间:2024-06-05 格式:DOC 页数:14 大小:43.04KB 下载积分:8 金币
下载 相关 举报
C语言优秀课程设计优质报告.doc_第1页
第1页 / 共14页
C语言优秀课程设计优质报告.doc_第2页
第2页 / 共14页


点击查看更多>>
资源描述
C语言课程设计论文 学生姓名: 陈丹 学生学号: 101 所在班级: 信息和计算科学一班 任课老师: 马老师 通讯录管理系统 【设计目标】 设计“通讯录管理系统”使其含有数据插入、修改、删除、显示和查询等功效。 (1) 数据包含:人名、工作单位、电话号码和E-mail地址。 (2) 可对统计中姓名和电话号码进行修改。 (3) 可增加或删除统计。 (4) 可显示全部保留统计。 (5) 可按人名或电话号码进行查询。 【设计思绪】 依据要求,电话簿数据以文本文件存放在文件中,故需要提供文件输入、输出等操作;还需要保留统计以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功效选择。 【总体设计】 通讯录管理系统 数据输入 数据修改 删除 数据添加 查找 浏览 图1 系统功效模块图 【具体设计】 1. 主函数 主函数设计要求简练,只提供部分提醒语和函数调用 【程序】 显示一系列功效选项 输入n,判定n是否是1~7 ? 依据n值调用各功效模块函数 结束 开始 n 图2. 主函数步骤图 Void menu() /*主界面*/ { int n, w1; void enter(); void add(); void modify(); void browse(); void deleter(); void search(); do { puts("\t******************************菜单*****************************\t\n\n"); puts("\t\t\t\t1.新建联络人"); puts("\t\t\t\t2.添加联络人"); puts("\t\t\t\t3.修改"); puts("\t\t\t\t4.删除"); puts("\t\t\t\t5.浏览"); puts("\t\t\t\t6.查找"); puts("\t\t\t\t7.退出"); puts("\n\n\t***************************通讯录******************************\t\n"); printf("请选择服务种类(1-7) : [ ]\b\b"); scanf("%d",&n); if(n<1||n>7) {w1=1;getchar();} else w1=0; }while(w1==1); switch(n) { case 1: enter(); break; /*输入模块*/ case 2: add(); break; /*添加模块*/ 附录:源代码 #define N 50 #include<stdio.h> #include<string.h> struct people {char name[20]; char company[50]; char num[15]; char mail[20];}peop[N]; void printf_face() { printf("\n\t姓名\t单位\t电话号码\t邮箱\n"); } void printf_one(int i) { printf("\t%s\t%s\t%s\t%s\n",peop[i].name,peop[i].company,peop[i].num,peop[i].mail); } void printf_n(int n) { int j; for(j=0;j<n;j++) { if((j!=0)&&(j%10==0)) {printf("\n\nPress any key to continue...:"); getchar(); puts("\n\n");} printf_one(j); } getchar(); } int load() { FILE *fp; int i; if((fp=fopen("file","rb"))==NULL) { printf("\nCan not open file\n"); exit(0); } for(i=0;!feof(fp);i++) fread(&peop[i],sizeof(struct people),1,fp); fclose(fp); return(i-1); } int modify_data(int i,int n) { int c,w1; void input(int i); void menu(); do { puts("\n修改选项=>\n\n 1).姓名 2).单位 3).电话号码 4).邮箱 5).全部数据 6).取消并返回"); printf("请选择?: [ ]\b\b"); scanf("%d",&c); if(c>6||c<1) {puts("\nChoose error! Please again!"); getchar();} }while(c>6||c<1); do { switch(c) { case 1: printf("name:"); scanf("%s",peop[i].name); break; case 2: printf("company:"); scanf("%s",peop[i].company); break; case 3: printf("number:"); scanf("%s",peop[i].num); break; case 4: printf("e-mail:"); scanf("%s",peop[i].mail); break; case 5: input(i); break; case 6: menu(); } puts("\nNow:\n"); printf_face(); printf_one(i); printf("\n确定?\n\n\t1).是 2).不,重新修改 3).返回不保留 [ ]\b\b"); scanf("%d",&w1); }while(w1==2); return(w1); } void input(int i) { printf_face(); printf("\t"); scanf("%s\t%s\t%s\t%s",peop[i].name,peop[i].company,peop[i].num,peop[i].mail); } void save(int n) { FILE *fp; int i; if((fp=fopen("file","wb"))==NULL) { printf("\nCan not open file\n"); exit(0); } for(i=0;i<n;i++) if(peop[i].name[0]!='\0') if(fwrite(&peop[i],sizeof(struct people),1,fp)!=1) printf("file write error\n"); fclose(fp); } void printf_back() { int w; void browse(); void menu(); printf("\n\n\t^_^.Successful. ^_^\n\n"); printf("What do you want to do?\n\n\t1).浏览全部\t2).返回: [ ]\b\b"); scanf("%d",&w); if(w==1) browse(); else menu(); } void main() { void menu(); menu(); } void menu() { int n, w1; void enter(); void add(); void modify(); void browse(); void deleter(); void search(); do { puts("\t************************菜单************************ "); puts("\t\t*******************1.新建联络人*******************"); puts("\t\t*******************2.添加联络人*******************"); puts("\t\t*******************3.修 改*******************"); puts("\t\t*******************4.删 除*******************"); puts("\t\t*******************5.浏 览*******************"); puts("\t\t*******************6.查 找*******************"); puts("\t\t*******************7.退 出*******************"); puts("\n\n\t********************通讯录********************* "); printf("请选择服务种类(1-7) : [ ]\b\b"); scanf("%d",&n); if(n<1||n>7) {w1=1;getchar();} else w1=0; }while(w1==1); switch(n) { case 1: enter(); break; case 2: add(); break; case 3: modify(); break; case 4: deleter(); break; case 5: browse(); break; case 6: search(); break; case 7: exit(0); } } void enter() { int i,n; printf("How many people(0-%d)?:",N-1); scanf("%d",&n); printf("请输入数据:\n"); for(i=0;i<n;i++) {printf("\n输入第 %d个统计.\n",i+1); input(i); } if(i!=0) save(n); printf_back(); } void add() { int i,n,k,t; n=load(); printf("How many people do you want to add(0-%d)?:",N-n-1); scanf("%d",&t); k=n+t; for(i=n;i<k;i++) { printf("\n输入第 %d个统计.\n",i-n+1); input(i);} save(k); printf_back(); } void modify() { struct people s; int i,n,k,w0=1,w1,w2=0; n=load(); do { k=-1; printf_face(); printf_n(n); do { printf("\n\nEnter name that you want to modify!\nName:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,peop[i].name)==0) {k=i; s=peop[i];} if(k==-1) printf("\n\n没有统计请重新输入!"); }while(k==-1); printf_face(); printf_one(k); w1=modify_data(k,n); if(w1==1) {printf("\n\t^_^.Successful ^_^.\n\n是否继续?\n\n\t1).是 2).保留返回\t[ ]\b\b"); scanf("%d",&w0); w2=1;} else {w0=0; if(w2==0) peop[k]=s;} if((w0!=1)&&(w2==1)) save(n); }while(w0==1); menu(); } void browse() { int n; n=load(); printf_face(); printf_n(n); printf("\t共有 %d 统计.\n",n); printf("\nPress any key to back..."); getchar(); menu(); } void search() { int w0,k,i,n,w1,w2; struct people s; n=load(); do {printf("请选择查找类别: 1).姓名 2).电话号码 [ ]\b\b"); scanf("%d",&w1); if(w1<1||w1>2) {printf("输入错误!请重新输入!\n"); w2=1;} }while(w2==1); if(w1==1) {do { k=-1; do { printf("\n\nEnter name that tou want to search!\nName:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,peop[i].name)==0) {k=i; s=peop[i];} if(k==-1) printf("\n\n没有统计请重新输入!"); }while(k==-1); printf_face(); printf_one(k); printf("\nWhat do you want to do?\n\t1).继续 2).返回菜单 [ ]\b\b"); scanf("%d",&w0); }while(w0==1); menu(); } else { do { k=-1; do { printf("\n\nEnter number that tou want to search!\nNum:"); scanf("%s",s.num); for(i=0;i<n;i++) if(strcmp(s.num,peop[i].num)==0) {k=i; s=peop[i];} if(k==-1) printf("\n\n没有统计请重新输入!"); }while(k==-1); printf_face(); printf_one(k); printf("\nWhat do you want to do?\n\t1).继续 2).返回菜单 [ ]\b\b"); scanf("%d",&w0); }while(w0==1); menu(); } } void deleter() {struct people s; int i,n,k,w0,w1; n=load(); do { k=-1; printf_face(); printf_n(n); do { printf("\n\nEnter name that you want to delete!\nName:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,peop[i].name)==0) {k=i; s=peop[i];} if(k==-1) printf("\n\n没有统计请重新输入!"); }while(k==-1); printf_face(); printf_one(k); printf("\n确定?\n\t1).是 2).返回 [ ]\b\b"); scanf("%d",&w0); if(w0==1) {peop[k].name[0]='\0'; save(n);} else break; printf("\n\t^_^.Successful^_^.\n"); printf("What do you want to do?\n\t1).继续 2).返回 [ ]\b\b"); scanf("%d",&w1); }while(w1==1); menu(); } 【设计体会】 经过为期一周课程设计,我们对《C语言》这门课程有了更深一步了解。它是计算机程序设计关键理论技术基础,在我们信息和计算科学专业学习中占据着十分关键地位。同时也使我们知道,要学好这门课程,仅学习书本上知识是不够,还要有较强实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能愈加好了解和掌握书本上东西。 利用《C语言》中算法思想作数据结构,结合C语言基础知识,编写一个通讯录管理系统。经过完成本课题,深入熟悉C语言基础知识,并掌握数据结构部分基础算法思想,掌握C语言文件操作(包含从磁盘读入和向磁盘写入内容),深入熟悉指针使用方法,数组建立利用和函数调用等。 【参考文件】 朱若愚.数据结构[M]. 北京: 电子工业出版社, .1:41-65 晋良颍.数据结构[M]. 北京:人民邮电出版社, .05: 21-45 刘大有.数据结构[M]. 北京: 高等教育出版社, .3: 30-58 赵文静. 数据结构和算法[M]. 北京: 科学出版社, .8: 41-64  徐孝凯.数据结构简明教程.[M]. 北京: 清华大学出版社, .04: 102-115 严蔚敏,吴伟民.数据结构(C语言版)[M]. 北京:清华大学出版社, .4: 39-43 傅清祥,王晓东. 数据结构和算法设计[M]. 北京: 电子工业出版社, .3: 31-46 王敬华,林萍,.陈静. C语言程序设计[M]. 北京: 清华大学出版社, .10: 22-39 李云清,杨庆红,揭安全.数据结构(C语言版)[M]. 北京:人民邮电出版社,.1: 44-67 [10]李春葆. 数据结构(C语言版)习题和解析[M].北京:清华大学出版社, .1: 47-55
展开阅读全文

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


开通VIP      成为共赢上传

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

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服