北京化工大学计算机科学与技术专业
20##程序设计实训报告
题 目:个人记账软件
专 业:计算机科学与技术
班 级: 计科1305
指导教师: 江志英
2014程序设计实训任务书
目 录
2014程序设计实训任务书................................................................................................. I
目 录......................................................................................................................... II
第一章 需求分析............................................................................................................. 3
1.1 引言............................................................................................................... 3
1.2 任务概述........................................................................................................ 3
1.3 数据描述........................................................................................................ 3
1.4 功能需求........................................................................................................ 3
1.5 运行需求........................................................................................................ 3
1.6 任务计划........................................................................................................ 3
第二章 概要设计............................................................................................................. 4
2.1 总体设计........................................................................................................ 4
2.2 面向对象设计................................................................................................. 4
2.3 运行界面设计................................................................................................. 4
第三章 详细设计............................................................................................................. 5
3.1........................................................................................................................... 5
第四章 测试分析............................................................................................................ 6
第五章 用户手册(可选).............................................................................................. 7
第六章 课程设计总结...................................................................................................... 8
附录:程序代码(仅电子版需要、纸质版不需要)........................................................... 9
第一章 需求分析
1.1 引言
当今各种理财观念盛行,随之而出的各种理财软件也层出不穷。不管是家庭还是个人,都应该养成记账好习惯。可以说,记账是理财一个关键的因素。如果能够在平时上保持记账的习惯,就可以减少在消费上的失误。如果有记账的习惯,从而提供一个消费回放的机会,能够帮助大家更好地规划生活。毕竟,不是每个人记忆力都是那么厉害,大事小情都记得那么清楚。规划生活需要养成记账的好习惯,简单方便使用的记账软件就很有必要了。
但是由于每个人的理财观念和习惯不尽相同,为了适应广大群众,做到合理、有普适性的记账软件,方便大家理财,我组选定可以对个人消费进行记录的简单记账软件。并且在程序中加上了收入与支出统计, 简单易操作,方便大家根据消费习惯等等制定自己的理财计划,且能有目的地控制与记录消费账目,养成良好的理财习惯。
1.2 任务概述
编译一个可以对个人消费进行记录的简单记账软件。
最低要求:实现一个个人记账软件,并实现帐目分类;可以按日期统计,如每周、每月、每季度;数据保存到本地文件,并能从吧本地文件中读取数据。
拓展方向:利用VC++,实现可视化的用户体验;
高级扩展:能够绘制各类账目的动态趋势图,数据文件为Excel文件。
1.3 数据描述
(每次程序调试之后每个分页的截图)
1.4 功能需求
记录功能:能够记录并储存收入和支出的账目。
删除功能:可以删除储存的记录。
查询功能:查询和修改存储的记录。
统计功能:统计每周、月、季度的各项目的总金额,以及盈余或者赤字。
1.5 运行需求
开发环境:Dev-C++、VC++6.0
运行环境:Windows 7
1.6 任务计划
第一次上机:确定分组,确定好选题,讨论项目初步框架。
第二次上机前完成:查资料,讨论分工模块及合作项目。
第三次上机前完成:个人模块项目,完成C++程序的编译。
第四次上机前完成:集体合作项目,程序可视化。
第四次上机:修改完善程序,改进可视化。
第二章 概要设计
2.1 总体设计
本系统的四大模块:
增加账目:新增账目内容
查询账目:输入日期即可查询并且修改某日记录的账目
删除账目:输入日期,删除某日账目
账目统计:输入起始时间,即可显示该时间段的总花费,以及各项目的支出总额。
2.2 面向对象设计
增加账目:输入日期、金额、类别、备注;
查询项目:输入日期,从文件中调出已保存项目,并选择是否修改;
删除账目:输入日期,选择是否要删除账目;
账目统计:输入起始日期,即显示这一时间段内所有的账目以及总金额。
2.3 运行界面设计
第三章 详细设计
3.1 系统设计与实现
【总体框架、流程设计,模块划分及接口设计等】
3.2 模块设计
【各模块的具体设计与实现】
第四章 测试分析
【程序运行展示】
【测试中发现的问题及解决方案】
【对最终成果的评价】
第五章 用户手册(可选)
【使用说明、注意事项等】
第六章 课程设计总结
【设计初衷、实践过程中遇到的困难及解决方案、课程收获等】
附录1 人员组成、分工及成绩自评表
附录2:程序代码(仅电子版需要、纸质版不需要)
第二篇:C++程序设计课程设计报告模板
《C++程序设计》课程设计报告
题 目:
姓 名:
学 号:
专业班级:
指导老师:
年 月 日
浙江工商大学杭州商学院
摘要
/*(300字左右,宋体,五号)课程设计内容摘要主要是对撰写过程中实践、实验、研究的内容、方法和得到的主要结果的完整概括。
关键词: /*(3 – 5个,各个词之间用“;”分割,宋体,五号,黑色
目 录
1 课题目标 ............................................................................................................. 1
2 程序具体实现原理 ............................................................................................. 1
2.1 总体方案 ......................................................................................................... 1
2.1.1开发平台 ....................................................................................................... 1
2.1.2基本原理 ....................................................................................................... 1
2.2 程序各个功能说明 ......................................................................................... 2
2.2.1 程序结构 ...................................................................................................... 2
2.2.2 程序各主要功能的实现 .............................................................................. 2
3 课程设计调试与测试报告 ................................................................................ 8
4 课程设计总结 .................................................................................................... 8
附件 程序清单(源程序) .................................................................................. 9
C++课程设计报告
1 课题目标
程序基本功能:
一个基本的电话簿管理程序,具有插入、删除、显示、修改和查询联系人电话号码的功能。 课程设计要求:
(1) 增加记录修改功能(姓名和电话号码)。
(2) 增加显示功能(对链表提供逐屏显示选择而且可以由用户确定每屏显示数目)。
(3) 汉化菜单和帮助。
(4) 程序的结构改写,采用双链表结构,用类和对象重建系统。
评定难易级别: A级
2 程序具体实现原理
2.1 总体方案
(1) 程序采用双向链表数据结构实现。
(2) 用类来实现数据的封装。
(3) 使用文件的输入输出流实现对记录的保存与读取。
2.1.1开发平台
操作系统:Win7
开发软件:Mirosoft Visual C++ 6.0
C++课程设计报告
2.2 程序各个功能说明
2.2.1 程序结构
1.类的封装:
class Friend_node
{
public:
}; char name[35]; char phone_number[15]; Friend_node *next; void write_list_to_file(); void load_list_from_file(); void add_record(); void delete_record(); void change_record(); void add_change_record(Friend_node *new_record_ptr); void search_record(); void display_all_records(); void help(); void main_menu(); void help_menu(); void insert_node(Friend_node *new_record_ptr); void make_node_new_head(Friend_node *new_record_ptr); void add_node_to_end(Friend_node *new_record_ptr); void move_current_to_end(); void delete_node(Friend_node *previous_ptr); void delete_head_of_list(); void delete_end_of_list(Friend_node *previous_ptr); void delete_from_middle_of_list(Friend_node *previous_ptr); int verify_delete(); void delete_list();
2.2.2 程序各主要功能的实现
1.用类Friend_node重建系统;
2.增加了函数change_record()用于修改联系人资料,利用了原来的删除功能delete_record()和添加功能add_record()进行对原有资料的修改;
2
C++课程设计报告
//修改联系人资料//
void Friend_node::add_change_record(Friend_node *new_record_ptr) {
}
void Friend_node::change_record()
{
Friend_node *new_record_ptr; new_record_ptr=new Friend_node; system("cls"); char search_string[35]; current_ptr=head_ptr; cout<<"输入你想要修改的联系人姓名:"<<endl; cin>>search_string; while((current_ptr!=NULL)&&(strcmp(current_ptr->name,search_string)!=0)) { } if(current_ptr!=NULL) { } else { } cout<<"联系人不存在"<<endl; cout<<"\n找到联系人!\n"; cout<<"姓名"<<" "<<"联系电话"<<endl; cout<<"****************************************"<<endl; cout<<current_ptr->name<<" add_change_record(new_record_ptr); current_ptr=current_ptr->next; Friend_node *previous_ptr; previous_ptr=NULL; delete_node(previous_ptr); cout<<"输入新姓名:"<<endl; cin>>new_record_ptr->name; cout<<"输入新电话号码:"<<endl; cin>>new_record_ptr->phone_number; insert_node(new_record_ptr); "<<current_ptr->phone_number<<endl;
3
C++课程设计报告
} cout<<"按下回车键回到主菜单"<<endl; getchar(); system("cls"); main_menu();
3.在原有的显示功能的基础上添加了一个计数器person_count来实现逐屏显示的功能并可以设定显示数目;
//显示联系人//
void Friend_node::display_all_records()
{
int person_count; int temp_person_count=0; char fullname[36]; current_ptr=head_ptr; cout<<"每屏显示多少联系人?"<<endl; cin>>person_count; if(current_ptr!=NULL) { cout<<"姓名"<<" "<<"联系电话"<<endl; cout<<"********************************************"<<endl; for(temp_person_count=0;current_ptr!=NULL&&temp_person_count<person_count;) { } for(;current_ptr!=NULL;) { cout<<"按下回车键进入下一页"<<endl; getchar(); temp_person_count++; strcpy(fullname,""); strcat(fullname,current_ptr->name); cout.setf(ios::left); cout<<setw(12)<<fullname; cout.unsetf(ios::left); cout.setf(ios::right); cout<<setw(24)<<current_ptr->phone_number<<endl; current_ptr=current_ptr->next; cout<<endl; display:
4
C++课程设计报告
} } else { } } system("cls"); goto display; cout<<"没有联系人!"<<endl; cout<<"按下回车键回到主菜单"<<endl; current_ptr=head_ptr; getchar(); system("cls"); main_menu();
4.菜单和帮助的汉化; //主菜单//
void Friend_node::main_menu() {
main_menu:
int choice; cout<<"********************主菜单********************"<<endl; cout<<"**********************************************"<<endl; cout<<"1 - 添加联系人;"<<endl; cout<<"2 - 删除联系人;"<<endl; cout<<"3 - 修改联系人资料;"<<endl; cout<<"4 - 显示所有联系人;"<<endl; cout<<"5 - 按姓名查找联系人;"<<endl; cout<<"6 - 帮助;"<<endl; cout<<"7 - 保存记录并退出程序。"<<endl; cout<<"请输入你想要执行的选项:"<<endl; cin>>choice; switch(choice) { case 1: system("cls"); add_record(); break; case 2:
5
C++课程设计报告
} } system("cls"); delete_record(); break; system("cls"); change_record(); break; system("cls"); display_all_records(); break; system("cls"); search_record(); break; system("cls"); help_menu(); break; write_list_to_file(); if(head_ptr!=NULL) { } break; system("cls"); cout<<"错误的选项!"<<endl; cout<<"按下回车键回到主菜单"<<endl; getchar(); system("cls"); goto main_menu; break; delete_list(); case 3: case 4: case 5: case 6: case 7: default:
//帮助//
void Friend_node::help_menu()
6
C++课程设计报告
{
help:
int choice; cout<<"1-我的记录呢?"<<endl; cout<<"2-怎样可以清空记录?"<<endl; cout<<"3-什么时候会有新版本?"<<endl; cout<<"4-新版本会有些什么功能?"<<endl; cout<<"5-返回主菜单。"<<endl; cin>>choice; system("cls"); switch(choice) { case 1: cout<<"在当前目录下找到一个名为“Friends.dat”的文件。"<<endl; cout<<"如果找不到该文件可能是因为该文件被删除或被重命名,若该文件被重命cout<<"按下回车键回到帮助菜单"<<endl; getchar(); system("cls"); goto help; break; cout<<"在当前目录下找到一个名为“Friends.dat”的文件并删除。"<<endl; cout<<"按下回车键回到帮助菜单"<<endl; getchar(); system("cls"); goto help; break; cout<<"有新版本时我们会进行通知。"<<endl; cout<<"按下回车键回到帮助菜单"<<endl; getchar(); system("cls"); goto help; break; cout << "我们可能会添加以下功能:"<<endl; cout << "1.多用户和设置密码"<<endl; 名,则将其更名为Friends.dat。"<<endl; case 2: case 3: case 4:
7
C++课程设计报告
} } cout << "2.信息加密功能 "<<endl; cout << "3.清空记录的指令"<<endl; cout << "4.错误修正功能"<<endl; cout << "按下回车键回到帮助菜单"<<endl; getchar(); system("cls"); goto help; break; main_menu(); break; cout<<"错误的选项!"<<endl; system("cls"); goto help; break; case 5: default:
3 课程设计调试与测试报告
4 课程设计总结
(1) 完成本课题花了整整两个星期的时间,真正体会了作为一个程序员的辛
苦,并且必须具备细心、耐心的品质,想要完成一项出色的项目,必须精益求精,反复操作与实践。
(2) 在做了本课程设计以后,我对C++的了解更深了,很多知识得到了巩固,
一些不懂的知识也渐渐明了!这其中主要是对指针的使用收获很多,在指针使用的过程中,对指针的指向以及对各函数中指针的赋值会影响到整个
8
C++课程设计报告
程序的运行;还有就是对文件的输入输出流了解得更透彻了,知道了打开一个文件后必须还要对其关闭,否则程序无法运行,对各种文件的输入输出控制符都能基本融会贯通。
(3) 虽然本课题已完成,可是还是存在一些问题,比如说界面还不够好看,为
了用户用得舒服,界面是很重要的。
附件 程序清单(源程序)
9