C语言程序设计实验报告.docx

上传人:b****8 文档编号:9351199 上传时间:2023-02-04 格式:DOCX 页数:41 大小:1.07MB
下载 相关 举报
C语言程序设计实验报告.docx_第1页
第1页 / 共41页
C语言程序设计实验报告.docx_第2页
第2页 / 共41页
C语言程序设计实验报告.docx_第3页
第3页 / 共41页
C语言程序设计实验报告.docx_第4页
第4页 / 共41页
C语言程序设计实验报告.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

C语言程序设计实验报告.docx

《C语言程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验报告.docx(41页珍藏版)》请在冰豆网上搜索。

C语言程序设计实验报告.docx

C语言程序设计实验报告

安阳工学院

C语言课程设计

 

课程题目:

家庭财务管理系统

院系:

计算机科学与信息工程学院

专业班级:

11级计算机科学与技术(嵌入方向)

姓名:

吕鹏

学号:

201103010042

QQ号码:

1476265623

指导老师:

高原

 

完成时间:

公元二零一二年六月十五

课程设计任务书

设计题目

家庭财务管理系统

姓名

吕鹏

所在院系

计算机科学与信息工程学院

专业班级

11级计科嵌入

设计要求:

完成一个学生成绩管理系统系统,具体步骤要求如下:

1、添加收入

2、查询收入明细

3、删除收入

4、修改收入

5、添加支出

6、查询支出明细

7、修改支出

8、删除支出

9、统计总支出总收入

学生应完成的工作:

1学生应认真学习参考程序,理解每个文件、每个函数以及各个变量的作用和意义。

在此基础上进一步改进程序,最后正确地运行程序。

2对程序进行测试,设计详细的测试计划,然后根据测试计划设计测试用例,对程序进行测试。

测试时应注意对各种边缘情况进行测试。

3完成课程设计报告

参考文献:

1顾晓琳等C程序设计课程设计电子工业出版社2011

2谭浩强C程序设计教程清华大学出版社2010

工作计划:

1.小组审题,查阅资料,进行设计前的必要资料准备(2天)。

2.把程序完整运行出来(3天)。

3.增加改进程序(2天)。

4.写课程设计报告(2天)。

5.提交课程设计报告及答辩(1天)

任务下达日期:

2012年6月1日

任务完成日期:

2012年6月15日

指导教师(签名):

学生(签名):

吕鹏

 

 

 

 

界面

九、程序设计过程中遇到的问题及解决过程

1.对程序整体理解,但在设计过程中,细节问题处理不当,造成程序不能运行或者运行错误,并且,对某一部分的程序不能独立设计出来。

对此问题的解决是参考了《c程序设计课程设计》上的参考程序,完成了设计,但是不是一味的照搬,对参考程序进行了修改和添加。

增加了按成绩区间查询的查询方式,增加了按总成绩排序的排序方式。

2.在组建工程的时候,将各个程序分给小组成员,两个人设计一个模块,但是出现了连接错误,各个模块之间也出现了输入上的错误,致使程序不能运行。

对于各个模块逐一检查,添加修改,最终使各个模块错误消除,同时连接错误也自行解决。

3.在刚开始程序设计的时候,不了解什么是组建工程,什么是模块,对于程序设计本身也有不理解的地方,不知道该从何下手。

解决方法:

先看《c程序设计课程设计》,了解怎样组建工程,理解每个模块的作用,弄清楚参考程序上的逻辑顺序以及如何设计等问题,然后再进行课程设计。

十、课程设计心得及体会

对于第一次做课程设计的我来说,这次的课程设计是一次既让人痛苦又让人开心的事情。

开始的时候根本不清楚课程设计要设计什么,不知道到底怎样设计,因为平时所写的c程序都是一些简单而且基本的C程序,根本不是解决实际情况,符合客户要求的工程程序,所以觉得无从下手,觉得很困难,甚至没有一个思路,而且对于组建工程,构建模块等工作无法理解。

这些情况都使自己陷入了苦恼的深渊。

后来,听从辅导老师的意见,从《C程序设计课程设计》开始,一点点了解怎样组建工程,怎么样构建模块,对于每个模块应该怎么样进行设计,逻辑思维是什么,然后开始构建。

在设计过程中一直都有错误存在,困难重重。

遇到困难就开始用大量的时间进行修改以及整理,理出思路。

最终将工程调试成功,添加模块成功,而这些成功的瞬间是最快乐最开心的时刻。

而且通过这次课程设计我学会了好多东西,觉得自己设计的东西更加接近实际的程序要求。

知道团队合作的重要性,知道怎样使团队一起合作构建程序。

总的来说,我获益匪浅。

十一、参考文献

