c++课程设计_dengmei2019的博客-程序员资料

技术标签: c/c++  

一.功能介绍:

  本电话薄有以下功能:

1.  Add contract  -----------------------添加联系人

2.  Delete contract-----------------------删除联系人

3.  Display all of the contract--------显示所有联系人

4.  Search people’s contract---------查找联系人

5.  Show editor -----------------------显示作者

6.  Exit---------------------------------退出

 

本电话薄是将数据有控制台程序输入,并存在记事本中,并且再次打开可以读取上次储存的数据。 联系人添加到 contract.txt 文档中。  在应用本程序之前 先要新建contract.txt 文档和record.txt文档。并将record.txt文档中添加数字0.

 

1.Add contract  -----------------------添加联系人

添加联系人 必须添加英文名 电话号码。(英文名和电话号码间以空格隔开)

可一次添加多个联系人

最后以# # 结束添加过程。

2.Delete contract-----------------------删除联系人

删除联系人 此过程采用的是字符匹配的方式 必须电话薄存在的联系人呢 和输入要删除的联系人字符必须完全相同才可以进行删除。

一次只能删除一个联系人。

3. Display all of the contract--------显示所有联系人

一次就可现示所有联系人的相关信息

4. Search people’s contract---------查找联系人

此过程同样采用的是字符匹配的方式 必须电话薄存在的联系人呢 和输入要查找的联系人字符必须完全相同才可以进行查找。输出的是联系人的电话号码。

5 Show editor -----------------------显示作者

版权也是很重要的一方面。

此课程设计是由杨烁,杨崇财,黄平设计并制作的。

6 保存退出。

 

二.进行功能演示:

首先 建立contract.txt 文档和record.txt文档。并在record.txt文档中添加数字0.

 

 

开始运行可执行文件。

 

输入数字1

选择添加add Contract

 

输入

Zoo 18773491005

Cat 16543487654

Apple 18554320987

# #

 

显示所有联系人

其会按首字符的顺序排序。

 

选择2

删除联系人

Apple

显示 联系人Apple已被删除

 

选择四查找联系人。

会输出查找联系人的电话号码

 

输入数字5

显示作者:

按6退出。

这是打开contarct.txt 记录的是 联系人的联系方式和record.txt 记录的是联系人的个数。

 

 

完成输入结果。

关闭后再打开,程序会读入contract.txt文件中的内容和record.txt文件中的内容。

 

三.附上程序代码:

注意:此程序需在DevC++中执行操作,可能因为编译器的不同,visual c++可能不能编译此程序,需要修改头文件。

 

 

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
using namespace std;
//¶¨Òå±£´æÃû×ֺ͵绰ºÅÂëµÄ½á¹¹Ìå 

struct element{
       char name[21],num[22];       
              }people[20];
// º¯ÊýµÄ¿âÎļþÉùÃ÷
void read(); 
void initlist();
//void display1();
void show();
void add();
bool cmp(struct element,struct element);
void change();
void delete_name();
void display();
void search();
void show_editor();
//void showeditor();
void set();
 
int k=0;
FILE *fp;
int main()
{ 
  int choice;
  read();
  initlist();   
 // display1();       
  while(1)
   {
       show();
       cin>>choice;
       switch(choice)
        { 
          case 1: add();change();continue;
          case 2: delete_name();continue;
          case 3: display();continue;
          case 4: search();continue;
          case 5: show_editor();continue;
          case 6: set() ;
        } 
       if(choice==6)break;                                           
   }
    system("pause");
}

