学生手机通信录管理系统.docx
《学生手机通信录管理系统.docx》由会员分享,可在线阅读,更多相关《学生手机通信录管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
学生手机通信录管理系统
学生手机通信录管理系统
〔2021/2021学年第一学期〕
题目:
通讯录治理系统
专业
学生姓名
班级学号
指导教师
指导单位
日期
评分细那么
评分项
优秀
良好
中等
差
遵守机房规章制度
上机时的表现
学习态度
程序预备情形
程序设计能力
团队合作精神
课题功能实现情形
算法设计合理性
用户界面设计
报告书写认真程度
内容详实程度
文字表达熟练程度
回答以下问题准确度
简短评语
教师签名:
年月日
评分等级
备注
评分等级有五种:
优秀、良好、中等、及格、不及格
通讯录治理系统
一、课题内容和要求
该课题要求设计一个简单、有用的通信录治理程序,要紧功能包括通信录数据的录入、查找、修改、删除、排序、显示等。
所有通信录数据都要利用文件系统储存,以备系统下次运行时使用。
通过此课题,全面熟悉、把握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.添加:
添加通讯录记录
2.查询:
查询通讯录记录
先选择查询方式,以姓名查询方式为例
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]pany);
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]pany,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&&iif(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]pany,per[j+1]pany);
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&&iif(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]pany);
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&&iif(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]pany);
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&&iif(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]pany);
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;jif((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(temppany,per[j]pany);
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]pany,per[j+1]pany);
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]pany,temppany);
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;jif((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(temppany,per[j]pany);
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]pany,per[j+1]pany);
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]pany,temppany);
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;jif((strcmp(per[j].tel,per[j+1].tel))>0)/*比较大小*/
{
flag=1;
strcpy(temp.name,per[j].name);/*交换记录*/
strcpy(temp.abbreviation