收藏 分享(赏)

软件技术基础课程设计.doc

上传人:dreamzhangning 文档编号:2723838 上传时间:2018-09-26 格式:DOC 页数:23 大小:572KB
下载 相关 举报
软件技术基础课程设计.doc_第1页
第1页 / 共23页
软件技术基础课程设计.doc_第2页
第2页 / 共23页
软件技术基础课程设计.doc_第3页
第3页 / 共23页
软件技术基础课程设计.doc_第4页
第4页 / 共23页
软件技术基础课程设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、1软件技术基础 课程设计说明书题目: 通信录管理软件的设计 学生姓名: 学 号: 院 (系):电气与信息工程学院 专 业: 指导教师: 201 年 月 日2目 录1、设计要求 .11. 1、问题描述 .212、设计要求 .22、设计作用与目的 .23、所用软件 .24、系统设计 .241、系统总体设计 .342、各子模块设计 .343、源程序设计 105、实验调用结果 176、设计中的问题及方案 207、设计心得 21参 考 文 献 2231、设计要求1. 1、问题描述(1)通信录基本信息包括:联系人姓名、电话、性别、QQ 号、城市、邮编、邮箱等。(2)可以在通信录末尾写入新信息。(3)可以查

2、询某个联系人的基本信息。(4)可以修改某条通信录的基本信息。(5)可以删除某条通信录的信息。(6)可以显示通信录中的所有信息。(7)退出。12、设计要求(1) 收集资料,全面分析课题,分解问题,形成总体的编程思路。(2) 将此问题分解成小模块,深入分析每个小问题,编写每个模块的程序。(3) 上机调试,确保程序可以正常运行。(4) 完成设计报告,进行答辩。2、设计作用与目的软件设计基础课程是非计算机本科专业学习计算机软件基础知识的综合性基础课程。课程覆盖数据结构,操作系统,软件工程等方向的计算机软件知识,了解和掌握这些知识,对于我们以后学习其他计算机相关课程,熟练运用计算机辅助和科研具有重要意义

3、。C 程序实验设计是一种综合知识运用较为丰富,只是联系较为紧密,设计产品十分实用的课程。程序设计的主要目的在于通过通过课程设计的综合训练,培养我们实际分析问题、编程和动手的能力,帮助我们更加熟练的掌握这门课程。我们通过自己动手做一个小系统,进一步了解和掌握课程中的好多基础概念。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对 C 语言的了解;逐步熟悉程序设计的方法,并养成良好的编程习惯。同时也使我们能把软件和自己身边的事物联系起来,巧妙的用软件编程来解决生活中的问题。3、所用软件本次课程设计主要用到的是 VisualC+6.0.44、系统设计41、系统

4、总体设计此程序主要提供了通信录管理功能。随着社会的发展,我们有越来越多和别人沟通的渠道,在每种通讯类软件中,都会用到通信录,通信录简化了我们与别人沟通的步骤,也为我们的生活提供了很大的方便。总体结构框图42、各子模块设计通信录的程序包括两大类:自己编写的功能函数和 main()函数。功能函数主要有:增加信息,修改信息,删除信息,显示信息,查询信息,等几个模块。欢迎界面 进入通信录讯录菜单增加信息删除信息查询信息修改信息显示信息退出51、main( )函数首先是利用输出函数先输出欢迎界面,然后按任意键进入菜单,屏幕上会显示菜单和一个输入选项提示,输入 16 之间的数字选择相应的功能,主函数根据输

5、入信息调用相应的功能函数。执行完相应的功能后,按任意键清屏并进入菜单,可再次选择要执行的功能,然后可以选择退出,退出通信录。A=1 A=2 A=4A=3 A=1 A=5调用Add 函数调用Delete函数调用Search函数调用Alter 函数调用Disp 函数A=62、 Add( )函数开始进入菜单选择功能 A退出结束6Add( )函数的主要功能是增加新的记录,调用此函数时,屏幕上会显示“请输入要增加的记录” ;在增加纪录时可采用一次性输入的方法,也可采用逐条输入的方法,本次课设中我采用的是逐条输入,这种输入会使界面看起来更清楚,美观。所以屏幕上会显示一系列提示信息,我们可以根据这些提示信息

6、逐条输入姓名、电话、性别、城市、邮箱、邮编。然后按任意键返回主菜单。printf(“姓名:“); scanf(“%s“,sqlist-recordsn.name); printf(“姓 名 :); scanf(“%,qlit-reod.m); printf(“QQ 号:“); scanf(“%s“,sqlist-recordsn.qqnum); printf(“姓 名 :); scanf(“%,qlit-reod.m); printf(“性别:“); scanf(“%s“,sqlist-recordsn.sex); printf(“姓 名 :); scanf(“%,qlit-reod.m);

