1、2.设计内容和要求:2.1设计内容:软件(每条信息至包含 :姓名(name),街道(street),城市(city),邮编(eip),国家(state)最少要执行以下操作:(1)输入信息enter();(2)显示信息display( );(3)查找以姓名作为关键字 search( );(4)删除信息delete( ); (5) 存盘save ( );(6) 装入load( ) ;2.2设计要求:(1) 符合课题要求,实现相应功能;(2) 要求界面友好美观,操作方便易行;(3) 注意程序的实用性、安全性。通讯录管理系统功能说明图:通讯录管理系统3 本设计所采用的数据结构:3.1设计结构体及基本数
2、据类型:创建一个record的结构体数组,它有五个数据成员:char name20; 姓名char street20; 街道char city20; 城市char eip20; 邮编char state20; 国家包含函数: 功能如下:void mainmenu(); 主菜单void searchmenu(); 查找菜单void enter(); 新添纪录函数 void search(); 按姓名查询函数 void display(); 显示所有 void load(); 读取文件 void save(); 写入文件 void delete(); 按姓名删除函数 结构体数组:struct re
3、cord char street20; char name20; char city20; char state20; char eip20;student500;线性表的双向链表存储结构:struct slnode record date;struct slnode *next;struct slnode *prior; 4功能模块详细设计:4.1 详细设计思想: .11 Initllist()/构造一个空的线性链表void initlist() l=new slnode; l-next=l; l-prior=l;.12 void load()/从文件导入 其中用到了fopen函数,它的作用
4、是打开一个文件。同时用到了exit(0)来返回异常。(fp=fopen(student.bin,rb)=NULL)/打开文件进行读的操作。(fp=fopen(studentwb)=NULL)/打开文件进行读的操作。另外用到了fseek()函数,它的作用是使文件位置指针指向文件的指定位置。ftell()函数返回文件位置指针当前指向的位置,用相对于文件开头的偏移量的字节数表示,返回值为long。还调用了数据块读写函数fread。 void load() if(fp=fopen()=NULL)/打开文件进行读的操作 printf(ntt*通讯录文件不存在*); if (fp=fopen( print
5、f(ntt*建立失败 exit(0); else ntt*通讯录文件已建立*ntt*按任意键进入主菜单 getch();/从键盘接收一个字符 return; /返回主函数的主菜单 exit(0); 。if (ftell(fp)0) /*文件不为空*/ rewind(fp); /*文件位置指针移动到文件开始位置*/ for(num=0;!feof(fp)&fread(&studentnum,sizeof(struct record),1,fp);num+);printf(ntt*文件导入成功*ntt*按任意键返回主菜单* getch(); return; printf(ntt*通讯录文件中无任何
6、纪录* getch();return;.13 void listinsert()/增加一个结点 在双向链表中增加一个结点用来保存输入的学生信息,同时运用了strcpy这一函数,另外结构体数组指针变量访问结构变量的各个成员的一般形式:结构体指针变量成员名,同时运用了结构体数组的方法studenti.成员名。 Void llistinsert() linklist s,p=l; for(int i=0;idate.name,studenti.name); strcpy(s-date.city,studenti.city);date.street,studenti.street);date.eip,
7、studenti.eip);date.state,studenti.state); s-prior=p-prior;next=p; p-prior-next=s;prior=s; p=p-next; 4.14 void mainmenu()/主菜单 在主菜单中首先通过printf(“”):语句输出一个友好的通讯录主界面,在其中使用者可以清晰的看到应该进行操作所使用的按键,接着通过switch语句对使用者输入的数据进行与case中情况的比较,进而进入下一步操作。 void mainmenu() char choic; system(clsntt* 主菜单 *ntt* 1-新添纪录 2-查询菜单
8、*ntt* 3-删除联系人 *ntt* 4-保存退出 5-不保存退出*ntt*ntt请选择: choic=getch(); switch (choic) case 1:enter();break;2searchmenu();3delet();4save();5exit(0); default:mainmenu(); 4.15 void enter()/添加记录在添加记录函数中使用者可以通过友好的环境界面依次按提示信息输入所要保存的学生信息,同时在通过scanf()语句输入一个完整的学生信息后可以选择是否继续添加。(注意:此处输入的一个学生信息必须连续,中间不可以存在空格。否则将影响程序的正确性
9、,这是由于scanf()函数的输入要求所造成的。)void enter() ntt* 请输入学生信息 *nntt姓名: scanf(%s,&studentnum.name);ntt街道:studentnum.street);ntt城市:studentnum.city);ntt输入邮编:scanf(studentnum.eip);ntt国家:studentnum.state); num+;ntt是否继续添加?(Y/N): if (getch()=y) enter();4.16 void searchmenu()/查询菜单 在查询菜单中使用者可以通过友好的界面选择所要查询的方式,同样在使用searchmenu()中编写了switch()语句对使用者的输入进行了比较操作,使程序可以按使用者的要求向不同的方向运行。 void searchmenu() char choic;ntt* 查询菜单 *
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1