C语言同学通讯录程序设计.doc_第1页
C语言同学通讯录程序设计.doc_第2页
C语言同学通讯录程序设计.doc_第3页
C语言同学通讯录程序设计.doc_第4页
C语言同学通讯录程序设计.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

课 程 设 计服务课程名称: 计算机语言(c) 系: 自动控制工程系 专业: 电气自动化技术 班级: 电自专122 学号: 姓名: 指导教师: 周本海 许薇薇 课程设计周次: 16 起始日期:2013.6.17至2013.6.21 目 录目 录C语言课程设计成绩评定表2C语言课程设计任务书3需求分析及程序基本框架4程序设计说明书5源代码清单6课程设计总结2020C语言课程设计成绩评定表C语言课程设计成绩评定表班级电自专122学号姓名项目组同学通讯录程序设计项目组长项目组组员本人工作简介:我在这次程序设计中负责主菜单部分的程序代码及显示功能(借鉴了c语言实践教程),统计及退出功能都是我单独完成的。 期间也负责了部分错误代码的修改。组长评语: 小组成员工作认真负责,团结一致,积极讨论难题,努力完成了程序设计。 成绩评定标准ABCDE理论基础很好好比较好一般不好报告完成情况很好好比较好一般不好纪律表现很好好比较好一般不好程序创意很好好比较好一般不好所选模块完成情况很好好一般较差不好所选算法难易程度复杂比较复杂一般简单很简单程序可操作性很好好一般较差不好答辩表现很好好一般较差不好最后成绩优秀A=5B=3C=3B=4C=1B=2C=4D=1E=0及格A=0B=0C=4不及格A=0B=0C=0D=4负责指导教师: (签名)指导教师: (签名)C语言课程设计任务书C语言课程设计任务书一、设计目的通过本次课程设计使学生进一步加深对C语言课程内容的理解,初步掌握一般应用程序的开发方法和步骤,进一步了解与掌握C语言的编程方法和技巧,提高学生用C语言解决实际问题的能力。二、设计要求1、认真查阅参考书、资料2、遵守课程设计时间安排3、按时上机,认真调试程序4、认真完成课程设计报告三、课设报告装订内容及顺序1、课程设计封皮2、目录3、课程设计成绩评定表4、课程设计任务书5、程序基本框架图 6、程序设计说明书7、源代码清单8、课设总结与心得四、设计题目通讯录管理系统五、时间安排(一周:从 6 月 17 日到 6 月 21 日 )1、查阅资料及程序设计(1天)2、程序编制及调试(3天)3、成绩评定(0.5天)3、打印报告(0.5天)六、参考文献1、C语言程序设计李淑华/李贞编 大连理工大学出版社2、C语言程序设计孙连科/姚大鹏编 辽海出版社3、C+时尚编程百例网冠科技编.机械工业出版社4、TURBO C 实用大全徐金梧等编. 机械工业出版社需求分析及程序基本框架需求分析及程序基本框架(注:需求分析为制作系统的功能需求,希望能够进行详细说明)添加同学信息开始删除同学信息修改同学信息查询同学信息统计同学信息退出显示同学信息按姓名查找按号码查找a:添加同学信息功能,按提示输入同学的学号、姓名、性别、工作单位、电话号码和email.b:删除同学信息功能,按提示删除同学信息。c:修改同学信息功能,按提示修改同学信息。d:查询同学信息功能,1是按姓名查找,2是按电话号码查找。e:显示同学信息功能,显示所有同学信息。f:统计同学信息功能,分别统计通讯录中男女同学的人数。g:退出功能,退出程序。程序设计说明书程序设计说明书一、 程序运用的语句:struct语句,struct classmate结构体类型变量的定义void menu,菜单功能void editclassmate,修改功能void showallclassmate,显示功能void searchbysex,统计功能void fun_quit,退出功能switch语句,实现多分支选择的语句。if语句的选择功能。二、程序构思:通过void函数定义各种功能,实现通讯录的一系列作用,包括添加、删除、查找、修改、显示、统计、退出等功能。三、程序功能简介1.菜单功能:显示同学通讯录系统的主菜单,供用户选择所需的功能,通过自己定义的void menu()函数来实现。2.修改功能:通过同学的姓名及其他信息来修改同学的信息,可以通过自己定义的void edit()函数来实现。3.显示功能:可以按学号来显示同学的所有信息,通过自己定义的void showall()函数来实现。4.统计功能:按性别来统计同学的所有信息,通过自己定义的void searchbysex()函数来实现。5.退出功能:退出程序,通过自己定义的void fun_quit()函数来实现。源代码清单源代码清单源代码清单#include#include#include#include#define MAX 3#define LEN sizeof(struct classmate)struct classmate int num; /*学号*/ char name8; /*姓名*/ char telephone13; /*电话*/ char email20; /*email地址*/ char sex12; /*性别*/ char workunit30; /*工作单位*/classmatesMAX;void menu(); /*功能:主菜单选择函数*/void addclassmate(); /*功能:添加同学信息*/void showall(); /*功能:显示通讯录所有同学信息*/void delclassmate(); /*功能:根据姓名删除同学信息*/ void editclassmate(); /*功能:根据姓名修改同学信息*/void menu_search(); /*功能:查找菜单*/void searchbyname(); /*功能:按姓名查找同学信息*/void searchbytel(); /*功能:按电话号码查找同学信息*/void searchbysex(); /*功能:按性别统计男女人数*/void fun_quit(); /*功能:退出*/void main() system(cls); /*清屏*/ menu(); /*调用主菜单*/ void menu() char *menu=#通讯录#, a.添加同学信息, b.删除同学信息, c.修改同学信息, d.查询同学信息, e.显示所有同学信息, f.统计男女人数信息, g.退出, #, ;/*定义菜单指针数组*/ int i; char sel; int quit=0; do system(cls); /*清屏*/ for(i=0;i9;i+) /*输出显示菜单*/ printf(n%s,menui); printf(n请输入a,b,c,d,e,f或g:n); sel=getchar(); switch(sel) case a:addclassmate();break; case b:delclassmate();break; case c:editclassmate();break; case d:menu_search();break; case e:showall();break; case f:searchbysex(); case g:quit=1;fun_quit(); while(!quit);void addclassmate() /*功能:插入同学信息*/ int total=0; /*用于存放已有同学人数*/ int x; FILE *fp; int i=0; struct classmate *p_classmate=classmates; /*定义一指针p_classmate指向数组classmates*/ struct classmate classmate_add; if(fp=fopen(tongxl,wb)=NULL) /*打开文件*/ printf(文件有错误不能打开!); exit(0); while(fread(p_classmate,LEN,1,fp)/*将fp所指文件的数据读入指针p_classmate所指的地址中,并统计同学人数*/ p_classmate+; total=total+1; fclose(fp); if(total=MAX) printf(n通讯录已满,无法再增加同学记录!); system(pause); menu(); else printf(n=); printf(n请输入同学的学号:);scanf(%d,&classmate_add.num);printf(n请输入同学的姓名:);scanf(%s,classmate_);printf(n请输入同学的电话号码:);scanf(%s,classmate_add.telephone);printf(n请输入同学的email地址:);scanf(%s,classmate_add.email);printf(n请输入同学的性别:);scanf(%s,classmate_add.sex);printf(n请输入同学的工作单位:);scanf(%s,classmate_add.workunit);if(fp=fopen(tongxl,ab+)=NULL) printf(文件有错误不能打开!);exit(0);fseek(fp,LEN,SEEK_END); /*将文件指针移动到文件末尾*/fwrite(&classmate_add,LEN,1,fp); /*将添加的数据写入到fp所指的文件中*/fclose(fp);total=total+1; /*同学人数加1*/printf(n增加同学记录成功!n);printf(n是否增加同学记录?继续请按1;否则,请按0返回主菜单);scanf(%d,&x);while(x!=0&x!=1) printf(n提示:您的输入有误,请重新输入0或1!); scanf(%d,&x);if(x=0) menu();else addclassmate(); void showall() /*显示通讯录所有同学信息*/ struct classmate classmate; FILE *fp; int len; if(fp=fopen(tongxl, rb)=NULL) /*打开文件*/ printf(文件有错误不能打开!); exit(0); fseek(fp,0,SEEK_END); /*将指针fp指向文件的末尾*/ len=ftell(fp); /*len值为0表示文件空*/ if(len=0) printf(n通讯录为空,没有信息可显示!); printf(n按任意键返回主菜单n);getch();menu(); rewind(fp); printf(n学号 姓名 电话 email 性别 工作单位 n); while(fread(&classmate,LEN,1,fp) printf(n%3d%5s%10s%10s%10s%10s,classmate.num,, classmate.telephone,classmate.email,classmate.sex,classmate.workunit); fclose(fp); /*关闭文件*/ system(pause); void delclassmate() /*功能:按姓名删除同学*/ struct classmate *p_classmate=classmates; struct classmate kong=0,; FILE *fp; int total=0; int i; int flag=0; /*标记通讯录中是否存在要删除的同学,0表示不存在,1表示存在*/ char name_del8; /*要删除同学的姓名*/ if(fp=fopen(tongxl,rb)=NULL) printf(文件有错误不能打开!); exit(0); while(fread(p_classmate,LEN,1,fp); p_classmate+; total+; fclose(fp); p_classmate=classmates; printf(n请输入要删除的同学姓名:); scanf(%s,name_del); for(i=0;iname,name_del)=0) p_classmatei=classmatestotal-1; classmatestotal-1=kong; flag=1; total=total-1; break; else p_classmate+; if(flag=0) printf(n通讯录中不存在该姓名的同学!n); system(pause); return; if(flag=1) if(fp=fopen(tongxl,wb+)=NULL) printf(文件有错误不能打开!); exit(0); p_classmate=classmates; for(i=0;itotal;i+) fwrite(p_classmate,LEN,1,fp); p_classmate=p_classmate+1; fclose(fp); printf(n成功删除该同学信息!n); system(pause); menu(); void editclassmate() /*功能:修改同学信息*/struct classmate *p_classmate=classmates; struct classmate classmate_edit; /*记录修改后的信息*/FILE *fp;int total=0;int i;int locate; /*用于标记要修改信息的同学在文件中的位置*/int flag=0; /*标记通讯录中是否存在要修改信息的同学,0表示不存在,表示存在*/char name_edit8; /*要修改信息的同学姓名*/if(fp=fopen(tongxl,rb+)=NULL) /*以r+方式打开,从而对文件进行修改*/ printf(文件有错误不能打开!); exit(0);while(fread(p_classmate,LEN,1,fp) p_classmate+; total+; p_classmate=classmates; /*将指针p_classmate重新定位到数组classmates的首地址处*/ printf(n请输入要修改信息的同学的姓名:); scanf(%s,name_edit); for(i=0;iname,name_edit)=0) locate=i; /*标记要修改信息的同学的位置*/ flag=1; break; else p_classmate+; if(flag=0) printf(n通讯录中不存在该姓名的同学!n); system(pause); menu(); if(flag=1) printf(n=); printf(n请输入同学的学号(原学号为%d):,p_classmate-num); scanf (%d,&classmate_edit.num); printf(n请输入同学的姓名(原姓名为%s):,p_classmate-name); scanf (%s,&classmate_); printf(n请输入同学的电话号码(原电话号码为%s):,p_classmate-telephone); scanf(%s,classmate_edit.telephone); printf(n请输入同学的email地址(原email地址为%s):,p_classmate-email); scanf(%s,classmate_edit.email); printf(n请输入同学的sex为%s):,p_classmate-sex); scanf(%s,classmate_edit.sex); printf(n请输入同学的工作单位(原工作单位为%s):,p_classmate-workunit); scanf(%s,classmate_edit.workunit); fseek(fp,locate*LEN,SEEK_SET); /*将文件指针定位到文件中原信息的位置*/ fwrite(&classmate_edit,LEN,1,fp); fclose(fp); printf(n成功修改该同学信息!n); system(pause); menu(); void menu_search() /*功能:查询菜单*/int sel;/system(cls); char *menu_search= #, 1.按姓名查找, 2.按电话号码查找, #, ; int i=0; for(i=0;i5;i+) printf(n%s,menu_searchi); printf(n请输入1或2:n); scanf(%d,&sel); while(sel2) printf(输入有误,请重新输入!n); printf(n请输入1或2:n); scanf(%d,&sel); switch(sel) case 1:searchbyname();break; case 2:searchbytel();break; void searchbyname() /*功能:按姓名查找同学信息*/ struct classmate classmate_search; /*记录查询到的信息*/int flag=0; /*标记通讯录中是否存在要查询的同学, 0表示不存在,1表示存在*/char name_search8;FILE *fp1; /*要查询的同学的姓名*/if(fp1=fopen(tongxl,rb)=NULL) /*以只读方式打开的文件*/ printf(文件有错误不能打开!); exit(0);printf(n请输入要修改查找的同学的姓名:);scanf(%s, name_search);while(fread(&classmate_search,LEN,1,fp1)if(strcmp(classmate_,name_search)=0) flag=1; break;fclose(fp1);if(flag=0) printf(n通讯录中不存在名字为%s的同学!n,name_search); system(pause); menu(); if(flag=1) printf(n=); printf(n查找成功!n); printf(姓名为%s的同学的个人信息如下:n,name_search); printf(n学号: %d,classmate_search.num); printf(n姓名:%s,classmate_); printf(n电话号码: %s,classmate_search.telephone); printf(nemail: %s,classmate_search.email); printf(n性别: %s,classmate_search.sex); printf(n工作单位: %sn,classmate_search.workunit); system(pause); menu(); void searchbytel() /*功能:按电话号码查找同学信息*/ struct classmate classmate_search; /*记录查询到的信息*/FILE *fp;int flag=0; /*标记通讯录中是否存在要查询的同学,0表示不存在,1表示存在*/char tel_search13; /*要查询信息的同学的电话号码*/if(fp=fopen(tongxl,rb)=NULL) /*以只读方式打开的文件*/ printf(文件有错误不能打开!);exit(0);printf(n请输入要修改查找的电话号码:);scanf(%s,tel_search);while(fread(&classmate_search,LEN,1,fp)if(strcmp(classmate_search.telephone,tel_search)=0)flag=1; break;fclose(fp);if(flag=0) printf(n通讯录中不存在电话号码为%s的同学!n,tel_search);system(pause);menu();if(flag=1)printf(n=);printf(n查找成功!n);printf(电话号码为%s的同学的个人信息如下:n,tel_search);printf(n学号:%d,classmate_search.num);printf(姓名:%s,classmate_);printf(nemail:%s,classmate_search.email);printf(n性别:%s,classmate_search.sex);printf(n工作单位:%sn,classmate_search.workunit);system(pause);menu();void searchbysex()struct classmate;int sex;int men=0, women=0;if(sex=men)men=men+;printf(men=%dn,men);elsewomen=women+

温馨提示

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

评论

0/150

提交评论