杭州电子科技大学编程实习报告

时间:2024.4.1

        

《编程实习》报告

      

学院:________________ 

专业:________________

学号:________________

姓名:________________

                         

一、功能分析

1.1 需求概述: 要求设计并实现一个通讯录管理工具软件,管理用户通信联系人的名片信息。名片包含的主要信息有:姓名、职务、单位、固定电话、手机、E-Mail、QQ、MSN、备注等。

1.2 功能需求: 要求设计并实现一个通讯录管理工具软件,管理用户通信联系人的名片信息。名片包含的主要信息有:姓名、职务、单位、固定电话、手机、E-Mail、QQ、MSN、备注等。要求该软件:

1、采用C语言在字符模式下设计。

2、将名片信息存放在二进制文件“Cards.Dat”中,该文件为名片文件。名片文件为记录文件。文件头包含用户注册号(8位)和名片数量(小于200),本设计中注册号采用设计者的学号。每个名片的信息存为一条记录,数据项及数据项的长度根据需求和常理自行设计。第一次运行时,名片文件才产生,此时需要输入注册号。

3、具有添加新名片功能。添加新名片时,需要输入姓名的拼音缩写,如“张雨生”缩写为“ZYS”。新名片信息中,姓名和单位是必须输入的。系统必须保证不会出现相同E-Mail的名片。

4、具有查询功能。系统拼音缩写的模糊匹配查询,模糊匹配时采用左对齐的规则。查询的结果按照拼音缩写的升序、列表分页显示,显示时自动依次编号,如1、2、3、……。在查询时,也可以显示所有的名片信息。

5、具有删除功能。对查询的结果,可以选择名片(输入编号)来删除该名片,删除前需要确认。

6、具有修改功能。对查询的结果,可以选择名片(输入编号)来修改该名片。修改时逐项修改,最后需要确认。

7、系统完成每个名片的添加、删除和修改后,需要及时保存到名片文件中,以防数据的丢失。

8、    系统启动时,如果不存在名片文件则视为首次运行,否则,需自动加载名片信息,并显示“欢迎(注册号),您共有N张名片!”的信息,其中“注册号”为注册号码,“N”为实际的名片数量。

9、    要求在人机交互时,系统显示的信息列表整齐、清晰,并有必要的提示。

10、   采用文本文件自动记录操作日志。日志中包括3类操作:系统的启动和停止、用户选择的功能、名片的操作。日志中的时间格式为:YYYY-MM-DD hh24:mm:ss。要求系统运行期间,日志文件依然能够打开查看。不同操作记录的日志信息为:

a) 系统的启停:时间、启动/停止;

b) 功能的选择:时间、功能的说明如添加、查询、删除、修改等;

c) 名片的操作:时间、操作类别(添加、删除、修改)和名片的拼音缩写。

   

1.3 功能的设计

    (功能结构图和功能流程图)

2、系统流程图

(1)权限验证与主菜单程序流程图

    

 (2)修改联系人程序流程图                  (3)添加联系人程序流程图

                     

(4)删除联系人程序模块

                            

(5)查询联系人程序模块

3、逻辑设计

联系人:

4.系统运行界面赏析

3.系统评价

系统评价就是客观,公正的从各个方面评价系统的各项功能。本部分将具体从三方面阐述:优点,缺点以及将来可能提出的要求。

4.1 系统的特点

(1)流程符合选修课系统的基本要求。

(2)操作一目了然。

(3)系统扩充容易。体积小,程序易于修改。

4.2 系统的不足

(1) 界面不太美观、友好,操作不方便 貌似不支持多种输入法。

(2) 几乎是面向开发人员,而不是面向用户。输入信息不太方便(好多信息,系统不能进行异常处理)

(3)  网络功能欠缺。本系统只能在单片机上运行,不能实现网络连接,资源共

享。

(4) 容错性不高。系统的抗错,容错性不高。这方面有待加强。