7、printf(“邮箱:“); scanf(“%s“,sqlist-recordsn.mailbox); printf(“姓 名 :); scanf(“%,qlit-reod.m); printf(“城市:“); scanf(“%s“,sqlist-recordsn.city); printf(“姓 名 :); scanf(“%,qlit-reod.m); printf(“邮编:“); scanf(“%s“,sqlist-recordsn.mailnum); printf(“姓 名 :); scanf(“%,qlit-reod.m); printf(“号码:“); scanf(“%s“,sqli

8、st-recordsn.telno); printf(“姓 名 :); scanf(“%,qlit-reod.m); 结束Printf(“请输入新纪录n”)开始73、Delete( )函数Delete( )函数的功能是删除记录,调用此函数时,屏幕上会显示“请输入要删除的记录的姓名”然后用 strcmp( )函数寻到要删除的记录,如果没找到,屏幕上会显示“No Record!”,否则,删除此条记录的所用详细信息。然后按任意键返回主菜单。开始printf(“请输入要删除记录的姓名n“); scanf(“%s“,name);查找要删除的姓名:for(i=0;ilen;i+) if(strcmp(sq

9、list-recordsi.name,name)=0) break;删除此条记录:for(j=i;jlen;j+)sqlist-recordsj=sqlist-recordsj+1;sqlist-len-;结束84、Alter( )函数Alter( )函数的功能是修改记录,调用此函数,屏幕上会显示“请输入要修改的记录的姓名”然后用 strcmp( )函数查找要修改的记录,如果通信录中没有这条记录,屏幕上会显示“No Record!” ,否则,就是存在这条记录,然后根据屏幕上显示的提示项,依次输入修改后的姓名、电话、性别、城市、邮箱、邮编。然后按任意键返回主菜单。开始printf(“请输入要修改

10、记录的姓名n“); scanf(“%s“,name);查找要修改的姓名:for(i=0;ilen;i+) if(strcmp(sqlist-recordsi.name,name)=0) break;输入修改后的信息:printf(“姓名:“); scanf(“%s“,sqlist-recordsn.name);printf(“号码:“); scanf(“%s“,sqlist-recordsn.telno);printf(“性别:“); scanf(“%s“,sqlist-recordsn.sex);printf(“QQ 号:“); scanf(“%s“,sqlist-recordsn.qqnu

11、m);printf(“邮箱:“); scanf(“%s“,sqlist-recordsn.mailbox);printf(“城市:“); scanf(“%s“,sqlist-recordsn.city);printf(“邮编:“); scanf(“%s“,sqlist-recordsn.mailnum);结束95、Search()函数Search( )函数的功能是按姓名查找某条记录,调用此函数,屏幕上会显示“请输入要查找的记录的姓名”然后用 strcmp( )函数查找该记录,如果通信录中没有这条记录,屏幕上会显示“No Record!”,否则,就是存在这条记录,屏幕上就会显示要查找的记录的姓名

12、、电话、性别、城市、邮箱、邮编。然后按任意键返回主菜单。开始printf(“请输入要查找记录的姓名n“); scanf(“%s“,name);查找此条记录:for(i=0;ilen;i+) if(strcmp(sqlist-recordsi.name,name)=0) break;输出要查找的信息:printf(“姓名:%sn 号码:%sn 性别:%snQQ 号:%sn 邮箱:%sn 城市:%sn 邮编:%sn“,sqlist-recordsi.name,sqlist-recordsi.telno,sqlist-recordsi.sex,sqlist-recordsi.qqnum,sqlist

13、-recordsi.mailbox,sqlist-recordsi.city,sqlist-recordsi.mailnum);结束106、Disp()函数Disp ( )函数的功能是显示所有记录,调用此函数,屏幕上会显示所有记录的姓名、电话、性别、QQ 号、邮箱、城市、邮编,然后按任意键返回菜单。43、源程序设计开始printf(“姓名 电话 性别 QQ 号 邮箱 城市 邮编nn“);用循环语句输出所有记录:for(i=0;ilen;i+)printf(“%-12s%-12s%-12s%-12s%-12s%-12s%-12sn“,sqlist-recordsi.name,sqlist-rec

14、ordsi.telno,sqlist-recordsi.sex,sqlist-recordsi.qqnum,sqlist-recordsi.mailbox,sqlist-recordsi.city,sqlist-recordsi.mailnum);结束11#include#include#include#include#define MAXNUM 500#define FALSE 0#define TRUE 1typedef struct /定义数据结构/char name20; /姓名/char telno20; /电话/char sex10; /性别/char qqnum20; /QQ 号

