引言
本课程设计采用C/C++进行编程,实现了通讯录中基本的增删改查操作,以及算法的编写,并且附带完整的课程设计报告书,可支持答辩!额外添加文件读写处理功能(内存与外存同步)
资源中相关文件的依赖关系已经引入好,无需其他配置,为此直接运行资源中的.cpp文件即可!!!
如果需要根据特殊需求特别定制课设或者是参赛使用的项目可以私聊详谈,或者通过资源内部的Tip.txt提供的QQ邮箱直接联系。非诚勿扰!!!
一、总览
如有需要请前往下载
二、核心代码
部分展示!!!
结构体定义
typedef struct{
char Name[18];
char Tel[12];
char QQ[11];
char Emial[19];
char Address[MAXSIZE];
}information,*Information;
typedef Information ElemType;
typedef struct{
ElemType *elem;
int length;
}SqList;
快排
//快排
int Partiton(SqList &L,int low,int high,int choice){
ClearPartList(L,0);
if(choice==1){
ListExchange(L,0,low);
while(low<high){
while(low<high&&strcmp(L.elem[high]->Name,L.elem[0]->Name)>=0){
high--;
}
ListExchange(L,low,high);
while(low<high&&strcmp(L.elem[low]->Name,L.elem[0]->Name)<=0){
low++;
}
ListExchange(L,high,low);
}
ListExchange(L,low,0);
}else if(choice==2){
ListExchange(L,0,low);
while(low<high){
while(low<high&&strcmp(L.elem[high]->Tel,L.elem[0]->Tel)>=0){
high--;
}
ListExchange(L,low,high);
while(low<high&&strcmp(L.elem[low]->Tel,L.elem[0]->Tel)<=0){
low++;
}
ListExchange(L,high,low);
}
ListExchange(L,low,0);
}else if(choice==3){
ListExchange(L,0,low);
while(low<high){
while(low<high&&strcmp(L.elem[high]->QQ,L.elem[0]->QQ)>=0){
high--;
}
ListExchange(L,low,high);
while(low<high&&strcmp(L.elem[low]->QQ,L.elem[0]->QQ)<=0){
low++;
}
ListExchange(L,high,low);
}
ListExchange(L,low,0);
}
return low;
}
文件读写处理
- 从外存里读取通讯录的信息到内存
bool ExternalReadList(SqList &L){
FILE *file=NULL;
file=fopen("通讯录.txt","r");
char NameBuff[18];
char TelBuff[12];
char QQBuff[11];
char EmialBuff[19];
char AddressBuff[MAXSIZE];
fgets(NameBuff,19,file);
while(NameBuff[0]!='#'){
L.length++;
L.elem[L.length]=new information;
ClearPartList(L,ListLength(L));
NameBuff[strlen(NameBuff)-1]=0;
strcpy(L.elem[L.length]->Name,NameBuff);
fgets(TelBuff,13,file);
TelBuff[strlen(TelBuff)-1]=0;
strcpy(L.elem[L.length]->Tel,TelBuff);
fgets(QQBuff,12,file);
QQBuff[strlen(QQBuff)-1]=0;
strcpy(L.elem[L.length]->QQ,QQBuff);
fgets(EmialBuff,21,file);
EmialBuff[strlen(EmialBuff)-1]=0;
strcpy(L.elem[L.length]->Emial,EmialBuff);
fgets(AddressBuff,MAXSIZE,file);
AddressBuff[strlen(AddressBuff)-1]=0;
strcpy(L.elem[L.length]->Address,AddressBuff);
fgets(NameBuff,19,file);
}
return true;
}
- 将内存的通讯录信息写入到外存
bool ExternalWriteList(SqList &L){
FILE *file=NULL;
file=fopen("通讯录.txt","w");
int counter=0;
while(counter<ListLength(L)){
counter++;
fprintf(file,"%s\n",L.elem[counter]->Name);
fprintf(file,"%s\n",L.elem[counter]->Tel);
fprintf(file,"%s\n",L.elem[counter]->QQ);
fprintf(file,"%s\n",L.elem[counter]->Emial);
fprintf(file,"%s\n",L.elem[counter]->Address);
}
fprintf(file,"#");
return true;
}
三、运行截图
程序初始化、交互界面
添加功能
显示功能
可以根据不同的关键内容排序显示(会从外部文件读取已存在的联系人信息)
查找功能
修改功能
删除功能
四、课程设计报告书
以下仅给出每一章节的一部分作为参考,实际的课程设计报告书的内容完整且符合书写规范(包含空间复杂度、时间复杂度分析,并且报告书的排版缩进正确,其中的每张截图和流程图的图片下标符合命名规范);具体情况可以根据自己的需要适当修改
以下仅展示每一章的开头部分,如需完整获取,请前往下载
温馨提示
- 请在拥有C/C++可运行的基本环境下对程序进行编译并且运行
- 程序运行之初会直接读外部文件“通讯录.txt”的内容进行读取,写入到内存;当程序正常结束时,会将内存内容写回外部文件“通讯录.txt”进行保存
- 解压后的整个文件夹以及里面的相关文件不要随意重命名或者移动,之后用编译器打开里面的.cpp文件即可编译运行;推荐一个C/C++的编译器(界面可以设置为中文):https://download.csdn.net/download/jzycloud/14112780
- 获取资源后,如果发现编译运行不了或者有其他问题,可以通过资源里的Tip.txt文件提供的联系方式联系博主!
- 有特别需求或结构、算法设计的,需要定制项目的(可以使用不同语言、技术和框架),私聊或者通过资源里的Tip.txt文件提供的联系方式联系博主,非诚勿扰,感谢!
免责申明:相关文章及资料仅供学习交流使用,禁止一切不正当行为,如由此产生相关责任,自行承担
Tip:如需转发或引用相关内容,请务必附带原链接
如果对你有帮助的话,麻烦关注一波,并且点赞、收藏、转发一下哦o( ̄︶ ̄)o!如果有问题或者发现Bug欢迎提出反馈!