版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言课程设计报告 题 目:设计一个简单的计算器设 计 者: 陈玉文专业班级:通信工程0803学 号:指导教师: 年 月 日河南理工大学计算机学院目录一、 设计任务书二、 本组课题及本人任务三、 程序功能简介四、 主要内容1、 设计分析2、 程序结构3、 各模块功能及程序说明4、 源程序5、 操作方法6、 实验结果7、 设计体会5、 附录6、 参考文献一、设计任务书该程序编译的是通讯录,可以实现一般主要功能有:有建立通讯录的个人信息功能,如记录该人姓名信息,地址信息,出生日期信息,所在城市信息,以及其城市的邮编信息等,删除个人信息,通讯录个人的信息列表,个人的信息查询,个人的信息保存,以及个人
2、的信息提取的功能,最后可以直接退出通讯录。当然实行不同的功能需要定义不同的功能函数,在记录个人信息定义不同的结构体,每一个成员的信息可以是一个基本类型或者是一个够造类型,对结构体变量的应用,其中包括赋值,输入,输出,运算等方式来实现结构变量的成员。当然也可以执行该程序应用了函数的调用,自定义函数以及文件的存储与调用等。个人的信息保存在这个问题上,这信息可以动态的分配到内存空间,每一次分配一块空间用来存放一个人的个人信息的数据,定义两个域,一个是数据域,用来存放各种实际的数据,如个人姓名信息,个人地址信息,出生日期等等数据。在编辑程序,用到了基本的循环、选择、排序的算法,使用数组或数组元素的指针
3、和指针变量,对结构体及其元素用指针或指针变量来指向。并且使用多种预处理功能,如宏定义、文件包含、条件编译等。来进行程序的修改、阅读、移植和调试,也有利于实现模块化程序设计。程序员在程序中用预处理命令来调用这些功能。通讯录的个人信息数据的编辑、存储、列表、删除、查询、提取等实行运用,在程序中存储二百人的个人信息空间,日期不能超过两个字符。在运行后,程序自动给出提示选择,给出你所需要执行的功能,在选择后会给出相应的显示和下一步的提示,在编辑个人信息时必须有姓名,否者会返回上一选择菜单,有部分信息可以不填。在编辑完后,就可以实行其他功能,将给出其他选择,如将个人信息删除、将个人信息列表、保存个人信息
4、、提取个人信息等等的功能。最后在执行完后就可直接根据提示选择退出。就实现了整个通讯录的流程。2、 本组课题及本人任务本组总共两个人,一个是我,令一个是通信三班的刘莹()。该组设计的是一个通讯录,我主要完成的任务是建立通讯录的个人信息,如姓名,地址,出生日期,城市,邮编等;查找个人信息。三、程序功能简介该程序主要功能有:有建立通讯录的个人信息,如姓名,地址,出生日期,城市,邮编等。也可以执行删除个人信息,通讯录信息列表,信息查询,信息保存,以及信息提取的功能,最后可以退出通讯录。该程序应用了函数的调用,自定义函数以及文件的存储与调用等,使用数组或数组元素的指针和指针变量,对结构体及其元素用指针或
5、指针变量来指向。4、 主体内容 1、设计分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么1)输入的形式和输入值得范围;2)输出的形式;3)程序所能达到的功能; 4)测试数据:包括正确的输入结果和含有错误的输入及其输出结果; 2、程序结构开 始输 入输入结构体各元素输出结构体中各元素结 束3、 各模块的功能及程序说明1、输入保存结构 该结构实现的功能主要是从键盘输入个人的信息,如电话号码,地址,出生日期,城市,邮编等,然后保存,以方便以后的查询。程序说明:(1)输入个人信息:名字,地址,日期,邮政编码void enter(void)struct address *info;for(;)
6、info=(struct address *)malloc(sizeof(struct address);if(!info)printf("nout of memory");return;inputs("please enter name:",info->name,30);if(!info->name0) break;/*stop entering*/inputs("please enter street:",info->street,40);inputs("please enter city:"
7、,info->city,20);inputs("please enter state:",info->state,3);inputs("please enter zip:",info->zip,10);dls_store(info,&start,&last);/*entry loop*/如果超过给定内存,将给出提示,输入太长:void inputs(char *prompt,char *s,int count)char p225;do printf(prompt);fgets(p,254,stdin);if(strlen
8、(p)>count)printf("nToo Longn"); while(strlen(p)>count);pstrlen(p)-1=0;/* remove newline character */strcpy(s,p);(2)制作列表,对输入的个人信息进行存储与排列void dls_store(struct address *i,/*new element*/struct address *start,/*first element in list*/struct address *last/*last element in list*/)struct ad
9、dress *old,*p;if(*last=NULL)/*first element in list*/i->next=NULL;i->prior=NULL;*last=i;*start=i;return;p=*start;/*start at top of list*/old=NULL;while(p)if(strcmp(p->name,i->name)<0)old=p;p=p->next;elseif(p->prior)p->prior->next=i;i->next=p;i->prior=p->prior;p-&g
10、t;prior=i;return;i->next=p;/*new first element*/i->prior=NULL;p->prior=i;*start=i;return;old->next=i;/*put on end*/i->next=NULL;i->prior=old;*last=i;2、 查询功能模块 该结构主要实现的功能是从键盘输入人的信息,如地址,出生日期等,然后查找出他的通信方式。 程序说明:(2)从其内存中查找某个名字,并进行输出,如果没有就输出没有发现名字struct address *find(char *name)struct a
11、ddress *info;info=start;while(info)if(!strcmp(name,info->name ) return info;info = info->next; /* get next address */printf("Name not found.n");return NULL; /*not found*/(3)将通讯录中所有个人信息分别列出void list(void)struct address *info;info=start;while(info)display(info);info = info->next; /*
12、 get next address */printf("nn");(4)分别输出个人信息void display(struct address *info)printf("%sn",info->name);printf("%sn",info->street);printf("%sn",info->city);printf("%sn",info->state);printf("%sn",info->zip);printf("nn"
13、;);(5)根据其个人信息的存储地址来查找个人名字信息void search(void)char name40;struct address *info;printf("Enter name to find:");gets(name);info = find(name);if(!info) printf("Not Foundn");else display(info);3、修改、删除结构 该结构主要是在查找的基础之上,把原来的信息进行修改或删除操作。4、保存、提取结构该结构能动态的分配内存空间,每一次分配一块空间用来存放一个人的个人信息的数据,定义两个域
14、,一个是数据域,用来存放各种实际的数据,如个人姓名信息,个人地址信息,出生日期等等,必要的时候还能提取出个人的信息。4、源程序 #include"stdio.h" #include"stdlib.h" #include"string.h" struct addresschar name30;char street40;char city20;char state3;char zip11;struct address *next;struct address *prior;struct address *start;struct add
15、ress *last;struct address *find(char *);void enter(void),search(void),save(void);void load(void),list(void);void mldelete(struct address *,struct address *);void dls_store(struct address *i,struct address *start,struct address *last);void inputs(char *,char*,int),display(struct address *);int menu_s
16、elect(void);int main(void)start=last=NULL;for(;)switch(menu_select()case 1:enter();break;case 2:mldelete(&start,&last);break;case 3:list();break;case 4:search();break;case 5:save();break;case 6:load();break;case 7:exit(0);return 0;int menu_select(void)char s80;int c;printf("*tongxunlu*n
17、");printf("*1.Enter a name *n");printf("*2.delete a name *n");printf("*3.list the file *n");printf("*4.search *n"); printf("*5.save the file *n");printf("*6.load the file *n");printf("*7.Quit *n"); printf("*n");do p
18、rintf("nplease enter your choice:");gets(s);c=atoi(s);while(c<0|c>7);return c; /*Enter names and address.*/void enter(void)struct address *info;for(;)info=(struct address *)malloc(sizeof(struct address);if(!info)printf("nout of memory");return;inputs("please enter name
19、:",info->name,30);if(!info->name0) break;/*stop entering*/inputs("please enter street:",info->street,40);inputs("please enter city:",info->city,20);inputs("please enter state:",info->state,3);inputs("please enter zip:",info->zip,10);dls_
20、store(info,&start,&last);/*entry loop*/*/void inputs(char *prompt,char *s,int count)char p225;do printf(prompt);fgets(p,254,stdin);if(strlen(p)>count)printf("nToo Longn"); while(strlen(p)>count);pstrlen(p)-1=0;/* remove newline character */strcpy(s,p);/*Create a doubly linked
21、 list in sorted order */void dls_store(struct address *i,/*new element*/struct address *start,/*first element in list*/struct address *last/*last element in list*/)struct address *old,*p;if(*last=NULL)/*first element in list*/i->next=NULL;i->prior=NULL;*last=i;*start=i;return;p=*start;/*start
22、at top of list*/old=NULL;while(p)if(strcmp(p->name,i->name)<0)old=p;p=p->next;elseif(p->prior)p->prior->next=i;i->next=p;i->prior=p->prior;p->prior=i;return;i->next=p;/*new first element*/i->prior=NULL;p->prior=i;*start=i;return;old->next=i;/*put on end*/
23、i->next=NULL;i->prior=old;*last=i;/*Remove an element from the list*/void mldelete(struct address *start,struct address *last)struct address *info;char s80;inputs("Enter name:",s,30);info=find(s);if(info)if(*start=info)*start=info->next;if(*start)(*start)->prior=NULL;else *last
24、=NULL;elseinfo->prior->next=info->next;if(info!=*last)info->next->prior=info->prior;else*last=info->prior;free(info); /*return memory to system*/*Find an address.*/struct address *find(char *name)struct address *info;info=start;while(info)if(!strcmp(name,info->name ) return i
25、nfo;info = info->next; /* get next address */printf("Name not found.n");return NULL; /*not found*/* Display the entire list */void list(void)struct address *info;info=start;while(info)display(info);info = info->next; /* get next address */printf("nn");/* this function actua
26、lly prints the fields in each address.*/void display(struct address *info)printf("%sn",info->name);printf("%sn",info->street);printf("%sn",info->city);printf("%sn",info->state);printf("%sn",info->zip);printf("nn");/* Look for
27、 a name in the list */void search(void)char name40;struct address *info;printf("Enter name to find:");gets(name);info = find(name);if(!info) printf("Not Foundn");else display(info);/* Save the file to disk */void save(void)struct address *info;FILE *fp;fp = fopen("mlist"
28、;,"wb");if(!fp)printf("Cannot open file.n");exit(1);printf("nSaving Filen");info = start;while(info)fwrite(info,sizeof(struct address),1,fp);info = info->next ; /* get next address */fclose(fp);/* Load the address file. */void load()struct address *info;FILE *fp;fp=f
29、open("mlist","rb");if(!fp)printf("Cannot open file.n");exit(1);/* free any previously allocated memory */while(start)info=start->next;free(info);start=info;/* reset top and bottom pointers */start=last=NULL;printf("nLoading Filen");while(!feof(fp)info=(struct address *) malloc(sizeof(struct address);if(!in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度家庭保姆雇佣与技能提升服务合同4篇
- 2025年度门窗安装与室外照明一体化工程合同范本3篇
- 2025年度个人精装修房屋租赁合同示范文本2篇
- 2025年度茶馆店铺转让及文化传承合同3篇
- 2025版宁波共有产权房租赁合同模板4篇
- 2025年度车辆购置担保合同模板2篇
- 二零二五年度充电桩充电服务市场分析合同4篇
- 2025版木地板产业链整合与战略投资合同4篇
- 2025年度酒店楼顶花园租赁与维护合同3篇
- 年薪制劳动合同范本2025:新能源汽车行业人才激励方案3篇
- 幼儿园学习使用人民币教案教案
- 2023年浙江省绍兴市中考科学真题(解析版)
- 语言学概论全套教学课件
- 大数据与人工智能概论
- 《史记》上册注音版
- 2018年湖北省武汉市中考数学试卷含解析
- 测绘工程产品价格表汇编
- 《肾脏的结构和功能》课件
- 装饰图案设计-装饰图案的形式课件
- 护理学基础教案导尿术catheterization
- ICU护理工作流程
评论
0/150
提交评论