具有学生或者员工的信息录入,查询,修改,删除功能,程序见附件
源程序如下:
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- void input();
- void save();
- void lookup();
- void search();
- void change();
- void delete();
- void quit();
- void read();
- struct Infor
- { int num;//编号
- char name[20];//姓名
- char phone[20];//电话
- char kind[20];//类别
- char mail[40];//邮件
- }People[200];
- int count=0;//记录总人数
- int count1;//记录查询、修改、删除中查到的信息个数
- void main()
- {
- int i;
- read ();
- while(1)
- {
- printf("\t\t\t通讯录信息系统菜单\t\t\t\n");
- printf("\t_________________________________________________\t\n");
- printf("\n");
- printf("\t\t\t 数据录入(1)\t\t\t\n");
- printf("\t\t\t 数据浏览(2)\t\t\t\n");
- printf("\t\t\t 数据查询(3)\t\t\t\n");
- printf("\t\t\t 数据修改(4)\t\t\t\n");
- printf("\t\t\t 数据删除(5)\t\t\t\n");
- printf("\t\t\t 退 出(6)\t\t\t\n");
- printf("\t__________________________________________________\t\n");
- printf("\t\t\t请输入菜单中对应项的数字\t\t\t\n");
- scanf("%d",&i);
- system("cls");
- switch(i)
- {
-
- case 1: input(); break;//数据输入
- case 2: lookup(); break;//数据浏览
- case 3: search(); break;//数据查询
- case 4: change(); break;//数据修改
- case 5: delete(); break;//数据删除*/
- case 6: quit(); break;// 退出
-
- }
- }
-
- }
- //读入文件
- void read()
- {
- FILE *fp;
- int i;
- if((fp=fopen ("infor.dat","rb"))==NULL)
- printf("文件无法打开,请检查!\n");
- for(i=0;i<200;i++)
- {
- if(fread(&People[i],sizeof(struct Infor),1,fp)==1)
- count++;
- else if(fread(&People[i],sizeof(struct Infor),1,fp)!=1) break;
- }
- fclose(fp);
- }
- //数据录入
- void input()
- { int i,k;
- char j;
- printf("\t\t\t 数据录入(1)\t\t\t\n");
- for(i=count;i<200;i++)
- {
- printf("请输入姓名: ");
- scanf("%s",People[i].name);
- {for(k=0;k<count;k++) //录入查重
- if(strcmp(People[i].name,People[k].name)==0)
- {printf("系统中已有此人,请重新输入!\n");
- input();
- }
- else continue;
- }
-
- printf("请输入电话: ");
- scanf("%s",People[i].phone);
- printf("请输入类别: ");
- scanf("%s",People[i].kind);
- printf("请输入电子邮箱: ");
- scanf("%s",People[i].mail);
- count++;
- People[i].num=count;
- printf("继续录入吗?y/n");
- scanf(" %c",&j);
- system("cls");
- if(j=='y') continue;
- else if(j=='n') main();
- }
-
- }
-
- //数据保存
- void save()
- {FILE *fp;
- int i;
- if((fp=fopen ("infor.dat","wb"))==NULL)
- {printf("文件无法打开,请检查!\n");
- return;
- }
- for(i=0;i<count;i++)
- {if(fwrite(&People[i],sizeof(struct Infor),1,fp)!=1)
- printf("写入错误!\n");
- }
- fclose(fp);
- }
- //数据浏览
- void lookup()
- {
- int i;
- printf("\t\t\t 数据浏览(2)\t\t\t\n");
- printf("\t编号\t姓名\t电话\t类别\t邮件\t\n");
- for(i=0;i<count;i++)
- printf("\t%d\t%s\t%s\t%s\t%s\t\n",People[i].num,People[i].name,People[i].phone,People[i].kind,People[i].mail);
- printf("\t\t\t按任意键返回主菜单!\t");
- getch();
- system("cls");
- }
- //退出
- void quit()
- {
- char i,j;
- printf("\t\t\t 退 出(6)\t\t\t\n");
- printf("确认退出?y/n");
- scanf(" %c",&j);
- system("cls");
- if(j=='n') return;
- else if(j=='y')
- {
- printf("是否保存?y/n");
- scanf(" %c",&i);
- system("cls");
- if(i=='y') {save();exit(0);}
- else if(i=='n') exit(0);
-
- }
- }
- //数据查询
- void search()
- {
- int i;
- char j[20];
- count1=0;
- printf("\t\t\t 数据查询(3)\t\t\t\n");
- printf("请输入要查询的类别A、B、C\n");
- scanf(" %s",j);
- printf("\t姓名\t电话\t\n");
- for(i=0;i<200;i++)
- {
- if(strcmp(j,People[i].kind)==0)
- {printf("\t%s\t%d\t\n",People[i].name,People[i].phone);
- count1++;
- }
- }
- if(count1==0)
- {system("cls");
- printf("无此类别人员信息!\n");}
- printf("\t\t\t按任意键返回主菜单!\t");
- getch();
- system("cls");
-
- }
- //数据修改
- void change()
- {
- int i,k;
- char j[20];
- printf("\t\t\t 数据修改(4)\t\t\t\n");
- printf("请输入要修改信息人员的姓名:\n");
- scanf(" %s",j);
- printf("以下为该人员信息:\n");
- printf("\t编号\t姓名\t电话\t类别\t邮件\t\n");
- for(i=0;i<200;i++)
- {
- if(strcmp(j,People[i].name)==0)
- printf("\t%d\t%s\t%s\t%s\t%s\n",People[i].num,People[i].name,People[i].phone,People[i].kind,People[i].mail);
- else continue;
- printf("\n");
- printf("\t\t\t请输入要修改的信息后对应序号:\t\t\t\n");
- printf("\t\t\t 编号(1)\t\t\t\n");
- printf("\t\t\t 姓名(2)\t\t\t\n");
- printf("\t\t\t 电话(3)\t\t\t\n");
- printf("\t\t\t 类别(4)\t\t\t\n");
- printf("\t\t\t 邮箱(5)\t\t\t\n");
- scanf(" %d",&k);
- printf("该信息修改为:\n");
-
- switch(k)
- {
-
- case 1: scanf(" %d",&People[i].num);break;
- case 2: scanf(" %s",People[i].name);break;
- case 3: scanf(" %s",People[i].phone);break;
- case 4: scanf(" %s",People[i].kind);break;
- case 5: scanf(" %s",People[i].mail);break;
-
- }
- printf("修改成功!\n");
- printf("\t\t\t按任意键返回主菜单!\t");
- getch();
- system("cls");
- }
-
- }
- //数据删除
- void delete()
- {
- int i,temp;
- char j[20];
- printf("\t\t\t 数据删除(5)\t\t\t\n");
- printf("请输入要删除信息人员的姓名:\n");
- scanf(" %s",j);
- printf("以下为该人员信息:\n");
- printf("\t编号\t姓名\t电话\t类别\t邮件\t\n");
- for(i=0;i<200;i++)
- {
- if(strcmp(j,People[i].name)==0)
- printf("\t%d\t%s\t%s\t%s\t%s\t\n",People[i].num,People[i].name,People[i].phone,People[i].kind,People[i].mail);
- else continue;
- printf("\n");
- for(i=i;i<200;i++)
- {
- temp=People[i].num;
- People[i]=People[i+1];
- People[i].num=temp;
- }
- }
- printf("\t\t\t已删除!\t\n");
- printf("\t\t\t按任意键返回主菜单!\t");
- getch();
- system("cls");
- }
复制代码
所有资料51hei提供下载:
通讯录信息系统.zip
(251.73 KB, 下载次数: 16)
|