《C语言程序设计》课程设计报告
开始 主界面 删除联系人 删除所有 单个删除 按姓名删除 按电话删除 确认是否 删除 Y/y N/n 删除成功 图2.4删除联系人流程图
2.4.4 修改联系人流程图
修改联系人界面上我设计了按姓名修改和按号码修改两种方式,当选择时系统会提
示您是否修改,若不修改则返回主界面,若选择是,则系统会该处三个修改项目:修改姓名,修改电话,修改地址,修改完毕后系统会提示您是否继续修改,如不修改,则又返回主界面等待输入。
6
《C语言程序设计》课程设计报告
开始 主界面 修改联系人 按姓名修改 按号码修改 确认是否修改 Y/y N/n 修改姓名 修改电话 修改地址 确认是否继续修改 Y/y N/n 图2.5修改联系人流程图
7
《C语言程序设计》课程设计报告
第三章 软件的实现
3.1 函数声明
void zhucaidan(); /*主菜单函数*/ void zengjia(); /*增加联系人函数*/ void readfile(); /*文件中读入函数*/ void writefile(); /*文件中写入函数*/ void xiugai(); /*修改联系人函数*/ void xiugai_xingming(); /*姓名修改*/ void xiugai_dianhua(); /*电话号码修改*/ void chazhao(); /*查找联系人函数*/ void chazhao_xingming(); /*按姓名查找*/ void chazhao_dianhua(); /*按号码查找*/ void shanchu(); /*删除联系人函数*/ void shanchu_quanbu(); /*全部删除*/ void shanchu_dange(); /*单个删除*/ void xianshi(); /*号码显示*/
3.2 zhucaidan()主菜单函数
其源代码如下: void zhucaidan() {
char c;
system(\
printf(\ 欢迎您使用通讯录管理系统1.0beat版 -----|\ printf(\ 1-添加联系人 2-查询和显示联系人 |\ printf(\ 3-删除联系人 4-修改联系人 |\ printf(\ 5-保存退出 0-不保存退出 |\ printf(\ printf(\请选择您所所要的服务:\ c=getch();
switch (c) /*对于上边的选择项目*/ {
case '1':zengjia();break; case '2':chazhao();break; case '3':shanchu();break; case '4':xiugai();break; case '5':writefile();break; case '0':exit(0);
default:zhucaidan(); /*如果没有则返回主菜单等待输入*/ } }
较难语句分析:
① system(\清除输入在屏幕上的数据;
8
《C语言程序设计》课程设计报告
② c=getch(); 将键盘上输入的数据赋予c;
③ switch (c) case : 实现对主菜单上的选项的控制;
3.3 main()主函数
main()函数的源代码见下:
void main() /*主函数main*/ { readfile(); /*读入文件*/
while(1) /* 循环(永远进行)*/ {
zhucaiidan(); /*调用主菜单函数*/ } }
main()函数功能分析:
main()函数通过调用readfile()函数和循环menu()函数实现对入文件和界面进行控制。
3.4 readfile()读取文件函数
其源代码如下: void readfile() {
if((fp=fopen(\通讯录.txt\ /*以只读方式打开判定文件是否为空*/
{
printf(\ 通讯录文件不存在\ /*判断结论*/
if ((fp=fopen(\同通讯录.txt\只写方式判断*/ { printf(\建立失败\ /*为空结论*/ exit(0); /*退出*/ }
else /*不为空则执行else*/ {
printf(\欢迎使用通讯录管理系统------------------\
printf(\ 通讯录文件已建立 \ printf(\ 按任意键进入主菜单 \ printf(\ getch(); return ; }
exit(0); }
fseek(fp,0,2); /*文件位置指针移动到文件末尾*/ if (ftell(fp)>0) /*文件不为空*/ {
rewind(fp); /*文件位置指针移动到文件开始位置*/
for (n=0;!feof(fp) && fread(&txl[n],sizeof(struct tongxunlu),1,fp);n++); printf(\欢迎使用通讯录管理系统1.0beat版----------------\ printf(\ 文件导入成功 \
9
《C语言程序设计》课程设计报告
printf(\ 按任意键返回主菜单 \ printf(\ getch(); return; }
printf(\欢迎使用通讯录管理系统1.0beat版--------------\ printf(\ 文件导入成功 \ printf(\ 通讯录文件中无任何纪录 \ printf(\ 按任意键返回主菜单 \ printf(\ getch(); return; }
较难语句分析:
① if((fp=fopen(\通讯录.txt\以只读方式打开判定文件是否为空;
② fseek(fp,0,2); 文件位置指针移动到文件末尾;
③ ftell(fp): 返回当前文件位置,也就是说返回FILE指针当前位置; ④ rewind(fp); 文件位置指针移动到文件开始位置; ⑤ feof(fp) 检测流上的文件结束符;
⑥ fread(&txl[n],sizeof(struct tongxunlu),1,fp);n++) 从fp指向的文件中向txl [n]中读入一个(struct tongxunlu)类型的值并输出后面的内容。若没有成功执行就不输出后面的内容。 void readfile()函数的功能分析:
首先由 if((fp=fopen(\通讯录.txt\ 判断文件是否存在,如果不存在,则显示通讯录文件不存在,如果文件为空,则显示建立失败;若建立成功,则显示通讯录文件已建立,然后利用fseek(fp,0,2); 将文件位置指针移动到文件末尾等待输入。
3.5 writefile()联系人写入文件函数
函数源程序见下:
void writefile() /*联系人写入文件*/ {
int i;
if ((fp=fopen(\通讯录.txt\ {
printf(\文件打开失败\ }
for (i=0;i if (fwrite(&txl[i],sizeof(struct tongxunlu),1,fp)!=1) { printf(\写入文件错误!\\n\ } } fclose(fp); /*关闭文件*/ printf(\输出提示信息*/ printf(\通讯录文件已保存\ 10