//³ÉÔ±º¯ÊýµÄ½âÊͲ¿·Ö
 void initlist()                            //³õʼ»¯ ½«Îı¾ÖеÄÊý¾Ý¸³¸øÊý×é¡£ 
{    char a[51];
     int len,flag,i,j,m,i1;
     if((fp=fopen("contract.txt","r"))==NULL)
      {
        printf("Can not open this file.\n");
        getchar();
        exit(-1);                                      
      }
     for(i1=0;i1<k;i1++)
      {                   
        fgets(a,43,fp);                   //½«»Ø³µ·ûºÅҲͬÑù¶ÁÈëµ½Êý×éÖÐÈ¥ÁË 
        len=strlen(a);
        if(a[0]=='\n')break;
        flag=0;
        j=0;
        for(i=0;i<=40;i++)
        {
            while(flag==0){
                            if(a[i]==' '){flag++;people[k].name[i]=='\0';               
                                      m=i;
                                      for(m=i;m<20;m++)
                                      people[i1].name[m]=' ';                        
                                         }
                           else {
                                people[i1].name[i]=a[i];
                                i++;
                                }
                           }
        if(flag==1) {
                       while(a[i]==' ')
                       i++;
                       flag++;
                    }
        while(flag==2) {
                        if(a[i]=='\n'){people[i1].num[j]='\0'; break;}
                        else {
                             people[i1].num[j]=a[i];
                             i++;j++;
                              }
                        }
        }             
      }                                
              fclose(fp); 
}
   /*
void display1()
{       
     int i;
     for(i=0;i<=k-1;i++) 
     printf("%s %s\n",people[i].name,people[i].num);
     cout<<endl<<endl;
}
  */
//¹¦ÄÜ1 Ìí¼ÓͨѶ¼ 
void add()
{  
   cout<<"please add the contract with name and phone number and it is terminaled by # !"<<endl;
   cout<<"there are "<<k<<" people in this contract."<<endl;
   char name1[21],num1[22];
   int len,i;
   while(scanf("%s %s",name1,num1)&&name1[0]!='#')     
     {
       if(k==20){cout<<"The contract is full"<<endl;break;}
       strcpy(people[k].name,name1);
       strcpy(people[k].num,num1);
       len=strlen(people[k].name);         //½«ÆäÖÐÌîÈë¿Õ¸ñ¡£Ê¹¸ñʽ±£³ÖÍêÕû¡£ 
       for(i=len;i<=19;i++)
         {
          people[k].name[i]=' ';
         }
       people[k].name[i]='\0';
       len=strlen(people[k].num);
       for(i=len;i<=19;i++)
         {
          people[k].num[i]=' ';
         }
       people[k].num[i]='\0';
       k++;
    }
   sort (people,people+k,cmp);
}
//Ð޸ı£´æÎļþÖеÄÄÚÈÝ 
void change()
{    FILE *fp;
     char ch='\n';
     if((fp=fopen("contract.txt","w"))==NULL)
      {
        printf("Can not open this file.\n");
        getchar();
        exit(-1);                                      
      }
      int i;
      for(i=0;i<=k;i++)
      {
       fputs(people[i].name,fp);
       fputs(people[i].num,fp);
       fputc(ch,fp);
      }
     fclose(fp);
 }
 
//¹¦ÄÜ2 ɾ³ýÁªÏµÈËÐÕÃû 
void delete_name()
{
  cout<<"there are "<<k<<" people in this contract."<<endl;
   char name1[21];
   getchar();
   int len,len1;
   int flag=0,i,j;
   gets(name1);
   len=strlen(name1);
   for(i=len;i<20;i++)
   name1[i]=' ';
   name1[i]='\0';
   for(i=0;i<=k-1;i++)
   {
     if(strcmp(people[i].name,name1)==0){flag=1;break;}                  
   }     
     if(flag==0)cout<<"Didn't find this person!"<<endl;
     if(flag==1){
    for(j=i;j<=k-1;j++)
                  {
                   strcpy(people[j].name,people[j+1].name);  
                   strcpy(people[j].num,people[j+1].num);               
                  }
                  k--;
                  change();  
                }
}


//¹¦ÄÜ3 ÏÔʾ¼Çʱ¾ÖеÄÈ«²¿ÐÅÏ¢
 void display()
{  
   cout<<"there are "<<k<<" people in this contract."<<endl;
        char a[50];
        if((fp=fopen("contract.txt","r"))==NULL) //¶ÁÈ¡contract.txtÎļþºó£¬½øÐÐÊä³ö¡£ 
      {
        printf("Can not open this file.\n");
        getchar();
        exit(-1);                                      
      }
       while(fgets(a,45,fp))
       {
         printf("%s",a);                       
       }
       fclose(fp);
}
//¹¦ÄÜ4 ²éѯÁªÏµÈËÐÅÏ¢
 
