当前位置:文档之家› 个人记账管理

个人记账管理

沈阳工程学院信息学院C语言程序设计实践课程设计设计题目:个人记帐管理系别物联网工程班级学生姓名学号 2016319119指导教师职称副教授/讲师起止日期: 2016年12月16日起——至 2017年01月06日止C语言程序设计实践课程设计成绩评定表系(部):班级:学生姓名:C语言程序设计实践课程设计成绩评定表系(部):班级:学生姓名:沈阳工程学院信息学院《C语言程序设计实践》课程设计任务书课程设计题目:个人记帐管理系别物联网工程班级物联网161学生姓名学号 2指导教师职称副教授、讲师课程设计进行地点:实训楼F六楼机房任务下达时间:2016年12 月14 日起止日期:2016年12月16日起——至2017年01月06日止系主任2016年12 月09 日批准一、课程设计的原始资料及依据查阅有关资料,进一步理解面向对象程序设计的思想,并编写一个简单的应用程序系统。

通过本设计可以加深理解使用结构化程序设计思想开发一个系统的方法,提高分析问题、解决问题和实际动手的能力。

二、课程设计主要内容及要求设计内容:1.记账信息:月份、食品消费、房租费用、子女教育费、用水电费用、医疗费用、储蓄费用、收入费用。

2.功能:分别可添加、修改、查询、排序、删除。

3.保存。

设计要求:1. 要求利用结构化的方法完成系统的设计;2. 要求在设计的过程中建立清晰度层次结构;3. 设计功能满足要求、易于操作的友好界面;4. 界面中需有菜单;5. 在系统的设计中,至少要建立5个以上独立函数;6. 要求操作简单,用户界面友好。

7. 运行程序,检查结果是否和理论值一致。

8. 在完成该题目时,小组人员进行详细的任务分工,并要在报告中体现出来。

三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。

一般不应少于3000字。

2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。

应做到文理通顺,内容正确完整,书写工整,装订整齐。

3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。

4.课程设计说明书手写或打印均可。

手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。

文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。

5.课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。

四、设计完成后应提交成果的种类、数量、质量等方面的要求1.完成“任务书”中指定的功能,运行结果正确。

2.课程设计说明书。

五、时间进度安排六、主要参考资料(文献)[1]谭浩强.《C程序设计》(第三版).北京: 清华大学出版社.2006[2]陈天洲.《C语言高级程序设计》. 北京:人民邮电出版社.2002[3]杨旭.《C语言程序设计案例教程》.北京: 人民邮电出版社.2005[4]郭翠英.《程序设计案例经典》.中国水利电力出版社.2004[5]谭浩强.《程序设计基础》.北京:清华大学出版社.2004[6]张翔.《C语言函数大全》电子工业出版社.2005[7]王为青.《C语言高级编程及实例剖析》.北京:人民邮电出版社.2008.02[8]徐慧.《C语言实例解析精粹》.北京:人民邮电出版社.2006.04[9]姚大鹏栾好利张翼英等编著.《C语言程序设计教程习题与上机实训指导》.中国水利水电出版社.2005课程设计任务分工目录第1章绪论 (1)第2章系统功能分析 (2)2.1 功能 (2)2.2系统功能需求 (2)第3章总体设计 (3)3.1 系统设计 (3)3.2 分块设计 (4)1)菜单 (4)2)录入功能设计 (5)3 ) 存储功能设计 (6)4)查看功能设计 (7)5)修改功能设计 (10)6)查询功能设计 (12)7 ) 排序功能设计 (14)8)删除功能设计 (16)第4章调试结果和设计分析 (17)4.1 主页面 (17)4.2 录入数据 (17)4.3 查看数据 (18)4.4 修改数据 (18)4.5 查询数据 (19)4.6 排序系统 (20)4.7 删除系统 (20)结论 (21)致谢 (22)参考文献 (23)程序 (24)第1章绪论程序设计过程有如解决一个实际问题,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、指针、链表、命令、函数,然后确定处理过程--算法。

可得最后结果这次我们组要解决的实际问题是个人账簿管理系统的设计我们将严格按照程序设计的过程来完成这一个课题的设计第2章系统功能分析2.1 功能个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。

进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。

2.2系统功能需求1.文件操作功能:自动加载和保存数据文件。

2.数据输入功能:可以按提示录入各项数据。

3.数据修改功能:可以按提示修改各项数据。

4.查询功能:可按月份、食品消费进行特定查询,及显示全部数据。

5.排序功能:完成对每月开支的排序。

6.删除功能:可以按提示删除一些数据。

7.转码功能:我们对文件用的是dat的形式,设计转码功能,将它转为txt形式。

