杭州电子科技大学编程实习报告_第1页
杭州电子科技大学编程实习报告_第2页
杭州电子科技大学编程实习报告_第3页
杭州电子科技大学编程实习报告_第4页
杭州电子科技大学编程实习报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编程实习报告 学院:_ 专业:_学号:_姓名:_ 一、功能分析1.1 需求概述: 要求设计并实现一个通讯录管理工具软件,管理用户通信联系人的名片信息。名片包含的主要信息有:姓名、职务、单位、固定电话、手机、E-Mail、QQ、MSN、备注等。1.2 功能需求: 要求设计并实现一个通讯录管理工具软件,管理用户通信联系人的名片信息。名片包含的主要信息有:姓名、职务、单位、固定电话、手机、E-Mail、QQ、MSN、备注等。要求该软件:1、采用C语言在字符模式下设计。2、将名片信息存放在二进制文件“Cards.Dat”中,该文件为名片文件。名片文件为记录文件。文件头包含用户注册号(8位)和名片数量(

2、小于200),本设计中注册号采用设计者的学号。每个名片的信息存为一条记录,数据项及数据项的长度根据需求和常理自行设计。第一次运行时,名片文件才产生,此时需要输入注册号。3、具有添加新名片功能。添加新名片时,需要输入姓名的拼音缩写,如“张雨生”缩写为“ZYS”。新名片信息中,姓名和单位是必须输入的。系统必须保证不会出现相同E-Mail的名片。4、具有查询功能。系统拼音缩写的模糊匹配查询,模糊匹配时采用左对齐的规则。查询的结果按照拼音缩写的升序、列表分页显示,显示时自动依次编号,如1、2、3、。在查询时,也可以显示所有的名片信息。5、具有删除功能。对查询的结果,可以选择名片(输入编号)来删除该名片

3、,删除前需要确认。6、具有修改功能。对查询的结果,可以选择名片(输入编号)来修改该名片。修改时逐项修改,最后需要确认。7、系统完成每个名片的添加、删除和修改后,需要及时保存到名片文件中,以防数据的丢失。8、系统启动时,如果不存在名片文件则视为首次运行,否则,需自动加载名片信息,并显示“欢迎(注册号),您共有N张名片!”的信息,其中“注册号”为注册号码,“N”为实际的名片数量。9、要求在人机交互时,系统显示的信息列表整齐、清晰,并有必要的提示。10、采用文本文件自动记录操作日志。日志中包括3类操作:系统的启动和停止、用户选择的功能、名片的操作。日志中的时间格式为:YYYY-MM-DD hh24:

4、mm:ss。要求系统运行期间,日志文件依然能够打开查看。不同操作记录的日志信息为:a)系统的启停:时间、启动/停止;b)功能的选择:时间、功能的说明如添加、查询、删除、修改等;c)名片的操作:时间、操作类别(添加、删除、修改)和名片的拼音缩写。 1.3 功能的设计 (功能结构图和功能流程图)2、系统流程图(1)权限验证与主菜单程序流程图 (2)修改联系人程序流程图 (3)添加联系人程序流程图 (4)删除联系人程序模块 (5)查询联系人程序模块3、逻辑设计联系人:属性名类型长度姓名字符型20电话字符型20地址字符型40邮箱字符型30QQ字符型20MSN字符型204.系统运行界面赏析3系统评价系统

5、评价就是客观,公正的从各个方面评价系统的各项功能。本部分将具体从三方面阐述:优点,缺点以及将来可能提出的要求。4.1 系统的特点(1)流程符合选修课系统的基本要求。(2)操作一目了然。(3)系统扩充容易。体积小,程序易于修改。4.2 系统的不足(1) 界面不太美观、友好,操作不方便 貌似不支持多种输入法。(2) 几乎是面向开发人员,而不是面向用户。输入信息不太方便(好多信息,系统不能进行异常处理)(3) 网络功能欠缺。本系统只能在单片机上运行,不能实现网络连接,资源共享。(4) 容错性不高。系统的抗错,容错性不高。这方面有待加强。(5) 没有良好的用户权限和密码限制以防止人为的破坏与盗窃数据资

