个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情。
关于本次课程设计虽然做得有些急,但是主要的功能还是实现了,虽然比较简单,但是还是遇到好多问题,有语言上的基本问题,有算法设计上的问题,在开始由于要求比较高而且想于要快,就是前面两个的原型主要功能没有实现,最后用啦一个简单的方法把功能实现了,钱面两个就是初步实现功能的,但是效率不是很好,比如用到数组保存数据,但是主要功能的到实现了,这次就把数组的固定内存分配问题改为用单链表实现动态空间分配,由于是数据结构的课程设计,这也是老师要求的吧。对于这次的还是基本满意的,但还是有许多需要优化的地方,因为考试较多,就没有经行优化,也厚有时间再来优化,排版上也有好多问题,这次课程设计有好多感悟,今天写完的代码在今天晚上睡觉后明天起来就觉得不行了,就要删掉,有时候这种感觉就是要把所有的代码都要删掉,流程模块都要重新设计,对这中事情又爱又恨,但还是觉得重新设计比较好,这样的收获也比较大,最终付出了努力,收获还是蛮大的,下面还是把代码弄出来吧,本来代码是分还多文件的,我只能把他们合并后再贴上来,这样就更没层次了。
/*
* Count.c
*
* 个人帐簿管理系统设计 1.0
* 个人帐簿管理系统记录某人每月的全部收入及各项开支情况,
* 包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。
* 进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,
* 可以根据输入的月份查询每月的收支情况。
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define MONTH 20
/*账户开支信息*/
struct Count{
int month; //月份
float income; //总收入
float outcome; //总支出
float food; //食品消费
float rent; //房租
float education; //子女教育费
float water; //水电费
float hospital; //医疗费
float save; //储蓄
float other; //其他
};
struct Node {
struct Count acount;
struct Node *next; //指向下一个月的信息节点
};
typedef struct Node *PNode;
typedef struct Node *LinkList;
typedef struct LinkList *PLinkList;
int MenuSlect();
int EndWithZero();
int IsMonthExist(char *name,int month);
int IsCountExist(char* name);
void AboutIt();
void NewCount();
void LoadCount(char*);
void SortCount(char *);
void LookCount(char *);
void LookMonthCount(char *,int);
void ResetMonthCount(char *);
void AddMonthData(char *name);
void ReadCount(char *,LinkList *);
void OutputCount(LinkList countlist);
void SaveToFile(char *name,LinkList plist);
struct Count InputData(int );
LinkList BubbleMonthSort(LinkList head);
void AboutIt(){
FILE *fp;
char ch;
fp = fopen("about.txt","r");
printf ("\n");
while((ch=getc(fp)) != EOF)
printf("%c",ch);
fclose(fp);
printf("\n按任意键继续.......");
getch();
system("cls");
}
/*按月添加数据到文件末尾*/
void AddMonthData(char *name) {
FILE *fp;
int mon,i;
int month;
LinkList countlist; //账户节点
countlist = (LinkList) mal