资源描述
沈 阳 工 程 学 院信 息 学 院C语言程序设计实践课 程 设 计设计题目: 个人记帐管理 系 别 物联网工程 班级 学生姓名 学 号 2016319119 指导教师 职称 副教授/讲师 起止日期: 2016年12月16日起至 2017年01月06日止沈 阳 工 程 学 院 信 息 学 院 C语言程序设计实践 课程设计成绩评定表系(部): 班级: 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以8) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以4)分加权分合计评 阅 教 师 签 名: 年 月 日答 辩 小 组 评 审 意 见评价内容具 体 要 求权重评 分加权分学生汇报汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。0.55432答 辩思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。0.55432答辩小组评审成绩(加权分合计乘以8)分加权分合计答辩小组教师签名: 年 月 日课 程 设 计 总 评 成 绩分沈 阳 工 程 学 院 信 息 学 院 C语言程序设计实践 课程设计成绩评定表系(部): 班级: 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以8) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以4)分加权分合计评 阅 教 师 签 名: 年 月 日答 辩 小 组 评 审 意 见评价内容具 体 要 求权重评 分加权分学生汇报汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映了所完成任务的全部内容;时间符合要求。0.55432答 辩思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。0.55432答辩小组评审成绩(加权分合计乘以8)分加权分合计答辩小组教师签名: 年 月 日课 程 设 计 总 评 成 绩分沈阳工程学院信息学院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第1天进行设计准备,阅读资料,分析设计任务书,明确设计要求、内容和步骤2第2天需求分析3第3天概要设计4第4-5天详细设计5第58天编码、调试6第9-10天程序答辩,撰写课程设计报告六、主要参考资料(文献)1谭浩强.C程序设计(第三版).北京: 清华大学出版社.20062陈天洲.C语言高级程序设计. 北京:人民邮电出版社.2002 3杨旭.C语言程序设计案例教程.北京: 人民邮电出版社.20054郭翠英.程序设计案例经典.中国水利电力出版社.20045谭浩强.程序设计基础.北京:清华大学出版社.20046张翔.C语言函数大全 电子工业出版社.20057王为青.C语言高级编程及实例剖析.北京:人民邮电出版社.2008.028徐慧.C语言实例解析精粹.北京:人民邮电出版社.2006.049姚大鹏 栾好利 张翼英 等编著.C语言程序设计教程习题与上机实训指导.中国水利水电出版社.2005课 程 设 计 任 务 分 工组长姓名张峻铭题目个人记帐管理项目组成员个人任务描述自我评定录入功能的设计和储存功能设计和排序功能的设计以及删除功能的设计优秀主页面的设计和查询功能的设计和修改功能设计以及制作world文档良好目 录第1章 绪 论1第2章 系统功能分析22.1 功能22.2系统功能需求2第3章 总体设计33.1 系统设计33.2 分块设计31)菜单32)录入功能设计43 ) 存储功能设计54)查看功能设计55)修改功能设计76)查询功能设计87 ) 排序功能设计108)删除功能设计12第4章 调试结果和设计分析144.1 主页面144.2 录入数据144.3 查看数据154.4 修改数据154.5 查询数据164.6 排序系统174.7 删除系统17结 论18致 谢19参考文献20程序21 第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(item6 | itemmonth,&newI-spxf,&newI-fzfy,&newI-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(无法找到文件:%sn,FilePath1); return ;/返回主函数 fp2=fopen(FilePath2,wt+); if(fp2=NULL) printf(无法创建文件:%sn,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 %8dn,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 %8dn,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(无法找到文件:%sn,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; else return NotFound; 7 ) 排序功能设计void paixu(Yyy *a) int i=0,j=0,flag=0,t; pType px8=0,0; char str810=记录月份,食品消费,房租费用,子女费用,水电费用,医疗费用,储蓄费用,本月收入; for(;imonth; px1.data=a-spxf; px2.data=a-fzfy; px3.data=a-znjy; px4.data=a-sdfy; px5.data=a-ylfy; px6.data=a-cxfy; px7.data=a-srfy; for(i=1;i8;i+) for(j=0;jpxj+1.data) t=pxj.data; pxj.data=pxj+1.data; pxj+1.data=t; t=pxj.no; pxj.no=pxj+1.no; pxj+1.no=t; printf(n); for(i=0;i8;i+) printf( %s,strpxi.no); printf(n- n); for(i=0;imonth!=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 删除系统结 论在这次的课程设计,我发现了自己还有很多的不足,在这方面还有很多的不会。还需要更加深入的学习。通过此次的课程设计,在大一C语言学习的基础上,我较为深入的掌握了数据结构与算法的设计方法,具备了一定独立分析和设计能力和初步掌握软件开发过程的问题分析,系统设计,程序编码,测试等基本方法和技能。致 谢感谢队友的帮助,在我一些不懂的地方给予了我及时的帮助。感谢老师的教导,正在有些方面自己和同组人还有很多的不会,不过经过老师的辅导还是成功编写了出来。参考文献程序#include #include #include #include /文件保存路径 #define FilePath1 Myyyy.dat #define FilePath2 Myyyy.txt /查询用声明 #define Status int #define OK 1 #define Error 0 #define NotFound 2 typedef struct int month;/月份 int spxf;/食品消费 int fzfy;/房租费用 int znjy;/子女教育费用 int sdfy;/水电费用 int ylfy;/医疗费用 int cxfy;/储蓄费用 int srfy;/收入费用 Yyy; typedef struct / 查询用自定义数据类型 int no; int data; pType;void menu(void); /菜单 void input(Yyy *newI); /接收键盘输入 void writeyyy(Yyy *newI);/向文件内写入内容 void changeFormat(void );/将dat格式文件转换为txt文件 Status search(Yyy *a);/查询函数返回查询的结果及查询的状态 void paixu(Yyy *a);/对查询据结果排序 void modify(Yyy *a,int mon);/修改数据 void delRecord(int mon);/删除数据 void main() while(1) menu(); 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(item6 | itemmonth; if (item!=OK) printf(n没有符合条件的记录!n); else printf(n记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 n);printf(- n);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); input(a); modify(a,mon); break; /查询数据 case 4: item=search(a); if (item!=OK) printf(n没有符合条件的记录!n); else printf(n记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入n);printf(- n);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); break; /排序数据 case 5: item=search(a); if (item!=OK) printf(n没有符合条件的记录!n); else paixu(a); break; /删除数据 case 6: item=search(a); mon=a-month; if (item!=OK) printf(n没有符合条件的记录!n); else printf(n记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入n);printf(- n);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); delRecord(mon); break; free(a);/释放内存空间 void input(Yyy *newI) printf(n依次输入数据:n(本月月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 收入费用)n);scanf(%d%d%d%d%d%d%d%d,&newI-month,&newI-spxf,&newI-fzfy,&newI-znjy,&newI-sdfy,&newI-ylfy,&newI-cxfy,&newI-srfy); fflush(stdin); void writeyyy(Yyy *newI) FILE *fp; fp=fopen(FilePath1,ab+); if(fp=NULL) printf(无法创建文件:%s,FilePath1); exit(1); fwrite(newI,sizeof(Yyy),1,fp); fclose(fp); printf(数据录入成功!n); void changeFormat(void) /暂时只能操作一行文件有待改进 FILE *fp1,*fp2; Yyy *a; a=(Yyy *)malloc(sizeof(Yyy); fp1=fopen(FilePath1,rb+); if(fp1=NULL) printf(无法找到文件:%sn,FilePath1); return ;/返回主函数 fp2=fopen(FilePath2,wt+); if(fp2=NULL) printf(无法创建文件:%sn,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 %8dn,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 %8dn,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);/删除文本文件文件 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(无法找到文件:%sn,FilePath1); return Error; /返回主函数 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 OK; else return NotFound; void paixu(Yyy *a) int i=0,j=0,flag=0,t; pType px8=0; char str810=记录月份,食品消费,房租费用,子女费用,水电费用,医疗费用,储蓄费用,本月收入; for(;imonth; px1.data=a-spxf; px2.data=a-fzfy; px3.data=a-znjy; px4.data=a-sdfy; px5.data=a-ylfy; px6.data=a-cxfy; px7.data=a-srfy; for(i=1;i8;i+) for(j=0;jpxj+1.data) t=pxj.data; pxj.data=pxj+1.data; pxj+1.data=t; t=pxj.no; pxj.no=pxj+1.no; pxj+1.no=t; printf(n); for(i=0;i8;i+) printf( %s,strpxi.no); printf(n- n); for(i=0;imonth=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(); 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 );
展开阅读全文