当前位置:文档之家› 数据结构课程设计个人账簿管理系统

数据结构课程设计个人账簿管理系统

数据结构课程设计个人账簿管理系统
数据结构课程设计个人账簿管理系统

个人账簿管理系统

学院:数学与计算机科学学院

班级:信息与计算科学13级

学号:1060413014048

姓名:张童

目录

1 系统功能分析 (1)

1.1 个人账簿管理 (1)

1.2 解决个人账簿管理 (2)

1.2.1 概要分析 (2)

1.2.2 流程图 (3)

2 系统总体设计 (4)

2.1 系统总体设计思路 (4)

2.2 各个功能模块简介 (4)

2.2. 1结构体数组 (4)

3 界面设计 (5)

3.1 主界面: (5)

3.2 显示输入数据界面 (5)

3.3 显示所有输入数据界面 (6)

3.4 添加数据界面 (6)

3.5 删除六月份的数据信息界面 (7)

3.6 按收入排序界面 (7)

4 小结 (8)

参考文献 (9)

附录:程序源代码 (10)

1 系统功能分析

本程序可以实现个人账簿的按月份插入、输出、修改、查询、删除、按收入排序、按月份大小排序、将数据保存到文件和加载文件数据等功能,其中每一个功能,都分别使用了一个函数,其中程序的主界面简洁明了。可以按主界面的提示完成每一块功能。

1)问题描述

个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。

2) 基本要求

(1)初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

(2)完成最低要求:建立一个文件,包括某人5个月的收支情况,能对文件中的信息进行扩充(追加),修改和删除;

(3)进一步要求:完成对每月的开支排序,以及完成系统查询功能。有兴趣的同学可以自己扩充系统功能。

1.1 个人账簿管理

在程序中定义了一个结构体主要包括(月份,全部的收入,食品开支,房租,水电费,医疗费,储蓄,子女教育费和总体的支出费用)其次定义了10个函数,分别是输入信息,查看指定月份信息,查看全部月份信息,插入信息,修改信息,删除指定月份信息,按月份大小排序,按总收入排序,保存数据到文件和加载文件数据。其中每一个程序都能实现相应部分的功能,并且使用了结构体数组的操作,通过对结构体数组的操作和文件的操作完成各自对应的功能。

1.2 解决个人账簿管理

1.2.1 概要分析

个人账簿管理通过以下函数实现:

Input(PEL *a); //输入个人收支信息函数

Myprintf(PEL *a); //打印指定月份收支信息函数

Allprintf(PEL *a); //打印所以月份收支信息函数

Add(PEL *a); //添加指定月份收支信息函数

Modify(PEL *a); //修改指定月份收支信息函数

Delrecord(PEL *a); //删除指定月份收支信息函数

Yuepaixu(PEL *a); //按月份大小排序函数

Zongpaixu(PEL *a); //按总收入排序函数

Save(PEL *a); //将所以收支信息保存到文件函数

Load(PEL *a); //加载文件的信息到结构体数组函数这十个函数分别完成每一部分功能,其中都是与主函数调用相对应的函数,完成相应的功能。

1.2.2 流程图

图1

2 系统总体设计

2.1 系统总体设计思路

个人账簿管理系统可以通过创建一个结构体数组,通过输入信息函数,查看指定月份信息函数,查看全部月份信函数息,插入信息函数,修改信息函数,删除指定月份信息函数,按月份大小排序函数,按总收入排序函数,保存数据到文件函数和加载文件数据函数对结构体数组操作来完成系统的主要功能,其中每一个功能都为对应的一个函数,增加程序的可读性,以实现程序的整体功能。

2.2 各个功能模块简介

2.2. 1 结构体数组

首先创建一个结构体数组,以便将各种收支信息存入到结构体数组。

typedef struct personal{

int month; //月份

float foodxiaofei; //食品消费

float fangzu; //房租

float zinvxiaofei; //子女教育消费

float shuidianfei; //水电费

float yiliaofei; //医疗费

float moneyin; //储蓄

float yueshouru; //月收入

}PEL;

PEL a[N];

3 界面设计

3.1 主界面:

图 2 3.2 显示输入数据界面

图 3

3.3 显示所有输入数据界面

图4 3.4 添加数据界面

图 5

3.5 删除六月份的数据信息界面

图 6 3.6 按收入排序界面

图7

4 小结

个人账簿管理系统主要实现了对个人收支信息的增删改和保存,使我们的生活更加便捷。同时通过这次软件课程设计使我了解到了:

写一个程序首先要有算法,而算法有很多种,使用最优的算法,能节约很多时间和加快系统的速度。

在这个程序中,主要还是利用了C语言中数组和文件的操作,其中最主要的就是结构体数组的读写,还有查找、修改及删除数组中的数据。删除数据记得一定不能越界。文件操作还是比较复杂的,首先要创建一个文件指针,通过函数按一定的格式将数据信息读取或者写入。

在结构体的操作用,不能直接给结构体变量赋值。

这个程序的界面编的虽然不怎么好看,但基本账簿管理的功能都达到了。但是还有许多地方需要改进。

在这次课程设计中,我学习到了,不管做什么事情还是团队协作,才可以使一件事情办得最后,一个人的力量永远是有限的,不管一个人的能力有多大,总会有一些地方的不足,尤其是我们编程这一行,最主要的还是要团队合作。

其次就是写程序时要用到注释,因为一个程序是由几个人写出来的,假如不写注释的话,就相互都看不懂,也不能实现程序的结合,所以说写程序时注释很重要。

最后,我觉得不管做什么事情必须认认真真的做,要沉得下心来,尤其是写程序,假如沉不下心来做的话,也决对写不出一个好的程序或者实用的程序来。

参考文献