[1]梁旭等.《C程序设计课程设计(第2版)》电子工业出版社,2011

[2]刘振安等.C程序设计课程设计,机械工业出版社,2007

[3]谭浩强.C程序设计(第五版),清华大学出版社,2011

十二、源程序

#defineMAX_NAME11

#defineMAX_DETAIL21

#defineMENU_COUNT9

#defineDATA_FILE"fs.dat"

#defineMAX_USERNAME10

typedefenum_fi_type

{

income=1,

payout=-1

}fi_type;

typedefstruct_fi_info

{

intyear;

intmonth;

fi_typetype;

charname[MAX_NAME];

floatmoney;

chardetail[MAX_DETAIL];

}fi_info;

typedefstruct_fi_data

{

fi_infoinfo;

struct_fi_data*next;

}fi_data;

voidadd_income();

voidsearch_income();

voiddelete_income();

voidupdate_income();

voidadd_payout();

voidsearch_payout();

voiddelete_payout();

voidupdate_payout();

voidcount_total();

voidquit();

voidsearch_all();

voidmain_1();

voidsearch_data(fi_typetype);

voiddelete_data(fi_typetype);

voidupdate_data(fi_typetype);

voidinitialize();

void(save_to_file());

//voidclear_data();//修改项

fi_data*get_last();

fi_data*get_previous(fi_info*p);

voidinput_info(fi_info*info);

voidshow_info(fi_data*p[],intcount);

fi_data*head;

charmenu[]=

"|================================================================|\n"

"|吕鹏家庭财务管理系统|\n"

"+----------------------------------------------------------------+\n"

"|收入管理|\n"

"|<1>添加收入|\n"

"|<2>查询收入|\n"

"|<3>删除收入|\n"

"|<4>修改收入|\n"

"|支出管理|\n"

"|<5>添加支出|\n"

"|<6>查询支出|\n"

"|<7>删除支出|\n"

"|<8>修改支出|\n"

"|统计|\n"

"|<9>统计收支|\n"

"+----------------------------------------------------------------+\n"

"|退出<0>退出系统|\n"

"+----------------------------------------------------------------+\n"

"+------+\n"

"+----------------------------------------------------------------+\n";

void(*menu_fun[])()=

{

quit,

add_income,

search_income,

delete_income,

update_income,

add_payout,

search_payout,

delete_payout,

update_payout,

count_total

};

#include

#include

#include

intmain()

