家庭支出管理系统-c语言程序设计
程序设计报告
( 2015 / 2016 学年 第 二 学期)
题 目:家庭支出管理系统
专 业 微电子科学与工程 组长 学号姓名 组员 学号姓名
指 导 教 师 许棣华 指 导 单 位 日 期 2016年 6 月 3日
-
-
家庭支出管理系统
一、 课题内容和要求
1、
该系统要求对一个家庭某月的支出情况进行统计和分析。通过此课题,熟练掌
握数组、指针的各种操作,以及一些算法思想的应用。 2、
功能要求:
(1) 支出信息包括:
支出类型(主要可以分为饮食,服饰装扮,礼金,教育培训,电器,健身,通讯,子女培养,旅游,文化娱乐,医疗,交通,聚会,居住等小项),金额,消费地点,消费时间等。
(2) 需要实现的功能:
1) 用户根据口令进入系统
2) 输入某一月份,完成该月份的支出管理 3) 输入并统计该月的支出情况
4) 显示该月支出信息表,内容应包括日期,金额等 5) 按支出类型进行分类统计和排序
6) 进行本月消费分析,即分析每项支出所占总支出的百分比,并显示分析结果
7) 显示按支出类型排序后的支出信息 8) 将排序后的内容存为文件。
(3) 界面友好,输入信息符合逻辑如存款金额不为负数、不可能有非
数字的字符等。
二、 需求分析
家庭支出管理系统的功能框架图如图1所示。
-
作。
(2)输入函数:为了实现将各个支出项目的类别,支出的金额以及消费的时间,地点等存入需要的文件里,所以必须先要存在存储器里。
(3)输出函数:即通过行列表来直观对应存储文件中的项目的类别,金额,消费时间及地点。
(4)分析函数:读取本月的存储文档中的信息,对本月的消费进行分析,求出本月的消费总和,分析出每项支出所占总支出的百分比,通过他们各自的项目金额所占的百分
-
图1 功能框架图
(1)功能选择函数:此函数是为了让用户根据主界面选择功能并根据提示来进行操
比来直观显示那个指出比较重要。随后与本月收入进行比较,求出收支比。
(5)类别排序函数:就是将输入的信息进行按类别排序。
(6)保存函数:将本次添加的信息进行保存到相应月份的支出信息文档中。 (7)登录界面:因为家庭支出管理系统涉及到私人财务,所以需要利用密码函数对程序进行保密。因此只有在输入正确的口令后才能进入该系统。同时添加了一个随机验证码的验证过程。
(全文中的(1)、(2)、(3)等格式必须统一为中文括号或者英文括号。)
(中文字体:宋体,英文字体:Times New Roman,小四号,不加粗,两端对齐,1.5倍行距,首行缩进2字符,段前段后距为0)
三、概要设计
1 主要结构体
(二级标题格式:宋体,小四号,不加粗,两端对齐,不缩进,下同) typedef struct// 定义结构体 {
char type[20];// 消费类型 float Getsum;// 消费金额 char place[20];// 消费地点 int time;// 消费时间
}family; family fam[80]; 2 主要函数流程图
(1) 登录界面:包括密码函数,采用数组赋值并与预设值逐字比较的方法进行密码
验证。以及验证码函数,验证码采用srand(time(NULL))与p[0]=rand()%1000产生一个0-1000的随机数作为验证码。如图1所示
-
是
图1
(2)主函数:包括菜单显示函数以及功能选择函数,菜单显示函数在屏幕上输出选
择界面,功能选择函数利用选择结构进入不同的功能函数模块,模块如下列所示。在十二个月份存储文件齐全的情况下,各功能可随意使用,无使用上的顺序要求。如图二所示;
是
图2 图3
(3)功能模块一信息添加函数:利用输入函数将支出信息赋值给fam ,然后利用类别整理函数进行类别整理,最后利用选择结构选择某一月份,打开该月份的信息存储文档,
-
进行信息的写入,最后关闭文件。如图3,图4所示。
否
图4 图5
(4)功能模块二信息显示函数:利用选择结构打开某一月份的信息存储文档,然后读取其中的信息并逐行显示在屏幕上然后关闭文件。如图5,图6所示。
-
是
图6
(5)功能模块三信息分析函数:利用选择结构打开某一月份的存储文件,读取该月信息,求消费总和并求出各项支出占总支出比,随后可以输入本月的收入以求出本月的收支比。如图7所示。
-
图7
(6)功能模块四退出函数:关闭程序。
四、源程序代码
#include #include #include #include #include #include
-
#include #include
typedef struct//定义结构体 { char type[20];//消费类型 float Getsum;//消费金额 char place[20];//消费地点 int time;//消费时间 }family;
family fam[80];
int menu_select() //显示该系统所具备的功能 { int c; do{ system("cls");//清屏 printf("\t\t欢迎来到家庭支出管理系统(勤俭节约,避免破产,严肃脸.jpg ) \n"); printf("\t\t** ** ** ** ** **极端简朴的菜单系统*** ** ** **\n"); printf("\t\t|1.输入消费信息|\n"); printf("\t\t|2.显示消费情况|\n"); printf("\t\t|3.消费情况分析|\n"); printf("\t\t|4.退出系统|\n"); printf("\t\t** ** ** ** ** ** ** ** ** ** ** ***\n"); printf("\t\t** ** ** ** ** ** ** ** ** ** ** ***\n"); printf("\t\t\t请对应选择所需选项(1-4):"); scanf("%d",&c); }while(c8); return c; }
void password() //密码登录部分 { char d[6]; char m[6]; m[0]='1',m[1]='2',m[2]='3',m[3]='4',m[4]='5',m[5]='6'; //数组比较printf("请输入六位数密码:"); //输入密码
for (int n=0;;) { printf("请输入密码:\n"); for(int i=0;i='0'||d[i]='a'||d[i]='A'||d[i]
-
下
}
} { printf("\n\t\t\t密码正确! 请进行验证!\n");break; } if(d[0]!=m[0]||d[1]!=m[1]||d[2]!=m[2]||d[3]!=m[3]||d[4]!=m[4]||d[5]!=m[5]) //当密码错误时如 printf("\n密码错误! 请重新输入:"); if (n>3) { printf("系统即将关闭,88!\n"); system("pause"); exit (0); } n++;
void verification_code() //验证码部分
{
int p[1]={0};
int q[1]={0};
for(int k=0;;)
{
srand(time(NULL));
printf("验证码为:\n");
p[0]=rand()%1000; //产生0-1000的随机数
printf("%d",p[0]);
printf("请输入验证码:");
scanf("%d",&q[0]);“
if(q[0]!=p[0])
printf("验证码错误,请重新输入。");
else
{
printf("\n欢迎使用!\n");
system("pause");
break;
}
if(k>3)
{
printf("系统即将关闭,88!\n");
system("pause");
exit (0);
}
k++;
int Inputitems(family sum[],int n)//输入消费信息
{
int i=0;
char sign='y',x[10];
while(sign!='n'&&sign!='N')
{
printf("\t\t\t种类:");
scanf("\t\t\t%s",sum[n+i].type);
printf("\t\t\t支出(大于0):");
scanf("\t\t\t%f",&sum[n+i].Getsum);
printf("\t\t\t地点:");
scanf("\t\t\t%s",sum[n+i].place);
printf("\t\t\t时间(0-31):");
scanf("\t\t\t%d",&sum[n+i].time);
if(sum[n+i].time31)
return false;
gets(x);
printf("\t\t\t需要再次输入吗?(y/n)");
scanf("\t\t\t%c",&sign);
i++;
}
return(n+i);
}
void Showitems(family sum[],int n)//输出某月份的消费信息
{
int i=0,month;
FILE *fp;
printf("请选择月份;");
scanf("%d",&month);
printf("\t\t\t--------------------------------------\n");
printf("\t\t\t种类 支出 地点 时间\n");
printf("\t\t\t--------------------------------------\n");
switch(month)
{
case 1:
fp=fopen("D:\\一月支出信息.txt","r");
if(fp==0)
{
printf("file error\n");
exit(1);
}
{ printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 2: fp=fopen("D:\\二月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 3: fp=fopen("D:\\三月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 4: fp=fopen("D:\\四月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); }
{ printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 5: fp=fopen("D:\\五月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 6: fp=fopen("D:\\六月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 7: fp=fopen("D:\\七月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); }
{ printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 8: fp=fopen("D:\\八月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 9: fp=fopen("D:\\九月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 10: fp=fopen("D:\\十月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); }
}
{ printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 11: fp=fopen("D:\\十一月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; case 12: fp=fopen("D:\\十二月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); break; } printf("\t\t\t"); system("pause");
void paixu(family sum[],int n) //类别显示函数
{
family temp;
for(i=0;i
{
for(j=i+1;j
{
if(strcmp(sum[i].type,sum[j].type)==1)
{
temp=sum[j];
sum[j]=sum[i];
sum[i]=temp;
}
else
if(strcmp(sum[j].type,sum[i].type)==0)
{
if(sum[i].Getsum>sum[j].Getsum)
{
temp=sum[j];
sum[j]=sum[i];
sum[i]=temp;
}
}
}
for(i=1;i
{
if(sum[i-1].Getsum!=0)
{
printf("\t\t\t%-8s %-12f %-8s %-10d\n",sum[i-1].type,sum[i-1].Getsum,sum[i-1].place,sum[i-1].time);
}
if(i>1&&i%10==0)
{
printf("\t\t\t----------------\n");
printf("\t\t\t");
system("pause");
printf("\t\t\t----------------\n");
}
}
printf("\t\t\t");
system("pause");
}
}
void Analyseitems(family sum[],int n) //求各种消费类型的金额占总金额的百分比并求收支比例
int i=0,j=0,month; FILE *fp; printf("请选择月份;"); scanf("%d",&month); switch(month) { case 1: fp=fopen("D:\\一月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); total+=sum[i].Getsum; fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); fp=fopen("D:\\一月支出信息.txt","r"); while(!feof(fp)) { fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); i=i+1; n=i; }; for(i=0;i
fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); total+=sum[i].Getsum; fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); fp=fopen("D:\\二月支出信息.txt","r"); while(!feof(fp)) { fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); i++; n=i; }; for(i=0;i
n=i; }; for(i=0;i
fp=fopen("D:\\五月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); total+=sum[i].Getsum; fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); fp=fopen("D:\\五月支出信息.txt","r"); while(!feof(fp)) { fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); i++; n=i; }; for(i=0;i
fclose(fp); fp=fopen("D:\\六月支出信息.txt","r"); while(!feof(fp)) { fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); i++; n=i; }; for(i=0;i
printf("消费总额为%f",total); fclose(fp); printf("请输入本月收入:"); scanf("\t\t\t%f",&income); printf("\t\t\t本月收支比为%-10f\n",total/income); break; case 8: fp=fopen("D:\\八月支出信息.txt","r"); if(fp==0) { printf("file error\n"); exit(1); } fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); total+=sum[i].Getsum; fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); fp=fopen("D:\\八月支出信息.txt","r"); while(!feof(fp)) { fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); i++; n=i; }; for(i=0;i
while(!feof(fp)) { printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); total+=sum[i].Getsum; fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); } fclose(fp); fp=fopen("D:\\九月支出信息.txt","r"); while(!feof(fp)) { fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); i++; n=i; }; for(i=0;i
}; for(i=0;i
fp=fopen("D:\\十二月支出信息.txt","r");
if(fp==0)
{
printf("file error\n");
exit(1);
}
fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time);
while(!feof(fp))
{
printf("%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); total+=sum[i].Getsum;
fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); }
fclose(fp);
fp=fopen("D:\\十二月支出信息.txt","r");
while(!feof(fp))
{
fscanf(fp,"%s%f%s%d",sum[i].type,&sum[i].Getsum,sum[i].place,&sum[i].time); i++;
n=i;
};
for(i=0;i
{
printf("\t\t\t%-8s%-10f%\n",sum[i].type,sum[i].Getsum/total);
}
printf("消费总额为%f",total);
fclose(fp);
printf("请输入本月收入:");
scanf("\t\t\t%f",&income);
printf("\t\t\t本月收支比为%-10f\n",total/income);
break;
}
}
void save(family sum[],int n) //保存消费信息
{
int i,month;
FILE *fp;
printf("请输入当前信息所属月份:");
scanf("%d",&month);
switch(month)
{
case 1:
{ printf("\t\t\tthe file cannot be opened!\n"); exit(1); } fseek(fp,-1,SEEK_END); for(i=0;i
fprintf(fp,"%-8s %-12f %-8s %-10d\n",sum[i].type,sum[i].Getsum,sum[i].place,sum[i].time); fclose(fp); printf("\t\t\t保存成功!\n"); break; case 5: fp=fopen("D:\\五月支出信息.txt","a+"); if(fp==NULL) { printf("\t\t\tthe file cannot be opened!\n"); exit(1); } fseek(fp,-1,SEEK_END); for(i=0;i
fp=fopen("D:\\八月支出信息.txt","a+"); if(fp==NULL) { printf("\t\t\tthe file cannot be opened!\n"); exit(1); } fseek(fp,-1,SEEK_END); for(i=0;i
fseek(fp,-1,SEEK_END); for(i=0;i
void main()//主函数
{
password();
getch();
verification_code();
system("cls");
int n=0,a=0;
char c;
for(;;)
{
switch(menu_select()) //选择菜单序号 {
case 1:
printf("\t\t\t请输入相应消费情况:\n"); n=Inputitems(fam,n);
paixu(fam,n);
printf("\t\t\t需要保存数据吗?y/n!!\n"); getchar();
scanf("%c",&c);
if(c=='y'||c=='Y')
save(fam,n);
printf("\t\t\t");
} } }
break; case 2: printf("\t\t\t消费情况\n"); Showitems(fam,n); break; case 3: printf("\t\t\t消费金额分析\n"); Analyseitems(fam,n); system("pause"); break; case 4: printf("\t\t\t你真的要离开我吗?Y/N\n"); getchar(); scanf("%c",&c); if(c=='y'||c=='Y') { printf("真的要走吗?Y/N\n"); printf("算了,你滚吧!不需要你选择了\n"); system("pause"); exit(0); } if(c=='n'||c=='N') { printf("哼,那还不回去初始界面?\n"); printf("返回初始界面?Y/N\n"); printf("肯定是返回,我帮你返回了。Y(^_^)Y \n"); system("pause"); break; }
五、测试数据及其结果分析
运行后,程序的登录界面如下。
输入密码成功后如下
验证码界面如下
输入验证码正确后如下
菜单界面如下
选择功能一模块,输入一次后如下
再次输入后如下
选择不再输入,如下
选择保存信息,如下
保存成功后可在D 盘生成“一月支出信息.txt ”,如下
选择功能模块二信心显示,选择一月份,结果如下
选择功能模块三,选择一月份进行信息分析,如下
输入本月收入,求出收支比,如下
选择功能模块四,退出系统,如下
当然存在彩蛋,如果选择N ,如下
六、调试过程中的问题
(1)排序函数开始时存在将数组元素值篡改的问题,后排查发现是
sum[j]=sum[i]; temp=sum[j]; sum[i]=temp;将sum[j]的值先更改了,后调整为temp=sum[j]; sum[j]=sum[i];sum[i]=temp;
(2)输出函数初始无法将存储文档中的数据读取到数组中,后调试证明是因为整形i 没有赋初值,后在开头定义i=0。
(3)分析函数初始会多在屏幕多打印一行空白值,后证明是在循环中多循环了一次,将i
(4)登陆界面初始时会多打印一行验证码的值,后去掉一行printf(“%d”,q[0]);解决问题。
(5)在某组员的pc 上进行程序调试时无法读取和存储文件,后检查程序无误,是由于该组员pc 上没有D 盘且硬盘有权限限制
七、课程设计总结
程序设计是一个崭新的机遇与挑战,也是对我们过往C 语言学习的一次检验。随着时代科技的发展,我们的学习也更加看重创新与实用,程序设计就是这样的一个桥梁,通过实践操作,也让我们对C 语言有了更深的理解和体会。
我们此次的题目是——家庭支出管理系统,刚开始接触这个题目的时候没有方向,通过进行小组间的交流分析以及查阅资料,确定了编写方向。实践永远比理论来得困难。虽然在平时的学习中我们能对够较清晰的了解C 语言,但实际开始程序编写之后自我知识的
不足慢慢体现出来,很多程序需要借助书本和询问老师同学才可以得出答案,实际编写时体会到平时实践能力的薄弱。
这次程序设计的知识点涵盖面较广,相当于大学一年级学习到的所有C 语言的知识点。尤其是文件工程这方面给我们造成了较大的困难,让我们认识到自我文件读写与保存方面的知识薄弱。通过不断的学习、尝试、调试,最终大家齐心写出了系统程序,完成了课程设计要求。
这次程序设计让我们受益良多,刚开始设计时我们一心只想着程序的运行结果,没有考虑全面用户的方便与系统程序本身的优化,促使运行过程中不断有BUG 出现。大家各自的个性化程序设计也我们的程序编写工作造成了一定困扰。不过经过时间的磨合,我们最后完成了课题,这也让我充分体会到了团队合作的重要性。当然,程序设计必然还少不了创新思维与细心严谨。假若以后有机会从事程序编写工作,定要把合作、创新、严谨常记心中。