void search()
{
   cout<<"there are "<<k<<" people in this contract."<<endl;
  char name1[21];getchar();
  gets(name1); 
  int flag=0,i,len;
  len=strlen(name1);
  for(i=len;i<20;i++)
  name1[i]=' ';
  name1[i]='\0';
  for(i=0;i<k;i++)
   {
   // printf("%s\n",people[i].name);
   // cout<<"2"<<" "<<strlen(people[i].name)<<endl;
    if(strcmp(people[i].name,name1)==0){flag=1;cout<<name1<<"  "<<people[i].num<<endl;}
   //  cout<<"flag="<<flag<<endl;
   }
  if(flag==0)cout<<"This person don't exist in the contract!"<<endl;         
} 




//ÀûÓÿ⺯Êýsort½øÐÐÅÅÐò 
bool cmp(struct element x,struct element y)
{
  if(strcmp(x.name,y.name)<0)return 1;
  if(strcmp(x.name,y.name)>0)return 0;     
}
//ÏÔʾ½çÃ溯Êý 
void show()
{
    int i;
    for(i=1;i<=52;i++)
      cout<<'*';
    
    cout<<endl;
    cout<<"*                                                  *"<<endl;
    cout<<"*                    CONTRACT                      *"<<endl;
    cout<<"*          1.add contract                          *"<<endl;
    cout<<"*          2.delete contract                       *"<<endl;
    cout<<"*          3.display all of the contract           *"<<endl;
    cout<<"*          4.search people's contract              *"<<endl;
    cout<<"*          5.show_editor                           *"<<endl;   
    cout<<"*          6.exit                                  *"<<endl;
    for(i=1;i<=52;i++)
      cout<<'*';  
    cout<<endl;     
    cout<<"Please select number to realize corresponding function!"<<endl<<endl;        
}

//ÏÔʾ×÷Õß
 



//´ÓÎļþÖжÁÈ¡ µç»°±¡´æ´¢µÄÌõÊý 
void read()
{  char ch;
         if((fp=fopen("record.txt","r"))==NULL)
      {
        printf("Can not open this file.\n");
        getchar();
        exit(-1);                                      
      }
      ch=fgetc(fp);
      k=ch-'0';
 //     cout<<"k="<<k;
}
//ÏòÎļþÖмǼ µç»°±¡´æ´¢µÄÌõÊý 

void set()
{  char ch=k+'0';
        if((fp=fopen("record.txt","w"))==NULL)
      {
        printf("Can not open this file.\n");
        getchar();
        exit(-1);                                      
      }
     fputc(ch,fp);
     fclose(fp);
}

void show_editor()
{
   char a[100] ="This project is made by:",b[100]="ÊýÀíѧԺ ÐÅÏ¢Óë¼ÆËã¿Æѧ ",c[100]="Ñî˸ Ñî³ç²Æ »Æƽ";
    puts(a);
    puts(b);
    puts(c);
   
     
     
}

 

 

 

 

转载于:https://www.cnblogs.com/ysh-blog/archive/2012/06/05/2537409.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dengmei2019/article/details/102364351

智能推荐

Java Web前端——HTML常用标签_抄手小面包的博客-程序员资料

html简介1.1 html概述html全称:Hyper Text Markup Language(超文本标记语言)超级文本标记语言是标准通用标记语言(SGML)下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符。可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。 浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执

使用红外传感器和Arduino制作数字转速表测量RPM_woshi_ziyu的博客-程序员资料_转速测量仪 arduino

在本篇文章中,我们使用红外传感器(IR Sensor)和Arduino开发板设计了一款数字转速表,用于测量旋转电机的转数RPM。只需将红外传感器模块与Arduino和1602 LCD显示模块连接即可。红外传感器模块由一对红外发射器和接收器组成,可以与数字转速计配合使用,以测量任何旋转物体的速度。转速表是一个RPM计数器,用于计数每分钟旋转数。转速表有两种类型,一种是机械的,另一种是数字的。本文中,我们将基于Arduino设计一个使用红外传感器模块的数字转速表,以检测物体以计数旋转。当传输的红外光反射回接收

执行ln -f -s /bin/sh /bin/bash然后 ln -f -s /bin/bash /bin/sh_不识君的荒漠的博客-程序员资料_ln -s -f

这样执行命令:ln -f -s /bin/sh /bin/bash然后 ln -f -s /bin/bash /bin/sh。应该没有人会做这样傻子的操作吧~~~???嗯,~~~我做了。。。昨天半夜里干的。然后,系统崩了,,,我,也崩了。。。-------------------------------------------------------------------这是...

微信开发一 : 测试号的申请及相关配置_放荡不羁的程序猿的博客-程序员资料

测试号地址:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index微信会自动分配APPID,APPSERCRET给你接口配置信息:     URL :  填写你自己写的验证接口   验证成功才能配置    例:http://qingtest.tunnel.

解决pip 19.1使用时可能编码报错utf-8:value.decode('utf-8') if six.PY3 else value_wongpp的博客-程序员资料

报错:value.decode(‘utf-8’) if six.PY3 else valueTraceback (most recent call last):File “/usr/local/lib/python3.6/dist-packages/pip-19.1.1-py3.6.egg/pip/_internal/commands/install.py”, line 524, in _wa...

随便推点

Unity之Network局域网联机,游戏大厅,类似CS列出服务器列表Demo_「已注销」的博客-程序员资料

参考了Asset Store里的Network Lobby插件,研究了很长时间,也网上找了无数相关教程,关于Network的教程真是很少,特别是详细的用自己的UI实现的例子几乎没有,所以发出来记录一下。此demo包含了创建服务器,输入IP地址加入服务器,扫描服务器列表,通过点击服务器列表加入服务器,进入大厅,准备按钮同步,敌人自己区分等功能;最后demo进入了一个小测试Game场景,创建服务器、加...

SQLite3性能优化_tietao的博客-程序员资料_sqlite3调整cache大小

SQLite3性能调整主要通过pragma指令来实现。比如调整:空间释放、磁盘同步、Cache大小等。一.空间释放1.如何查询:PRAGMA auto_vacuum;含义:查询数据库的auto-vacuum标记。2.标记含义:auto-vacuum标记的含义:正常情况下,当提交一个从数据库中删除数据的事务时,数据库文件不改变大小。未使用的文件页被标记并在以后的添加操

基于Yocto项目 在linux上构建optee-example_whcz的博客-程序员资料

本文教您如何使用Yocto在Linux系统 imx6q imx6ul构建OP-TEE系统,及编译OP-TEE的应用代码。前期,已使用Yocto 在imx6q上成功构建linux系统。所选的配置选项为:1.清单版本为:imx-5.4.24-2.1.0.xml;2.镜像的名字为:imx-image-full;3.机器型号为:imx6qsabresd;op-tee简介:是一种开源的加密技术系统,有几个厂家和组织都开发了自己的tee OS,但是所有方案的外部接口都会遵循GP(GlobalPlatform

C# 小程序之新手练习(二)简单电话簿_ACLegend的博客-程序员资料

//电话簿类Person.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 简单电话薄{ class Person { string name;//姓名 string phone;//电话

nn.init 中实现的初始化函数 uniform, normal, const, Xavier, He initialization_normal 和 uniform_Wanderer001的博客-程序员资料

1. 均匀分布torch.nn.init.uniform_(tensor, a=0, b=1)服从~U(a,b)U(a,b)2. 正太分布torch.nn.init.normal_(tensor, mean=0, std=1)服从~N(mean,std)N(mean,std)3. 初始化为常数torch.nn.init.constant_(tensor, val)...

HIDL详解-Android10.0 HwBinder通信原理(二)_Felix.Ma的博客-程序员资料_hwbinder vendor getservice transact

[Android取经之路] 的源码都基于Android-Q(10.0) 进行分析[Android取经之路] 系列文章:《系统启动篇》Android系统架构Android是怎么启动的Android 10.0系统启动之init进程Android10.0系统启动之Zygote进程Android 10.0 系统启动之SystemServer进程Android 10.0 系统服务之ActivityMnagerServiceAndroid10.0系统启动之Launcher(桌面)启动流程And

推荐文章

热门文章

相关标签