课程设计题目 个人收支管理
难度:☆☆☆
姓名:刘泽禄
学号:913103860633
随着社会生活步调的不断加快,人们越来越繁忙。也因此各项收入和支出名目繁多,如果不善于管理常会出现入不敷出,工资感觉没怎么用到月底就已经全光了。所以对自己在日常生活中的收入和支出进行记录和管理是十分必要的。这也正是设计这个程序的初衷,给人们的生活带来便利。
个人收支管理是一款简单家庭理财软件,主要为用户提供每日的收支记录和查询服务,还能统计总收入和总支出。
功能要求
(1) 运行程序,首先进入的是登录窗口,因收支涉及个人隐私,因此该程序要求密码验证。如果密码输入连续三次错误,程序自动退出。程序的初始密码为空,即不必输入密码,直接单击“确定”按钮进入。
(2) 当用户输入正确密码后,则进入程序界面。
(3) 单击“参数设置”按钮,进入“参数设置”窗口。该窗口有三个选项卡。
1 “收入类别””和“支出类别”选项卡主要对日常收支进行分类,可对类别进行添加,修改,删除等处理,并将处理后的类别信息保存到文件夹中以供本程序的其他窗口使用。这两个选项卡的初始状态为:“添加”和“返回”按钮可用,另外两个按钮不可用,同时文本框亦不能进行文字输入。单击“添加”按钮后,文本框才能编辑,并清空原有的内容。在文本框中输入新类别后选择“确定”即可添加。单击列表框中的某一项时,其内容显示在文本框中,同时“删除”和“修改”按钮才可用。单击“修改”按钮后,在文本框中进行修改,“确定”后修改操作完成。单击“删除”按钮时,从列表框中删除所选类别。
2 通过“密码修改”选项卡可以修改密码。若“新密码”和“再输入一次”中的输入密码不一致,则会提示用户重新输入。
(4) 单击程序主界面上的“日常流水账”按钮,进入日常收支的原始资料输入窗口。该窗口主要由“收入记账”和“支出记账”两个选项卡组成。考虑到流水账的内容可能较多,因此进入该窗体时,窗口底部的列表中只显示已收入的本月的收支情况。“收入类别”和“支出类别”使用了组合框,其中显示了“参数设置”窗体所设置的收入和支出类别,用户只须从中选择即可。添加新的收支信息时,先在“日期”,“金额”,“收入类型”和“备注”中输入或选择适当内容,然后单击“保存”按钮即可,窗口底部列表框中显示已输入的信息。单击“取消”按钮则会清空文本框中的内容。添加完毕,单击“流水账”窗口右上角的“返回”按钮可返回主界面。
(5) 从主界面上选择“查询统计”,进入“查询统计”窗口。该窗口由三张选项卡组成,既可以单独统计收入或支出的情况,也可以查询某一段时间内总的收入和支出情况。“收入查询”和“支出查询”根据实际需要共设置两种查询方式:一种是查询某个时间段内的总收入和支出,另一种是查询某一时间段内某一收入和支出类别的收支情况。通过“请选择查询方式”中的两个单选框来选择这两种模式。“收入支出对比”选项卡显示某一时间段内总的收入和支出情况。
本程序由一个标准模块和五个窗体模块frmland 、frmmain 、frmbill、 frmquery、 frmset构成。同时有三个文本文件分别用于保存收入类型(Inputtype.txt)、支出类型(Outputtype.txt)和收支账目(Balance.txt),一个文件(Balance.pas)保存加密后的密码。
Frmland为启动窗体,供用户输入密码并检验,如果正确就显示主窗体进入程序,如果三次输入均不正确就关闭程序。
Frmmain为主窗体,用于各个窗体的连接和退出程序,它有四个按钮单击后分别显示窗体frmbill、窗体 frmquery、窗体 frmset。
窗体frmbill供用户输入每日的收支帐目,即收支类型、收支时间、金额和备注。每次加载窗体frmbill时从Inputtype.txt读出收入类型,从Outputtype.txt读出支出类型给控件初始化,便于用户选择相应的类型输入日常流水账。为实现数据逐条读写采用do loop循环 EOF()文件函数和input语句。利用If语句判断data的int1取值,确定数据是收入还是支出,利用month()函数获得帐目时间time1的月份,只将本月的帐目显示在列表框里。
窗体 frmquery供用户进行查询,它提供三个选项卡,分别支持收入查询,支出查询和收支对比查询。用户还可以对查询方式进行选择:按时间或按类型 ,为提供这2个选择,运行时对框架控件的Visible 属性进行设置。
窗体 frmset 可以由用户自己添加收入支出类型和修改密码,设置后将写入文件保存。收入支出类型经修改后利用For循环遍历列表框中的条目,将每一条写进Inputtype.txt或Outputtype.txt。
密码的加密按如下变换(0—A,1—B,……9—J )。将密码的每一个数字加上65后按Ascaii码转换为相应的字母。用到Mid() ,Asc (),Len()函数和For循环。
标准模块用来声明自定义数据类型 data ,它有5个元素
int1 As Integer (取2个值,1表示收入,0表示支出)
time1 As Date (储存收支时间)
moneytype As String(储存收支类型)
money As String(储存金额)
addition As String(储存备注)
标准模块中声明全局变量 password 和 password2 分别保存原始数字密码和经过加密后的密码。
三、截图
问题一:调试时找不到文件路径,在查阅了几本参考书后,见书中用了App.path函数来打开文件读入或读出。于是我按照书上的例子,在程序中用App.path函数找到了文件。
问题二:调试时数据从文件中读入时,出现“输入超出文件尾”。发现程序没有什么错误,在打开文本文件Balance.txt时发现光标与文本之隔着几行空白,当删除后,程序运行良好。说明光标的最后位置应紧邻上次输入的内容。
问题二:我一开始试图用write #1 ,newdata语句一次性写入自定义类型的所有元素,但是VB只支持随机读取文件使用它,对于文本文件,处理自定义数据类型并不方便。改写为write #1, newdata.int1 , newdata.time1, newdata.moneytype, newdata.money , newdata.addition后才实现写入功能。
问题三:当用户输入的数据类型与我设置的变量类型不统一时,会出现许多错误,为了方便用户,必须添加显式转换语句避免错误
这次课程设计虽然课题只有三颗星,但由于基础薄弱还是费了不少功夫。我从中体会到了许多。比如一项任务开始前要有一个整体规划,将各个模块和它们的功能想清楚,然后才能具体动手,此外还要步步优化,慢慢调试才能最终完成程序设计,不能急功近利,也不能粗心大意。编写程序的过程让我意识到的图书馆的巨大作用,不是课堂所学都能有所用,也不是所用要用的都学习过,学会自学,学会使用图书馆是那么重要。还有要有知难而上的勇气和必胜的信念,遇到调试错误不能灰心失望,要找到原因,积极改正。
专 业:信息管理与信息系统
班 级:1 学 号:30 姓 名:左健
任课老师:吕向阳
学生成绩管理系统课程设计报告
任务及设计要求:
通过本系统,可以将各个学生的成绩记录输入到系统中,便于查阅和相关管理。此外,该系统还能实现对学生成绩记录的显示,查询以及插入或删除学生的成绩记录等功能。
⑴输入:学生的基本信息,包括学号、姓名、性别、籍贯、VC++成绩、英语成绩、物理成绩等;
⑵计算:每个学生的总成绩、平均成绩,所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;
⑶查询:可以按学号、姓名等进行成绩查询;
⑷排序:可以按学号、姓名、VC++成绩、英语成绩、物理成绩、总成绩、平均成绩等进行排序并输出;
⑸删除:删除某条记录;
⑹按学分积点计算办法计算出每个学生的学分积点,并按从高到低的顺序排列输出。
⑺按奖学金评定办法,从特等奖开始,输出获得奖学金的学生名单及该生的学习成绩与学分积点。
⑻按三好生评定办法,输出获得三好生的学生名单。 ⑼定义类,用类和对象的知识进行系统设计和实现。
设计思路: ? ?
建立学生类STU,它包括学号xh,姓名xm,性别 xb,籍贯 jg,成绩 c , eng , phy; 建立班级类BJ,该类是学生成绩记录的集合。其成员函数则是问题中要求的显示、查找、删除、导出、信息查询、成绩排序等各种操作;
? 以下为在类内编写的各个功能的函数实体:
1. STU *Input(int n), )用于输入学生记录,相当于一个注册。
2. void calculate(STU *h,int n)用于对每个学生的各门成绩的总成绩、平均成绩,成就绩点,
班级各科成绩的总分、平均分,各单科最高分。
3. 4. 5. 6.
void search(STU *h)用于按学号或者姓名查询学生的个人信息,此过程中运用switch分支语句根据查询者不同选择导出学生基本信息。
void sort(STU *h,int a,int n)用于对学生成绩进行排序,同样运用switch语句根据查询者的不同选择导出排序结果。其中运用应用于long int 与char两个不同类型的交换函数。 void deletestudent(STU *h,int data)用于删除某个学生的信息记录,主要用链表的基本知识。
void scholar(STU *h,int n)、void shxs(STU *h,int n)用于依据学校规定的奖学金与三好生评定方法,根据每个学生的成绩绩点评定特、一、二、三等奖学金,三好学生,并导出
信息。
问题与解决方式:
1. 没有解决三好学生的关于体育成绩不达标和学生学习期间受到的处分的条件筛选;
2. 另外就是在输入学号查询查学生成绩信息的问题没有解决(输入学生学号,没有该学生的信息);
3. 通过链表实现对每一个班级类对象的访问的问题,要向同学求助; 感想与收获:
平时学习态度不够认真,没有牢牢掌握知识点,导致很多地方不懂然后重新学习向同学请教。但在最后还是学会了很多,弥补了很多不足的地方,在今后的学习生活将端正好学习态度,好好加强练习,增加自己的知识量,成为帮助别人学习的那个人。
1课程设计目的课程设计是船舶设计原理课程重要的实践性教学环节是培养学生掌握船舶设计基本原理和能力的技术基础主尺度论证与总布置设计是…
一设计目的1强化上机动手能力在理论和实践的基础上进一步巩固数据结构课程学习的内容掌握工程化软件设计的基本方法2掌握图的创建和应用3…
中国计量学院信息工程学院课程设计报告课程设计名称系统设计与仿真课程计二级学院信息工程学院专业班级10电信2班学姓成绩号名10003…
信息科学与工程学院高级语言程序设计课程设计报告学生成绩管理系统学科专业计算机科学与技术班级1301学号指导教师唐郑熠讲师学生二零年…
扬州大学数据结构课程设计报告课题名称姓名学院系科班级指导老师日期自来水管架设问题广陵学院陈宏建1一课程设计的题目自来水管理架设问题…
南京理工大学能源与动力工程学院VB课程设计报告题目1贪吃蛇游戏题目2列车时刻查询指导老师张小兵学生姓名学号专业班级10083201…
专业实践课程设计报告班级姓名学号08计科一班学生信息管理系统1需求分析随着学校的规模不断扩大学生人数急剧增加有关学生的各种信息也成…
课程设计报告书课程设计名称VB程序设计报告书系部专业班级学生姓名XXX学号指导教师完成日期20xx年1月6日山东科技大学泰山科技学…
经济管理学院本科课程设计说明书面向对象课程设计学号姓名杨凯班级专业信息管理与信息系统系别管理系指导教师20xx年12月7日目录第1…
VB课程设计报告课程题目动物管理员游戏难度4星姓名束方婷学号912101500202一题目分析动物管理员是一款非常有趣的游戏有很多…
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过…