{

structdata

{

inti;

charch[20];

charname[20];

}dt;

FILE*fp;

charshuru[20];

charch;

charc;

if((fp=fopen("aa.dat","w"))==NULL)

{

printf("Cannotopen《aa.dat》file!

\nPleasesetupthisfileinsamedirectory!

\n");

printf("按回车键退出......\n");

ch=getchar();

exit(0);

}

fread(&dt,sizeof(structdata),1,fp);

if(dt.i==2)

{

printf("请输入密码:

");

gets(shuru);

if(strcmp(shuru,dt.ch)==0)

{

main_1();

}

else

{

printf("passworderror!

\n");

printf("是否重设密码:

YN\n");

scanf("%c",&ch);

c=getchar();

if(ch=='Y'||ch=='y')

{

printf("请输入用户名:

");

gets(shuru);

if(strcmp(shuru,dt.name)==0)

{

fp=fopen("aa.dat","w");

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

printf("*账户已清除(原储存资料未清除)!

请重设账户与密码!

*\n");

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

printf("按回车键退出......\n");

ch=getchar();

}

}

}

fclose(fp);

}

else

{

if(dt.i!

=2)

{

printf("首次登陆(或已清除账户),请设置用户名及密码\n");

printf("请输入用户名(为找回密码而设):

");

scanf("%s",dt.name);

printf("请输入密码:

");

scanf("%s",dt.ch);

ch=getchar();//接收最后的回车字符

if((fp=fopen("aa.dat","w"))==NULL)

{

printf("cannotopen!

");

exit(0);

}

dt.i=2;

fwrite(&dt,sizeof(structdata),1,fp);

fclose(fp);

main_1();

}

}

return0;

}

voidinitialize()

{

FILE*fp=NULL;

fi_data*p=NULL;

fi_data*last=NULL;

intcount=0;

fp=fopen(DATA_FILE,"rb");

if(fp==NULL)

{

fp=fopen(DATA_FILE,"wb");

fclose(fp);

return;

}

p=(fi_data*)malloc(sizeof(fi_data));

memset(p,0,sizeof(fi_data));

p->next=NULL;

while(fread(&(p->info),sizeof(fi_info),1,fp)==1)

{

if(head==NULL)

{

head=p;

}

else

{

last=get_last();

last->next=p;

}

count++;

fseek(fp,count*sizeof(fi_info),SEEK_SET);

p=(fi_data*)malloc(sizeof(fi_data));

memset(p,0,sizeof(fi_data));

p->next=NULL;

}

free(p);

p=NULL;

fclose(fp);

}

voidadd_income()

{

fi_data*p=(fi_data*)malloc(sizeof(fi_data));

memset(p,0,sizeof(fi_data));

p->next=NULL;

input_info(&(p->info));

p->info.type=income;

if(head==NULL)

{

head=p;

}

else

{

get_last(head)->next=p;

}

}

//查询收入明细

voidsearch_income()

{

search_data(income);

}

//删除收入

voiddelete_income()

{

delete_data(income);

}

//修改收入

voidupdate_income()

{

update_data(income);

}

//添加收入

voidadd_payout()

{

fi_data*p=(fi_data*)malloc(sizeof(fi_data));

memset(p,0,sizeof(fi_data));

input_info(&(p->info));

p->info.type=payout;

if(head==NULL)

{

head=p;

}

else

{

get_last(head)->next=p;

}

}

voidsearch_payout()

{

search_data(payout);

}

voiddelete_payout()

{

delete_data(payout);

}

voidupdate_payout()

{

update_data(payout);

}

voidcount_total()

{

floattotal_income=0.0;

floattotal_payout=0.0;

fi_data*p=head;

while(p!

=NULL)

{

if(p->info.type==income)

{

total_income+=p->info.money;

}

else

{

total_payout+=p->info.money;

}

p=p->next;

}

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

printf("|合计收入|合计支出|结余|\n");

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

printf("|%12.2f|%12.2f|%12.2f|\n",total_income,total_payout,total_income-total_payout);

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

if((total_income-total_payout)<0)

printf("|+-------您已超支,请您合理理财!

-------+|\n\n");

printf(">按任意键返回主菜单.....");

fflush(stdin);

getchar();

}

voidquit()

{

save_to_file();

//clear_data();//修改项

exit(0);

}

voidsearch_data(fi_typetype)

{

intyear=0;

intmonth=0;

fi_data*p=NULL;

fi_data*result[9]={NULL};

intcount=0;

charinput='';

while

(1)

{

printf(">请输入要查询的年月(年/月例:

1992/6)");

if(scanf("%d/%d",&year,&month)!

=2)

{

printf(">输入错误。

\n");

}

else

{

p=head;

count=0;

memset(result,0,sizeof(fi_data*));

while(p!

=NULL)

{

if(p->info.year==year&&p->info.month==month&&p->info.type==type)

{

if(count<9)

{

result[count]=p;

count++;

}

else

{

show_info(result,count);

printf(">输入空格并按回车键翻页。

其他键退出。

");

fflush(stdin);

input=getchar();

if(input=='')

{

memset(result,0,sizeof(fi_data*));

count=0;

result[count]=p;

count++;

}

else

{

break;

}

}

}

p=p->next;

}

if(count!

=0)

{

show_info(result,count);

}

else

{

printf(">没有找到数据。

\n");

}

printf(">继续查找其他数据?

(yorn)");

fflush(stdin);

input=getchar();

if(input=='y'||input=='Y')

{

continue;

}

else

{

break;

}

}

}

}

voiddelete_data(fi_typetype)

{

intyear=0;

intmonth=0;

fi_data*p=NULL;

fi_data*pre=NULL;

fi_data*result[9]={NULL};

intcount=0;

charinput='';

inti=0;

while

(1)

{

printf(">请输入要查询的年月(年/月例:

1992/6)");

if(scanf("%d/%d",&year,&month)!

=2)

{

printf(">输入错误。

\n");

}

else

{

p=head;

count=0;

memset(result,0,sizeof(fi_data*));

while(p!

=NULL)

{

if(p->info.year==year&&p->info.month==month&&p->info.type==type)

{

if(count<9)

{

result[count]=p;

count++;

}

else

{

show_info(result,count);

printf(">输入空格并按回车键翻页。

输入对应的序号删除。

其他键退出。

");

fflush(stdin);

input=getchar();

if(input=='')

{

memset(result,0,sizeof(fi_data*));

count=0;

result[count]=p;

count++;

}

elseif(input>='1'&&input<=48+count)

{

i=input-49;

pre=get_previous(result[i]);

if(pre==NULL)

{

head=head->next;

}

else

{

pre->next=result[i]->next;

}

free(result[i]);

for(;i

{

result[i]=result[i+1];

}

result[i]=p;

printf(">删除成功。

\n");

}

else

{

break;

}

}

}

p=p->next;

}

if(count!

=0)

{

show_info(result,count);

prin

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1