📄 计算机实习(赵小川-041235).cpp
字号:
// 计算机实习一.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#define max 20
struct book //定义通讯录
{
char name[max];
char tel[max];
char adj[max];
char special[max];
int age;
}q[100];
char zz[max];
int flag=0;
int i;
char o,cr;
void save(int n) //保存文件
{
FILE *fp;
if((fp=fopen("telebook.txt","wb"))==NULL)
{
printf("can not open the file!\n");
return;
}
q[0].age=n; //q[0].age为写入已存入记录的个数
for(i=0;i<=n;i++)
if(fwrite(&q[i],sizeof(struct book),1,fp)!=1) //写入文件
printf("file write error!\n");
fclose(fp); //关闭文件
printf("\n\t\t保存成功,请按 y 继续\n");
o='\0';
while(o!='y') scanf("%c",&o);
cr=getchar();
}
void add(int n) //添加
{
int al;
printf("\n\n请(最好用中文)输入姓名\n"); //添加新成员
scanf("%s",zz);
strcpy(q[n].name,zz);
printf("请输入联系方式\n");
scanf("%s",zz);
strcpy(q[n].tel,zz);
printf("请(最好用中文)输入地址\n");
scanf("%s",zz);
strcpy(q[n].adj,zz);
printf("请(最好用中文)输入注释\n");
scanf("%s",zz);
strcpy(q[n].special,zz);
printf("请用数字输入年龄\n");
scanf("%d",&al);
q[n].age=al;
cr=getchar();
printf("\n\t通讯录新成员已经加入\n");
printf("\t请按 y 刷新纪录 \n");
o='\0';
while(o!='y') scanf("%c",&o);
cr=getchar();
}
void find(int n)
{
printf("\n请输入要查找的成员\n"); //查找某个成员的详细信息
scanf("%s",zz);
cr=getchar();
for(i=1;i<=n;i++)
{
if(!strcmp(q[i].name,zz))
{
flag=1;
printf("\n\n该成员已经找到:\n\n%s\t\t%s\t %s\t %s\t\t\t%d\n",q[i].name,q[i].tel,q[i].adj,q[i].special,q[i].age);
printf("\n请按 y 继续 \n");
o='\0';
while(o!='y') scanf("%c",&o);
cr=getchar();
break;
}
}
if(flag==0)
{
printf("\n很抱歉,没找到您要查找的成员,请重新输入\n");
printf("请按 y 继续 \n");
o='\0';
while(o!='y') scanf("%c",&o);
cr=getchar();
}
flag=0;
}
void main(int argc, char* argv[])
{
int i,count=0;
FILE *fp;
char ch='\0',o='\0',j='\0',cr; //zz[max]用来输入新数据,j用来确认是否删除,o用来确认是否继续
printf("\t\t\t欢迎来到电子通讯录!\n\t\t如果您第一次使用本软件请先添加联系人信息\n\n\t\t如果您已有记录请按f打开以前的记录\n");
printf("\n\n\n通讯录姓名\t联系方式\t 地址\t 特别注释\t\t 年龄\n");
printf("\n\n\n\n添加请按a 删除请按b 查找请按c 退出请按d 保存请按e 打开以前记录按f\n\n");
while(ch!='d')
{
scanf("%c",&ch);
cr=getchar(); //cr用来吃回车府
if(ch!='d')
{
switch(ch)
{
case 'a' : count=count+1; //通讯录成员数据是从q[1]开始放置的,count的初值为0,先让其加1
add(count);
if(count>100) printf("\n\n通讯录以满,请和赵小川联系,我们将为你升级!\n");
break;
case 'b' : printf("\n\n您真的要删除该通讯录成员吗?......取消请按 n! ......确定请按其它任意键\n"); //删除原有成员
scanf("%c",&j);
cr=getchar(); //cr用来吃回车府
if(j=='n')
{
printf("\n\n用户已取消操作\n");
printf("\n请按 y 继续 \n");
o='\0';
while(o!='y') scanf("%c",&o);
cr=getchar();
}
else
{
printf("\n\n请输入要删除的成员姓名\n");
scanf("%s",zz);
cr=getchar();
for(i=1;i<=count;i++)
{
if(!strcmp(q[i].name,zz)) //strcmp函数,如果比较两函数值相等返回值为0!!!!
{
flag=1;
if(i==count) //如果要删除最后一个数据块,把count的值直接减1即可
{
count=count-1;
printf("\n\n已删除成功!\n");
printf("\n请按 y 清除记录 \n");
o='\0';
while(o!='y') scanf("%c",&o);
cr=getchar();
break;
}
else if(i>=count)
{
printf("\n通讯录已为空!\n");
strcpy(q[0].name,"你好,请重新添加成员,通讯录已空"); //通讯录以空的情况
strcpy(q[0].tel,"你好,请重新添加成员,通讯录已空");
strcpy(q[0].adj,"你好,请重新添加成员,通讯录已空");
strcpy(q[0].special,"你好,请重新添加成员,通讯录已空");
q[i].age=0;
count=0;
}
else
{
strcpy(q[i].name,q[count].name); //如果要删除的成员不是最后一个,则用最后一个成员覆盖掉要删除的成员
strcpy(q[i].tel,q[count].tel);
strcpy(q[i].adj,q[count].adj);
strcpy(q[i].special,q[count].special);
q[i].age=q[count].age;
count=count-1;
}
printf("\n已删除成功!\n");
printf("\n请按 y 清除记录 \n");
o='\0';
while(o!='y') scanf("%c",&o);
cr=getchar();
}
}
if(flag==0)
{
printf("\n\n很抱歉,没找到您要删除的成员,请重新输入\n"); //flag是判断是否找到该成员的标志
printf("\n请按 y 继续 \n");
o='\0';
while(o!='y') scanf("%c",&o);
cr=getchar();
}
}
flag=0;
break;
case 'c' : find(count); //查找某个成员的详细信息
break;
case 'd' :
break;
case 'e' : save(count); //保存文件
break;
case 'f' : //打开文件
if((fp=fopen("telebook.txt","rb"))==NULL)
{
printf("can not open the file!\n");
return;
}
for(i=0;i<=100;i++)
fread(&q[i],sizeof(struct book),1,fp);
count=q[0].age; //打开文件时读出count的值,以后作为循环终止的条件
fclose(fp); //关闭文件
printf("\n\t\t文件打开成功,请按 y 继续\n");
o='\0';
while(o!='y') scanf("%c",&o);
cr=getchar();
break;
default : printf("\n\n请确定输入的字符是 a.b.c.d.e.f 中的一个!!!!!!!!!!!!!!!!\n\n");
break;
}
printf("\n\n\n\n欢迎来到电子通讯录!\n"); //打印数据和菜单
printf("\n通讯录姓名\t联系方式\t 地址\t 特别注释\t\t \t年龄\n");
for(i=1;i<=count;i++)
printf("%s\t\t%s\t %s\t %s\t\t\t%d\n",q[i].name,q[i].tel,q[i].adj,q[i].special,q[i].age);
printf("\n添加请按a 删除请按b 查找请按c 退出请按d 保存请按e 打开以前记录按f\n\n");
}
}
printf("\n\n\t您即将退出赵小川制作的电子通讯录,新输入的数据保存了吗?\n\n\n\t如果没有保存请按y,软件将为你保存!如果已经保存好请按任意键退出!\n");
o='\0';
scanf("%c",&o);
cr=getchar();
if(o=='y') save(count); //如果用户在退出前没有保存,软件自动保存数据
printf("\n\n\n\n\t\t\t谢谢使用电子通讯录\n\n\t\t\t 设计者:赵小川\n\n\n\n*^*\t*^*\t*^*\t*^*\t*^*\t*^*\t*^*\t*^*\t*^*\t*^*\n");
cr=getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -