文档库 最新最全的文档下载
当前位置:文档库 › 数据库课程

数据库课程

课程设计

姓名:涂建龙

学号:201010510207 班级:计科二班

学院:信息工程学院指导老师:李娟、林卫忠

题目 1 通讯录管理**

一需求分析

1.1、问题描述

通讯录管理是一个比较实用的小型管理系统,该系统用于对通讯人员的姓名、电话号码的管理。该设计采用菜单作为应用程序的主要界面,用控制语句来改变程序执行的顺序,控制语句是实现结构化程序设计的基础。该设计的任务是利用一个简单实用的菜单,通过菜单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。

1.2、要求

功能要求:

建立通讯录的链表;

添加通讯录;

删除联系人:

显示联系人;

删除联系人;

查询联系人;

关闭通讯录。

规定:输入通讯录的信息:编号、姓名、性别、电话、地址、QQ号、工作地点、工作单位,

界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:利用单链表存储通讯录信息,同时要求将通讯信息相关数据存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;

测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。

二.概要设计

2.1 通讯录管理系统功能结构图:

2.2主函数流程图:

2.3详细设计:

关键代码

typedef struct

{

char name[10];//姓名

char sex[10];//性别

char birthday[20];//生日日期char cellphone[15];//手机号码char telephone[15];//电话号码char homeaddress[100];//家庭地址

char QQ[15];//QQ号码

char email[20];//电子邮件

char workspace[100];//工作单位

char workcity[100];//工作地址

} AddressList;

AddressList t[5][N];

AddressList e;

AddressList sl[5][3];

typedef struct relatives//定义单链表

{

AddressList data;

struct relatives *next;

} Address;

Address * h[5];

/*************************************************/ void menu();//一级菜单

void relatives();//亲人

void friends();//朋友

void classmates();//同学

void workmates();//同事

void others();//其他

1、主菜单截图

输入1进入亲人管理项

选择6显示菜单出现

返回主菜单选择5修改项

返回主菜单选择2添加项

返回主菜单选择3删除项

测试心得:

调试过程比较顺利,没有出现大的问题,主要有:

(1)对运行界面的优化调整,使得界面更加好看

(2)对程序中的一些显示错误进行修改,算法和调用方面没有错误。

(3)界面优化的过程是繁琐的,需要大量的时间精力。

(4)出现些小细节问题,经过询问同学获得帮助。

题目 4 迷宫求解

一需求分析

1.1、问题描述

可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出。

1.2、设计要求

在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法。

1.3、需求分析

1、本程序实现迷宫的探索过程. 以用户和计算机对话的方式,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,然后程序就探索路径并输出路径。

2、本演示程序中,输入形式以“回车符”为结束标志,且允许出现重复字符。

3、利用二维指针实现迷宫位置的存储,并用栈存贮探索路径,每个结点含三个整形变量。输入的形式以回车结束。

4、本程序中,用户可以读去文件里的迷宫,也可自己重新输入迷宫,而且用户可以输入任意大小的迷宫,然后程序自动探索路径,并输出迷宫的路径

2程序流程图

流程图

二.概要设计

关键代码

#include

using namespace std;

class T //定义描述迷宫中当前位置的结构类型

{

public:

int x; //x代表当前位置的行坐标

int y; //y代表当前位置的列坐标

int dir; //0:无效,1:东,2:南,3:西,4:北

};

class LinkNode //链表结点

{

friend class Stack;

public:

T data;

LinkNode *next;

};

class Stack

{

private:

LinkNode *top; //指向第一个结点的栈顶指针

public:

Stack(); //构造函数,置空栈

~Stack(); //析构函数

void Push(T e); //把元素data压入栈中

T Pop(); //使栈顶元素出栈

T GetPop(); //取出栈顶元素

void Clear(); //把栈清空

bool empty(); //判断栈是否为空,如果为空则返回1,否则返回0 };

Stack::Stack() //构造函数,置空栈

{

top=NULL;

}

Stack::~Stack() //析构函数

{

}

测试截图

输入以下数据:0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1

0 1 1 1 1 0 0 1

1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 运行结果:

输入以下数据:

0 0 1 1 1 0

1 1 0 0 1 1

0 1 1 0 0 0

1 0 0 1 1 0

1 1 0 0 1 1

0 0 1 1 1 0

题目17 排序查找数据

一需求分析

1、问题描述:

文件中有一组无序的数据,先排序为有序序列,再进行数据查找,排序后的结果保存为文件。

2、设计要求:

1、要求从文件中读取无序数据;

2、选择已学的排序算法,尽量选用高效的算法;

3、排序后的数据要求保存至另外一个文件中;

4、选用二分查找算法查找数据,提示查找结果;

二.概要设计

关键代码

#include "stdio.h"

#include "string.h"

int search (int b[],int key,int n) {int high,mid,low,rs=0;

low=1;high=n;

while(low<=high)

{mid=(low+high)/2;

if(key

if(key>b[mid])low=mid+1; else

{rs=mid;break;}

}

return(rs);

}

void selectsort(int r[],int n) {int i,j,k,temp,t;

for(i=0;i

{k=i;

for(j=i+1;j

if(r[j]

if(k!=i)

{temp=r[i];r[i]=r[k];r[k]=temp;} for(t=0;t

printf("%d ",r[t]);

printf("\n");

}

}

void main()

{int a[10];

int t,f;

printf("input to numbers \n"); for(t=0;t<10;t++)

scanf("%d",&a[t]);

printf("\n");

selectsort(a,10);

printf("the serch key: \n"); scanf("%d",&f);

t=search (a,f,10);

printf("\n");

printf("the position is: \n"); printf("%d",t+1);

}

测试截图

输入以下数据:

23 45 62 38 84 47 26 89 15 32输入23

实验心得体会

经过两个星期的上机实践学习,使我对C++语言和数据结构知识有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,通过实践,使我在很多方面的认识有所提高。

初次感觉编程的过程中也挺有乐趣,但是在和同学讨论的过程中发现基础知识还是不扎实,需要进行加工和练习。对编程也还是充满自信的,我能想到的我就能这个工具把它实现,借助别人的东西也行。有些东西只要你想得到,你就可以让计算机为你做得漂亮和完美。通过这次的学习锻炼,进一步对用C++语言编程更熟悉了。也比较顺手了,发现编程不怕做不到,只怕想不到/ 还对以前学到的知识进一步巩固和加深了理解。

通过实习我的收获如下

1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。

2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。

3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。

4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。

根据我在实习中遇到得问题,我将在以后的学习过程中注意以下几点:

1、认真上好专业实验课,多在实践中锻炼自己。

2、写程序的过程中要考虑周到,严密。

3、在做设计的时候要有信心,有耐心,切勿浮躁。

4、认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。

5、在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。

相关文档
相关文档 最新文档