[1]严蔚敏、吴伟民编著. 数据结构(C语言版).清华大学出版社。

[2]藤国文等编著. 数据结构课程设计. 北京:清华大学出版社。

[3]齐景嘉编著. 数据结构(含实训). 东南大学出版社。

[4]朱儒荣、朱辉等编著. 数据结构常见题型解析与模拟题西北工业大学出版社。

[5]徐孝凯,贺桂英等编著. 数据结构(C语言描述). 清华大学出版社。

[6]徐孝凯编著.数据结构实用教程. 北京: 清华大学出版社。

[7]严蔚敏,陈文博编著. 数据结构及算法教程. 北京: 清华大学出版社。

[8]刘振安,刘燕君等编著. C程序设计课程设计. 北京: 机械出版社。

[9]李建学、李光元、吴春芳等编著. 数据结构课程设计案例精编. 清华大学出版社。

附录:程序源代码

/*个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。*/

/*要求:根据以上任务说明,设计数据结构,并设计程序完成功能。*/ #include

#include

#include

#include

#include

#define N 12

typedef struct personal{

int month; //月份

float foodxiaofei; //食品消费

float fangzu; //房租

float zinvxiaofei; //子女教育消费

float shuidianfei; //水电费

float yiliaofei; //医疗费

float moneyin; //储蓄

float yueshouru; //月收入

}PEL;

void input(PEL *a) //输入月消费