15、/char mailbox30; /邮箱/char city20; /城市/char mailnum20; /邮编/TelRecord;typedef structTelRecord recordsMAXNUM;int len;SqTelPad;void AddRecord(SqTelPad *sqlist) /增加记录/int n;sqlist-len+;n=sqlist-len;system(“cls“);printf(“请输入新纪录:nn“); /输入新纪录/12printf(“姓名:“);scanf(“%s“,sqlist-recordsn.name);printf(“n 号码:“);

16、scanf(“%s“,sqlist-recordsn.telno);printf(“n 性别:“);scanf(“%s“,sqlist-recordsn.sex);printf(“nQQ 号:“);scanf(“%s“,sqlist-recordsn.qqnum);printf(“n 邮箱:“);scanf(“%s“,sqlist-recordsn.mailbox);printf(“n 城市:“);scanf(“%s“,sqlist-recordsn.city);printf(“n 邮编:“);scanf(“%s“,sqlist-recordsn.mailnum);system(“cls“);

17、void DeleteRecord(SqTelPad *sqlist) /删除记录/int i,j;char name20;char a;system(“cls“);printf(“请输入要删除记录的姓名n“); /输入要删除的姓名/scanf(“%s“,name);i=j=0;for(i=0;ilen;i+) /查找要删除的姓名/if(strcmp(sqlist-recordsi.name,name)=0) break;if(isqlist-len)printf(“no recordn“);getchar();13getchar();system(“cls“);return;for(j=i;

18、jlen;j+) /删除此条记录/sqlist-recordsj=sqlist-recordsj+1;sqlist-len-;printf(“删除成功!n“);getchar();getchar();system(“cls“);void AlterRecord(SqTelPad *sqlist) /修改记录/int i,j;char name20;system(“cls“);printf(“请输入要修改的姓名:n“); /输入要修改的姓名/scanf(“%s“,name);i=j=0;for(i=0;ilen;i+) /查找要修改的姓名/if(strcmp(sqlist-recordsi.na

19、me,name)=0) break;if(isqlist-len)printf(“No Recordn“);return;printf(“n*n“);printf(“请输入修改后的信息:nn“); /输入修改后的信息/printf(“姓名:“);scanf(“%s“,sqlist-recordsi.name);printf(“n 号码:“);14scanf(“%s“,sqlist-recordsi.telno);printf(“n 性别:“);scanf(“%s“,sqlist-recordsi.sex);printf(“nQQ 号:“);scanf(“%s“,sqlist-recordsi.

20、qqnum);printf(“n 邮箱:“);scanf(“%s“,sqlist-recordsi.mailbox);printf(“n 城市:“);scanf(“%s“,sqlist-recordsi.city);printf(“n 邮编:“);scanf(“%s“,sqlist-recordsi.mailnum);system(“cls“);void SearchRecord(SqTelPad *sqlist) /查询记录/int i,j;char name20;i=j=0;system(“cls“);printf(“请输入要查找的姓名:n“); /输入要查询的姓名/scanf(“%s“,

21、name);printf(“*n“);for(i=0;ilen;i+)if(strcmp(sqlist-recordsi.name,name)=0) break;if(isqlist-len)printf(“No Recordn“);return;15/输出查找结果/printf(“姓名:%sn 号码:%sn 性别:%snQQ 号:%sn 邮箱:%sn 城市:%sn 邮编:%sn“,sqlist-recordsi.name,sqlist-recordsi.telno,sqlist-recordsi.sex,sqlist-recordsi.qqnum,sqlist-recordsi.mailbo

22、x,sqlist-recordsi.city,sqlist-recordsi.mailnum);getchar();getchar();system(“cls“);void DispRecord(SqTelPad *sqlist) /显示记录/int i,j,k;TelRecord temp;system(“cls“);printf(“*nn“);printf(“姓名 电话 性别 QQ 号 邮箱 城市 邮编nn“);/用循环语句输出所有记录/for(i=0;ilen;i+)printf(“%-7s%-15s%-6s%-12s%-18s%-8s%-12sn“,sqlist-recordsi.na

23、me,sqlist-recordsi.telno,sqlist-recordsi.sex,sqlist-recordsi.qqnum,sqlist-recordsi.mailbox,sqlist-recordsi.city,sqlist-recordsi.mailnum);printf(“n*nn“);16getchar(); getchar();system(“cls“);void InitSqTelPad(SqTelPad *sqlist)sqlist-len=-1;void main()/主函数开始/char selectitem10;int refreshflag;SqTelPad m

