




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录1程序的目的和需求分析21.1设计项目名称:21.2课程设计目的:21.3任务与需求分析22 程序的主要功能32.1输入功能:添加一个学生的基本通讯信息,包括姓名、电话号码、地址、邮编和e-mail。32.2显示功能:显示所有学生的信息包括姓名、电话号码、地址、邮编和e-mail。32.3查找功能:根据你键入的学生姓名或电话号码,显示其详细信息。32.4排序功能:能够对所有学生的信息按姓名进行排序。32.5删除功能:能够对一个学生的通讯信息进行删除,按姓名或电话号码进行删除。32.6保存功能:对输入的所有信息进行保存。32.7退出系统33 程序运行平台34 总体设计35 设计思路36 详细设计与模块分析46.1 添加模块46.2 显示模块46.3 查找模块46.4删除模块57 程序代码68 结论与实验心得169参考文献181程序的目的和需求分析1.1设计项目名称:学生通讯录管理系统 1.2课程设计目的:通过设计一个学生通讯录管理系统,进一步熟悉C+中类的概念、基本知识和技能,类的封装、继承的实现方式。掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。1.3任务与需求分析 本课题主要任务是编译学生通讯录管理系统,可以录入、显示、查找、插入、排序、删除和保存学生通讯信息。(1)录入通讯信息建立一个函数,可以添加学生通讯信息,添加完后返回主菜单;(2)显示通讯信息建立一个函数,可以显示全部学生的通讯信息,实现后可返回主菜单。(3)查找通讯信息建立二个函数,可以分别通过学号、姓名查询通讯信息,查询完后返回主菜单。(4)插入通讯信息建立一个函数,保留原通讯信息,添加新通讯信息,插入后可返回主菜单。(5)排序通讯信息建立一个函数,按姓名进行排序,排序后可返回主菜单。(6)删除通讯信息建立二个函数,可以通过学生姓名、学号删除学生通讯信息,实现后返回主菜单。(7)退出通讯系统。2 程序的主要功能2.1输入功能:添加一个学生的基本通讯信息,包括姓名、电话号码、地址、邮编和e-mail。2.2显示功能:显示所有学生的信息包括姓名、电话号码、地址、邮编和e-mail。2.3查找功能:根据你键入的学生姓名或电话号码,显示其详细信息。2.4排序功能:能够对所有学生的信息按姓名进行排序。2.5删除功能:能够对一个学生的通讯信息进行删除,按姓名或电话号码进行删除。2.6保存功能:对输入的所有信息进行保存。2.7退出系统3 程序运行平台vC+6.0具体操作如下:新建文件,编写代码,把程序分成若干模块。分别编写各模块,编写好后编译,纠错,改正错误后,连接,然后运行程序。4 总体设计主函数保存信息删除信息插入信息查找信息显示信息输入信息5 设计思路1. 通讯录的主要信息包括:姓名,电话号码,地址,邮编和e-mail.2. 用结构体数组来存储信息,用int menu_select()函数来实现主菜单信息,用int adduser()函数来实现信息的输入,用int list()函数来显示打印信息,用int search()函数来按姓名查找信息,用 int display()函数来按电话号码查找信息,用int add()函数来插入信息,用int listbyname()函数来按姓名排序,用int dele()函数来删除信息,用int save()函数来保存信息,用int exit()函数来退出通讯录系统.3. 把整个系统分成几个函数,对单个函数进行编程,对函数进行调用来实现整个系统任务.6 详细设计与模块分析6.1 添加模块系统将提示用户输入新添加的学生的信息,根据提示输入学生姓名、电话号码、地址和e-mail。输入完后,系统将提示是否继续添加,按n停止按y继续。地址 电话号码 学生姓名输入学生信息按y返回继续是否继续添加按(y/n)e-mail按n程序停止6.2 显示模块显示模块将输出所有学生的通讯信息。按系统的提示按相应按键,系统将调用已录入的学生通讯信息,并全部输出。6.3 查找模块首先由用户输入要查找的学生的姓名或电话号码,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的学生资料。具体流程图如下:查找学生信息按电话查询按姓名查询输入姓名输入号码查找查找有此号码无此号码有此姓名无此姓名按y返回继续按y返回继续输出信息提示无输出信息提示无是否继续查找按(y/n)是否继续查找按(y/n)按n程序停止6.4删除模块首先由用户输入要删除的单个学生姓名或学号或电话,然后调用删除函数,删除该名学生的资料。具体流程图如下:删除学生信息按电话删除按姓名删除输入电话输入姓名查找查找判断有无匹配的判断有无匹配的按y返回继续按y返回继续有删除提示无有删除提示无是否继续查找按(y/n)是否继续查找按(y/n)按n程序停止7 程序代码#include stdio.h#include stdlib.h#include string.h#include conio.h#include stdlib.h#define null 0 struct record char name20; char phone20; char adress40; char postcode10; char e_mail30; student500; struct LinkList struct record US; struct LinkList *next;a; struct LinkList *head=null;int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();void main() system(cls); for(;) switch(menu_select() case 0:adduser();break; case 1:list();break; case 2:search();break; case 3:display();break; case 4:add();break; case 5:listbyname();break; case 6:dele();break; case 7:save();break; case 8:exit(0); menu_select() char s80; int a; printf(*_* press any key enter menu! *_* n); getch(); system(cls); printf(tt*MENU*nn); printf(tt 0. 输入记录n); printf(tt 1. 显示记录 n); printf(tt 2. 按姓名查找n); printf(tt 3. 按电话号码查找n); printf(tt 4. 插入记录 n); printf(tt 5. 按姓名排序n); printf(tt 6. 删除记录n); printf(tt 7. 记录保存文件n); printf(tt 8. Quitn); printf(tt*n); do printf(n Enter you choice(011):); scanf(%s,s); a=atoi(s); while (a11); return a;adduser() printf(ntt* 请输入用户信息 *n); printf(ntt输入姓名:); scanf(%s,&); printf(ntt输入电话号码:); scanf(%s,&studentnum.phone); printf(ntt输入地址:); scanf(%s,&studentnum.adress); printf(ntt输入邮编:); scanf(%s,&studentnum.postcode); printf(ntt输入e-mail:); scanf(%s,&studentnum.e_mail); num+; printf(ntt是否继续添加?(Y/N):); if (getch()=y) adduser(); return(0); list() int i; system(cls); if(num!=0) printf(ntt* 以下为通讯录所有信息*); for (i=0;inum;i+) printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntt邮编: %s,studenti.postcode); printf(ntte-mail:%s,studenti.e_mail); printf(tt); if (i+1num) printf(ntt_); system(pause); printf(ntt*); else printf(ntt通讯录中无任何纪录); printf(ntt按任意键返回主菜单:); getch(); return(0); search() int mark=0; int i; int a=0; printf(ntt* 按姓名查找 *); char name20; printf(ntt请输入姓名:); scanf(%s,name); for(i=a;inum;i+) if (strcmp(,name)=0) printf(ntt* 以下是您查找的用户信息 *); printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(ntt*); mark+; if (i+1)num) printf(ntt是否继续查找相同名字的用户信息:(y/n); if (getch()=y) a=i; continue; else return(0); else printf(ntt按任意键返回主菜单); getch(); return(0); if(mark!=0) printf(ntt没有相同姓名的用户纪录); printf(ntt按任意键返回主菜单); getch(); return(0); else printf(ntt没有相同姓名的用户纪录); printf(ntt按任意键返回主菜单); getch(); return(0); display() int mark=0; int i; int a=0; printf(ntt* 按电话查找 *); char phone10; printf(ntt请输入电话号码:); scanf(%s,phone); for(i=0;inum;i+) if (strcmp(studenti.phone,phone)=0) printf(ntt* 以下是您查找的用户信息 *); printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(ntt*); printf(ntt按任意键返回主菜单:); mark+; getch(); return(0); if (mark=0) printf(ntt没有改用户的信息); printf(ntt按任意键返回主菜单); getch(); return(0); return(0); add() int i; if (fp=fopen(student.bin,wb)=NULL) printf(ntt文件打开失败); for (i=0;inum;i+) if (fwrite(&studenti,sizeof(struct record),1,fp)!=1) printf(ntt写入文件错误!n); printf(ntt* 请输入用户信息 *n); printf(ntt输入姓名:); scanf(%s,&); printf(ntt输入电话号码:); scanf(%s,&studentnum.phone); printf(ntt输入地址:); scanf(%s,&studentnum.adress); printf(ntt输入邮编:); scanf(%s,&studentnum.postcode); printf(ntt输入e-mail:); scanf(%s,&studentnum.e_mail); num+; printf(ntt是否继续添加?(Y/N):); if (getch()=y) adduser(); return(0); fclose(fp); printf(ntt通讯录文件已保存); printf(ntt按任意键退出程序ntt); exit(0); return(0); void deletebyphone() int i,j; int deletemark=0; char phone20; printf(ntt请输入要删除用户电话号码:); scanf(%s,phone); if(num=0) printf(ntt对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; for (i=0;inum;i+) if (strcmp(studenti.phone,phone)=NULL) printf(ntt以下是您要删除的用户纪录:); printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(ntt是否删除?(y/n); if (getch()=y) for (j=i;jnum-1;j+) studentj=studentj+1; num-; deletemark+; printf(ntt删除成功); printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyphone(); return; else return; continue; if (deletemark=0) printf(ntt没有该用户的纪录); printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyphone(); return; void deletebyname() int a=0; int findmark=0; int j; int deletemark=0; int i; char name20; printf(ntt请输入要删除用户姓名:); scanf(%s,name); for (i=a;inum;i+) if (strcmp(,name)=NULL) printf(ntt以下是您要删除的用户纪录:); findmark+; printf(ntt_); printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(ntt_); printf(ntt是否删除?(y/n); if (getch()=y) for (j=i;jnum-1;j+) studentj=studentj+1; num-; deletemark+; printf(ntt删除成功); if(i+1)num) printf(ntt是否继续删除相同姓名的用户信息?(y/n); if (getch()=y) a=i; continue; printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyname(); return; if(i+1)num) printf(ntt是否继续删除相同姓名的用户信息?(y/n); if (getch()=y) a=i; continue; else continue; if (deletemark=0)&(findmark=0) printf(ntt没有该用户的纪录); printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyphone(); return; return; else if (findmark!=0) printf(ntt没有重名信息); printf(ntt没有该用户的纪录); printf(ntt是否继续删除?(y/n); if (getch()=y) deletebyphone(); return; return; dele() char choic; printf(ntt1-按电话号码删除 2-按姓名删除); printf(ntt请选择:); choic=getch(); switch (choic) case 1:deletebyphone();break; case 2:deletebyname();break; return(0); listbyname() int i,j; struct record tmp; for (i=1;inum;i+) if(strcmp(,)0) tmp=studenti; j=i-1; do studentj+1=studentj; j-; while (strcmp(,)=0); studentj+1=tmp; printf(ntt排序成功,是否显示?(y/n); if (getch()=y) list(); return(0); save() int j; FILE*fp; fp=fopen(student.txt,w); if (fp=NULL) printf(cant open the file.); if(num!=0) for(j=0;jnum;j+) fwri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化验室药品事故应急预案(3篇)
- 浙江树人学院《足球训练理论与实践五》2024-2025学年第一学期期末试卷
- 齐齐哈尔大学《设计文化概论传统文化与兵器美学》2024-2025学年第一学期期末试卷
- 广州体育学院《生物绿色工业及资源高效利用》2024-2025学年第一学期期末试卷
- 焦作工贸职业学院《篮球主项提高课》2024-2025学年第一学期期末试卷
- 县级农业生物灾害应急预案(3篇)
- 玻璃钢夹砂管施工方案(3篇)
- 2025至2030A4纸行业市场深度研究及发展前景投资可行性分析报告
- 2025-2030餐饮数字化管理系统研究及效率提升与数据资产价值分析
- 2025-2030镍矿湿法冶炼技术对比与能耗优化分析报告
- 2025晋中祁县司法协理员招聘笔试备考试题及答案解析
- 农村自建房租房合同范本
- 虚拟化平台日常运维指南与规范
- 2025年内蒙古中考语文试卷真题及答案详解(精校打印)
- 2025年高校教师资格证考试题库(带答案能力提升)
- 2023年烟台蓝天投资开发集团有限公司招聘笔试模拟试题及答案解析
- 长沙市历年中考数学试卷,2014-2021年长沙中考数学近八年真题汇总(含答案解析)
- 【英语】人教版英语八年级英语下册阅读理解专题复习练习(含解析)
- 《植物生理学》课件第四章+植物的呼吸作用
- 2022年出差管理制度员工出差管理制度
- 工作责任心主题培训ppt课件(PPT 26页)
评论
0/150
提交评论