第3章总体设计3.1 系统设计按系统分析的功能要求将系统划分为以下几个主要功能模块:结构图:3.2 分块设计1)菜单void menu(void){ int item;int mon;Yyy *a;a=(Yyy *)malloc(sizeof(Yyy));do{printf("…………个人帐簿管理系统设计…………\n"); printf("1.录入数据\n");printf("2.查看数据\n");printf("3.修改数据\n");printf("4.查询数据\n");printf("5.排序数据\n");printf("6.删除数据\n");printf("0.退出系统\n");printf("请输入要进行的操作: " );scanf("%d",&item);}while(item>6 || item<-1); }2)录入功能设计void input(Yyy *newI){printf("\n依次输入数据:\n(本月月份食品消费房租费用子女费用水电费用医疗费用储蓄费用收入费用)\n");scanf("%d%d%d%d%d%d%d%d",&newI->month,&newI->spxf,&newI->fzfy,&new I->znjy,&newI->sdfy,&newI->ylfy,&newI->cxfy,&newI->srfy);fflush(stdin);}3 ) 存储功能设计void writeyyy(Yyy *newI){FILE *fp;fp=fopen(FilePath1,"ab+");if(fp==NULL){printf("无法创建文件:%s",FilePath1); exit(0);}fwrite(newI,sizeof(Yyy),1,fp);fclose(fp);printf("数据录入成功!\n");}4)查看功能设计void changeFormat(void) //暂时只能操作一行文件有待改进{FILE *fp1,*fp2;Yyy *a;a=(Yyy *)malloc(sizeof(Yyy));fp1=fopen(FilePath1,"rb+");if(fp1==NULL){printf("无法找到文件:%s\n",FilePath1);return ;//返回主函数}fp2=fopen(FilePath2,"wt+");if(fp2==NULL){printf("无法创建文件:%s\n",FilePath2);return ;//返回主函数}fputs(" \n……………………………………个人帐簿管理系统……………………………………\n",fp2);fputs("记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n",fp2);fputs("----------------------------------------------------------------------- \n",fp2);printf("\n记录月份食品消费房租费用子女费用水电费用医疗费用储蓄费用本月收入\n");printf("----------------------------------------------------------------------- \n");rewind(fp1);fread(a,sizeof(Yyy),1,fp1);while(!feof(fp1)){printf("%7d %8d %8d %8d %8d %8d %8d %8d\n",a->month,a->spxf,a->fzfy,a ->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy);fprintf(fp2,"%7d %8d %8d %8d %8d %8d %8d %8d\n",a->month,a->spxf,a ->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy);fread(a,sizeof(Yyy),1,fp1);}fputs("----------------------------------------------------------------------- \n",fp2);fputs("关闭本程序继续原程序!\n",fp2);fclose(fp1);fclose(fp2);system(FilePath2); //调用打开转换的文本文件 remove(FilePath2);//删除文本文件文件}5)修改功能设计void modify(Yyy *a,int mon){ FILE *fp1,*fp2;Yyy *b;b=(Yyy *)malloc(sizeof(Yyy));fp1=fopen(FilePath1,"rt");fp2=fopen("temp.dat","wt+");rewind(fp1);fread(b,sizeof(Yyy),1,fp1);while (!feof(fp1)){ if(b->month==mon){ fwrite(a,sizeof(Yyy),1,fp2); } else{ fwrite(b,sizeof(Yyy),1,fp2); }fread(b,sizeof(Yyy),1,fp1);}fclose(fp1);fclose(fp2);remove(FilePath1);//删除源文件rename("temp.dat",FilePath1);//重命名中间文件 printf("修改数据成功!\n" );changeFormat(); }6)查询功能设计Status search(Yyy *a){ FILE *fp1;int mon;int isfound=0;printf("请正确输入要查询的月份:");scanf("%d",&mon);fflush(stdin);fp1=fopen(FilePath1,"rb+");if(fp1==NULL){ printf("无法找到文件:%s\n",FilePath1);return 0; //返回主函数}rewind(fp1);fread(a,sizeof(Yyy),1,fp1);while(!feof(fp1)){if(a->month==mon){ isfound=1;break; }else{ isfound=0; } fread(a,sizeof(Yyy),1,fp1); }fclose(fp1);if(isfound)return 1;elsereturn NotFound;}7 ) 排序功能设计void paixu(Yyy *a){int i=0,j=0,flag=0,t;pType px[8]={{0,0}};char str[8][10]={"记录月份","食品消费","房租费用","子女费用","水电费用","医疗费用","储蓄费用","本月收入"};for(;i<8;i++)px[i].no=i;px[0].data=a->month;px[1].data=a->spxf;px[2].data=a->fzfy;px[3].data=a->znjy;px[4].data=a->sdfy;px[5].data=a->ylfy;px[6].data=a->cxfy;px[7].data=a->srfy;for(i=1;i<8;i++)for(j=0;j<8-i;j++)if(px[j].data>px[j+1].data){t=px[j].data;px[j].data=px[j+1].data;px[j+1].data=t;t=px[j].no;px[j].no=px[j+1].no;px[j+1].no=t;}printf("\n");for(i=0;i<8;i++){ printf(" %s",str[px[i].no]);}printf("\n----------------------------------------------------------------------- \n");for(i=0;i<8;i++){printf("%8d ",px[i].data);}printf("\n");}8)删除功能设计void delRecord(int mon){ FILE *fp1,*fp2;Yyy *b;b=(Yyy *)malloc(sizeof(Yyy));fp1=fopen(FilePath1,"rt");fp2=fopen("temp.dat","wt+");rewind(fp1);fread(b,sizeof(Yyy),1,fp1);while (!feof(fp1)){ if(b->month!=mon)fwrite(b,sizeof(Yyy),1,fp2);fread(b,sizeof(Yyy),1,fp1);}fclose(fp1);fclose(fp2);remove(FilePath1);//删除源文件rename("temp.dat",FilePath1);//重命名中间文件printf("删除数据成功!\n" );}第4章调试结果和设计分析4.1 主页面4.2 录入数据4.3 查看数据4.4 修改数据4.5 查询数据4.6 排序系统4.7 删除系统结论在这次的课程设计,我发现了自己还有很多的不足,在这方面还有很多的不会。

相关主题