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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++课程设计题目,包括1、输出10至99之间每位数的乘积大于每位数的和的数,例如对于数字12,有1*22+7,故输出该数。 2、求任意n个数中的最大数和最小数:先输入一个正整数n(个数),而后再输入任意n个实数,找出这n个数中的最大数及最小数并显示出来。3、对两个有序数组进行合并:设有如下数组A、B,并假设两个数组的元素都已经有序(从大到小降序排列)。编程序,合并A、B数组形成一个新的数组C,并使C的元素仍有序(从大到小降序排列)。 int A[10]={123, 86,80, 49,33,15,7,0,-1,-3}; int B[10]={100,64,51,50,27,19,15,12,5,2}; 4、有一个分数序列:1/2,1/3,1/4,1/5,1/6,1/7,……,编写函数求序列前n项之和,要求在主程序中提示用户输入整数n,并判断所输入数是否合法(大于1为合法),如果合法则调用求和函数并输出结果。 5、计算两个日期之间的间隔天数:从键盘输入两个日期(如以year1,month1,day1以及year2,month2,day2的方式来输入它们),而后计算出这两个日期的间隔天数并在屏幕上显示出结果。 要求编制具有如下原型的函数difs2Date: long GetDayDifference(int y1,int m1,int d1,int y2,int m2,int d2); 并在主函数中调用向屏幕上输出计算结果。7、声明并定义一个日期类CDate,其中数据成员m_iYear,m_iMonth,m_iDay,分别表示年、月、日,成员函数SetDate()用来设置年、月、日,成员函数IsLeapYear()用来判断当前的年份是否为闰年,构造函数带有默认形参值,可接收外部参数对m_iYear, m_iMonth, m_iDay进行初始化,另要求编写测试程序,定义一个CDate类对象,将其日期设置为2005年1月1日, 调用成员函数IsLeapYear()判断该年份是否为闰年,并输出判断结果. 说明:闰年的年份可以被4整除而不能被100整除,或者能被400整除. 8、编写一个程序计算两个给定长方形的面积,其中在设计类成员函数GetTotalArea()(用于计算两个长方形的总面积)时使用对象作为参数。 9、设计一个时间类Time,包括3个数据成员,时(h)、分(m)、秒(s),另外包括存取各数据成员和设置时间的成员函数,按上、下午各12小时或按24小时输出时间的成员函数,以及默认构造函数,默认时间值为0时0分0秒。 10、编写一个程序,输入3个学生的英语和计算机成绩,并按总分从高到低排序(要求设计一个学生类Student)。 11. 求解一元二次方程。 一元二次方程的定义为: ax2+bx+c=0 (1)如果b2 -4ac>0,方程有两个不同的实根,分别是: (2)如果b2 -4ac< 0,方程没有实根,但有虚根; (3)如果b2 -4ac= 0,方程有一个实根。 请你编写一个程序,使其能求出多个二次方程的根。该程序要询问用户是否想继续解下一个方程。用户输入1来继续,输入其它数字,则终止程序。程序要求用户输入a,b和c,然后根据前面的条件计算,并输出答案。 要求:使用类实现, (1) a,b,c为该类的私有成员变量; (2) 求根的实现为该类的成员函数,形式为: //函数返回值:实根的个数; //参数:x- 用以返回实根值的数组; int CalResult(double x[]); (3) 该类还包含有参构造函数、析构函数。
C++课程题目及其答案 一、 课程设计题目: 1简单事务处理:设计模拟一个书店的销售账目。程序能够添加、修改书目,根据进货和销售数目更新库存数。(或类似的学生学籍管理、仓库物品管理、设备管理等,人选一个) 2 排序算法:设计四种及以上的排序算法,如冒泡排序、选择排序、插入排序、折半排序、快速排序、希尔排序等。 二、 设计内容及要求: 每位同学任选一个题目,单独完成。 对所选的题目,要有功能分析,编写程序,编译调试,生成可执行文件。第一大题一定要采用文件或链表方式设计,对管理的物品采用结构或链表或类来设计;功能模块应分为总控(用户界面)、增加、减少、修改等。 课程设计报告要有需求分析,总体分析,模块的划分,对各功能模块有详细说明,输入/ 输出说明,附程序源代码,对程序中的算法、设计的精巧之处有所论述。 一、面向过程设计题1----用迭代法求a的立方根 二、面向过程设计题2------求出n与其反序数之和并输出 三、面向过程设计题3-----用最少张数凑钱 四、面向过程设计题4-----计算一年某天星期几 五、面向过程设计题5----将输入的10进制正整数转换为罗马数据 六、面向过程设计题6----Fibonacci数列 七、面向对象设计题7---------复数的加法以及对复数的输出 八、面向对象设计题8---------实现DateType类 九、面向对象设计题9---------按照三种不同的方法求求出Fibonacci数列的第n项 十、面向对象设计题10---------重载二目运算符“+”和“^” 十二、面向对象设计题12---------设计一个类CStudent 12.1 需求分析…………………………………………………………………………2 12.2 概要设计………………………………………………………………………...2 12.3 详细设计与编码………………………………………………………………...2 12.4 调试分析………………………………………………………………………...2 12.5 用户使用说明 ………………………………………………………………….2 12.6 设计心得………………………………………………………………………...2 十六、数据结构设计题16-------统计选票 16.1 需求分析……………………………………………………………………….…..2 16.2 概要设计……………………………………………………………………….......2 16.3 详细设计与编码……………………………………………………………….....2 16.4 调试分析……………………………………………………………………….......2 16.5 用户使用说明 ……………………………………………………………………2 16.6 设计心得……………………………………………………………………….......2 十七、数据结构设计题17-------扑克牌 17.1 需求分析……………………………………………………………………….…..2 17.2 概要设计……………………………………………………………………….......2 17.3 详细设计与编码……………………………………………………………….....2 17.4 调试分析……………………………………………………………………….......2 17.5 用户使用说明 ……………………………………………………………………2 17.6 设计心得……………………………………………………………………….......2 一、面向过程设计题1----用迭代法求a的立方根
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值