{

int n,i;

printf("确定要输入几个月的账单:");

scanf("%d",&n);

if(n>0&&n<13){

printf("\n请依次输入数据[说明:中间以空格符隔开]:\n");

printf("本月月份食品消费房租费用子女费用水电费用医疗费用储蓄费用收入费用\n");

for(i=1;i

scanf("%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[i].f angzu,&a[i].zinvxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].money in,&a[i].yueshouru);

}

printf("信息录入成功!\n");

}

else{

printf("输入有误!\n");

exit(0);

}

}

void yuepaixu(PEL *a)//月排序

{

int i,j,k=0;

PEL tmp;

for(i=0;i

if(a[i].month!=0)

k++;

}

for(i=0;i

for(j=0;j

if(a[j].month>=a[j+1].month){

tmp=a[j];

a[j]=a[j+1];

a[j+1]=tmp;

}

}

}

printf("按月份排序成功!\n");

}

void zongpaixu(PEL *a)//总收入排序

{

PEL tmp;

int i,j,k=0,t;

for(i=0;i

if(a[i].month!=0)

k++;

}

printf("\n");

for(i=0;i

for(j=0;j

if(a[j].yueshouru>=a[j+1].yueshouru){

tmp=a[j];

a[j]=a[j+1];

a[j+1]=tmp;

}

}

}

printf("按每月总收入排序成功!\n");

}

void modify(PEL *a)//修改指定月份的数据

int mon;

printf("请输入要修改的月份:");

scanf("%d",&mon);

int i=0;

printf("本月月份食品消费房租费用子女费用水电费用医疗费用储蓄费用收入费用\n");

for(i=0;i

if(a[i].month==mon)

scanf("%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[i].fang zu,&a[i].zinvxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].moneyin, &a[i].yueshouru);

}

printf("修改指定月份数据成功!\n");

}

void delrecord(PEL *a)//删除指定月份数据函数

{

int mon;

printf("请输入要修改的月份:");

scanf("%d",&mon);

int i,k;

for(i=0;i

if(a[i].month==mon)

k=i;

}

for(i=k;i

a[i]=a[i+1];

printf("删除指定月份数据成功!\n");

void add(PEL *a)//添加数据

{

int n,i,k=0;

printf("确定要输入增加几个个月的账单:");

scanf("%d",&n);

printf("\n请依次输入数据[说明:中间以空格符隔开]:\n");

for(i=0;i

if(a[i].month!=0)

k++;

}

for(i=k;i

printf("本月月份食品消费房租费用子女费用水电费用医疗费用储蓄费用收入费用)\n");

scanf("%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[i].f angzu,&a[i].zinvxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].money in,&a[i].yueshouru);

}

printf("信息添加成功!");

}

void myprintf(PEL *a)//打印指定月份数据函数

{ int mon;

printf("请输入要查看的月份\n");

scanf("%d",&mon);

int i=0;

printf("\n******************************************************\ n");

printf("\n 本月月份食品消费房租费用子女费用水电费用医疗费

用储蓄费用收费用入\n");

for(i=0;i

if(a[i].month==mon)

printf("%4d\t%8.2f%8.2f%8.2f%9.2f%10.2f %9.2f%8.2f\n",a[i].month, a[i].foodxiaofei,a[i].fangzu,a[i].zinvxiaofei,a[i].shuidianfei,a[i].y iliaofei,a[i].moneyin,a[i].yueshouru);

}

printf("*************************************end************** *******************\n");

}

void allprintf(PEL *a)//打印所有月份数据

{ int i=0;

printf("\n**********************************all****************** ***********\n");

printf("\n 本月月份食品消费房租费用子女费用水电费用医疗费用储蓄费用收费用入\n");

for(i=0;i

if(a[i].month!=0){

printf("%4d\t%8.2f%8.2f%8.2f%9.2f%10.2f %9.2f%8.2f\n",a[i].month, a[i].foodxiaofei,a[i].fangzu,a[i].zinvxiaofei,a[i].shuidianfei,a[i].y iliaofei,a[i].moneyin,a[i].yueshouru);

}

printf("*********************************end****************** **************\n");

}

void save(PEL *a)//写入文件

{ int i;

FILE *fp;

if((fp=fopen("mybill.txt","wb"))==NULL)

{ printf("文件不能打开!\n");

exit(1);

}

for(i=0;i

{fprintf(fp,"%d\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f",a[i ].month,a[i].foodxiaofei,a[i].fangzu,a[i].zinvxiaofei,a[i].shuidianfe i,a[i].yiliaofei,a[i].moneyin,a[i].yueshouru);

fprintf(fp,"\r\n");

}

fclose(fp);

printf("写入文件成功!");

}

void load(PEL *a) //读取文件

{ int i;

FILE *fp;

if((fp=fopen("mybill.txt","rb"))==NULL)//只读取文件

{

printf("对不起,不能打开文件!\n");

exit(1);

}

for(i=0;i

fscanf(fp,"%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[ i].fangzu,&a[i].zinvxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].m oneyin,&a[i].yueshouru);

fclose(fp);

printf("加载文件成功\n");

}

void out(PEL *a)

{ exit(0);}

int main()

{ PEL a[N]={0};

int month,chose;

do{

do{

printf("\t\t\t\t高上个人帐簿管理系统\n");

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

printf("\t\t0:----------------退出系统---------------\n");

printf("\t\t1:-----------------输入数据--------------\n");

printf("\t\t2:-------------查找指定月份数据----------\n");

printf("\t\t3:--------------查看全部数据-------------\n");

printf("\t\t4:-----------------添加数据--------------\n");

printf("\t\t5:-----------------修改数据--------------\n");

printf("\t\t6:-----------------删除数据--------------\n");

printf("\t\t7:--------------按月份大小排序-----------\n");

printf("\t\t8:---------------按总收入排序------------\n");

printf("\t\t9:-----------------保存文件--------------\n");

printf("\t\t10-----------------加载文件--------------\n");

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

printf("选择操作:");

scanf("%d",&chose);

}while((chose<0)&&chose>10);

void(*fun[11])(PEL*a)={out,input,myprintf,allprintf,add,modify ,delrecord,yuepaixu,zongpaixu,save,load};

fun[chose](a);

}while(chose!='*'); }

数据结构实验总结报告

数据结构实验总结报告 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,

会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。 (3)程序界面更加人性化。 Huffman Tree Demo (C) 2011-12-16 boj Usage: huffman [-c file] [-u file] output_file -c Compress file. e.g. huffman -c test.txt test.huff -u Uncompress file. e.g. huffman -u test.huff test.txt 目前的程序提示如上所示。如果要求实用性,可以考虑加入其他人性化的功能。 三、调研常用的压缩算法,对这些算法进行比较分析 (一)无损压缩算法 ①RLE RLE又叫Run Length Encoding,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。 变体1:重复次数+字符 文本字符串:A A A B B B C C C C D D D D,编码后得到:3 A 3 B 4 C 4 D。

C语言课设(个人帐簿管理系统)

个人帐簿管理系统 目录 摘要 (1) 1绪论 (1) 2系统分析 (1) 2.1功能需求 (1) 2.2数据需求 (1) 2.3性能需求 (2) 3总体设计 (2) 3.1系统设计方案 (2) 3.2功能模块设计 (2) 4详细设计 (3) 4.1录入数据模块 (3) 4.2修改数据子模块 (4) 4.3查询数据子模块 (5) 4.4排序数据子模块 (6) (6) 4.6删除数据子模块 (7) 5调试与测试 (8) 5.1调试 (8) 5.2测试 (8) 6结论 (9) 结束语 (9) 参考文献 (9) 附录1-用户手册 (10) 附录2-源程序 (13)

摘要 个人帐簿管理系统的开发是为了方便个人记录每月的全部收入及开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。并进行查询和排序等。主要实现以下功能: (1) 记录月份以及每月的食品消费,房租,子女教育费用,水电费,医疗费,储蓄等内容。 (2) 要求该系统能查看该数据并进行修改和查询等。 (3)并用冒泡法进行排序以及能进行内容的删除。 报告从系统分析,总体设计,详细设计,调试与测试方面进行描述和介绍。 关键词:个人帐簿管理系统;扩充;修改;删除。 1绪论 当今社会是个劳逸结合的社会,计算机在人们的生活中越来越重要,个人账簿管理的开发给大众的生活平添了方便。个人账簿管理系统是一个比较普遍的管理系统,它的存在方便个人记录每月的全部收入及开支情况。 根据课程设计任务书要求,个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。另外要求建立一个文件,包括某人5个月的收支情况,能对文件中的信息进行扩充(追加),修改和删除;完成对每月的开支排序,以及完成系统查询功能。 可进行功能的适当扩充。 2系统分析 2.1 功能需求 个人帐簿管理系统要求记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等并能进行修改,查询,排序,删除等功能。 2.2数据需求 系统主要处理的是个人帐簿信息,因此其输入和输出都与此相关。

数据结构课程设计题目2010

一、数据结构课程设计要求 1.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。 2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。 3.课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上2小时的上机来调试C 或C++语言设计的程序,总共至少要上机调试程序20小时。属教师安排上机时间学生不得缺席。 二、数据结构课程设计题目 1. 运动会分数统计(限1 人完成) 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 2. 飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

个人记帐软件系统设计

个人记帐软件Personal Accounting Software 系统设计 北京菲易博思技术有限公司 2010年5月

背景 随着经济的飞速发展,Money已经在人们的心目中发生了翻天覆地的变化,一分钱掰成八瓣花的日期早已成为上一代人的记忆,现在的八零后,甚至九零后,关心的问题是如何更有效的花钱。 在西方欧美国家,财务管理(Financial Management)已经成为常识,更兼有强大的金融工具,使得对于Money的管理得心应手。而国内的情况却几乎一片空白,几乎所有和财务相关的东西,似乎都和企业有关,而和个人无关。 当然,西方欧美国家在金融领域已经实现了高度发达的电子货币,人们可以非常方便的记录自己的日常开支,所需要的仅仅是进行汇总和分析而已。而在国内,日常琐碎的收支账目记录本身就是一项非常繁杂的工作。但是财务管理的基础工作,却无法离开日常这些数据的录入。 随着手机在国内的普及,采用手机这种随身工具进行数据录入,可以大大增加个人财务管理的可行性。 市场分析 2009年中国手机用户净增1亿,达到7.4亿的规模。而2012年时,北美的智能手机用户将超过传统手机用户。所以保守估计,中国的智能手机用户有1亿。 需求分析 个人财务管理(Personal Accounting Software,PAS)是一款运行于智能手机平台的面向个人、家庭以及团体,提供资金支出的日常记录、共享、统计等财务管理功能。

软件的用户是指除了企业以外的资金支出实体,比如个人、家庭或者团体。这些用户在进行资金支出行为时,由于缺乏有效的计划手段,会导致大量的不合理支出,从而产生资金浪费。对于个人而言,资金的浪费会导致个人计划往往无法得到实现,日久天长会对个人的生活、事业产生严重的影响。而对于家庭用户和团体用户而言,除了产生大量不合理支出以外,还会导致家庭、团体成员之间产生矛盾,从而影响到团体的整体利益。 软件的功能注重于对资金支出的管理,包括录入、查询、统计等。对于家庭和团体用户,还能够将团体成员之间的数据进行步和合并(通过蓝牙等方式),或者能够在一个团体成员进行操作时,通过短消息(SMS)等方式对其他成员进行实时通知。 软件对资金支出管理是按照“项目”来进行管理的。用户一般需要维护一个五个左右的项目,比如交通、通信、服装、学习、伙食等等。每一项费用的开支,都应该纳入到一个项目中。 对用户而言,还可能存在有多个账本的需求。例如对于个人的开支,需要有一个个人账本;而和一同租房的朋友的共同开支,则需要有一个住房费用账本;在上班午餐时,又因为和同事一起吃饭,而需要维护一个吃饭的账本。 用户功能列表: 1、账本的增、删、改; 2、账本的数据导入、导出; 3、账本的共享 4、账本的同步合并; 5、帐目的录入、修改、删除及查询功能; 6、项目的管理功能; 7、费用统计功能;

数据结构课程设计题目选择

数据结构课程设计题目 说明: (1)选用语言:C或Java语言; (2)需要注明3人(可少于3人)小组各自承担和完成的任务(据此给予成绩); (3)如下带“*”的题目,“*”越多,难度越大一些,分值权重更高---要得到更高分数,推荐选择。 要求: (1) 用中文给出设计说明书(含重要子函数的流程图); (2) 给出测试通过、能实现相应功能的源代码; (3) 测试报告。 0、小学数学四则混合运算试题出题、评价、题库自动生成与组卷系统(****)---已经有2组选择 任务: (1)将随机给出的四则混合运算表达式显示在计算机显示器上,要求应试者给出答案;并且使用堆栈对该表达式求值,同给出的答案进行比较,判断 正确和错误。给出鼓励信息和嘉奖信息; (2)保存多人在不同时间应试的题目与他(或她)给出的答案,评价所出题目的难易程度(通过多人回答正确与否的情况给出),形成题库; (3)按照用户给出的题目难易程度指标(例如让50人的得分满足怎样的正态分布,如90分以上10%,80分以上30%,70分以上30%,60分以上20%,60分 以下10%),从题库中抽取不同的题目,组成试卷。 要求:随机产生的题目中,参加运算的数据随机、运算符随机。题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价。 1、集合的并、交和差运算---已经有1组选择 任务:编制一个能演示执行集合的并、交和差运算的程序。 要求: (1) 集合的元素限定为小写字母字符[…a?..?z?] 。 (2) 演示程序以用户和计算机的对话方式执行。 实现提示:以链表表示集合。 选作内容: (1) 集合的元素判定和子集判定运算。 (2) 求集合的补集。 (3) 集合的混合运算表达式求值。 (4) 集合的元素类型推广到其他类型,甚至任意类型。 2、停车场管理------已经有2组选择 任务:设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次有北向南排列(大门在最南端,最先到达的第一车停放在车场的最北端),若车场内已停满n辆车,那么后来的车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 要求:以栈模拟停车场,以队列模拟车场外的便道。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停车不收费)。栈以顺序存储结构实现,队列以链表结构实现。 3、哈夫曼码的编/译码系统(**)---已经有1组选择

个人账簿管理系统

个人账簿管理系统Last revision on 21 December 2020

课 程 设 计 课程设计任 务书 2011~2012学年 第 一 学期 学生姓 名: 专业班级: 10信息管理 指导教师: 工作部门: 计算机学院 一、课程设计题目:个人账簿管理系统 二、课程设计内容 个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。该系统采用了Windows XP 操作系统结合Visual C++ ,TC 等软件开发,可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。 三、进度安排 1. 系统设计,确定函数功能及其实现过程; 2. 根据前面的结果,编写程序清单,进行调试; 3. 经过反复的编译,调试,测试,程序运行成功; 4. 撰写课程设计报告,完成整个论文报告的工作,并打印;课题答辩。 四、基本要求 1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 题 目 个人账簿管理系统 教 学 院 计算机 专 业 信息管理 班 级 姓 名 指导教师 2011 年 12 月 30 日

2.完成最低要求:建立一个文件,包括某人5个月的收支情况,能对文件中的信息 进行扩充(追加),修改和删除; 3.进一步要求:完成对每月的开支排序,以及完成系统查询功能; 4.应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰 美观。 目录 一概述 该课程设计主要设计个人账簿管理系统已记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女交用费用,水电费,医疗费,储蓄等。在课程设计中,用到了C语言以及数据结构中的相关知识,当然也有少数参考了其他人对某些问题的处

数据结构课程设计

福建工程学院课程设计 课程:数据结构课程设计 题目: 1.综合应用 2.折半查找 3.快速排序 专业:软件工程 班级:1101 座号:3110305129 姓名:潘聪 2012 年 6 月26 日

设计题目1:综合应用 一、问题描述 有N名学生,每名学生含有如下信息:学号、姓名、某四门课的成绩,并计算其总分,用一结构数组表示之。然后实现以下功能: (1)将这些数据存放至文件stuf.dat中; (2)将文件中的数据读出至结构数组中,并显示之; (3)输出总分最高分和最低分的名字; (4)输出总分在340分,单科成绩不低于80分的名单; (5)求出各科平均分数; (6)按总分排名; (7)输出补考名单。 二、解决问题的算法思想描述 (1)子函数:首先确定需要的子函数,总共7个,对应的功能分别是题目要求的七项(2)主函数:主函数中,要设计出易于使用的人机界面,就必须要用到switch 。 (3)文件的存放读取,必须要用到文件的函数,fopen,fread,fclose等。 (4)把每个学生的信息定义在一个结构数组中,利用结构数组更加方便。 (5)各科成绩排名用冒泡排序即可。 (6)输出总分,补考名单,各科的平均分都比较简单。 三、设计 1. 数据结构的设计和说明 //定义结构体 typedef struct { int num; //学号 char name[10]; //姓名 int score1; //语文 int score2; //数学 int score3; //物理 int score4; //化学 }student; student stu[MAX]; //结构数组 2.模块结构图及各模块的功能:

数据结构课程设计题目及要求

实验一~实验四任选一题;实验五~实验九任选一题。 实验一运动会分数统计 一、实验目的: (1)熟练掌握线性表的两种存储方式 (2)掌握链表的操作和应用。 (3)掌握指针、结构体的应用 (4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。 二、实验内容: 【问题描述】 参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。 【基本要求】 产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。 【测试数据】 对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。 【实现提示】 可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。 【选作内容】 允许用户指定某些项目可采取其他名次取法。

实验二停车场管理 一、实验目的: (1)熟练掌握栈顺存和链存两种存储方式。 (2)掌握栈的基本操作及应用。 (3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。 二、实验内容: 【问题描述】 设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 【基本要求】 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表结构实现。 【测试数据】 设n=2,输入数据为:(A,1,5),(A,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到达(Arrival);D表示离去(Departure);E表示输入结束(End)。 【实现提示】 需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。 【选作内容】 (1)两个栈共享空间,思考应开辟数组的空间是多少? (2)汽车可有不同种类,则他们的占地面积不同收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积。(3)汽车可以直接从便道开走,此时排在它前面的汽车要先开走让路,然后再依次排到队尾。 (4)停放在便道上的汽车也收费,收费标准比停放在停车场的车低,请思考如何修改结构以满足这种要求。

数据结构课程设计

<<数据结构>> 课 程 设 计 班级:111004 姓名:董丽美 学号:111004122 指导教师:史延新 完成日期:2013 _07 _10

题目一:约瑟夫环问题 【问题描述】约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n 的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m 的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出列顺序。【基本要求】利用单向循环链表存储结构模拟此过程,按照出列的顺序打印出各人的编号。 【测试数据】m的初值为20;n=7,7个人的密码依次为:3,1,7,2,4,8,4,首先m值为6(正确的出列顺序应为:6,1,4,7,2,3,5) 一 .需求分析 1.用单循环链表存储并遍历及删除节点的方法,计算并输出约瑟夫环的问题。 2.环中总人数和节点信息由用户输入,且均为正整数。3.在窗口界面输出出列顺序的编号。 二.概要设计

1.设定链表的抽象数据类型定义: ADT List{ 数据对象:D={a(i)|a(i)∝Elemset,i=1,2,…,n,n>=0} 数据关系:R1={|a(i-1),a(i)∝D,i=2,…,n}基本操作: InitList(&L) 操作结果:构造一个空的线性表 ListInsert(&L,i,e) 初始条件:线性表L已经存在。 操作结果:在L中第i个位置之前插入新的数据元素 e,L的长度增加1。 ListDelete(&L,i,&e) 初始条件:线性表L已经存在且非空,1<=i<=ListLength(L)。操作结果:删除L的第i个数据元素,并用e返回其值,L 的长度减1 。 } 2.算法的基本思想: 根据题目要求,采用单循环线性表的基本操作来实现约瑟夫环问题。首先根据所给信息生成链表节点并插入,根据节点记录密码及其所在链表中的顺序,由给出的初始访问值进行遍历,当变量i增量等于所给的值(即关键字)时,指针所指的节点处的顺序值即为所需输出的顺序号。每输出一次顺

个人账本管理系统设计报告

目录 摘要 (1) 第1章开发的背景 (2) 第2章系统设计 (3) 2.1系统需求分析 (3) 2.2 系统功能模块 (3) 2.3 系统功能设计 (4) 2.4 数据库设计 (4) 2.4.1数据库需求分析 (4) 2.4.2数据库逻辑结构设计 (5) 第3章系统的设计与实现 (6) 3.1 启动界面(JSplashWindow) (6) 3.2 用户选择界面(main) (7) 3.3 登录界面(Login) (8) 3.4 主界面(Index) (8) 3.5 支出明细界面(payInfo) (10) 3.6 支出添加界面(payAdd) (11) 3.7 支出修改界面(paymodify) (11) 3.8 支出删除界面(paydelete1) (13) 3.9 支出查询界面(paySearch) (13) 3.10 数据库配置 (14) 第4章开发工具简介 (15) 4.1 JCreator Pro (15) 4.2 Microsoft Access 2003 (15) 第5章设计总结与体会 (16) 参考文献 (17)

摘要 针对现在高校很多学生都进行记账的现状,采用Java和SQL SERVER2000工具,设计并开发了个人帐本管理系统,该系统能帮助用户进行日常理财。用户通过使用该系统,可以方便的进行日常的收入支出统计和查询。 该系统界面友好,功能完善,简单实用。 关键字:信息系统,学生管理,个人帐本,J2SE 。

第1章开发的背景 一个有经济头脑的人,在日常生活和投资中,都会对自己的支出和开销做到心里有数,以便于制定出自己的一套理财计划,达到合理的经济统筹,有理财习惯的人可以从以往的统计中看到自己主要消费方向,看出自己的消费是否合理。之所谓巧妇难为无米之炊,如果自己想要理财,先决条件得要有财”才行。如何才能有财呢?开源节流呀!有计划的用钱,再将节流下来的钱去用于理财,这样不就行了吗?那又怎么样来“开源”呢?记账是个好办法[4],它有针对性地罗列、统计计算资源信息[3]。从查阅资料来看,一些比较发达国家人的生活中对理财有着很严格的计划,因此国外的理财系统总体来说比较普遍,做的也比较完善.国内的理财系统主要偏重于办公财务软件,而个人理财和家庭理财方面的比较少,因此需要开发相关的系统软件,从而达到引导理性消费,合理安排收支[5]。 进行账目的统计,如果是手动统计的话,首先,如果每天统计的话,用于统计的账本和记录会越来越多,不利于保管,容易造成丢失;其次,随着纪录的增多,如果要查找以前的记录,会变的越来越困难。因此,需要一个功能比较完善的记账系统来代替传统的手工统计。

个人财务管理系统设计与实现90640

软件项目实训报告 项目名称个人财务管理系统设计与实现姓名志欣 学号1212210139 班级13计本1 指导教师峰 报告日期2016 年 7 月 1 日

目录 目录 1 个人财务管理系统需求分析 (1) 1.1 系统需求分析的任务与步骤 (1) 1.2 可行性分析 (2) 1.2.1 技术可行性 (2) 1.2.2 操作可行性 (3) 1.3 功能需求分析 (3) 1.3.1.前台页面模块 (3) 1.3.2.后台界面模块 (3) 1.4 数据流分析 (4) 1.5 数据字典 (5) 2 个人财务管理系统的总体设计与实现 (8) 2.1 系统功能设计 (8) 2.1.1 系统功能模块设计 (8) 2.1.2 功能模块简介 (8) 2.2 数据库设计 (10) 2.2.1 数据库概念结构设计 (10) 2.2.2 数据库逻辑结构设计 (12) 2.2.3 数据库物理结构设计 (12) 2.3 系统实现 (14) 2.3.1 账户管理模块 (16) 2.3.2 收支管理模块 (17) 2.3.3 卡管理模块 (19) 2.3.4 留言管理模块 (20) 3 系统测试 (23) 3.1 测试环境及方法 (23) 3.1.1 测试环境 (23) 3.1.2 测试方法 (23) 3.2 系统测试结果 (24) 3.2.1 注册测试 (24) 3.2.2 登录测试 (25) 3.2.3 密码修改测试 (25) 总结 (27)

1 个人财务管理系统需求分析 1.1 系统需求分析的任务与步骤 任务:调查用户需求,该“用户”主要指系统的后台管理员以及前台用户,分析用户对系统功能、性能、硬件等的具体要求,然后以文本形式作成报告。本阶段主要是利用图表与文字来表示系统的逻辑模型,旨在从逻辑上描述系统的功能和性能。 步骤:1.利用图表和文字全面描述系统。 2.根据用户提出的新需求,适当地对系统模型进行改进。 3.编写系统分析文档。 1.2 可行性分析 可行性分析是一个系统开发的初始阶段,其意义在于:在尽可能短的时间里,花费尽量小的代价确定问题是否可以解决。因此,我们就必须探究清楚原定的各种可能的方案是否可行,以及完成的该系统之后系统所能带来的效益是否足够大于投资的成本。所以,可行性研究是必要的,它的主要作用是简化系统分析与设计的过程,从而以更合理的方式来进行系统分析与设计,以保证系统的开发成功。 所以说,开发本系统的成本少,开发周期短,从经济方面看开发此系统是可行的。1.2.1 技术可行性 本系统开发采用的是B/S模式[1]。系统包括客户端和服务器端,对应前台和后台。在服务器端采用的是SQL Server 2005数据库,该数据库具有数据的完整行、一致行以及安全性的特点,并提供了相当安全可靠的存储功能,因而比较适合处理中小型系统。它在处理大量数据的同时,也能够保证系统的完整管理功能。 开发过程中所使用的开发软件为MyEclipse,MyEclipse是在Eclipse的基础上加入了许多功能强大的插件,它继承了Eclipse独特图形API,美化了Java界面,并且提高了界面的响应速度。因此,它比Eclipse更具有实用性。 在硬件方面,用户计算机的硬件配置只需满足以下条件即可:计算机处理器P4 2.0G 及以上,计算机RAM满足512M或以上,硬盘存储满足40G或以上,该硬件环境要求明显低于市面上的普通电脑配置。 所以,从技术方面来看开发此系统是可行的。

数据结构课程设计

郑州工业应用技术学院 课程设计说明书 题目:手机信息数据检索 姓名:王港 院(系):信息工程学院 专业班级:16级计算机科学与技术6班 学号:1601110241 指导教师:王礼云 成绩: 时间:2018 年 1 月 2 日至2018 年 1 月12

郑州工业应用技术学院 课程设计任务书 题目手机信息数据检索 专业、班级16级计算机科学与技术6班学号1601110241姓名王港 主要内容: 开发一个手机信息数据检索,使管理员可以很好的管理回收的手机,避免平时废旧手机没有作用,不知道如何去处理旧的手机等问题。减轻废旧手机资源的浪费。本废旧手机回收系统利用单链表实现了基本信息的添加。管理员能够对各种信息进行修改,例如手机信息添加,手机信息删除,密码修改,退出系统。 基本要求: 1、巩固并加深学生对数据结构基本算法的理解; 2、认识面向过程和面向对象两种设计方法的区别; 3、进一步掌握和应用VC++6.0 集成开发环境; 4、提高运用对于数据结构的理解,增强了我解决实际问题的能力; 5、初步掌握开发小型实用软件的基本方法。 主要参考资料: [1]谭浩强. C语言基础课程[M].北京:清华大学出版社,2009. [2]刘振安. C程序设计课程设计[M].北京:机械工业出版社,2016. [3]滕国文. 数据结构课程设计[M].北京:清华大学出版社, 2010. [4]吴伟民. 数据结构[M].北京:清华大学出版社, 2017. 完成期限:2018.1.2-2018.1.12 指导教师签名: 课程负责人签名: 2018 年1 月12 日

摘要 21世纪以来,经济高速发展,人们生活发生了日新月异的变化,特别是手机普及到每个人生活的各个领域。但对于手机的回收越来越不适应现在社会的发展。计算机技术的飞速发展,也为我们带来了巨大的便利。为了适应现代人们回收旧手机方便的愿望。手机信息管理系统软件能够为我们现如今手机回收带来巨大的便利。 我国现如今已经成为手机产品的生产消费大国,伴随着通信技术的迅猛发展,手机更新换代的速度不断提高。特别是追求时尚潮流的大学生群体手机的更换频率增加更快。随着智能手机产品不断推陈出新,手机更新换代的周期也在缩短。据业内人士估计,我国存量闲置手机至少以亿计,但旧手机的回收率却不到2%,旧手机的处置成为一大问题。 中国目前废旧手机的回收现状和回收模式,造成我国手机回收效率低下,更是对垃圾回收产业带来了巨大的冲击,同时目前,我国年废旧手机产生量约上亿部,大部分闲置家中,未能有效回收利用。既浪费了资源,又威胁居民身心健康,造成环境污染。在分析我国废旧手机回收利用现状的基础上,提出了完善废旧手机回收的法律制度、增强消费者环保意识、构建绿色环保废旧手机回收利用新模式等建议。本手机信息数据检索为回收手机的人管理废旧的手机使用,使用单链表实现,对于信息的增加删除效率比较高,可以很方便的进行各种信息管理,对于数据的管理可以让我们更好的面对管理手机的繁杂工作。 关键字:信息检索;冒泡算法;单链表

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文 心得体会是指一种读书、实践后所写的感受性文字。是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。下面是小编搜集的关于数据结构课程设计心得体会范文,希望对你有所帮助。 关于数据结构课程设计心得体会(1) 这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。 数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了 c 语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。 纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。 刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到,必然具备的条件! 同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件

个人记账管理

沈阳工程学院 信息学院 C语言程序设计实践 课程设计 设计题目:个人记帐管理 系别物联网工程班级 学生姓名 学号 2016319119 指导教师职称副教授/讲师 起止日期: 2016年12月16日起——至 2017年01月06日止

C语言程序设计实践课程设计成绩评定表系(部):班级:学生姓名:

C语言程序设计实践课程设计成绩评定表系(部):班级:学生姓名:

沈阳工程学院信息学院 《C语言程序设计实践》 课程设计任务书 课程设计题目:个人记帐管理 系别物联网工程班级物联网161 学生姓名 学号 2 指导教师职称副教授、讲师 课程设计进行地点:实训楼F六楼机房 任务下达时间:2016年12 月14 日 起止日期:2016年12月16日起——至2017年01月06日止系主任2016年12 月09 日批准

一、课程设计的原始资料及依据 查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的应用程序系统。通过本设计可以加深理解使用结构化程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。 二、课程设计主要内容及要求 设计内容: 1.记账信息:月份、食品消费、房租费用、子女教育费、用水电费 用、医疗费用、储蓄费用、收入费用。 2.功能:分别可添加、修改、查询、排序、删除。 3.保存。 设计要求: 1. 要求利用结构化的方法完成系统的设计; 2. 要求在设计的过程中建立清晰度层次结构; 3. 设计功能满足要求、易于操作的友好界面; 4. 界面中需有菜单; 5. 在系统的设计中,至少要建立5个以上独立函数; 6. 要求操作简单,用户界面友好。 7. 运行程序,检查结果是否和理论值一致。 8. 在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。 三、对课程设计说明书撰写内容、格式、字数的要求 1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。一般不应少于3000字。 2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。 3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。 4.课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。 5.课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。 四、设计完成后应提交成果的种类、数量、质量等方面的要求

数据结构课程设计报告

《数据结构课程设计》报告 题目:课程设计题目2教学计划编制 班级:700 学号:09070026 姓名:尹煜 完成日期:2011年11月7日

一.需求分析 本课设的任务是根据课程之间的先后的顺序,利用拓扑排序算法,设计出教学计划,在七个学期中合理安排所需修的所有课程。 (一)输入形式:文件 文件中存储课程信息,包括课程名称、课程属性、课程学分以及课程之间先修关系。 格式:第一行给出课程数量。大于等于0的整形,无上限。 之后每行按如下格式“高等数学公共基础必修6.0”将每门课程的具体信息存入文件。 课程基本信息存储完毕后,接着给出各门课程之间的关系,把每门课程看成顶点,则关系即为边。 先给出边的数量。大于等于0的整形。 默认课程编号从0开始依次增加。之后每行按如下格式“1 3”存储。此例即为编号为1的课程与编号为3的课程之间有一条边,而1为3的前驱,即修完1课程才能修3课程。 例: (二)输出形式:1.以图形方式显示有向无环图

2.以文本文件形式存储课程安排 (三)课设的功能 1.根据文本文件中存储的课程信息(课程名称、课程属性、课程学分、课程之间关系) 以图形方式输出课程的有向无环图。 拓展:其显示的有向无环图可进行拖拽、拉伸、修改课程名称等操作。 2.对课程进行拓扑排序。 3.根据拓扑排序结果以及课程的学分安排七个学期的课程。 4.安排好的教学计划可以按图形方式显示也可存储在文本文件里供用户查看。 5.点击信息菜单项可显示本人的学好及姓名“09070026 尹煜” (四)测试数据(见六测设结果)

二.概要设计 数据类型的定义: 1.Class Graph即图类采用邻接矩阵的存储结构。类中定义两个二维数组int[][] matrix 和Object[][] adjMat。第一个用来标记两个顶点之间是否有边,为画图服务。第二个 是为了实现核心算法拓扑排序。 2.ArrayList list用来存储课程信息。DrawInfo类是一个辅助画图的类,其中 包括成员变量num、name、shuxing、xuefen分别代表课程的编号、名称、属性、 学分。ArrayList是一个DrawInfo类型的数组,主要用来在ReadFile、DrawG、DrawC、SaveFile、Window这些类之间辅助参数传递,传递课程信息。 3.Class DrawInfo, 包括int num;String name;String shuxing;float xuefen;四个成员变量。 4.Class Edge包括int from;int to;double weight;三个成员变量。 5.Class Vertex包括int value一个成员变量。 主要程序的流程图: //ReadFile.java

个人财务管理系统设计与实现

个人财务管理系统设 计与实现 Revised on November 25, 2020

软件项目实训报告项目名称个人财务管理系统设计与实现姓名刘志欣 学号 班级13计本1 指导教师张峰 报告日期2016 年 7 月 1 日

目录

1 个人财务管理系统需求分析 系统需求分析的任务与步骤 任务:调查用户需求,该“用户”主要指系统的后台管理员以及前台用户,分析用户对系统功能、性能、硬件等的具体要求,然后以文本形式作成报告。本阶段主要是利用图表与文字来表示系统的逻辑模型,旨在从逻辑上描述系统的功能和性能。 步骤:1.利用图表和文字全面描述系统。 2.根据用户提出的新需求,适当地对系统模型进行改进。 3.编写系统分析文档。 可行性分析 可行性分析是一个系统开发的初始阶段,其意义在于:在尽可能短的时间里,花费尽量小的代价确定问题是否可以解决。因此,我们就必须探究清楚原定的各种可能的方案是否可行,以及完成的该系统之后系统所能带来的效益是否足够大于投资的成本。所以,可行性研究是必要的,它的主要作用是简化系统分析与设计的过程,从而以更合理的方式来进行系统分析与设计,以保证系统的开发成功。 所以说,开发本系统的成本少,开发周期短,从经济方面看开发此系统是可行的。 技术可行性 本系统开发采用的是B/S模式[1]。系统包括客户端和服务器端,对应前台和后台。在服务器端采用的是SQL Server 2005数据库,该数据库具有数据的完整行、一致行以及安全性的特点,并提供了相当安全可靠的存储功能,因而比较适合处理中小型系统。它在处理大量数据的同时,也能够保证系统的完整管理功能。 开发过程中所使用的开发软件为MyEclipse,MyEclipse是在Eclipse的基础上加入了许多功能强大的插件,它继承了Eclipse独特图形API,美化了Java 界面,并且提高了界面的响应速度。因此,它比Eclipse更具有实用性。 在硬件方面,用户计算机的硬件配置只需满足以下条件即可:计算机处理器P4 及以上,计算机RAM满足512M或以上,硬盘存储满足40G或以上,该硬件环境要求明显低于

数据结构课程设计排序算法总结

排序算法: (1) 直接插入排序 (2) 折半插入排序(3) 冒泡排序 (4) 简单选择排序 (5) 快速排序(6) 堆排序 (7) 归并排序 【算法分析】 (1)直接插入排序;它是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的序的有序表中,从而得到一个新的、记录数增加1的有序表。 (2)折半插入排序:插入排序的基本操作是在一个有序表中进行查找和插入,我们知道这个查找操作可以利用折半查找来实现,由此进行的插入排序称之为折半插入排序。折半插入排序所需附加存储空间和直接插入相同,从时间上比较,折半插入排序仅减少了关键字间的比较次数,而记录的移动次数不变。 (3)冒泡排序:比较相邻关键字,若为逆序(非递增),则交换,最终将最大的记录放到最后一个记录的位置上,此为第一趟冒泡排序;对前n-1记录重复上操作,确定倒数第二个位置记录;……以此类推,直至的到一个递增的表。 (4)简单选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之。 (5)快速排序:它是对冒泡排序的一种改进,基本思想是,通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 (6)堆排序: 使记录序列按关键字非递减有序排列,在堆排序的算法中先建一个“大顶堆”,即先选得一个关键字为最大的记录并与序列中最后一个记录交换,然后对序列中前n-1记录进行筛选,重新将它调整为一个“大顶堆”,如此反复直至排序结束。 (7)归并排序:归并的含义是将两个或两个以上的有序表组合成一个新的有序表。假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,这种排序称为2-路归并排序。 【算法实现】 (1)直接插入排序: void InsertSort(SqList &L){ for(i=2;i<=L.length ;i++) if(L.elem[i]L.elem[0];j--) L.elem [j+1]=L.elem [j]; L.elem [j+1]=L.elem[0]; } } (2)折半插入排序:

相关主题
文本预览
相关文档 最新文档