c通信录程序设计-课程设计报告_第1页
c通信录程序设计-课程设计报告_第2页
c通信录程序设计-课程设计报告_第3页
c通信录程序设计-课程设计报告_第4页
c通信录程序设计-课程设计报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上学号2016-2016学年 第二学期高级语言程序设计课程设计报告题目:通信录程序设计专业:网络工程(对口)班级:16(3)班姓名:代应豪指导教师:程庆成绩:计算机学院2017年4月25日目录专心-专注-专业1.设计内容及要求 1.1、课程设计的内容编写学生通信录程序,包括以下功能模块:1、通信录的每一条信息包括姓名、地址、邮政编码、电话号码。2、输入功能:可以一次完成若干条信息的输入。3、显示功能:完成全部通信录信息的显示。4、查找功能:完成按姓名查找通信信息,并显示。5、增加功能:增加通信信息。6、删除功能:完成按姓名删除通信信息。7、应提供一个界面来调用各个功能,

2、调用界面和各个功能的操作界面应尽可能清晰美观! 1.2、课程设计的要求与数据 1、要求利用结构化程序设计方法以及C的编程思想来完成系统的设计。 2、要求有菜单、文件操作,数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可。 3、系统具有增加,查询,删除等基本功能; 4、模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的形式来实现。 5、完成设计任务并编写课程设计说明书。2.概要设计设计与开发一个通讯录管理系统,对通讯录中的姓名、单位、电话、QQ 、mail等基本信息进行管理、主要功能如下: 1)输入记录; 2)显示记录; 3)按姓名查找

3、显示记录; 4)删除记录; 5)插入记录; 6)记录保存为文件; 7)从文件中读记录; 8)按姓名排序; 9)显示单条记录;3.设计过程或程序代码 3.1 问题描述 制作一个通讯录,要求该系统对通讯录的姓名,单位,电话,进行输入,显示 ,查找,删除,插入,保存等操作的管理。 3.2 功能要求1,本系统采用一个结构体数组,每个数据的结构应包括;姓名,单位,电话名称。 2, 本系统显示这样的菜单 请选择系统功能项 a 输入记录;b 显示全部纪录; c 查找记录; d 删除记录; e 插入记录; f 保存文件 ; g 读文件:(1)按序号显示记录;(2)按姓名排序;(3)快速查找记录;(4)复制文件

4、。 3.3 算法提示1 数据结构;结构体类型数组。2 数据库结构;下表构成该系统的基本数据库。姓 名电 话学号3.4 测试数据姓名电话学号Zhang152························3.4课题的主要功能模块划分 3.5主要功能的实现3.5.1源程序#include <stdio.h>#include <conio.h&g

5、t; #include <string.h> #include <stdlib.h> #define N 100 int M=3; struct student char num10;char name10;char tel10; void myprint() system("cls"); printf(" |-|n"); printf(" | :-)请输入选项编号(0-7): |n"); printf(" |-|n"); printf(" |-1-创建通讯录-|n");

6、 printf(" |-2-显示通讯录-|n"); printf(" |-3-查询通讯录-|n"); printf(" |-4-修改通讯录-|n"); printf(" |-5-添加通讯录-|n"); printf(" |-6-删除通讯录-|n"); printf(" |-7-排序通讯录-|n"); printf(" |-0-退出-|n"); printf(" |-|n"); void mycreat(struct student *p

7、,int n) struct student *q=p; FILE *fp=NULL; fp=fopen("d:jilu.dat","w"); if(fp=NULL)printf("error"); return; for(p=q;p-q<n;p+) printf("n"); printf("第%d条记录:n",p-q+1); printf("学号:"); do gets(p->num); while(strcmp(p->num,"")=

8、0); printf("姓名:"); gets(p->name); printf("电话:"); gets(p->tel); fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); void mydisplay(struct student *p,int n) FILE *fp=NULL; fp=fopen("d:jilu.dat","r"); if(fp=NULL)printf("error");

