数据结构课程设计报告Word文件下载.docx
- 文档编号:19212026
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:32
- 大小:1.45MB
数据结构课程设计报告Word文件下载.docx
《数据结构课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
windows.h>
stdio.h>
/*I/O函数*/
stdlib.h>
/*标准库函数*/
string.h>
/*字符串函数*/
ctype.h>
/*字符操作函数*/
conio.h>
iomanip>
#defineM50/*定义常数表示记录数*/
//定义颜色
#defineREDSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);
#defineCYANSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
#definePURPLESetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
#defineYELLOWSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
#defineWHITESetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
voidgotoxy(inta,intb)
{
intxx=0x0b;
HANDLEhOutput;
COORDloc;
loc.X=a;
loc.Y=b;
hOutput=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOutput,loc);
return;
}
typedefstruct/*定义数据结构*/
charname[20];
/*姓名*/
charflat[30];
/*住址*/
chartele[10];
/*电话*/
}ADDRESS;
/******声明函数原型*******/
intenter(ADDRESSt[]);
/*输入记录*/
voiddisplay(ADDRESSt[],intn);
/*显示记录*/
voidsearch(ADDRESSt[],intn);
/*按姓名查找显示记录*/
intdeleter(ADDRESSt[],intn);
/*删除记录*/
voidsave(ADDRESSt[],intn);
/*记录保存为文件*/
intload(ADDRESSt[]);
/*从文件中读记录*/
voidcopy();
/*文件复制*/
voidprint(ADDRESStemp);
/*显示单条记录*/
intfind(ADDRESSt[],intn,char*s);
/*查找函数*/
intmenu_select();
/*主菜单函数*/
/******主函数开始*******/
intmain()
inti;
ADDRESSadr[M];
/*定义结构体数组*/
intlength;
/*保存记录长度*/
for(;
;
)/*无限循环*/
switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/
case0:
length=enter(adr);
break;
/*输入记录*/
case1:
display(adr,length);
/*显示全部记录*/
case2:
search(adr,length);
/*查找记录*/
case3:
length=deleter(adr,length);
case4:
save(adr,length);
/*保存文件*/
case5:
length=load(adr);
break;
/*读文件*/
case6:
copy();
/*复制文件*/
case7:
exit(0);
/*如返回值为11则程序结束*/
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
intmenu_select()
chars[80];
intc;
gotoxy(1,20);
/*将光标定为在第20行,第1列*/
WHITE
printf("
pressanykeyentermenu......\n"
);
/*提示压任意键继续*/
system("
pause"
system("
cls"
gotoxy(1,1);
YELLOW
\t*******************************************************************\n"
);
CYAN
\n\t\t\tWELCOMETOTELECOM'
SRESULTMANAGE\n"
PURPLE
\t___________________________________________________________________\n\n"
\t0.Enterrecord4.Savethefile\n"
\t1.Displaythefile5.Loadthefile\n"
\t2.Searchrecordonname6.copythefiletonewfile\n"
\t3.Deletearecord7.Quit\n"
do{
CYANprintf("
\n\t请输入您的选项(0~7):
"
/*提示输入选项*/
scanf("
%s"
s);
/*输入选择项*/
c=atoi(s);
/*将输入的字符串转化为整型数*/
}while(c<
0||c>
7);
/*选择项不在0~7之间重输*/
returnc;
/*返回选择项,主程序根据该数调用相应的函数*/
/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
intenter(ADDRESSt[])
inti,n;
char*s;
YELLOWprintf("
\n您希望录入的联系人数目为:
\t"
/*提示信息*/
%d"
&
n);
/*输入记录数*/
PURPLEprintf("
\n请开始编辑联系人信息!
"
/*提示输入记录*/
\n______\\(^o^)//_______\\(^o^)//_______\\(^o^)//______\\(^o^)//_______\\(^o^)//____\n"
姓名住址电话号码\n"
-----------------------------------------------------------------------------\n"
for(i=0;
i<
n;
i++)
%s%s%s"
t[i].name,t[i].flat,t[i].tele);
//printf("
t[i].name,t[i].flat,t[i].tele);
returnn;
/*返回记录条数*/
/*显示记录,参数为记录数组和记录条数*/
voiddisplay(ADDRESSt[],intn)
\n^^^^^^^^^^^^^^^^^^^^^^^^^^ALLTELCOM'
SINFORMATION^^^^^^^^^^^^^^^^^^^^^^^^^\n"
\n姓名住址电话号码\n"
----------------------------------------------------------------------------\n"
%-20s%-30s%-10s\n"
if((i+1)%10==0)/*判断输出是否达到10条记录*/
请按任意键继续...\n"
\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^END^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"
/*查找记录*/
voidsearch(ADDRESSt[],intn)
chars[20];
/*保存待查找姓名字符串*/
/*保存查找到结点的序号*/
请输入查找联系人姓名:
\n"
/*输入待查找姓名*/
i=find(t,n,s);
/*调用find函数,得到一个整数*/
if(i>
n-1)/*如果整数i值大于n-1,说明没找到*/
抱歉!
未发现该联系人信息。
else
print(t[i]);
/*找到,调用显示函数显示记录*/
/*显示指定的一条记录*/
voidprint(ADDRESStemp)
\n----*o*----*o*----*o*----*o*----*o*----*o*----*o*----*o*----*o*----*o*-\n"
\n姓名住址电话号码\n"
\n-----------------------------------------------------------------------\n"
temp.name,temp.flat,temp.tele);
~~~~O&
O~~~~O&
O~~~~END~~~~O&
O~~~\n"
/*查找函数,参数为记录数组和记录条数以及姓名s*/
intfind(ADDRESSt[],intn,char*s)
i++)/*从第一条记录开始,直到最后一条*/
if(strcmp(s,t[i].name)==0)/*记录中的姓名和待比较的姓名是否相等*/
returni;
/*相等,则返回该记录的下标号,程序提前结结束*/
/*返回i值*/
/*删除函数,参数为记录数组和记录条数*/
intdeleter(ADDRESSt[],intn)
/*要删除记录的姓名*/
intch=0;
inti,j;
请输入希望删除的联系人姓名:
/*输入姓名*/
/*调用find函数*/
n-1)/*如果i>
n-1超过了数组的长度*/
抱歉!
未发现希望删除的联系人信息.\n"
/*显示没找到要删除的记录*/
/*调用输出函数显示该条记录信息*/
RED
确定要删除该联系人信息?
<
提示:
1为删除,0为不删除!
>
/*确认是否要删除*/
请输入你的选项:
ch);
/*输入一个整数0或1*/
if(ch==1)/*如果确认删除整数为1*/
for(j=i+1;
j<
j++)/*删除该记录,实际后续记录前移*/
strcpy(t[j-1].name,t[j].name);
/*将后一条记录的姓名拷贝到前一条*/
strcpy(t[j-1].flat,t[j].flat);
/*将后一条记录的单位拷贝到前一条*/
strcpy(t[j-1].tele,t[j].tele);
/*将后一条记录的电话拷贝到前一条*/
n--;
/*记录数减1*/
删除成功!
!
/*返回记录数*/
/*保存函数,参数为结构体数组和记录数*/
voidsave(ADDRESSt[],intn)
FILE*fp;
/*指向文件的指针*/
if((fp=fopen("
record.txt"
"
wb"
))==NULL)/*打开文件,并判断打开是否正常*/
无法打开该文件。
/*没打开*/
exit
(1);
/*退出*/
\n保存文件\n"
/*输出提示信息*/
fprintf(fp,"
n);
/*将记录数写入文件*/
\r\n"
/*将换行符号写入文件*/
%-20s%-30s%-10s"
/*格式写入记录*/
fclose(fp);
/*关闭文件*/
\\n___\\(^o^)//_______\\(^o^)//_____恭喜!
保存成功。
_____\\(^o^)//______\n"
/*显示保存成功*/
/*读入函数,参数为结构体数组*/
intload(ADDRESSt[])
rb"
))==NULL)/*打开文件*/
/*不能打开*/
fscanf(fp,"
/*读入记录数*/
%20s%30s%10s"
/*按格式读入记录*/
/*关闭文件*/
恭喜您成功地将文件信息读入!
!
/*复制文件*/
voidcopy()
charoutfile[20];
/*目标文件名*/
ADDRESStemp[M];
/*定义临时变量*/
FILE*sfp,*tfp;
/*定义指向文件的指针*/
if((sfp=fopen("
))==NULL)/*打开记录文件*/
/*显示不能打开文件信息*/
请输入目标文件的名称,例如c:
\\f1\\te.txt:
outfile);
/*输入目标文件名*/
if((tfp=fopen(outfile,"
))==NULL)/*打开目标文件*/
fscanf(sfp,"
/*读出文件记录数*/
fprintf(tfp,"
/*写入目标文件数*/
/*写入换行符*/
%20s%30s%10s\n"
temp[i].name,temp[i].flat,
temp[i].tele);
/*读入记录*/
temp[i].name,
temp[i].flat,temp[i].tele);
/*写入记录*/
fclose(sfp);
/*关闭源文件*/
fclose(tfp);
/*关闭目标文件*/
恭喜您成功地复制该文件!
/*显示复制成功*/
七、调试分析
(1)delete无法直接定义为删除函数,因此将其改为deleter,即可实现构造删除函数的目的。
(2)主函数main()不能为无返回值类型,将其改为返回整型只类型即可。
(3)缺少一个头文件windows,程序出现大量错误。
(4)程序在第70行遗漏了一个反花括弧,导致程序出现大量错误。
(5)程序在第101行遗漏了一个分号,导致程序出错。
八、测试数据
8.1启动程序:
8.2菜单栏显示:
8.3选择选项0,进入联系人信息录入功能:
8.4返回主菜单,选择选项1,显示所有联系人信息:
8.5返回主菜单,选择选项2,进入查询联系人信息功能:
(1)根据系统提示,输入希望查询的联系人姓名后,可查看该联系人姓名:
(2)若所输入的待查询联系人有误,系统将警示无该联系人信息:
8.6返回主菜单,选择选项3,进入删除联系人信息的功能:
(1)根据系统提示,输入希望删除的联系人姓名后,即可进入到删除联系人信息的界面,由用户自行决定是否删除该条联系人记录,删除该联系人信息后通过主菜单选择显示联系人信息选项即可查看删除结果:
(2)若用户输入的待删除联系人有误,则系统警示无该联系人信息:
8.7返回主菜单选择保存文件选项4存盘即可将联系人信息以文件的形式保存,并且文件名为record,文件所在位置即为程序所在的存储路径:
8.8返回主菜单,选择选项5装入即可将文件信息读入通讯录系统。
首先通过选项1显示目前通讯录已有的联系人信息,接着对record文件中的联系人信息进行修改,例如添加两个新联系人,待将文件信息装入通讯录系统后,再通过选项1显示装入后的新的联系人信息:
8.9返回主菜单,选择选项6将通讯录系统中的联系人信息复制到新的文件中,即可实现通讯信息的备份:
(1)任意输入一个无效的存储路径,则系统会警示无法打开该文件:
(2)输入一个有效的存储路径即可实现目标功能,以达到对通讯信息备份的功能:
九、用户使用手册
此通讯录系统是一个较为简单的通讯录系统,目前该系统只支持对联系人姓名、住址、一个电话号码进行编辑储存,因此用户在使用过程中一定要严格按照系统的提示进行操作,否则系统会警示错误更严重的情况会出现bug。
当然,后期的处理过程中,本设计者会对程序的不足进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)