




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机学院09级C语言程序设计报告C语言课程设计报告题 目:设计一个简单的计算器设 计 者: xxxx专业班级:通信工程xx-xx学 号:31090902xxxx指导教师: xxxx 2010年 09月 20 日河南理工大学计算机学院目录1题目.31.1 问题提出31.2 本系统涉及的知识点31.3 功能要求.32 功能设计32.1 算法设计.32.2根据所选菜单编写相应代码.42.3部分模块流程图.53 程序代码设计 64 C程序设计总结 .75 结束语 .7参考文献 .81题目:制作一个通讯录系统要求:该程序具有查找、添加、修改、删除功能,其中通讯录包括姓名、性别、出生日期、家庭住址、电话号码、邮政编码等。1.1 问题提出本人计划编写一个通讯录管理系统,用来管理个人通讯信息。1.2 本系统涉及的知识点结构、数组、循环、函数、分支1.3 功能要求1、建立联系人信息,每个联系人的信息包括:姓名、性别、出生日期、邮政编码、电话号码等;2、查看联系人信息;3、修改和删除联系人信息;4、保存联系人通讯信息;5、查询联系人信息;6退出通讯录系统2 功能设计利用switch的分支结构完成添加联系人信息、查看通讯录中所有联系人的信息、修改和删除信息、保存信息、查询特定联系人信息的功能。2.1 算法设计利用switch语句设计如图1所示的主菜单请输入选项编号(16)1 添加新成员信息2 查看所有成员信息3删除成员4 查询成员信息5 保存信息并退出6 退 出图1 联系人管理系统主菜单选择1后,调用函数Datainput(i),完成信息的输入。直到输入的联系人的信息达到要求之后,程序运行完毕。 主菜单1.添加新成员信息图2 联系人信息的添加菜单22 根据所选菜单编写相应代码:1)添加函数Datainput():利用循环输入的方式,将有关信息存入结构数组,结构数组根据实际的人数,采用动态方式建立,达到要求成员数后,结束循环。2)载入函数 Dataload():利用循环的方式读取已有记录,如果记录为空,则将信息写入文件中。3)显示函数Datashow():利用结构体数组打印出联系人的信息,例如出生年月、家庭住址、邮政编码、电话号等信息。4)保存函数Datasave():借用指针打开文件,利用循环方式将结构体变量records的确定个数字节输入到record.txt文件中。5)程序的系统模块图如下:主菜单 添加新成员信息查看所有成员信息删除成员保存成员信息并退出查询成员信息退出3 2.3部分模块流程图(1)退出系统模块打开文件 文件是否为空是 否只写文件读写文件返回主菜单(2)添加新成员信息模块输入增加成员的数量j调用Data_Input()函数知道循环次数达到j返回主菜单3.程序代码设计新成员信息添加模块(模块名宋体粗小四号,其余宋体小四号)1)函数原形:void Datainput(int j)2)功能:利用结构体变量recordj和scanf、prinf函数完成联系人信息的输入,存放j个成员的信息。3)变量及类型int j :循环控制变量struct record:接受主函数传过来的首地址。、recordsj.sex、recordsj.birth.year、recordsj.birth.month、recordsj.addr.post_num、recordsj.addr.addr、recordsj.telephone:结构体成员变量,用于存放成员信息。4)说明:程序运行后,若选择添加信息模块,就可以在文件中生成新的成员信息。4 C程序设计总结1. 第一次程序调试时,程序出现多种错误导致无法编译成功。经过较长时间的检查、修改之后程序仍然不能够编译,在同学与老师的帮助下,最终将程序修改正确通过了编译,程序最终成功并正常运行。2. 在程序设计过程中,借助switch的分支结构,与函数的调用构成了程序的主体。但是由于某些知识点未能熟练掌握,导致程序在调试阶段出现了众多错误。例如,结构体数组在引用过程中出现了格式错误;变量的作用域没有能把握好,运行得到了出乎意料的结果。此外,由于知识的匮乏,未能做出美观的程序的界面。此次程序设计让我意识到自己知识的匮乏,相信随着学习的深入,我能够学习到更多的程序设计知识,进一步完善和提高自己的专业素质。5 结束语在此次程序设计过程中我遇到了许多个人无法解决的问题,但是在老师的悉心指导和同学们的耐心帮助下,解决了一个有一个的困难。在这里我衷心的感谢老师和同学们,谢谢你们的无私帮助。参考文献1 谭浩强,C程序设计(第二版),北京:清华大学出版社,2001.1 2 陈朔鹰,C语言程序设计习题集,北京:人民邮电出版社,2003.63 贾宗璞、许合利,C语言程序设计 江苏:中国矿业大学出版社,2007.2附录:程序清单(左对齐,宋体粗四号)#include #include /*使用字符串函数*/#include #include#include /*使用DOS函数*/int i; /*定义一个全局变量i*/struct addr /*定义通讯地址结构体*/ char post_num10; /*邮编*/ char addr60; /*家庭地址*/;struct birth /*定义出生年月结构体*/ int year; /*年份*/ int month; /*月份*/ int day; /*日期*/;struct record1 /*定义电子通讯录结构体*/ int number; /*序号*/ char name20; /*姓名*/ char sex; /*性别*/ struct birth birth; /*出生年月*/ struct addr addr; /*通信地址*/ char telephone13; /*联系电话*/records50;FILE *fp; /*定义指向file类型结构体的指针变量*/void Data_Load() /*定义载入数据函数*/ int j; long k; fp=fopen(record.txt,r+t); if(fp!=NULL) /*如果文件不为空*/ for(i=1;i50;i+) j=fgetc(fp); if(j=EOF) /*判断是否到了文件尾*/ return; /*如果到了结尾,返回*/ k=i-1; fseek(fp,k*sizeof(struct record1),SEEK_SET); fread(&recordsi,sizeof(struct record1),1,fp); else fp=fopen(record.txt,w); i=1; void Data_Show(int j) /*定义显示数据函数*/printf(nntNo:%3dn,recordsj.number); /*序号*/printf(ntname:%2sn,); /*姓名*/ printf(ntbirthday (y/m/d):%4d%2d%2d, recordsj.birth.year, recordsj.birth.month, recordsj.birth.day); printf(ntpost code:%-10s,recordsj.addr.post_num); printf(ntaddress:%-40s,recordsj.addr.addr); printf(ntphone%-13s,recordsj.telephone); void Data_Input(int j) /*定义添加数据函数*/ fflush(stdin); /*清空输入缓冲区*/ recordsj.number=j; printf(nnntinputNo %d ,j); printf(ntname:); /*输入姓名*/ scanf(%s,); fflush(stdin); /*清空输入缓冲区*/ printf(tsex(m/f):); /*输入性别*/ scanf(%c,&recordsj.sex); printf(t-birthday-); /*输入出生年月*/ printf(ntyear:); scanf(%d,&recordsj.birth.year); printf(tmonth:); scanf(%d,&recordsj.birth.month); printf(tday:); scanf(%d,&recordsj.birth.day); printf(tpost code:); /*输入邮编*/ scanf(%s,recordsj.addr.post_num); printf(taddress:); /*输入家庭地址*/ scanf(%s,recordsj.addr.addr); printf(tphone:); /*输入联系电话*/ scanf(%s,recordsj.telephone);void Data_Save() /*定义保存函数*/ int j; fp=fopen(record.txt,w); /*打开文件record.txt,只写*/ for(j=1;j=i;j+) fwrite(&recordsj,sizeof(struct record1),1,fp); void main() /*主函数*/ int j,k; char ch; char search_name40; /*定义字符串变量*/ Data_Load(); /*声明载入数据函数*/ i-; do printf(* 菜单 *n); printf(-! 欢迎进入系统 !-); printf(n*t请选择操作: *); printf(*t1.添加成员 *); printf(*t2.显示信息 *); printf(*t3.删除信息 *); printf(*t4.查询成员 *); printf(*t5.插入 *); printf(*t6.保存和退出 *); printf(*t7.退出 *); printf(n* 菜单 *n); printf(t请选择操作选项:n); ch=getche(); /*输入字符*/ switch(ch) case 1: int p; printf(ntPlease input the number of people you want to add:); scanf(%d,&p);/*增加记录*/ printf(tPlease press ENTER again); while(getch()!=0x1b&ip) i+; Data_Input(i); printf(Please press Enter again to continuen); if(i=p)printf(ntThe data is fulln); break; case 2: j=1; while(getch()!=0x1b&ji) printf(ntThe system is endn); break; case 3: if(i1) printf(ntno recordn); break; printf(ntplease input the number you want to delect:); scanf(%d,&k); printf(tsucceed!n); for(j=k;ji;j+) strcpy(,recordsj+1.name); recordsj.sex=recordsj+1.sex; recordsj.birth.year=recordsj+1.birth.year; recordsj.birth.month=recordsj+1.birth.month; recordsj.birth.day=recordsj+1.birth.day; strcpy(recordsj.addr.post_num,recordsj+1.addr.post_num); strcpy(recordsj.addr.addr,recordsj+1.addr.addr); strcpy(recordsj.telephone,recordsj+1.telephone); i-; break; case 4: printf(ntPlease input the name:); scanf(%s, search_name); for(j=1;ji) /*搜索失败*/ printf(ntNo Record ); /*显示无此记录*/ break; case 5: printf(ntInsert No:); scanf(%d,&k); for(j=k+1;ji;j+) strcpy(,); recordsj.sex=recordsj-1.sex; recordsj.birth.year=recordsj-1.birth.year; recordsj.birth.month=recordsj-1.birth.month; recordsj.birth.day=recordsj-1.birth.day; strcpy(recordsj.addr.post_num,recordsj-1.addr.post_num); strcpy(recordsj.addr.addr,recordsj-1.addr.addr); strcpy(recordsj.telephone,recordsj-1.telephone); Data_Input(k); /*声明增加
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年 郴州市资兴市消防救援大队帮厨招聘考试笔试试题附答案
- 施工平面图绘制系统项目投资可行性研究分析报告(2024-2030版)
- 云南智能计量仪表项目可行性研究报告
- 税务师网盘课件
- 中国仿古白漆行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 2025-2031年中国花生牛奶行业发展前景预测及投资方向研究报告
- 2025年中国电子材料行业市场前景预测及投资战略研究报告
- 中国特种陶瓷成型蜡项目投资可行性研究报告
- 中国土矿石开采项目投资可行性研究报告
- 2025年中国炸鸡调料行业市场调研及未来发展趋势预测报告
- 会计核算考试题目及答案
- 人工智能赋能思政教育“精准滴灌”体系构建
- 搬运装卸服务外包项目投标方案(技术方案)
- 2025年安全月主要责任人讲安全课件三:安全月主题宣讲课件
- 绿植移植合同协议
- 胶质瘤术后护理查房
- 缝纫初步知识培训课件
- 2025年光伏行业上半年发展回顾与下半年形势展望
- 年中国金骨莲胶囊市场分析及发展策略研究预测报告
- 8.4 流体压强与流速的关系 课件-2024-2025学年沪科版物理八年级下册
- 【北师大版】2024-2025学年一年级数学下册教学计划(及进度表)
评论
0/150
提交评论