北京石油化工学院 BEIJING INSTITUTE OF PETROCHEMICAL TECHNOLOGY 课程设计用纸
删除所有 If(num!=0) 开始
结束 是否继续删除 删除失败 删除成功 确认是否删除 strcmp(student[i].id,id)==0 strcmp(student[i].name,name)==0 输入要删除的编号、姓名
删除delete流程图
10
北京石油化工学院 BEIJING INSTITUTE OF PETROCHEMICAL TECHNOLOGY 课程设计用纸
11
开始 输入姓名、电话 Listbyphone() Listbyname() 排序成功 是否显示 Showall 结束 排序list流程图
北京石油化工学院 BEIJING INSTITUTE OF PETROCHEMICAL TECHNOLOGY 课程设计用纸
八、源程序清单
#include
#include
char id[10]; //编号 char name[20];//姓名 char phone[20];//电话 char adress[40]; //地址 char postcode[10]; //邮编 char e_mail[30]; //e_mail char relation[20];//关系 char QQ[20];//QQ char sex[10];//性别 char birthday[20];//生日 }student[500];
int num=0;//外部变量num为文件中的纪录数 FILE *p; //定义一个指向文件的指针变量p void mainmenu();//主菜单 void readfromfile();//读取文件 void newrecord();//新添纪录 void showall();//输出记录 void searchmenu();//查询菜单 void searchbyid();//按编号查询 void searchbyname();//按姓名查询 void searchbyphone();//按电话查询 void deletemenu();//删除菜单 void deleteall();//删除所有 void deleteone();//删除单个
void deletebyphone();//按电话号码删除 void deletebyname();//按姓名删除 void listmenu();//排序菜单
void listbyphone();//按电话号码排序 void listbyname();//按姓名排序 void copy();//复制菜单
void writetofile();//保存退出 void main() {
readfromfile(); while (1) {
12
北京石油化工学院 BEIJING INSTITUTE OF PETROCHEMICAL TECHNOLOGY 课程设计用纸
mainmenu(); } }
void readfromfile()//从文件导出,判断是否有通讯录 {
if((p=fopen(\将fopen函数的返回值赋给指针变量P,打开输入文件student.txt {
printf(\通讯录文件不存在\
if ((p=fopen(\打开输出文件student.txt {
printf(\建立失败\
exit(0); //终止正在执行的程序 } else {
printf(\通讯录文件已建立\ printf(\按任意键进入主菜单\ getch(); return; }
exit(0); }
fseek(p,0,2); //文件位置指针移动到文件末尾,fseek(文件类型指针,位移量,起始点) if (ftell(p)>0) //ftell函数的目的是得到当前位置,用相对于文件开头的位移量来表示,文件不为空 {
rewind(p); //文件位置指针移动到文件开始位置,此函数没有返回值
for (num=0;!feof(p) && fread(&student[num],sizeof(struct record),1,p);num++);
/*fread(buffer,size,count,pt)(地址,读写的字节数,读写多少数据项,FILE类型指针),每次从P指向的文件中读入结构体数组的一个元素;
feof检查文件是否结束,遇见文件结束符,返回非零值*/ printf(\文件导入成功\
printf(\按任意键返回主菜单\ getch(); return; }
printf(\文件导入成功\
printf(\通讯录文件中无任何纪录\ printf(\按任意键返回主菜单\ getch(); return; }
void mainmenu()//主菜单
13
北京石油化工学院 BEIJING INSTITUTE OF PETROCHEMICAL TECHNOLOGY 课程设计用纸
{
char choice;
system(\清屏
printf(\主菜单 ********************\ printf(\新添纪录 2-输出记录 **************\ printf(\查询菜单 4-删除菜单 **************\ printf(\记录排序 6-文件复制 **************\printf(\保存退出 8-不保存退出*************\ printf(\ printf(\请选择:\ choice=getch(); switch(choice) {
case '1':newrecord();break; case '2':showall();break; case '3':searchmenu();break; case '4':deletemenu();break; case '5':listmenu();break; case '6':copy();break; case '7':writetofile();break; case '8':exit(0); break; default:mainmenu(); } }
void newrecord()//添加记录 {
printf(\请输入信息 ****************\\n\ printf(\输入编号:\
scanf(\ printf(\输入姓名:\
scanf(\ printf(\输入电话号码:\ scanf(\ printf(\输入地址:\
scanf(\ printf(\输入邮编:\
scanf(\ printf(\输入e-mail:\
scanf(\printf(\输入QQ:\
scanf(\printf(\输入性别:\
scanf(\printf(\输入生日:\
14