(5) 没有良好的用户权限和密码限制以防止人为的破坏与盗窃数据资源

七)总结

(这里就自己写啦,每个人的感受都不同学到的东西都不O(∩_∩)O~

八)程序

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

struct record

{

char name[20];

char phone[20];

char adress[40];

char e_mail[30];

char QQ[20];

char msn[20];

}student[500];

int num=0;//外部变量num为文件中的纪录数

FILE *fp;

void mainmenu();//主菜单

void newrecord();//添加联系人

void searchmenu();//查询联系人

void modSub();//修改联系人

void searchbyname();//按姓名查询

void searchbyphone();//按电话查询

void deletemenu();//删除联系人

void deleteall();//删除所有联系人

void deleteone();//删除单个联系人

void showall();//显示所有联系人

void readfromfile();//读取文件

void writetofile();//写入文件

void deletebyname();//按姓名删除

int chcode();

void main()

{ if(!chcode()){exit(0);

}

readfromfile();

while (1)

{

mainmenu();

}

 }

void readfromfile()//从文件导入

{

if((fp=fopen("student.bin","rb"))==NULL)

{

printf("\n\t\t通讯录不存在");

if ((fp=fopen("student.bin","wb"))==NULL)

{

printf("\n\t\t建立失败");

exit(0);

}

else

{

printf("\n\t\t通讯录已建立");

printf("\n\t\t按任意键进入主菜单");

getch();

return;

}

exit(0);

}

fseek(fp,0,2); /*文件位置指针移动到文件末尾*/

if (ftell(fp)>0) /*文件不为空*/

{

rewind(fp); /*文件位置指针移动到文件开始位置*/

for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);

printf("\n\t\t文件导入成功");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

printf("\n\t\t文件导入成功");

printf("\n\t\t通讯录中无任何纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

void mainmenu()//主菜单

{

char choic;

system("cls");

printf("\n\t\t xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

printf("\n\t\t X                                                        x");

printf("\n\t\t x             主菜单 (#`′)凸              ┏┓         x");

printf("\n\t\t X                                           ┣┫         x");

printf("\n\t\t x    1-添加联系人     2-查询联系人      ┏┳┫┣┳┓     x");

printf("\n\t\t X                                       ┃        ┃     x");

printf("\n\t\t x    3-删除联系人     4-修改联系人      ┻━━━━┛     x");

printf("\n\t\t X                                                        x");

printf("\n\t\t x    5-保存退出       6-直接退出                         x");

printf("\n\t\t X                                                        x");

printf("\n\t\t xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

printf("\n\t\t请选择:");

choic=getch();

switch (choic)

{

case '1':newrecord();break;

case '2':searchmenu();break;

case '3':deletemenu();break;

case '4':modSub();break;

case '5':writetofile();break;

case '6':exit(0);

default:printf( "\n\t\t请在1到5之间选择") ;

}

}

void searchmenu()//查询联系人

{

char choic;

system("cls");

printf("\n\t\t 查询菜单 ");

printf("\n\t\t 1-显示所有联系人 ");

printf("\n\t\t 2-按姓名查询 ");

printf("\n\t\t 3-按电话查询 ");

printf("\n\t\t 4-返回主菜单");

printf("\n\t\t请选择:");

choic=getch();

switch (choic)

{

case '1':showall();break;

case '2':searchbyname();break;

case '3':searchbyphone();break;

case '4':mainmenu();break;

default:mainmenu();

}

}

void deletemenu()//删除联系人

{

char choic;

if(num==0)

{

printf("\n\t\t对不起,文件中无任何纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

system("cls");

printf("\n\t\t 删除菜单 ");

printf("\n\t\t 1-删除所有联系人 ");

printf("\n\t\t 2-删除单个联系人 ");

printf("\n\t\t 3-返回主菜单 ");

printf("\n\t\t请选择:");

choic=getch();

switch (choic)

{

case '1':deleteall();break;

case '2':deleteone();break;

case '3':mainmenu();break;

default:mainmenu();break;

}

}

void deleteall()//删除所有联系人

{

printf("\n\t\t确认删除?(y/n)");

if (getch()=='y')

{

fclose(fp);

if ((fp=fopen("student.bin","wb"))==NULL)

{

printf("\n\t\t不能打开文件,删除失败");

readfromfile();

}

num=0;

printf("\n\t\t纪录已删除,按任意键返回主菜单");

getch();

return;

}

else

return;

}

void deletebyname()//按姓名删除联系人

{

int a=0;

int findmark=0;

int j;

int deletemark=0;

int i;

char name[20];

printf("\n\t\t请输入要删除联系人的姓名:");

scanf("%s",name);

for (i=a;i<num;i++)

{

if (strcmp(student[i].name,name)==NULL)

{

printf("\n\t\t以下是您要删除的联系人纪录:");

findmark++;

printf("\n\t\t姓名: %s",student[i].name);

printf("\n\t\t电话: %s",student[i].phone);

printf("\n\t\t地址: %s",student[i].adress);

printf("\n\t\te-mail:%s",student[i].e_mail);

printf("\n\t\tQQ:%s",student[i].QQ);

printf("\n\t\tmsn:%s",student[i].msn);

printf("\n\t\t是否删除?(y/n)");

if (getch()=='y')

{

for (j=i;j<num-1;j++) /*纪录移动,从stud数组中删除之*/

student[j]=student[j+1];

num--;

deletemark++;

printf("\n\t\t删除成功");}}}}

void newrecord()//添加联系人

{

printf("\n\t\t请输入联系人信息 \n");

printf("\n\t\t输入姓名:");

scanf("%s",&student[num].name);

printf("\n\t\t输入电话号码:");

scanf("%s",&student[num].phone);

printf("\n\t\t输入地址:");

scanf("%s",&student[num].adress);

printf("\n\t\t输入e-mail:");

scanf("%s",&student[num].e_mail);

printf("\n\t\t输入QQ:");

scanf("%s",&student[num].QQ);

printf("\n\t\t输入msn:");

scanf("%s",&student[num].msn);

num++;

printf("\n\t\t是否继续添加?(Y/N):");

if (getch()=='y')

newrecord();

return;

}

void showall()//显示所有联系人

{

int i;

system("cls");

if(num!=0)

{

printf("\n\t\t 以下为通讯录所有信息");

for (i=0;i<num;i++)

{

printf("\n\t\t姓名: %s",student[i].name);

printf("\n\t\t电话: %s",student[i].phone);

printf("\n\t\t地址: %s",student[i].adress);

printf("\n\t\te-mail:%s",student[i].e_mail);

printf("\n\t\tQQ:%s",student[i].QQ);

printf("\n\t\tmsn:%s",student[i].msn);

printf("\t\t");

if (i+1<num)

{

printf("\n\t\t__________________________");

system("pause");

}

}

}

else

printf("\n\t\t通讯录中无任何纪录");

printf("\n\t\t按任意键返回主菜单:");

getch();

return;

}

//按电话查询

void searchbyphone()

{

int mark=0;

int i;

int a=0;

printf("\n\t\t 按电话查找 ");

char phone[10];

printf("\n\t\t请输入号码:");

scanf("%s",phone);

for(i=0;i<num;i++)

{

if (strcmp(student[i].phone,phone)==0)

{

printf("\n\t\t以下是您查找的联系人信息 ");

printf("\n\t\t姓名: %s",student[i].name);

printf("\n\t\t电话: %s",student[i].phone);

printf("\n\t\t地址: %s",student[i].adress);

printf("\n\t\te-mail:%s",student[i].e_mail);

printf("\n\t\tQQ:%s",student[i].QQ);

printf("\n\t\tmsn:%s",student[i].msn);

printf("\n\t\t按任意键返回主菜单:");

mark++;

getch();

return;

}

}

if (mark==0)

{

printf("\n\t\t没有该联系人的信息");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

}

void searchbyname()//按姓名查询

{

int mark=0;

int i;

int a=0;

printf("\n\t\t 按姓名查找 ");

char name[20];

printf("\n\t\t请输入姓名:");

scanf("%s",name);

for(i=a;i<num;i++)

{

if (strcmp(student[i].name,name)==0)

{

printf("\n\t\t以下是您查找的联系人信息");

printf("\n\t\t姓名: %s",student[i].name);

printf("\n\t\t电话: %s",student[i].phone);

printf("\n\t\t地址: %s",student[i].adress);

printf("\n\t\te-mail:%s",student[i].e_mail);

printf("\n\t\tQQ:%s",student[i].QQ);

printf("\n\t\tmsn:%s",student[i].msn);

mark++;

if ((i+1)<num)

{

printf("\n\t\t是否继续查找相同名字的联系人信息:(y/n)");

if (getch()=='y')

{

a=i;

continue;

}

else

return;

}

else

{

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

}

}

if(mark!=0)

{

printf("\n\t\t没有相同姓名的联系人纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

else

{

printf("\n\t\t没有相同姓名的联系人纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

}

void writetofile()//写入文件

{

int i;

if ((fp=fopen("student.bin","wb"))==NULL)

{

printf("\n\t\t文件打开失败");

}

for (i=0;i<num;i++)

{

if (fwrite(&student[i],sizeof(struct record),1,fp)!=1)

{

printf("\n\t\t写入文件错误!\n");

}

}

fclose(fp);

printf("\n\t\t通讯录文件已保存");

printf("\n\t\t按任意键退出程序\n\t\t");

exit(0);

}

void deleteone()//删除单个联系人

{

char choic;

printf("\n\t\t请选择删除人姓名");

if (choic=getch()); deletebyname();

}

void modSub()//修改联系人

{

    char sub[20];

    char name[30];

    int i=0,j;

  printf("\n\t\t修改联系人信息 \n");

printf("\n\t\t输入姓名:");

scanf("%s",name);

for(j=0;j<num;j++)

{

 if(strcmp(student[j].name,name)==0)/* 找出名字相同的联系人并进行修改 */

{

printf("\t\t此联系人详情\n");

printf("\n\t\t姓名: %s",student[i].name);

printf("\n\t\t电话: %s",student[i].phone);

printf("\n\t\t地址: %s",student[i].adress);

printf("\n\t\te-mail:%s",student[i].e_mail);

printf("\n\t\tQQ:%s",student[i].QQ);

printf("\n\t\tmsn:%s",student[i].msn);

printf("\n\t\t修改\n\n");

printf("\n\t\t输入姓名:");

scanf(" %s",student[j].name);

printf("\n\t\t电话:");

scanf(" %s",student[j].phone);

printf("\n\t\t地址:");

scanf(" %s",student[j].adress);

printf("\n\t\te_mail:");

scanf(" %s",student[j].e_mail);

printf("\n\t\tQQ:");

scanf(" %s",student[i].QQ);

printf("\n\t\t输入msn:");

scanf("%s",&student[num].msn);

      

                            printf("\n\t\t修改成功");

                    

                printf("\n\t\t姓名: %s",student[j].name);

printf("\n\t\t电话: %s",student[j].phone);

printf("\n\t\t地址: %s",student[j].adress);

printf("\n\t\te-mail:%s",student[j].e_mail);

printf("\n\t\tQQ:%s",student[i].QQ);

printf("\n\t\tmsn:%s",student[i].msn);    

printf("\n\t\t按任意键返回主菜单");

getch();

return; }

        if(strcmp(student[j].name,name)!=0)

       {

printf("\n\t\t没有相同姓名的联系人纪录");

printf("\n\t\t按任意键返回主菜单");

getch();

return;

}

}

int chcode()

    {char aaa[]={'0','8','9','3','1','3','1','6'},bbb[9];

int i;

printf("请输入密码:");

          scanf("%s",bbb);

for(i=0;i<=7;++i)

if(aaa[i]!=bbb[i])

{printf("密码错误 您无权使用本系统!!!\n");

printf("\n\n按任意键离开!");

getchar();

return 0;

}

else

if(i==7)

{printf("欢迎使用本系统!!!\n");

return  1;

}

}

更多相关推荐:
编程实习报告

《编程实习》实习报告学号:**.班级:**.学生姓名:**起始日期:20**/6/23.完成日期:20**/7/4.一、任务要求功能分析与设计:画出功能流程图和功能结构图根据功能分析与设计,完成系统的编码和调试…

程序设计实习报告

《程序设计实习报告》学年:20xx20143实习课题:学生信息管理系统班级:计算机科学与技术1302班学号:***日期:20xx年7月15日组员:**一.实习目的1.了解管理系统的开发流程。2.熟悉对文件和链表…

C语言程序设计实习报告

手机通讯录管理系统一设计题目的任务和内容任务本程序是非数值计算型算法设计我设计出了通讯录管理系统的基本功能并设计了简单的界面本程序主要考察对自定义函数的熟悉程度本程序主要使用的是数组的相关操作包括结构体数组的输...

计算机编程实习报告

土木工程20xx级计算机实习任务书指导教师班级土木XX班姓名Mrsu学号西南交通大学土木工程学院20xx年11月一实习时间20xx年11月30日12月14日二实习地点X7103三实习目的计算机实习是本科计算机基...

算法与编程实习报告

12345678大学123班李明12345678算法与编程实习实习报告班级姓名李明学号12345678112345678大学123班李明12345678第一题一题目一题目统计字母的使用频率二目的与要求1目的通过...

编程实习报告

编程实习实习报告学号班级学生姓名起始日期完成日期一任务要求用字符串指针实现学生成绩管理系统完成函数voidDeleteStudentcharstudentsintmarksvoidSortClasscharst...

算法与编程实习报告

算法与编程实习报告第一题统计字母的使用频率一题目统计字母的使用频率目的与要求1目的通过编写程序统计字母的使用频率培养学生综合利用C语言进行程序设计的能力熟悉字符串的操作方法加强函数的运用提高软件系统分析能力和程...

可编程实训报告

广东机电职业技术学院可编程实习报告20xx20xx学年第二学期专业电气自动化班级电气1207班姓名张华学号06120xx0指导教师黄英杰闫荷花陈跃时间第3周20xx年3月10日20xx年3月14日地点02209...

网络通讯编程小学期实训报告

成都东软学院小学期实训报告网络通讯编程C陈文飞陈建计算机科学与技术系12级网络本科112310520xx7黄萌20xx81120xx95实训题目指导教师系别年级专业班级学号学生姓名实训期20xx年9月5日1实习...

数控编程实训报告

数控实训报告FANUC数控铣床的操作方法一实训目的和要求1了解FANUC0iMateMc数控铣床基本原理和各部分功能2掌握常用GM指令格式功能及编程方法3掌握数控铣床操作方法数控加工工艺过程4会用手工编程对铣削...

java程序设计实习报告

中原工学院信息商务学院Java程序设计实习报告中原工学院信息商务学院经济管理系20xx年6月20号1中原工学院信息商务学院目录一实习题目2二实习目的21社会需求22专业需求2三开发环境2四实习内容31系统功能需...

可编程控制器实习报告

南京工业大学可编程控制器实习报告院系浦江学院专业自动化姓名吴诗佳学号P1501080428起讫日期20xx06520xx0617指导教师李丽娟谈怡君20xx年06月16日目录1设计目的2软硬件设备3设计方案控制...

编程实习报告(38篇)