6、源七)总结(这里就自己写啦,每个人的感受都不同学到的东西都不O(_)O)八)程序#include #include #include #include struct record char name20; char phone20; char adress40; char e_mail30; char QQ20;char msn20;student500; int num=0;/外部变量num为文件中的纪录数 FILE *fp; void mainmenu();/主菜单 void newrecord();/添加联系人void searchmenu();/查询联系人 void modSub();

7、/修改联系人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();

8、while (1) mainmenu(); void readfromfile()/从文件导入 if(fp=fopen(student.bin,rb)=NULL) printf(ntt通讯录不存在); if (fp=fopen(student.bin,wb)=NULL) printf(ntt建立失败); exit(0); else printf(ntt通讯录已建立); printf(ntt按任意键进入主菜单); getch(); return; exit(0); fseek(fp,0,2); /*文件位置指针移动到文件末尾*/ if (ftell(fp)0) /*文件不为空*/ rewind(

9、fp); /*文件位置指针移动到文件开始位置*/ for (num=0;!feof(fp) & fread(&studentnum,sizeof(struct record),1,fp);num+); printf(ntt文件导入成功); printf(ntt按任意键返回主菜单); getch(); return; printf(ntt文件导入成功); printf(ntt通讯录中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; void mainmenu()/主菜单 char choic; system(cls); printf(ntt xxxxx

10、xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx);printf(ntt X x);printf(ntt x 主菜单 (#)凸 x);printf(ntt X x);printf(ntt x 1-添加联系人 2-查询联系人 x);printf(ntt X x);printf(ntt x 3-删除联系人 4-修改联系人 x); printf(ntt X x);printf(ntt x 5-保存退出 6-直接退出 x); printf(ntt X x);printf(ntt xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

11、xxxxxxxxxxxxxxxxxxxxxxxxx);printf(ntt请选择:); 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( ntt请在1到5之间选择) ; void searchmenu()/查询联系人 char choic; system(cls);

12、 printf(ntt 查询菜单 ); printf(ntt 1-显示所有联系人 ); printf(ntt 2-按姓名查询 );printf(ntt 3-按电话查询 ); printf(ntt 4-返回主菜单); printf(ntt请选择:); choic=getch(); switch (choic) case 1:showall();break; case 2:searchbyname();break; case 3:searchbyphone();break; case 4:mainmenu();break; default:mainmenu(); void deletemenu()

13、/删除联系人 char choic; if(num=0) printf(ntt对不起,文件中无任何纪录); printf(ntt按任意键返回主菜单); getch(); return; system(cls); printf(ntt 删除菜单 ); printf(ntt 1-删除所有联系人 ); printf(ntt 2-删除单个联系人 ); printf(ntt 3-返回主菜单 ); printf(ntt请选择:); choic=getch(); switch (choic) case 1:deleteall();break; case 2:deleteone();break; case 3

14、:mainmenu();break; default:mainmenu();break; void deleteall()/删除所有联系人 printf(ntt确认删除?(y/n); if (getch()=y) fclose(fp); if (fp=fopen(student.bin,wb)=NULL) printf(ntt不能打开文件,删除失败); readfromfile(); num=0; printf(ntt纪录已删除,按任意键返回主菜单); getch(); return; else return; void deletebyname()/按姓名删除联系人 int a=0; int

15、 findmark=0; int j; int deletemark=0; int i; char name20; printf(ntt请输入要删除联系人的姓名:); scanf(%s,name); for (i=a;inum;i+) if (strcmp(,name)=NULL) printf(ntt以下是您要删除的联系人纪录:); findmark+; printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); print

16、f(ntte-mail:%s,studenti.e_mail); printf(nttQQ:%s,studenti.QQ); printf(nttmsn:%s,studenti.msn);printf(ntt是否删除?(y/n); if (getch()=y) for (j=i;jnum-1;j+) /*纪录移动,从stud数组中删除之*/ studentj=studentj+1; num-; deletemark+; printf(ntt删除成功);void newrecord()/添加联系人 printf(ntt请输入联系人信息 n); printf(ntt输入姓名:); scanf(%s

17、,&); printf(ntt输入电话号码:); scanf(%s,&studentnum.phone); printf(ntt输入地址:); scanf(%s,&studentnum.adress); printf(ntt输入e-mail:); scanf(%s,&studentnum.e_mail); printf(ntt输入QQ:); scanf(%s,&studentnum.QQ); printf(ntt输入msn:); scanf(%s,&studentnum.msn); num+; printf(ntt是否继续添加?(Y/N):); if (getch

18、()=y) newrecord(); return; void showall()/显示所有联系人 int i; system(cls); if(num!=0) printf(ntt 以下为通讯录所有信息); for (i=0;inum;i+) printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(nttQQ:%s,studenti.QQ);printf(n

19、ttmsn:%s,studenti.msn);printf(tt); if (i+1num) printf(ntt_); system(pause); else printf(ntt通讯录中无任何纪录); printf(ntt按任意键返回主菜单:); getch(); return; /按电话查询 void searchbyphone() int mark=0; int i; int a=0; printf(ntt 按电话查找 ); char phone10; printf(ntt请输入号码:); scanf(%s,phone); for(i=0;inum;i+) if (strcmp(stu

20、denti.phone,phone)=0) printf(ntt以下是您查找的联系人信息 ); printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(nttQQ:%s,studenti.QQ);printf(nttmsn:%s,studenti.msn);printf(ntt按任意键返回主菜单:); mark+; getch(); return; if (m

21、ark=0) printf(ntt没有该联系人的信息); printf(ntt按任意键返回主菜单); getch(); return; void searchbyname()/按姓名查询 int mark=0; int i; int a=0; printf(ntt 按姓名查找 ); char name20; printf(ntt请输入姓名:); scanf(%s,name); for(i=a;inum;i+) if (strcmp(,name)=0) printf(ntt以下是您查找的联系人信息); printf(ntt姓名: %s,); p

22、rintf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(nttQQ:%s,studenti.QQ);printf(nttmsn:%s,studenti.msn);mark+; if (i+1)num) printf(ntt是否继续查找相同名字的联系人信息:(y/n); if (getch()=y) a=i; continue; else return; else printf(ntt按任意键返回主菜单); getch(); r

23、eturn; if(mark!=0) printf(ntt没有相同姓名的联系人纪录); printf(ntt按任意键返回主菜单); getch(); return; else printf(ntt没有相同姓名的联系人纪录); printf(ntt按任意键返回主菜单); getch(); return; void writetofile()/写入文件 int i; if (fp=fopen(student.bin,wb)=NULL) printf(ntt文件打开失败); for (i=0;inum;i+) if (fwrite(&studenti,sizeof(struct record),1,

24、fp)!=1) printf(ntt写入文件错误!n); fclose(fp); printf(ntt通讯录文件已保存); printf(ntt按任意键退出程序ntt); exit(0); void deleteone()/删除单个联系人 char choic; printf(ntt请选择删除人姓名); if (choic=getch(); deletebyname(); void modSub()/修改联系人 char sub20; char name30; int i=0,j; printf(ntt修改联系人信息 n); printf(ntt输入姓名:); scanf(%s,name); for(j=0;jnum;j+) if(strcmp(,name)=0)/* 找出名字相同的联系人并进行修改 */printf(tt此联系人详情n);printf(ntt姓名: %s,); printf(ntt电话: %s,studenti.phone); printf(ntt地址: %s,studenti.adress); printf(ntte-mail:%s,studenti.e_mail); printf(nttQQ:%s,studenti.QQ);printf(nttmsn:%s,studenti.msn);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论