下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、作者:日期:个人收集整理勿做商业用途课程设计报告项目名称:家庭财务系统项目组长:项目成员:班级名称:专业名称:计算机科学与技术完成时间:2010 6 1信息工程学院制一、 案例描述1.、家庭财务系统功能实现家庭财务的添加、显示、查询、修改、删除和统计功能二、界面设计3收入罰里支岀菅理6.7_Q.9.10.计 _11-丘7T所有记录 认统怜圧瞰入註总支岀吐返出系统菜单:1。添加收入2. 显示收入3. 查询收入4. 修改收入5. 删除收入6. 添加支出7. 显示支出&查询支出9. 修改支出10。删除支出11。显示所有记录12。统计总收入和总支出0.退出系统本软件界面友好,不难操作,每一步执
2、行后都有提示语,只要按照提示一步一步执行就可以了。而且每执行完一个功能,都会进行清屏,跳出菜单页,这样一 方面防止函数执行页面过长,另一方面也方便你选择执行下个功能。模块化设计方案1、系统主要函数及功能1)#include stdio。h>/*l/0函数* /#in clude<stri ng.h>/*字符串函数*/#i nclude<stdlib.h> /*标准库函数* /#in cludemalloc 。 h > / *开辟结点 */# define NULL 0 /* 宏定义命令 */2) face()函数:菜单函数,函数返回值为整数,代表所选的菜单项
3、int face()3) init()函数:初始化函数,读取文件夹中信息到内存中,返回指向链表头的指针void init ()4) add ()函数:添加函数,参数为 1,添加收入;参数为0,添加支出void add(i nt a)5) judge()函数:判断函数,判断文件里有没有记录信息,有信息,返回 值为1;无信息,返回值为 0int judge()6) print ()函数:显示函数,参数为1,只显示收入;参数为0,只显示 输出;参数为2,即显示收入又显示输出void prin t(i nt a)7) search ()函数:查询函数,参数为1,查询收入;参数为 0,查询支出void
4、search ( int a)8 )modify ()函数:修改函数,参数为1,修改收入;参数为 0,修改支出void modify(i nt a)9) del ()函数:删除函数,参数为1,删除收入;参数为 0,删除支出void del (int a)10) count ()函数:计算函数,参数为1,只计算总收入;参数为0,只总计算输出;参数为2,即计算总收入又计算总输出void count (int a )11) save ()函数:保存函数,把内存中的信息读到文件夹中void save()2、主函数调用各功能函数流程图TMbi曲数:1gfibd EL eEt-lus耐埠、rnnniO)三
5、、数据结构描述# include<stdio.h ># include string。h>#include stdlib.h >#in clude<malloc.h>#define NULLO struct family_fi nan cial _;/创建结构体指针struct family_fi nancial *head; float in come=0,payout=0; int n=0;int face() /圭寸面函数void save ()/保存函数void init ()/初始化函数int judge ()/判断文件里有没有记录信息 void
6、print (int a)/显示记录void add(int a ) 添加int search(int a) /查询void del(int a)/ 删除void modify(int a ) 修改收入void count (int a) 计算金额main ()/以下是 main函数system (” color 7c ; ”)init();count (1);for (;)switch (face()case 1: add (1); break; /添加收入case 2: print(1) ;break;/显示收入case 3: search( 1);break ;/查询收入case 4:
7、modify ( 1); break; /修改收入case 5: del(1);break; / 删除收入case 6: add (0);break;添加支出case 7: print(0) ; break;显示支出case 8: search( 0); break ; /查询支出case 9: modify(O); break ;修改支出case 10: del ( 0);break ;/删除支出case 11: print ( 2); break; /显示所有记录case 12: count(2) ;break; /统计总收入和总支出nnn")case 0: printf(&qu
8、ot;nnntt再见,谢谢您的使用!exit(0) ; break;/退出系统save ();fflush (stdin);/*以保证调试输出可以在正确的时间输出*system("PAUSE");四、算法设计&=NULLFp*=rflTULy开肆节点8个人收集整理勿做商业用途这是悠第一次 使用该戟件&eaj(K,siz£af(s truct fan)ihr finin' ih 1 tn 1'=NTTIJ.开始J定义.p、屮hraid=prqonesrpqq11卄收心舉帥亠:9输人姓电、第-月' 日个人收集整理勿做商业用途1幵
9、始1定史fp开辟节点.J个人收集整理勿做商业用途找不到信息,(an_piiunj=i*j冋朗全斬曰期金额-本月总计收入本月总计败入*次知11modify修改函数个人收集整理勿做商业用途1Y屮11讥Q呗:加AB1C?I1CV1个人收集整理勿做商业用途氏删除函数::j=i i: m=i4倾第hflH I k=jseartli(l)+ 输入编号护a=twa J-htad尬綁班近加c聲轧R->monevi>;Qnf=jy/>uftam r-mon ev五、程序运行结果第一次使用尊勖的用户,这是您第一次使用该软件请按任意健绽续 - 第一次进入菜单页,选显示没有任何信息,无法姓续请开始添
10、加记录!请按任意躍瞬添加收入*家庭财务管理 奚 统*添加收入逗灵请输人姓名=Kuz iwc i 请输人:ZW1« 请输人月优;5请输入日期记请输入收入金埶:1恻请输人备注訂忝加成功PWWhWWM显示收入K H HM MW MK *KR弓管理系统 MMMMKMHMHM2010.4KULsaFC £L0G.Q&wla日案备请按任意健绽练查询收入期吊题汪庭次日粟*:2010.5.1 t xusivei:1060KM-H K rtStM-H-W rtT ?10j| 呂 r- J 11? PflCftX MH-fCSM K谓输人fi名:kuBlil溥输小年卅L 2B1B 请摘
11、丸月怕.b2H1D年§冃w.lr B4 ilUri.Mid100.00小th 本月 xzSei">渭按吐卸瞬绩-修改收入1EF宣財茎嘗理系*鳶"X卄“*“:音先辆人IrC隹9囲-亘询请输人牲名|« >年f浙 gain 试输人月悅5一-空触圧年5冃B WI4收A金颈iw«ee1HQ.HQ小th 本月Xtuiuvi其收人2M.M诸编i人1E确的蛙名I EH XUB 1 赫人正确帥年卅:2019 希諭证确的月估 瞬入正确的日串2 翔6人正确的换人金额I 1BH *""""#古咸助*十呈吞辰把匮摒伶凸
12、7 :.昱:】,舌删除收入种时孰lit制軽呈I7±n | 务管理紮纟克%轉W Hi曾f-靑気前人以T信息进齐登询i请输,入妊子I:请嗡入年份,£aiBi頁确人月信t脚1勺年5月B朋炊入金韻It2 AlE.as2.1 "ltW.HH小计=本月UEluci宾帧入:Me用0请输入怖藝删除的圧1是否喪确认刪删Ct: 1 Z 0) 1tl除成功是确轉择m?堡?上否添加支出X*t轉 HJCXXNX,廷财宅里乐* *« M K M WW X *恭加支出记录谨做扎琳名:xuziwei请输入月伽巧请输入日期:1 请揄扎支岀金颔;5陌请输入背注"请按任意键继续-显
13、示支出*糜.迂吋务菅理乗统* 出支I3SA.<期粛汪庭诙日备22010-5.1 邑 i xue iuei 麵:60-«0 汪主/查询支出竜囲时务管醴g知” 以下僧蛊品肝査爸7诘输人姓名13曰>谴緬扎年你2010请输人月饰MS期支出金瓢1,崂Bspi.m2. 156.00小涉本月 ma l<ucil共支岀耆"氛附话鶴E京健謎戏 修改支出H*iemfrSfr«»Mai号E 1!W WJCMW sch-mmKIX£ 3WE 儿WA年你氓输扎月吩;2>RL0冗iii金卽59.69小计:眾月XLUtlwi鼻克请詡.;止确的牲名 i
14、fifjjA正琨的弼:20i e诂陆人7確前月谕1 5 iffOA正離的日期.2 请输人正确的支出金轨50星舌賈胆殖毎修改t甩,"否八删除支出黑斡舜:| 录B財号营II备疙-1一先输A叹下忙息远彳亍査询请蚯入姓名;xumiu® 1 请端入旦怕:州讪 请编入月f知52FI1H三5月日朗1“2 二工、1 Z支出金额sn.fln5EL00小计诽月MMHlwi共支兰;诘输扎你薯田厭的編咼1是否要晞认刪除?【是! 1 r呑町12*删嗟成攻是吾要嗨y顶除f (是,"岳a)显示所有记录*家庭财务管理系统收人2010.&.1 xuziuei 1OB.O015 -iB i
15、2支t:xuziuei ;S0.E0谙按任意犍维续统计总收入和总支出庭财 务管丁里 系 纟奇HXmHKm总收人 260.00总支出:200.00口计总额;0 00请按任意键,.六、总结1、工作时间(5号黑色)初始化-1小时 添加-2分钟 判断一20分钟显示-2小时查询-3小时修改-3小时删除-3小时统计-30分钟 主函数-30分钟 保存一30分钟修改优化一20小时2、分工情况每位成员都先了代码,把相对好的版块选取,然后由组长拼接,把报告做出来3、心得体会看到课程设计要求的时候,大家在一起讨论了一下,看要怎么做,后来讨论出来的结果是:因 为每个人都有自己不同的想法,那不如就每个人做一份,这样也有
16、助于大家掌握这个课程所 需要的相关知识基本的课程要求达到之后,为了使课程设计更完善,我们上网找了相关课程 案例,但由于网上的程序所用到的知识点,不符合我们的要求,而且有部分是我们看不懂的知识点,查了相关资料之后还是无法彻底的理解,所以我们只能相互讨论自己完善程序,而放弃了在网上找的这个途径。在程序完成之后,因为这个程序的只能查询一个月的收入和支出情况,我们想要完善成能查找到任何时间段内的收入和支出情况。可是用户的输入顺序不一 定是完全按照时间顺序来的,所以要达到这个功能,首先得对个个结点内的信息根据时间顺 序进行排序,由于原先考虑到用户输入的时间可能不一定是整型,所以把时间设成了字符型,但要达
17、到排序的目的就得把时间改为整型。在考虑过相关要求和要达到的功能之后,就开始了编程。功能程序完成之后,把代码放到原先的代码之中,运行之后,发现在累加的结果上出现了问题,通过多次的查看代码和调试之后,发现问题还是没有彻底地解决,可是现在距离我们报告上交的时间已经不远了考虑到时间的问题,我们决定放弃这个功能,等把报告交了之后,再继续修改代码, 以达到这个功能.个人收集整理,勿做商业用途文档为个人收集整理,来源于 网络通过这次的课程设计:觉得在修改代码方面,我们有很多不足,希望在以后通过不断地写代码的过程中,能提高修改和完善代码的水平。要重视团队合作,每个人都有自己不同的 想法,把大家好的想法拼在一起
18、,就会出来一个好的作品。附页(源代码附加注释)#inelude stdio。h>#include<string 。 h># include<stdlib 。 h># in elude malloc。 h># define NULLOstruct family_fi nan cial/删除和修改时的编,1intnum;charyear10 ;表示年份charmon th10;/表示月份charday : 10;/表示日期charname20;家庭成员float money;intz;charevent60 ;struct family_financial衣 n
19、e/表示本次金额/判断收入还是支出收支备注(t;/创建结构体指针struct family_fi nancial *head;float i ncome=0,payout=0;int n=0 ;int face ()/圭寸面函数int c;system (”cis");printf ("tn");printf (” t ttt 收入管理n");prin tf("t ttt 1.添加收入n”);printf ("t ttt 2.显示收入n”);prin tf("t t欢tt 3。查询收入n”);printf ("t
20、t迎tt 4.修改收入n”);printf(” t t进tt 5。删除收入n”);printf(” t t入n ”);printf ("t t家n");printf ("t t庭t支出管理n");printf(” t t财tt 6.添加支出n");printf ("t t务tt 7。显示支出n");printf (” t t管tt 8.查询支出n");printf (” t t理tt 9.修改支出n ");printf ("t t系tt10.删除支出n");prin tf("
21、t t统n”);prin tf("tn");printf (” t ttt 总计n”);printf (” t ttt11。显示所有记录n ”);printf (” t ttt12。统计总收入和总支出n”);printf(” tn");printf (” t ttt 0.退出系统n ");prin tf("tn");do printf( ”'nt请选择菜单项(0 12):”);/*提示输入选项* /scanf("%d" , &c);/ *输入选择项*/ while (c 0|c>12);/*选
22、择项不在 08之间的显示重新输* /system( ”cls ”);prin tf("nn* * * * *家庭财务管理系统* * *nn” );return c; / 臥:返回主程序,根据选择的数值调用相应的函数*/void save()/保存函数struct family_financial衣 fam_p;FILE * fp;fp=fopen( ” cwglxt, "wb");if (fp ! =NULL)for(fam_p=head;fam_p!=NULL ; fam_p=fam_p- > next)fwrite(fam_p,sizeof ( stru
23、ct family_financial ) ,1, fp);fclose(fp);void init ()初始化函数struct family_financial *pq;FILE * fp;fp=fopen("cwgl。txt" , ” rb ” );if (fp=NULL )printf (” nnnt尊敬的用户,这是您第一次使用该软件nn");system("PAUSE ” ;if (fp ! =NULL)while(p=(struct family_financial *) malloc(sizeof (struct family_financi
24、al) ) ,fread(p,sizeof(struct family_financial) , 1, fp)! =NULL)if(n=0 )head=p;elseq > next=p;q=p;n+;int judge () 判断文件里有没有记录信息 struct family_financial* fam_p, *q;for(fam_p=head;fam_p!=NULL;fam_p=fam_p > next)if (fam_p=NULL )return 0;elsereturn 1;void print (int a)/显示记录struct family_financial *f
25、am_p ,* q;int i=1 , j=0, d;d=judge();if (d=0)printf("nnt没有任何信息,无法继续.。.请开始添加记录!nnn");elseif(a=1 | | a=2)printf (” nt 收入:n");for (fam_p=head;fam_p!=NULL;fam_p=fam_p >next)if (fam_p_>z=1)printf ("ntt%d. 日期:s. % s。%s", i, fam_p->year, fam_p->month,fam_p>day);print
26、f("ntt 家庭成员: s”,fam_p- > name);printf( ” ntt 本次金额:。2f", fam_p->money);printf (” ntt 备 注:s” ,fam_p->event);printf( nntt_-n");i+;j+ ;if (a=0 | | a=2)printf("nnt支出:n” );for (fam_p=head;fam_p!=NULL ; fam_p=fam_p >next)if (fam_p->z=0)printf("ntt %d。 日 期: s.%s.%s&qu
27、ot;, i,fam_p->year, fam_p-> month , fam_p- > day);printf ("ntt家庭成员:%s",fam_p > name);printf (” ntt 本次金额:。2f",fam_p->money);printf("ntt备 注:s”,fam_p- > event);printf( n”tt- -_ - -_-_-n");i+ ; j+;if(j=0 )printf ("nnttt没有找到任何信息,无法输出!nn");void add(int
28、a)添加struct family_fi nan cial *fam_p;fam_p=(struct family_financial*) malloc(sizeof(struct family_financial )if (a=1)printf (” nt添加收入记录n” );elseprintf( ” nt添加支出记录n");printf ("nt 请输入姓名:”);scanf(” s", fam_p->name);printf ("nt请输入年份:”);scanf (” s ”,fam_>year);printf ("nt请输
29、入月份:”);scanf("% s”,fam_>month);prin tf("nt请输入日期:”);scanf ("%s", fam_p- > day);if (a=1)prin tf("nt请输入收入金额:”;scanf (” % f", & fam_p->money );income=income+fam_p > money;fam_p >z=1 ;elseprintf ("nt请输入支出金额:”);scanf (" %f' & fam_p > mo
30、ney);payout=payout+fam_p >mon ey;fam_p >z=0;printf( ” nt请输入备注:”);scanf( % s ” ,fam_p vent);fam_p >n ext=head;head=fam_p ;n+ ;printf (” ntt添 力口 成 功 nn ”);save ();int search(int a) /查询struct family_financial衣 fam_p, *q;int i , k=O,d;float sum=0 ;char pyear10 , pmonth1O,pname20 ;d=judge ();if(
31、d=0 )printf("nnt没有任何信息,无法继续。请开始添加记录!nnn");elseprintf ("nt请先输入以下信息进行查询 nn”);printf (” nt 请输入姓名:”);scanf( f'%s ”,pnaam;printf (” nt 请输入年份:”);scanf(“ s",pyear);printf("nt 请输入月份:”);scanf(” s ”,pmonth);printf ("nt - % s 年% s 月 n", pyear,pm on th);if (a=1)printf(&quo
32、t;ntt日 期tt 收入金额”);for (i=0, fam_p=head;fam_p!=NULL ; q=fam_p , fam_p=fam_p- > next)fam_p- > num=1;if (strcmp (pyear,fam_p- > year) =0&&strcmp(pmonth,fam_p > month) =0 && strcmp(pname, fam_p->name)=0& & fam_p>z=1)sum=sum+fam_p->money ;i+;k+;fam_p >num=i
33、 ;prin tf("nt %d、% s 日 tt %.2f ”,i, fam_p- > day, fam_p >mo ney);printf (” nntttt 小计:本月 %s 共收入:% .2fnn" , q >name, sum);if (a=0)printf("ntt日 期 tt 支出金额”);for (i=0, fam_p=head ; fam_p! =NULL;q=fam_p , fam_p=fam_p- > next)fam_p->num=0;if(strcmp(pyear,fam_p >year) =0&
34、;&strcmp(pmonth , fam_p > month)=0 & & strcmp(pname,fam_p >name) =0& & fam_p > z=0)sum=sum+fam_p > money;i+ ; k+;fam_p->num=i ;printf("nt%d、 s 日 tt %.2f" , i,fam_p >day,fam_p > money);printf(” nntttt 小计:本月 %s 共支出:。2fnn",q- > name,sum);if(i=0
35、 )system ("cls");prin tf("nn* * * * * * 家庭财务管理系统 * * *nn ");printf( ” nnttt找不到您要的信息,无法输出!nn");return k;void del(int a ) 删除struct family_financial *fam_p,衣 q;int i , j=1,k , m;if(a=1 )k=search (1);elsek=search (0);if (k!=0)while(j!=0)printf("nt请输入你要删除的编号:");scanf (&
36、quot;% d” & i);printf ("nnt是否要确认删除?(是:1 /否:0)");scanf (” d”,& m);if (m=1 )for(q=fam_p=head ; fam_p! =NULL;q=fam_p,fam_p=fam_p- > next)if(fam_p->num=i)if (a=1)in come=in come fam_p-> money ;elsepayout=payout+fam_p-> mon ey;if (fam_p=q )head=q->n ext;elseq->next=fam
37、_p > next;free(fam_p);fam_p >num=0;save (); printf (” ntt删除成功”);printf("nnt是否要继续选择删除 ?(是:1 /否:0):"); scanf (” d",&j);void modify (int a) /修改收入struct family_fi nan cial *fam_p ;int i,j=1 , k;if (a=1)k=search (1);elsek=search(0);if(k!=0 )while(j ! =0)printf (” n请输入你要修改的编号:”);s
38、canf("%d", & i);for(fam_p=head;fam_p ! =NULL ; fam_p=fam_p >next)if(fam_p- > num=i)if (a=1)income=income-fam_p->money ;elsepayout=payout+fam_p > money;printf (” nt请修改记录nn ”);prin tf("nt请输入正确的姓名:”);scanf ("%s",fam_p >name);printf ("nt 请输入正确的年份:”);scanf( % s ”,fam_>year);printf (" nt请输入正确的月份:”);scanf (” % s ”,fam_p > month);printf(" nt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法务合规监督绩效评定表
- 提出物流费用争议函(3篇)范文
- 知识管理体系建设提升信息利用效率方案
- 运输司机货物运输效率绩效衡量表
- 媒体传播融合时代的策略与实践报告
- 小学主题班会课件:智慧创新科技梦想
- 企业品牌策划定位分析与传播方案指导书
- 客户场景服务流程规范指导书
- 小学主题班会课件:梦想开启与勇敢追梦
- 黑龙江省六校2025-2026学年高二下学期7月期末考试生物试题(文字版含答案)
- (正式版)DB50∕T 1915-2025 《电动重型货车大功率充电站建设技术规范》
- GB/T 14977-2025热轧钢板表面质量的一般要求
- 10S505 柔性接口给水管道支墩
- HXD2B型电力机车操纵方法
- JJG 196-2006常用玻璃量器
- GB/T 9126-2008管法兰用非金属平垫片尺寸
- FZ/T 73044-2012针织配饰品
- FZ/T 60027-2018缝纫线可缝性测定方法
- 吴晓林:结构依然有效:迈向政治社会研究的“结构-过程”分析范式
- 如家酒店员工手册
- 沪粤版九年级物理上册单元测试题全套及答案
评论
0/150
提交评论