9、return; system("cls"); printf(" 学号 姓名 电话n"); while(n>0) fscanf(fp,"%23s%15s%15s",p->num,p->name,p->tel); printf("%23s%15s%15sn",p->num,p->name,p->tel); p+;n-; void mysearch(struct student *p,int n) struct student *q=p; int flag=0; char c=&

10、#39;0',nm10="",nam10="" printf("n按照学号查询(h)或姓名查询(m):n"); c=getche(); if(c='h'|c='H') printf("请输入要查询记录的学号:");gets(nm); for(p=q;p-q<n;p+) if(strcmp(nm,p->num)=0) printf(" 学号 姓名 电话n"); printf("%23s%15s%15sn",p->num,

11、p->name,p->tel); flag=1; if(flag=0) printf("wrong.n"); else if(c='m'|c='M') printf("请输入要查询记录的姓名:");gets(nam); for(p=q;p-q<n;p+) if(strcmp(nam,p->name)=0) printf(" 学号 姓名 电话n"); printf("%23s%15s%15sn",p->num,p->name,p->tel);

12、flag=1; if(flag=0) printf("wrong.n"); else printf("wrong.n"); void mymodify(struct student *p,int n) struct student *q=p; FILE *fp=NULL; char nam10="" mydisplay(p,n); printf("请输入您想要修改记录的姓名:n");gets(nam); for(p=q;p-q<n;p+) if(strcmp(nam,p->name)=0) break;

13、 if(p-q=n) printf("wrong."); else printf("请输入正确的学号:"); do gets(p->num); while(strcmp(p->num,"")=0); printf("请输入正确的姓名:"); gets(p->name); printf("请输入正确的电话:"); gets(p->tel); fp=fopen("d:jilu.dat","w"); if(fp=NULL)printf(&

14、quot;error"); exit(0); for(p=q;p-q<n;p+) fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); fclose(fp); void myadd(struct student *p,int n) FILE *fp=NULL; struct student *q=p; char c='n',tempnum10="",tempname10="",temptel10="" printf(&

15、quot;n"); while(strcmp(p->num,"")!=0) printf("%23s%15s%15sn",p->num,p->name,p->tel); p+; n=p-q; do printf("请输入新纪录的学号:"); do gets(tempnum); while(strcmp(tempnum,"")=0); printf("请输入新纪录的姓名:"); gets(tempname); printf("请输入新纪录的电话:&quo

16、t;); gets(temptel); for(p=q;p-q<n;p+) if(strcmp(tempnum,p->num)=0|strcmp(temptel,p->tel)=0) printf("学号或电话号码需要重新输入吗(Y/N)?"); c=getche(); putchar('n'); break; if(p-q=n) strcpy(p->num,tempnum); strcpy(p->name,tempname); strcpy(p->tel,temptel); break; while(c='y&#

17、39;|c='Y'); fp=fopen("d:jilu.dat","w"); if(fp=NULL)printf("error"); return; for(p=q;p-q<=n;p+) fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); fclose(fp); M+; void mydelete(struct student *p,int n) FILE *fp=NULL; struct student *q=p; cha

