
1.掌握从“对象“的角度看问题,而不仅仅是功能的划分的思想;
2..熟练掌握将对象所具有的功能和属性封装到一个类中及其用功能;
3.熟练掌握文件的存取方法;
4.了解综合系统设计的基本原理;
5.掌握C语言程序的综合应用。
二 程序设计任务内容
通讯录管理系统给用户提供了一个在Windows操作系统上运行的通讯录管理平台,用户可以对联系人进行在电话号码、姓名以及简介等方面的添加、删除、修改等管理操作。同时系统还可以判断登录用户功能,根据用户的分类,其拥有的权限也不同,系统可以通过判断登录用户的用户名和密码,从而判断其是否是首次登陆。系统亦可获取登录用户的权限信息,从而判断该用户能够使用该系统的哪些特定功能,不同级别的用户不能够越权使用系统功能。
通讯录管理系统软件是为用户提供一个保存联系人及信息管理进行辅助的应用软件、功能描述如下。
1.用户选择:进入界面后用户可以选择自己的种类,当用户登录后根据权限判断该用户是新用户还是老用户,可以使用哪些对应的功能。
2. 给用户提供功能选择界面: 新老用户对应的功能选择界面是不同的。功能选择界面包括输入功能选项、调用相应程序两大需求。
3.初始化联系人:用户根据提示输入联系人的电话号码、姓名、简介。可一次性输入多个联系人的相关信息。系统将联系人的信息存储在系统磁盘的文件中,以便进行管理、查找和备份。
4.浏览联系人:用以查看联系人的信息以及联系人的电话号码。
5.修改联系人:提示用户输入要进行修改操作的联系人的信息,如果在文件中有该联系人的电话号码存在,则将该电话号码所对应的姓名、电话号码、简介以及得票数所对应文件中加以修改。由系统提示是否继续进行修改操作,让用户可多次进行修改操作。
6.修改密码: 按照提示用户要输入旧密码一次以及新密码两次来进行用户的密码修改,被修改的信息将会储存在文件中,下一次用户要登陆的话得输入新密码才能成功登陆进行其他操作。
三 程序详细设计说明
系统结构设计
1.总体设计
本系统的总体思想基于结构化的程序设计。应用高级语言程序设计中的基本控制结构,如循环和选择,着重实现管理系统的增、删、改、查等典型的管理功能。因此,系统的设计方法是结构化设计方法,开发手段是C语言,在Microsoft Visual C++ 6.0环境下开发。
2.系统模块结构图
依据需求分析结果,通讯录管理系统可以分为3个模块:
用户选择模块、
用户登陆模块、
用户管理模块。
如图1所示。
图1系统模块结构图
3. 系统流程描述:
图2系统流程图
4.界面设计
通讯录管理系统的界面设计主要遵循方便易用、界面友好的原则,具体设计如下。
(1) 用户选择界面设计
① 进入界面后有三个选项,分别是“登陆”,“新建”和“退出”,选择了“新建”的话会提示进入新建用户名和密码,选择登陆,分别要输入用户姓名和密码,如果输入有误则会提示有错误。当输入的姓名和密码都是正确的时候会进入到用户的功能界面。
图3 登录界面效果图
(2)功能选择界面的设计
图4 功能选择界面效果图
(3) 执行结果界面设计
由于C语言对图形化界面的支持比较有限,因此,对于该管理系统,首要考虑的是结果的清晰易读。对于此类的界面设计要采用一些简单处理,将执行的每一个功能都很清晰的表示出来。
示例:若用户选择了“好友管理”,执行结果如图所示
图5 浏览联系人执行结果图
若选择“增加好友”,则会出现:
图6 增加好友界面
(3).用户功能选项模块
有“增加好友”,“查询记录”,“修改联系人”,“删除记录”,“返回主菜单”和“退出”6项功能管理。对联系人有修改的操作,会将操作结果保存至文件,对于需要查看结果的操作,将文件中的操作结果输出到屏幕上。
模块功能树如图9所示
图7 用户功能选择模块功能图
函数声明:
①Find ()
●功能:查找联系人的信息文件。根据用户输入的文件名创建联系人信息文件,将用户输入的若干联系人信息记录存入该文件并保存。最后列表显示文件内容。
●输入:按要求输入联系人的电话号码,姓名,其他信息,并且选择是否继续添加
●处理:
提示用户逐条输入联系人信息;
将完整的联系人信息存入文件;
循环判断用户是否要继续添加联系人;
●查找:列表显示用户创建并输入内容后的文件内容。
图8 查找联系人的界面
②Hyxg ()
●功能:修改联系人
●输入:输入“c”即可
● 输出:列表显示所有联系人的信息
图9 浏览联系人界面
③Delete ()
●功能:删除联系人的信息。根据用户输入联系人的电话号码,然后会显示出联系人的相关信息,然后根据提示对联系人进行各项信息的删除,可以进行循环修改。
●输出:做完修改操作后联系人信息记录
图10 删除联系人界面
④Mmxg()
●功能:按照用户的意愿对用户的密码进行修改
●输入:
原始密码。
新密码两次。
●处理:
当用户输入的原始密码与文件中的密码不相符时,提示输入密码错误;
若输入正确则需要输入两次新密码来进行对原始密码的修改
如果两次新密码输入不也一样,系统会提醒用户输入密码不一样,请重新输入
●输出:显示修改密码成功
图11 修改密码成功的界面
四 程序部分源程序代码和调试过程
可以使用排序的方法对联系人进行更方便的储存和调用
#include #include #include #include const int L=600000000; typedef struct Telephone //建立结构体 { char secret[20]; //密码 char yanzheng[20]; //验证密码 char hao[20]; //用户号 char zuming[50]; //分组名 char name[50]; //好友姓名 char sex[30]; //性别 char tel[30]; //电话 char adr[30]; //地址 char eip[30]; //邮编 struct Telephone *next; }TEL; TEL *head; //建立头结点 FILE *fp; // 建立文件 int i; TEL *p1,*p2,*p3; //用指针指向结构体 void Initiate(); //初始化指针。 void Create(); //的功能是:创建新的通信录。 void Denglu(); //登录通信录。 void Jinru(); //进入创建与登录界面。 void Menu(); //通信录主菜单。 void Add(); //在通信录的末尾,写入新的信息,并返回选单。 void Xtgl(); //系统管理。 void Hygl(); //好友管理。 void Find(); //查找记录。 void Mmxg(); //通信录密码修改 void Hyxg(); //通信录好友信息修改 void Delete(); //删除某人的信息,如果未找到要删的人,提示通信录中没有此人的信息,并返回选单。 void Help(); //通信录操作帮助。 void main() { Initiate(); //初始化 Jinru(); //进入进入界面 } //初始化 void Initiate() { if((head =(TEL *)malloc(sizeof(TEL)))==NULL) exit(1); //初始化指针。 head->next=NULL; } //开始进入 void Jinru() { system("cls"); system("color 3f"); char choice; printf("\\\温馨提示:\\n\\n\\\如果您还没有创建,请先创建!\\n\\n\\n\\n"); printf("\\\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n\\n"); printf("\\\^^ a.创建 ^^\\n\\n"); printf("\\\^^ b.登录 ^^\\n\\n\\n"); printf("\\\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\\n\\n"); printf("\\\请选择a或b\\n\\n\\\"); //进入界面 输出提示用户 scanf("%s",&choice); //用户输入数据 printf("\\n"); if(choice=='a'||choice=='b') //进行判断 { switch(choice) { case 'a':Create();break; //进行选择 case 'b':Denglu();break; //进行选择 } } else{ printf("\\\输入有误!请重新输入\\n\\n\\n\\\");//输出提示用户 for(i=0;i } } //创建通信录 void Create() { system("cls"); system("color 2f"); //fp=fopen("mm p1=(TEL *)malloc(sizeof(TEL)); //申请一个新的空间 printf("请输入用户号:\\n"); //输出提示用户 scanf("%s",&p1->hao); //fprintf(fp,"%s",p1->hao);//用户输入数据 printf("请输入密码:\\n\\n注意!小于20位!\\n\\n");//输出提示用户 scanf("%s",&p1->secret);//第一次输入的密码 用户输入数据 //fprintf(fp,"%s",p1->secret); printf("请再次输入密码:\\n\\n注意!小于20位!\\n\\n");//输出提示用户 scanf("%s",&p1->yanzheng); //第二次输入的密码 用户输入数据 //fclose(fp); if(strcmp(p1->yanzheng,p1->secret)!=0) //比较两次输入是否一样 { printf("两次输入密码不一致!请重新输入!");//输出提示用户 for(i=0;i } else { system("cls"); printf("\\n\\n\\n\\n\\n\\n\\\\正在创建中!");//输出提示用户 printf("\\n\\n\\\\请稍侯...\\n"); //输出提示用户 for(i=0;i printf("\\n\\n\\n\\n\\n\\\\恭喜创建成功!");//输出提示用户 printf("\\n\\n\\\\正在进入登录界面!"); //输出提示用户 printf("\\n\\n\\\\请稍侯...\\n"); //输出提示用户 for(i=0;i } } //登录界面 void Denglu() { system("cls"); //fp=fopen("mm p2=(TEL *)malloc(sizeof(TEL)); //申请一个新的空间 printf("\\n\\n\\n\\n\\n\\\\欢迎登录个人通信录系统!");//输出提示用户 printf("\\n\\n\\\\请输入用户号:\\n\\\\");//输出提示用户 scanf("%s",&p2->hao); //fscanf(fp,"%s,",&p1->hao); if(strcmp(p2->hao,p1->hao)==0) //比较与原用户号是否一样 { printf("\\n\\n\\\\请输入密码:\\n\\\\");//输出提示用户 scanf("%s",&p2->secret); //用户输入数据 //fscanf(fp,"%s",&p1->secret); if(strcmp(p1->yanzheng,p2->secret)==0) //比较与原密码是否一样 { system("cls"); printf("\\n\\n\\n\\n\\n\\\\正在登录中!");//输出提示用户 printf("\\n\\n\\\\请稍侯...\\n");//输出提示用户 //fclose(fp); for(i=0;i printf("\\n\\n\\n\\n\\n\\\\恭喜登录成功!\\n\\n\\\\");//输出提示用户 printf("正在进入主菜单!");//输出提示用户 printf("\\n\\n\\\\请稍侯...\\n");//输出提示用户 for(i=0;i } else { system("cls"); printf("\\n\\n\\n\\n\\n\\\\密码不正确!\\n");//输出提示用户 for(i=0;i } } else { system("cls"); printf("\\n\\n\\n\\n\\n\\\\该用户没注册!\\n");//输出提示用户 for(i=0;i } } void Xtgl() { char choice; system("cls"); printf("\\n\\n\\**********欢迎使用个人通信录系统************\\n\\n");//输出提示用户 printf("\\n\\n\\****\\a.密码修改\\****\\n\\n");//进行选择 printf("\\****\\b.返回主菜单\\****\\n\\n");//进行选择 printf("\\****\\c.退出通信录\\****\\n\\n");//进行选择 printf("\\n\\n\\**********欢迎使用个人通信录系统************\\n\\n");//输出提示用户 printf("\\\\请选择小写字母a~c\\n\\\\");//输出提示用户 scanf("%s",&choice); //用户输入数据 if(choice=='a'||choice=='b'||choice=='c') //进行判断 { switch(choice) { case 'a':Mmxg();break; //修改通信录信息 case 'b':Menu();break; //返回主菜单 case 'c':system("cls"); printf("\\n\\n\\n\\n\\n\\n\\n\\n\\\*******感谢您的使用*******");//输出提示用户 printf("\\n\\n\\\\正在退出!");//输出提示用户 printf("\\n\\n\\\\请稍侯...\\n");//输出提示用户 for(int i=0;i } } else { printf("\\\输入有误!请重新输入\\n\\n\\n\\\");//输出提示用户 for(i=0;i } } void Hygl() { system("cls"); char choice; printf("\\n\\n\\**********欢迎使用个人通信录系统************\\n\\n");//输出提示用户 printf("\\****\\a.增加好友\\****\\n\\n");//进行选择 printf("\\****\\b.查询记录\\****\\n\\n");//进行选择 printf("\\****\\c.修改记录\\****\\n\\n");//进行选择 printf("\\****\\d.删除记录\\****\\n\\n");//进行选择 printf("\\****\\e.返回主菜单\\****\\n\\n");//进行选择 printf("\\****\\f.退出通信录\\****");//进行选择 printf("\\n\\n\\**********欢迎使用个人通信录系统************\\n\\n");//输出提示用户 printf("\\\\请选择小写字母a~f\\n\\\\");//输出提示用户 scanf("%s",&choice); //用户输入数据 if(choice=='a'||choice=='e'||choice=='b'||choice=='c'||choice=='d'||choice=='f') //进行判断 { switch(choice) { case 'a':Add();break; //增加通信录信息 case 'b':Find();break; //查询通信录信息 case 'c':Hyxg();break; //修改通信录信息 case 'd':Delete();break; //删除通信录信息 case 'e':Menu();break; //返回主菜单 case 'f': //退出通信录 system("cls"); printf("\\n\\n\\n\\n\\n\\n\\n\\n\\\*******感谢您的使用*******");//输出提示用户 printf("\\n\\n\\\\正在退出!");//输出提示用户 printf("\\n\\n\\\\请稍侯...\\n");//输出提示用户 for(int i=0;i } } else { printf("\\n\\n\\\\输入有误!请重新输入\\n\\n\\\\\");//输出提示用户 for(int i=0;i } } //显示菜单 void Menu() { system("cls"); char choice; system("color 5f"); printf("\\n\\n\\**********欢迎使用个人通信录系统************\\n\\n");//输出提示用户 printf("\\n\\n\\****\\a.好友管理\\****\\n\\n");//进行选择 printf("\\****\\b.系统管理\\****\\n\\n");//进行选择 printf("\\****\\c.操作帮助\\****\\n\\n");//进行选择 printf("\\****\\d.退出通信录\\****\\n\\n");//进行选择 printf("\\n\\n\\**********欢迎使用个人通信录系统************\\n\\n");//输出提示用户 printf("\\\\请选择小写字母a~d\\n\\\\");//输出提示用户 scanf("%s",&choice); //用户输入数据 if(choice=='a'||choice=='b'||choice=='c'||choice=='d') //进行判断 { switch(choice) { case 'a':Hygl();break; //修改通信录信息 case 'b':Xtgl();break; //修改通信录信息 case 'c':Help();break; //操作帮助 case 'd': //退出通信录 system("cls"); printf("\\n\\n\\n\\n\\n\\n\\n\\n\\\*******感谢您的使用*******");//输出提示用户 printf("\\n\\n\\\\正在退出!");//输出提示用户 printf("\\n\\n\\\\请稍侯...\\n");//输出提示用户 for(int i=0;i } } else { printf("\\n\\n\\\\输入有误!请重新输入\\n\\n\\\\\");//输出提示用户 for(int i=0;i } } //添加通讯录信息 void Add() { system("cls"); int j,m,i,n; TEL *p1[100],*p2; //用指针指向结构体 printf("请输入添加分组个数:"); //输出提示用户 printf("\\n\\n注意!请输入阿拉伯数字!\\n\\n");//输出提示用户 scanf("%d",&n); //用户输入数据 if(n>0) { for(j=1;j<=n;j++) { p1[j]=(TEL *)malloc(sizeof(TEL)); //申请一个新的空间 printf("分组名:"); scanf("%s",&p1[j]->zuming); //用户输入数据 printf("请输入添加第%d组好友个数:",j); //输出提示用户 printf("\\n\\n注意!请输入阿拉伯数字!\\n\\n",j); scanf("%d",&m); //用户输入数据 if(m>0) { for(i=1;i<=m;i++) { p1[i]=(TEL *)malloc(sizeof(TEL)); //申请一个新的空间 printf("请输入第%d个好友信息!\\n",i);//输出提示用户 printf("姓名:\\n"); scanf("%s",&p1[i]->name); //用户输入数据 printf("性别:\\n"); scanf("%s",&p1[i]->sex); //用户输入数据 printf("电话:\\n"); scanf("%s",&p1[i]->tel);//用户输入数据 printf("地址:\\n"); scanf("%s",&p1[i]->adr);//用户输入数据 printf("邮编:\\n"); scanf("%s",&p1[i]->eip);//用户输入数据 p1[i]->next=NULL; if(head->next==NULL) { head->next=p1[i]; } else { for(p2=head;p2->next!=NULL;p2=p2->next);//找到结点尾 p2->next=p1[i]; } } //保存到链表 } else { printf("此操作无法进行!返回中...");//输出提示用户 for(i=0;i } } } else { printf("此操作无法进行!返回中..."); //输出提示用户 for(i=0;i } system("cls"); printf("\\n\\n\\n\\n\\n\\n\\n\\n\\\\信息正在保存中!");//输出提示用户 printf("\\n\\n\\\\请稍侯...\\n"); //输出提示用户 for( i=0;i printf("\\n\\n\\n\\n\\n\\n\\n\\n\\n\\\\恭喜添加成功!");//输出提示用户 printf("\\n\\n\\\\返回中!请稍侯...\\n\\n"); //输出提示用户 for( i=0;i } //查找通信录信息 void Find() { system("cls"); TEL *p; //用指针指向结构体 char name[50]; if(head->next==NULL) { printf("\\n\\n\\n\\n\\n\\n\\\\查找中!"); //输出提示用户 printf("请稍侯...\\n\\n\\n"); //输出提示用户 for(int i=0;i printf("\\n返回中!请稍侯...\\n"); //输出提示用户 for(i=0;i } printf("请输入要查找的姓名:\\n"); //输出提示用户 scanf("%s",&name); //用户输入数据 for(p=head->next;p!=NULL;p=p->next) { if(strcmp(p->name,name)==0) { system("cls"); printf("\\n\\n\\n\\n\\n\\n\\\\查找中!请稍侯...\\n\\n\\n");//输出提示用户 for(int i=0;i printf("\\\\%s\%s\%s\%s\%s\\n",p->name,p->sex,p->adr,p->eip,p->tel); //输出数据 printf("\\n\\\\"); system("pause"); Hygl(); //返回好友管理 } else if(p->next==NULL) { system("cls"); printf("\\n\\n\\n\\n\\n\\n\\\\查找中!请稍侯...\\n\\n\\n");//输出提示 for(int i=0;i printf("\\n\\\\返回中!请稍侯...\\n");//输出提示用户 for(i=0;i } } Hygl(); //返回好友管理 } void Hyxg() { system("cls"); char name[50]; //先查找 后删除 TEL *p, *p1; //用指针指向结构体 if (head->next == NULL) { printf("此通信录为空!"); //输出提示用户 printf("\\n返回中!请稍侯...\\n"); //输出提示用户 //return; for(int i=0;i } printf("请输入要修改的姓名:\\n"); //输出提示用户 scanf("%s",name); //用户输入数据 for(p=head->next;p!=NULL;p=p->next) { if(strcmp(p->name,name)==0) break; else if(p->next==NULL) { for(int i=0;i printf("\\n返回中!请稍侯...\\n"); //输出提示用户 //return; for(i=0;i } } p1=(TEL *)malloc(sizeof(TEL)); //申请一个新的空间 printf("\\n新姓名:\\n"); //添加信息 scanf("%s",p1->name); //用户输入数据 strcpy(p->name,p1->name); printf("性别:\\n"); //输出提示用户 scanf("%s",p1->sex); //用户输入数据 strcpy(p->sex,p1->sex); printf("电话:\\n"); //输出提示用户 scanf("%s",p1->tel); //用户输入数据 strcpy(p->tel,p1->tel); printf("地址:\\n"); scanf("%s",p1->adr); //用户输入数据 strcpy(p->adr,p1->adr); printf("邮编:\\n"); //输出提示用户 scanf("%s",p1->eip); //用户输入数据 strcpy(p->eip,p1->eip); system("cls"); printf("\\n\\n\\n\\n\\n\\n\\\\信息修改中!"); //输出提示用户 printf("请稍侯...\\n\\n"); //输出提示用户 for(int i=0;i //显示修改的信息 printf("\\\\姓名\性别\地址\邮编\电话\\n\\\\"); printf("%s\%s\%s\%s\%s\\n",p->name,p->sex,p->adr,p->eip,p->tel); //输出数据 //free(p1); printf("\\n\\n\\\\返回中!请稍侯..."); //输出提示用户 for(i=0;i } void Mmxg() { system("cls"); p3=(TEL *)malloc(sizeof(TEL)); //申请一个新的空间 printf("\\n\\n\\n\\n\\n\\\\请输入原密码:");//输出提示用户 printf("\\n\\n\\\\"); scanf("%s",p3->secret); //用户输入数据 if((strcmp(p1->secret,p3->secret))==0) { printf("\\n\\n\\n\\n\\n\\\\请输入新密码:");//输出提示用户 printf("\\n\\n\\\\"); scanf("%s",p1->secret); //用户输入数据 system("cls"); printf("\\n\\n\\n\\n\\n\\n\\n\\n\\n\\\\新密码保存中!");//输出提示用户 printf("\\n\\n\\\\请稍侯......"); //输出提示用户 for(i=0;i printf("\\n\\n\\n\\n\\n\\n\\n\\\\恭喜!\\n\\n\\\\密码修改成功!");//输出提示用户 printf("\\n\\n\\\\正在返回主菜单!请稍侯......");//输出提示用户 for(i=0;i } else { system("cls"); printf("\\n\\n\\n\\n\\n\\n\\n\\n\\\\原密码输入错误!");//输出提示用户 printf("\\n\\n\\\\请重新输入!"); //输出提示用户 for(i=0;i } } //删除通信录信息 void Delete() { system("cls"); char name[50]; //先查找 后删除 TEL *p = head->next, *p1 =head->next,*p2; //用指针指向结构体 if (head->next == NULL) { printf("\\n\\n\\n\\n\\n\\\\查找中!请稍侯...");//输出提示 for(int i=0;i printf("\\n\\\\返回中!请稍侯...\\n"); //输出提示 // return; for(i=0;i } printf("\\n\\n\\n\\n\\n\\\\请输入要删除的姓名:\\n");//输出提示用户 scanf(" %s",name); //用户输入数据 while ((strcmp(p->name,name)!=0 )&& p->next != NULL) { p1=p; p =p->next; } if (strcmp(name, p->name)==0) //输出删除信息 { if (p == head->next&&p->next!=NULL) head->next = p->next; else if(p==head->next&&p->next==NULL) { head->next=p->next; printf("\\\\正在删除信息中!请稍侯...");//输出提示用户 for(int i=0;i printf("\\n\\n\\n\\n\\n\\\\信息已删除,此通信录为空!!");//输出提示用户 printf("\\n\\\\返回中!请稍侯...");//输出提示用户 //return; for(i=0;i } else p1->next = p->next; } else { printf("\\n\\n\\n\\n\\n\\\\查找中!请稍侯..."); //输出提示用户 for(int i=0;i for(i=0;i for(i=0;i } printf("\\\\正在删除信息中!请稍侯..."); for(int i=0;i printf("姓名\性别\地址\邮编\电话\\n"); //输出提示用户 for(p2=head->next;p2!=NULL;p2=p2->next) printf("%s\%s\%s\%s\%s\\n",p2->name,p2->sex,p2->adr,p2->eip,p2->tel); //输出数据 } void Help() { system("cls"); printf("\\n\\n\\n\\n\\n\\n\\n\\\\请您按提示操作!!!!!!!!!");//输出提示用户 printf("\\n\\n\\\\谢谢合作!!!!!!!!!\\n\\n\\\\");//输出提示用户 system("pause"); Menu(); //返回主菜单 } 五 软件使用说明 1.在使用该软件系统时,应首先定义用户,这样才可以以用户的身份进行登录和操作。我在使用此系统时首先定义了一个用户名:如姓名:zy,密码:1234。 2.用户登录后,通过输入操作选项可以对联系人进行初始化,修改,以及浏览等各种操作时,只要在功能选择界面输入相应的操作选项即可。进入子菜单进行操作时,每一步都会有说明。用户还可以修改自己的密码。 3.存储文件由创始者自己定义和操作,是.txt类型的,联系人的信息存储在candidate.txt文件中,用户信息存储在code.txt文件中。 六 程序设计心得与体会 老实说,在实习开始前的前两周就有些担心,因为对实习内容一无所知,害怕会很难,思考要不要提前准备,以免不能按时完成任务。 终于到了验收的周次了,决定一定要攻克难关,回来看过一遍实习参考题目,感觉好懊悔,除了《链表的基本操作》,其他的项目看上去都好难。 心里不敢懈怠,又看了一遍题目,下决心选择了《通讯录管理》这个其他人都没有选的项目,当时心里是这样想的,自己对文件的操作差不多忘光了,此时可以复习一下,不过也有点担心,害怕自己难以完成,因为觉得此题目相对较复杂。 在编写程序的过程中出现了很多问题,自己现静下来仔细查找错误所在,也有些比较顽固的问题,自己实在能力有限,就去请教老师和同学,一步一步,一个一个模块,终于顺利完成了。自己验证了一遍各部分的功能,最后找老师验收。 通过这次实习,自己无论是在学习方面,还是内心都有很多收获。就像那句话:自信是成功的起点,坚持是成功的终点。加油! 七 程序附录 参考资料 《C/C++语言程序设计教程》 人民邮电出版社 李丽娟主编 《C++程序设计》 谭浩强