24、ytelpad;refreshflag=FALSE;InitSqTelPad(printf(“nn*nn“);printf(“ press any key enter menu“);printf(“nn*“);getchar();system(“cls“);doprintf(“*n“); /主菜单/printf(“* *n“);printf(“*telephon notepad *n“);printf(“* *n“);printf(“*n“);printf(“ 1. 增加n“);printf(“ 2. 删除n“);17printf(“ 3. 修改n“);printf(“ 4. 查找n“);pr

25、intf(“ 5. 显示n“);printf(“ 6. 退出n“);printf(“请选择功能:n“); /功能选择/scanf(“%s“,selectitem);system(“cls“);while(selectitem0)switch(selectitem0)case 1:AddRecord(refreshflag=TRUE;break;case 2:DeleteRecord(refreshflag=TRUE;break;case 3:AlterRecord(refreshflag=TRUE;break;case 4:SearchRecord(refreshflag=TRUE;break

26、;case 5:DispRecord(refreshflag=TRUE;break;case 6:18return;if(refreshflag=TRUE)refreshflag=FALSE;break;elsescanf(“%s“,selectitem);while(1);5、实验调用结果(1)欢迎界面19(2)通信录菜单(3)3 输入界面20(4)删除界面(5)修改界面21(6)查找界面(7)显示界面6、设计中的问题及方案22在这次的课程设计中我遇到了很多困难,首先是对好多基本的概念都没有搞清楚,比如顺序表和链表,刚开始的时候我想用链表来写电话本,但是对连表的掌握不太清楚,最后我决定参考课

27、本上的程序我决定使用顺序表;还有函数的定义与调用,我定义的好多函数不会正确调用,或者是不能达到预期的功能;程序运行时总会出现好多错误,但我常常不能明白错误出现在哪里。总结自己遇到的这么多问题,我觉得关键还是基础不牢固,对好多最基本的概念没有记住,同时对一些稍微复杂的知识没有正确理解,因此不能随心所欲的正确运用。在我遇到问题时,我首先是在书中寻找答案,因此我把之前 C 语言的书上的重点内容重新复习了一遍,基本上弄清了好多最基本的概念,再弄懂 C 语言的基础上我把数据结构的好多相关的重要内容页重新理了一遍,但是有时候课本上的内容局限性很大,或者也讲得不是很清楚,我就会在图书馆查找相关资料,或者向同

28、学请教,我还看了许多参考书上的代码,先是看懂,慢慢理解,看多了以后就会明白怎样去需要编写函数,怎么样调用函数。但还是有一部分的问题在图书馆和同学那里找不到答案,这种情况下,我就会去网络上搜索。总之,通过各种不同的渠道,我遇到的问题总算都解决了。7、设计心得这次课程设计让我提高了自己多方面的能力。首先是编程能力。我们本次课设用到的软件是 Visual C+ 6.0,因此通过不断地使用和学习,我更加熟悉的掌握了此软件。在课程设计中我遇到了好多问题,我通过复习课本,请教同学,图使馆查资料,上网搜索等方法解决了这些问题,在解决问题的过程中我对好多的基础概念有了更加深刻的认识和了解,通过看一些程序和自己

29、的不断实践,我也掌握了好多编程技巧。弄清楚了顺序表,学会了定义和调用函数。在测试程序的过程中,我还不断地修改,让操作界面看起来更美观和清楚。我想这段时间内学到的知识对我以后的学习会有很大的帮助,同时也让我对 C 语言有了更深的了解,学会怎样用它去解决我们生活中存在的问题,也提高了我编程的能力。其次解决问题的能力。在课设中,每个同学多多少少都会遇到一些问题,因此我们都会找各种办法去解决问题,在这个过程中,我们在解决具体的问题的同时也学会了通过哪些渠道去解决问题,提高了我们解决问题的能力。再者是增加了我的自信。在刚拿到课设题目的时候,我一头雾水,对自己一点信心都没有,但是通过后来不断地学习,不断地

30、尝试,我解决了一个又一个在之前看来很难的问题,最后完成了本次课设,也增强了我的自信心,让我在面对以后无论是生活还是学习上的困难的时候,更加的有耐心,也更加的有解决问题的信心。本次课设是我学习 C 语言来首次自己做一个比较大的,比较有难度的,有实用性的系统。如前面所说的在这个过程中我提高了自己多方面的能力。因此在以后的学习中,我们应该尽量多进行这方面的练习,让同学们在自己的实际操作中去掌握和理解更多的23知识。参 考 文 献1、谭浩强.C 语言程序设计(第二版) .清华大学出版社.2002 年。2、李淑芬.计算机软件技术基础.机械工业出版社.2012。3、李春褓.数据结构.清华大学出版社.2002

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报