名片管理系统_第1页
名片管理系统_第2页
名片管理系统_第3页
名片管理系统_第4页
名片管理系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include #include #include #include FILE *fp;/定义文件指针fp,指向文件的起始地址struct cardchar name20;char wkunit20;char job20;char phone20;char address20;char email20;card;int main()/定义主函数 char menu();void input();void list();void search();void searchall();void modify();void insert();void del();/将功能函数在主函数中声明,以备主函

2、数调用 while(1)switch(menu()/定义一个switch结构用来选择功能模块case 1:input();break;case 2:list();break;case 3:search();break;case 4:searchall();break;case 5:modify();break;case 6:insert();break;case 7:del();break;case 8:exit(0);break;default :break; return 0;char menu()/显示菜单界面并且完成接受用户输入功能菜单的序号并返回给主调函数char n;system(

3、cls); printf(tt-欢迎使用名片管理系统-n);printf(tt| 1.输入名片信息 |n);printf(tt| 2.显示名片信息 |n);printf(tt| 3.查找名片信息 |n);printf(tt| 4.查找同工作单位人员 |n);printf(tt| 5.修改名片信息 |n);printf(tt| 6.插入新名片 |n);printf(tt| 7.删除名片 |n);printf(tt| 8.退出名片册 |n);printf(tt-n);printf(请选择菜单命令(1-8);while(1)dofflush(stdin);/清除缓存printf(n输入菜单:); s

4、canf(%c,&n); while(n 8); /不满足条件继续重新输入,满足条件跳出循环结构程序流程向下 return n;/返回值返回给主函数,用以选择功能模块 void input()/定义input函数,用来输入名片信息char ch;fp = fopen(card.txt,ab);/以追加方式打开文件,如果文件不存在则建立该文件do fflush(stdin);printf(请输入姓名:);scanf(%s,);printf(请输入工作单位:);scanf(%s,card.wkunit);printf(请输入职务:);scanf(%s,card.job);prin

5、tf(请输入电话:);scanf(%s,card.phone);printf(请输入地址:);scanf(%s,card.address);printf(请输入E-mail:);scanf(%s,card.email);printf(-); getchar(); fwrite(&card,sizeof(card),1,fp); printf(n是否继续输入新的名片信息?n);printf(请选择(Y/N):);ch=getchar();while(ch = y | ch = Y);/循环输入名片信息,并判断是否继续输入getchar();printf(是否返回主菜单?按回车键返回);getch

6、ar();fclose(fp);/关闭文件防止数据丢失void list()/定义list函数,列出已录入名片信息fp = fopen(card.txt,r);/以只读方式打开文件while(fread(&card,sizeof(card),1,fp) = 1)/判断从结构体card首地址读取整个结构体长度的数据并只读取一次是否为真并将指针指向此结构体末尾 printf(-n);printf( 姓名 :%sn,);printf(工作单位:%sn,card.wkunit);printf( 职务 :%sn,card.job);printf( 电话 :%sn,card.phone)

7、;printf( 地址 :%sn,card.address);printf( E-mail :%sn,card.email);printf(-n);/格式化输出名片信息getchar();/等待用户输入回车显示返回菜单命令printf(按回车键返回主菜单!);getchar();/等待用户查看命令,按回车键返回fclose(fp);/关闭文件void search()/定义search函数,查找用户指定名片姓名的信息char name20; printf(请输入要查找的姓名:);fflush(stdin);/清除缓存gets(name);/输入一个名字fp = fopen(card.txt,r

8、b);/以二进制只读方式打开文件while(!feof(fp)/判断文件是否到达末尾fread(&card,sizeof(card),1,fp);/从结构体card首地址读取整个结构体长度的数据并只读取一次是否为真并将指针指向此结构体末尾if(strcmp(name,) = 0) /判断输入的姓名与已存入文件中的姓名是否相同printf(已找到目标名片:n);printf(-n);printf( 姓名 :%sn,);printf(工作单位:%sn,card.wkunit);printf( 职务 :%sn,card.job);printf( 电话 :%sn,c

9、ard.phone);printf( 地址 :%sn,card.address);printf( E-mail :%sn,card.email);printf(-n);/格式化输出名片信息printf(n按回车键返回主菜单);getchar();/等待用户查看命令,按回车键流程向下break;/跳出此条件语句if(feof(fp)/判断文件指针是否指向文件末尾printf(您所查询的姓名不存在);getchar();/等待用户查看信息,按回车键流程向下fclose(fp); /关闭文件fflush(stdin);/清除缓存void searchall()/定义searchall函数,查找同一工

10、作单位的名片信息char wkunit20;int fg=0;/让指针fp指向0printf(请输入所要查找的工作职位:);fflush(stdin);/清除缓存gets(wkunit);/输入要查找的工作单位fp = fopen(card.txt,rb);/以二进制只读方式打开文件printf(同一工作职位的人员:n);while(fread(&card,sizeof(card),1,fp) = 1)/如果读取一个结构体数据长度的名片信息为真流程继续向下 if(strcmp(wkunit,card.wkunit) = 0)/比较输入的工作单位与存入文件中的工作单位是否相等printf(-n)

11、;printf( 姓名 :%sn,);printf(工作单位:%sn,card.wkunit);printf( 职务 :%sn,card.job);printf( 电话 :%sn,card.phone);printf( 地址 :%sn,card.address);printf( E-mail :%sn,card.email);printf(-n);/格式化输入同工作单位的名片信息fg=1;/将文件指针指向1if(!fg)/判断指针返回的布尔真假printf(不存在同一职务的人员n); fclose(fp);/关闭文件printf(按回车键返回!);getchar();/等待用

12、户查看所查到信息,按回车键流程向下fflush(stdin);/清除缓存void modify()/定义modify函数,用来修改指定名片信息 char modname20,name20,jobx20,wkunit20,phonex20,addressx20,emailx20;/定义临时的数组用来存放临时数据int a,b,c,d,fg=1;int flag;char ch;FILE *fp1,*fp2;/声明两个文件指针fp1,fp2 printf(请输入修改的名片姓名:);fflush(stdin);/清除缓存gets(modname); doif(fp1 = fopen(card.txt

13、,rb) = NULL)/用只读方式打开一个二进制文件,如果返回的指针为空printf(n不能打开 student.txt文件);getchar();exit(1);/跳出此条件语句if(fp2 = fopen(temp.txt,wb) = NULL)/用只写方式打开一个二进制文件,如果返回的指针为空printf(n不能打开 card.txt文件);getchar();exit(1);/跳出此条件语句flag=0;while(fread(&card,sizeof(card),1,fp1) = 1)/从结构体card首地址读取整个结构体长度的数据并只读取一次是否为真并将指针指向此结构体末尾if(

14、strcmp(,modname) = 0)/判断输入的名字是否与文件中的名字相同printf(修改姓名吗?(1);scanf(%d,&a);getchar();/等待用户确认if(a = 1)printf(请输入姓名:);gets(name);strcpy(,name);/将后者字符串复制到前者存储空间 printf(修改工作单位吗?(2);scanf(%d,&b);getchar();/等待用户确认if(b = 2)printf(请输入工作单位:);gets(wkunit);strcpy(card.wkunit,wkunit);/将后者字符串复制到前者存储

15、空间 printf(修改职务吗?(3);scanf(%d,&c);getchar();/等待用户确认if(c = 3)printf(请输入职务:);gets(jobx);strcpy(card.job,jobx);/将后者字符串复制到前者存储空间 printf(修改电话吗?(4);scanf(%d,&d);getchar();/等待用户确认if(d = 4)printf(请输入电话:);gets(phonex);strcpy(card.phone,phonex);/将后者字符串复制到前者存储空间printf(修改电话吗?(5);scanf(%d,&d);getchar();/等待用户确认if(

16、d = 5)printf(请输入地址:);gets(addressx);strcpy(card.address,addressx);/将后者字符串复制到前者存储空间printf(修改E-mail吗?(6);scanf(%d,&d);getchar();/等待用户确认if(d = 6)printf(请输入E-mail:);gets(emailx);strcpy(card.email,emailx);/将后者字符串复制到前者存储空间flag=1;fwrite(&card,sizeof(card),1,fp2);/将数据作为一个整体一次性写入磁盘文件fclose(fp1);/关闭文件fp1fclos

17、e(fp2);/关闭文件fp1if(flag = 1)printf(修改成功);remove(card.txt);/删除原文件rename(temp.txt,card.txt);/将临时文件命名为card.txtelseprintf(找不到此记录);getchar();printf(继续修改吗?(y/n);ch=getchar();/接受字符getchar();while(ch = Y | ch = y);/判断接受字符是否为Y或者y,如果是,继续循环void insert() /定义insert函数,用来增加新名片的信息char ch; fp = fopen(card.txt,ab+);/在

18、文件末尾追加读写打开一个二进制文件doprintf(请输入姓名:);scanf(%s,);printf(请输入工作单位:);scanf(%s,card.wkunit);printf(请输入职务:);scanf(%s,card.job);printf(请输入电话:);scanf(%s,card.phone);printf(请输入地址:);scanf(%s,card.address);printf(请输入E-mail:);scanf(%s,card.email);fwrite(&card,sizeof(card),1,fp);printf(continue?(y/n);fflus

19、h(stdin);/清除缓存ch=getchar();/接收用户输入的字符while(ch = y | ch = Y);/判字符断接收的是否是其中的一个,如果是循环继续fclose(fp);/关闭文件fflush(stdin);/清除缓存void del()/定义del函数,用来删除指定的名片信息char name20;int flag;char ch;FILE *fp1,*fp2;/声明两个文件指针fp1,fp2 doif(fp1 = fopen(card.txt,rb) = NULL)/用只读方式打开一个二进制文件,如果返回的指针为空printf(n不能打开 card.txt文件);getchar();exit(1);if(fp2 = fopen(temp.txt,wb) = NULL)/用只写方式打开一个二进制文件,如果返回的指针为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论