18、r c10="",tempnum10="",tempname10="",temptel10="",choose='0' mydisplay(p,n); printf("选择删除记录的方式:学号(h)姓名(m)"); choose=getche(); printf("n"); if(choose='m'|choose='M') printf("删除的记录:"); gets(c); for(;p-q<n;p

19、+) if(strcmp(c,p->name)=0) break; if(p-q<n) for(;p-q<n-1;p+) strcpy(p->num,(p+1)->num); strcpy(p->name,(p+1)->name); strcpy(p->tel,(p+1)->tel); else printf("non"); else if(choose='h'|choose='H') printf("删除的记录:"); gets(c); for(;p-q<n;p

20、+) if(strcmp(c,p->num)=0) break; if(p-q<n) for(;p-q<n-1;p+) strcpy(p->num,(p+1)->num); strcpy(p->name,(p+1)->name); strcpy(p->tel,(p+1)->tel); else printf("no"); else printf("wrongn"); fp=fopen("d:jilu.dat","w"); if(fp=NULL)printf(&q

21、uot;error"); return; for(p=q;p-q<n-1;p+) fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); fclose(fp); M-; void mysort(struct student *p,int n) FILE *fp=NULL; struct student *q=p,*w=p,*a=p; char temp10="",c1='0',c2='0' mydisplay(p,n); printf(&quo

22、t;选择按照学号(h)或姓名(m)排序:n"); c1=getche(); if(c1='h'|c1='H') printf("升序(s)或者降序(j)排列:"); c2=getche(); if(c2='s'|c2='S') for(;p-a<n;p+) w=p; for(q=p+1;q-a<n;q+) if(strcmp(w->num,q->num)>0) w=q; strcpy(temp,w->num); strcpy(w->num,p->num)

23、; strcpy(p->num,temp); strcpy(temp,w->name); strcpy(w->name,p->name); strcpy(p->name,temp); strcpy(temp,w->tel); strcpy(w->tel,p->tel); strcpy(p->tel,temp); else if(c2='j'|c2='J') for(;p-a<n;p+) w=p; for(q=p+1;q-a<n;q+) if(strcmp(w->num,q->num)&

24、lt;0) w=q; strcpy(temp,w->num); strcpy(w->num,p->num); strcpy(p->num,temp); strcpy(temp,w->name); strcpy(w->name,p->name); strcpy(p->name,temp); strcpy(temp,w->tel); strcpy(w->tel,p->tel); strcpy(p->tel,temp); else printf("555wrong.n"); else if(c1='m

25、'|c1='M') printf("升序(s)或者降序(j)排列:"); c2=getche(); if(c2='s'|c2='S') for(;p-a<n;p+) w=p; for(q=p+1;q-a<n;q+) if(strcmp(w->name,q->name)>0) w=q; strcpy(temp,w->num); strcpy(w->num,p->num); strcpy(p->num,temp); strcpy(temp,w->name); st

26、rcpy(w->name,p->name); strcpy(p->name,temp); strcpy(temp,w->tel); strcpy(w->tel,p->tel); strcpy(p->tel,temp); else if(c2='j'|c2='J') for(;p-a<n;p+) w=p; for(q=p+1;q-a<n;q+) if(strcmp(w->name,q->name)<0) w=q; strcpy(temp,w->num); strcpy(w->num

27、,p->num); strcpy(p->num,temp); strcpy(temp,w->name); strcpy(w->name,p->name); strcpy(p->name,temp); strcpy(temp,w->tel); strcpy(w->tel,p->tel); strcpy(p->tel,temp); else printf("555wrong.n"); else printf("555wrong.n"); fp=fopen("d:jilu.dat"

28、,"w"); if(fp=NULL)printf("error"); return; for(p=a;p-a<=n;p+) fprintf(fp,"%23s%15s%15sn",p->num,p->name,p->tel); fclose(fp); main() char choose='0',yes_no='0' struct student recordN=0; do myprint(); printf(" :-)请选择(0-7):"); choose=g

29、etche(); switch(choose) case '1':mycreat(record,M);break; case '2':mydisplay(record,M);break; case '3':mysearch(record,M);break; case '4':mymodify(record,M);break; case '5':myadd(record,M);break; case '6':mydelete(record,M);break; case '7':myso

30、rt(record,M);break; case '0':exit(0); default :printf("nerror.n"); printf("n :-)继续选择吗(y/n)?n"); do yes_no=getch(); while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n'); while(yes_no='Y'|yes_no='y'

31、;); 4.设计结果与分析 4.1 程序调试 先进行人工检查,即静态检查。在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查。这一步十分重要,它能发现程序设计人员由于疏忽而造成的多数错误。这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序。 为了更有效地进行人工检查,所编的程序应力求做到以下几点:应当采用结构化程序方法编程,以增加可读性;尽可能多加注释,以帮助理解每段程序的作用;在编写复杂的程序时不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。二、在人工检查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论