学生手机通信录管理系统.docx
- 文档编号:11195500
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:43
- 大小:298.54KB
学生手机通信录管理系统.docx
《学生手机通信录管理系统.docx》由会员分享,可在线阅读,更多相关《学生手机通信录管理系统.docx(43页珍藏版)》请在冰豆网上搜索。
学生手机通信录管理系统
程序设计报告书
(2012/2013学年第一学期)
题目:
通讯录管理系统
专业
学生姓名
班级学号
指导教师
指导单位
日期
评分细则
评分项
优秀
良好
中等
差
遵守机房规章制度
上机时的表现
学习态度
程序准备情况
程序设计能力
团队合作精神
课题功能实现情况
算法设计合理性
用户界面设计
报告书写认真程度
内容详实程度
文字表达熟练程度
回答问题准确度
简短评语
教师签名:
年月日
评分等级
备注
评分等级有五种:
优秀、良好、中等、及格、不及格
通讯录管理系统
一、课题内容和要求
该课题要求设计一个简单、实用的通信录管理程序,主要功能包括通信录数据的录入、查找、修改、删除、排序、显示等。
所有通信录数据都要利用文件系统保存,以备系统下次运行时使用。
通过此课题,全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。
增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、需求分析
系统功能模块图:
添加:
可以添加通讯录记录,依次输入序号,姓名,简拼,性别,工作单位,地址,电话,手机,电子邮件,备注后,会提示是否继续添加。
查询:
可以选择用序号、姓名、简拼、电话方式查询
修改:
先查找,再修改。
若查找出多条记录,则进一步提示用户选择记录的序号,再修改
删除:
输入欲删除的那个人的名字后,删除他(她)的记录内容
排序:
可按姓名、简拼等排序。
要求排序后,记录的序号也要重新编排
显示:
可以以表格形式输出所有通讯录里的记录
保存:
,输入文件名(带后缀名)后,即可将通讯录信息保存到文件
读入:
从文件中读入通信录数据。
界面功能要求:
(1)采用友好的字符界面,实现一个功能控制菜单。
(2)每次操作都从该菜单选择,利用循环结构使得一次运行程序可进行多次操作。
三、概要设计
(1)主要结构体:
typedefstruct
{
charscore;/*序号*/
charname[10];/*姓名*/
charjianpin[50];/*简拼*/
charsex[3];/*性别*/
charcompany[20];/*工作单位*/
charadds[20];/*地址*/
chartel[15];/*电话*/
charnum[15];/*手机*/
charemail[20];/*电子邮件*/
charremark[30];/*备注*/
}Person;
(2).工作流程图:
1.添加:
添加通讯录记录
N
2.查询:
查询通讯录记录
先选择查询方式,以姓名查询方式为例
N
3.修改:
修改通讯录记录
4.删除:
删除通讯录记录
5.显示:
显示通讯录记录
四、源程序代码
#include
#include
#include
#include
typedefstruct
{
charscore;/*序号*/
charname[10];/*姓名*/
charjianpin[50];/*简拼*/
charsex[3];/*性别*/
charcompany[20];/*工作单位*/
charadds[20];/*地址*/
chartel[15];/*电话*/
charnum[15];/*手机*/
charemail[20];/*电子邮件*/
charremark[30];/*备注*/
}Person;
Personpe[80];
intmenu_select()
{
charc;
do{
system("cls");
printf("\t\t*欢迎使用通讯录*\n");
printf("\t\t┌───────┐\n");
printf("\t\t│1.添加记录│\n");
printf("\t\t│2.显示记录│\n");
printf("\t\t│3.删除记录│\n");
printf("\t\t│4.查询记录│\n");
printf("\t\t│5.排列顺序│\n");
printf("\t\t│6.修改记录│\n");
printf("\t\t│7.保存记录│\n");
printf("\t\t│8.文件读入│\n");
printf("\t\t│0.退出程序│\n");
printf("\t\t└───────┘\n");
printf("\t\t请您选择(0-8):
");
c=getchar();
}while(c<'0'||c>'8');
return(c-'0');
}
intInput(Personper[],intn)
{
inti=0;
charsign,x[10];
while(sign!
='n'&&sign!
='N')
{
printf("\t序号:
");
scanf("\t%d",&per[n+i].score);
printf("\t姓名:
");
scanf("\t%s",per[n+i].name);
printf("\t简拼:
");
scanf("\t%s",per[n+i].jianpin);
printf("\t性别:
");
scanf("\t%s",per[n+i].sex);
printf("\t工作单位:
");
scanf("\t%s",per[n+i].company);
printf("\t地址:
");
scanf("\t%s",per[n+i].adds);
printf("\t电话:
");
scanf("\t%s",per[n+i].tel);
printf("\t手机:
");
scanf("\t%s",per[n+i].num);
printf("\t电子邮件:
");
scanf("\t%s",per[n+i].email);
printf("\t备注:
");
scanf("\t%s",per[n+i].remark);
gets(x);
printf("\n\t是否继续添加?
(Y/N)");
scanf("\t%c",&sign);
i++;
}
return(n+i);
}
voidDisplay(Personper[],intn)
{
inti;
printf("------------------------------------------------------------------------------------------------\n");/*格式*/
printf("序号姓名简拼性别工作单位地址电话手机电子邮件备注\n");
printf("------------------------------------------------------------------------------------------------\n");
for(i=1;i { printf("%-3d%-10s%-10s%-5s%-10s%-10s%-13s%-13s%-10s%-10s\n",per[i-1].score,per[i-1].name,per[i-1].jianpin,per[i-1].sex,per[i-1].company,per[i-1].adds,per[i-1].tel,per[i-1].num,per[i-1].email,per[i-1].remark); if(i>1&&i%10==0) { printf("\t-----------------------------------\n"); printf("\t"); system("pause"); printf("\t-----------------------------------\n"); } } printf("----------------------------------------------------------------------\n"); system("pause"); } intDelete_a_record(Personper[],intn) { chars[20]; inti=0,j; printf("\t请输入想删除记录中的名字: "); scanf("%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return(n); } for(j=i;j { strcpy(per[j].name,per[j+1].name); strcpy(per[j].jianpin,per[j+1].jianpin); strcpy(per[j].sex,per[j+1].sex); strcpy(per[j].company,per[j+1].company); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].num,per[j+1].num); strcpy(per[j].tel,per[j+1].tel); strcpy(per[j].email,per[j+1].email); strcpy(per[j].remark,per[j+1].remark); per[j].score=per[j+1].score; } printf("\t\t\t删除成功\n"); return(n-1); } voidQuery_a_record(Personper[],intn) { intm; printf("\t\n请选择查询方式: \n"); printf("\t┌──────┐\n"); printf("\t│1------姓名│\n"); printf("\t│2------简拼│\n"); printf("\t│3------电话│\n"); printf("\t│4------返回│\n"); printf("\t└──────┘\n"); printf("请选择: "); scanf("%d",&m); while(m! =1&&m! =2&&m! =3&&m! =4) { printf("输入错误,请重新选择: "); scanf("%d",&m); } if(m==1) { chars[20]; inti=0; printf("\t请输入想查询的姓名: "); scanf("\t%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return; } printf("\t序号: %d\n",per[i].score); printf("\t简拼: %s\n",per[i].jianpin); printf("\t性别: %s\n",per[i].sex); printf("\t工作单位: %s\n",per[i].company); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电话号码: %s\n",per[i].num); printf("\t电子邮箱: %s\n",per[i].email); printf("\t备注: %s\n",per[i].remark); }; if(m==2) { chars[20]; inti=0; printf("\t请输入想查询的简拼: "); scanf("\t%s",s); while(strcmp(per[i].jianpin,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return; } printf("\t序号: %d\n",per[i].score); printf("\t姓名: %s\n",per[i].name); printf("\t性别: %s\n",per[i].sex); printf("\t工作单位: %s\n",per[i].company); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电话号码: %s\n",per[i].num); printf("\t电子邮箱: %s\n",per[i].email); printf("\t备注: %s\n",per[i].remark); }; if(m==3) { chars[20]; inti=0; printf("\t请输入想查询的电话: "); scanf("\t%s",s); while(strcmp(per[i].num,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return; } printf("\t序号: %d\n",per[i].score); printf("\t姓名: %s\n",per[i].name); printf("\t简拼: %s\n",per[i].jianpin); printf("\t性别: %s\n",per[i].sex); printf("\t工作单位: %s\n",per[i].company); printf("\t通讯地址: %s\n",per[i].adds); printf("\t电子邮箱: %s\n",per[i].email); printf("\t备注: %s\n",per[i].remark); }; } voidSelectSort(Personper[],intn) { inti,j,flag; Persontemp;/*临时变量做交换数据用*/ intm; printf("\t\n请选择排序方式: \n"); printf("\t┌────────┐\n"); printf("\t│1------姓名│\n"); printf("\t│2------简拼│\n"); printf("\t│3------电话│\n"); printf("\t│4------返回│\n"); printf("\t└────────┘\n"); printf("请选择: "); scanf("%d",&m); while(m! =1&&m! =2&&m! =3&&m! =4) { printf("输入错误,请重新选择: "); scanf("%d",&m); } if(m==1) { for(i=0;i { flag=0;/*设标志判断是否发生过交换*/ for(j=0;j if((strcmp(per[j].name,per[j+1].name))>0)/*比较大小*/ { flag=1; strcpy(temp.name,per[j].name);/*交换记录*/ strcpy(temp.abbreviation,per[j].jianoin); strcpy(temp.sex,per[j].sex); strcpy(pany,per[j].company); strcpy(temp.adds,per[j].adds); strcpy(temp.tel,per[j].tel); strcpy(temp.num,per[j].num); strcpy(temp.email,per[j].email); strcpy(temp.remarks,per[j].remark); strcpy(per[j].name,per[j+1].name); strcpy(per[j].abbreviation,per[j+1].jianpin); strcpy(per[j].sex,per[j+1].sex); strcpy(per[j].company,per[j+1].company); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].tel,per[j+1].tel); strcpy(per[j].num,per[j+1].num); strcpy(per[j].email,per[j+1].email); strcpy(per[j].remarks,per[j+1].remark); strcpy(per[j+1].name,temp.name); strcpy(per[j+1].abbreviation,temp.jianpin); strcpy(per[j+1].sex,temp.sex); strcpy(per[j+1].company,pany); strcpy(per[j+1].adds,temp.adds); strcpy(per[j+1].tel,temp.tel); strcpy(per[j+1].num,temp.num); strcpy(per[j+1].email,temp.email); strcpy(per[j+1].remarks,temp.remark); } if(flag==0)break;/*如果标志为0,说明没有发生过交换循环结束*/ } } if(m==2) { for(i=0;i { flag=0;/*设标志判断是否发生过交换*/ for(j=0;j if((strcmp(per[j].jianpin,per[j+1].jianpin))>0)/*比较大小*/ { flag=1; strcpy(temp.name,per[j].name);/*交换记录*/ strcpy(temp.jianpin,per[j].jianpin); strcpy(temp.sex,per[j].sex); strcpy(pany,per[j].company); strcpy(temp.adds,per[j].adds); strcpy(temp.tel,per[j].tel); strcpy(temp.num,per[j].num); strcpy(temp.email,per[j].email); strcpy(temp.remarks,per[j].remark); strcpy(per[j].name,per[j+1].name); strcpy(per[j].abbreviation,per[j+1].jianpin); strcpy(per[j].sex,per[j+1].sex); strcpy(per[j].company,per[j+1].company); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].tel,per[j+1].tel); strcpy(per[j].num,per[j+1].num); strcpy(per[j].email,per[j+1].email); strcpy(per[j].remarks,per[j+1].remark); strcpy(per[j+1].name,temp.name); strcpy(per[j+1].abbreviation,temp.jianpin); strcpy(per[j+1].sex,temp.sex); strcpy(per[j+1].company,pany); strcpy(per[j+1].adds,temp.adds); strcpy(per[j+1].tel,temp.tel); strcpy(per[j+1].num,temp.num); strcpy(per[j+1].email,temp.email); strcpy(per[j+1].remarks,temp.remark); } if(flag==0)break;/*如果标志为0,说明没有发生过交换循环结束*/ } } if(m==3) { for(i=0;i { flag=0;/*设标志判断是否发生过交换*/ for(j=0;j if((strcmp(per[j].tel,per[j+1].tel))>0)/*比较大小*/ { flag=1; strcp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生手机 通信 管理 系统