个人账簿管理系统.docx_第1页
个人账簿管理系统.docx_第2页
个人账簿管理系统.docx_第3页
个人账簿管理系统.docx_第4页
个人账簿管理系统.docx_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #include #include /文件保存路径#define FilePath1 Myfile.dat#define FilePath2 Myfile.txt/查询用声明#define Ok 1 /宏定义#define Error 0 /宏定义#define Notfind 2 /宏定义/定义个人基本信息结构体变量/c代表const费用/ele代表electricity电typedef struct int month;/定义月份int food_c;/定义食品费用int rent_c;/定义房租费用int children_c;/定义子女费用int water_ele_c;/定义水电费用int hospital_c;/定义医疗费用int carring_c;/定义存储费用int income_c;/定义收入费用Infor;typedef struct/定义链接查询的结构体变量int number;int data;Type;int mode;/定义字符型(选择的操作模式)void Show_open_picture(void); /声明显示开机画面函数void Show_personal_infomation(void); /声明个人管理系统功能提示及操作函数void Show_close_infomation(void); /声明关闭个人管理系统函数void Input(Infor *); /声明接收按键输入的数据函数void WriteInfor(Infor *); /声明向文件内写入内容的函数void ChangeFormat(void); /声明将dat格式文件转换为txt文件int Search(Infor *); /声明查询函数(返回查询的结果及状态)void Sort(Infor *); /声明排序函数void Sum_const(Infor *); /声明消费之和函数void Modify(Infor *, int); /声明修改数据函数void Delete(int); /声明删除数据函数void Search_one(Infor *); /声明收缩单个错误函数int main(void)/*主函数*/Show_open_picture();/*调用开机画面函数*/printf(请按Enter建进入个人管理系统-);getchar();system(cls);/*调用系统清屏函数*/while(1)Show_personal_infomation();/*调用个人管系统功能提示及操作函数*/return 0;void Show_open_picture(void)/*显示开机画面*/system(color d);printf(n);printf(*tttttt*n);printf(*tt欢迎使用个人管理系统tt*n);printf(*tttttt*n);printf(n);printf(*tt个人管理系统设计人基本信息t*n);printf(*tt河南科技学院新科学院tt*n);printf(*tt信工系-计科111班tt*n);printf(*tt1、杨帅tttt*n);printf(*tt2、宋晓东ttt*n);printf(*tt3、张卫东ttt*n);printf(n);printf(nn);void Show_close_infomation(void)/*关闭个人管理系统*/system(cls);/*调用系统清屏函数*/system(color a);printf(t请输入Enter键关闭个人管理系统ttn);getchar();printf(n);printf(n);printf(*tttttt*n);printf(*tttttt*n);printf(*tttttt*n);printf(*tt欢迎下次使用个人管理系统t*n);printf(*tttttt*n);printf(*tttttt*n);printf(*tttttt*n);printf(n);printf(nn);exit(0);void Show_personal_infomation(void)/*个人管理系统功能提示及操作*/int mode;/定义字符型(选择的操作模式)int mon;/定义整形int flag;/标记错与与否int choice;/修改的模式Infor *data;data = (Infor *)malloc(sizeof(Infor);dosystem(cls);/*调用系统清屏函数*/system(color b);printf(n);printf(*tttttt*n);printf(*t 欢迎进入个人账簿管理系统 t*n);printf(*tttttt*n);printf(n);printf(n);printf(*t1、输入数据tt2、查看数据t*n);printf(*t3、修改数据tt4、查询数据t*n);printf(*t5、排序数据tt6、删除数据t*n);printf(*t7、求和数据tt0、退出系统t*n);printf(n);printf(nn);printf(tt请输入要进行的操作:n);scanf(%d, &mode);while(mode 8 | mode month;/赋值if(mode != Ok) printf(n没有符合条件的记录n);elseprintf(n记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入n);/输出printf(n);printf(%7d %8d %8d %8d %8d %8d %8d %8dn, data-month, data-food_c, data-rent_c,data-children_c, data-water_ele_c, data-hospital_c, data-carring_c, data-income_c);printf(n);doprintf(请输入选择的模式:t(1):修改该所有的数据t(2) :修改单个数据n);scanf(%d, &choice);while(choice 3);switch(choice)case 1:doInput(data);printf(n输入数据是否成功!n如果成功请入 0 (退出)!n如果失败请输入 1 (重新输入数据)!n);scanf(%d, &flag);printf(n);while(flag != 0);/调用输入数据函数Modify(data, mon);/调用修改数据函数break;case 2:doSearch_one(data);printf(n输入数据是否成功!n如果成功请入 0 (退出)!n如果失败请输入 1 (重新输入数据)!n);scanf(%d, &flag);printf(n);while(flag != 0);/调用输入数据函数Modify(data, mon);/调用修改数据函数break;system(pause); break; case 4:/4、查询数据system(color e);mode = Search(data);if(mode != Ok) printf(n没有符合条件的记录n);elseprintf(n记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 n);/输出printf(n);printf(%7d %8d %8d %8d %8d %8d %8d %8dn, data-month, data-food_c, data-rent_c,data-children_c, data-water_ele_c, data-hospital_c, data-carring_c, data-income_c);system(pause); break; case 5:/5、排序数据 system(color ff); mode = Search(data);/复制 if(mode != Ok) printf(n没有符合条件的记录!n); /判断输出 else Sort(data); /调用排序函数system(pause); break; case 6:/6、删除数据 system(color a); mode = Search(data);/复制 mon = data-month; /复制 if(mode != Ok) printf(n没有符合条件的记录!n); /判断输出 else printf(n记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 n);/输出printf(n);printf(%7d %8d %8d %8d %8d %8d %8d %8dn, data-month, data-food_c, data-rent_c,data-children_c, data-water_ele_c, data-hospital_c, data-carring_c, data-income_c);Delete(mon);/调用输入数据函数 system(pause); break;case 7:/7、求本月消费之和 system(color a); mode = Search(data);/赋值 if(mode != Ok) printf(n没有符合条件的记录!n); /判断输出 else Sum_const(data); system(pause); break;case 0:/0、退出系统getchar();/调用系统函数Show_close_infomation();/调用关机画面函数system(color c);break;free(data);/释放内存空间void Input(Infor *newI)/声明接收按键输入的数据函数doprintf(n记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 n);/输出scanf(%7d %8d %8d %8d %8d %8d %8d %8d, &newI-month, &newI-food_c, &newI-rent_c,&newI-children_c, &newI-water_ele_c, &newI-hospital_c, &newI-carring_c, &newI-income_c);fflush(stdin);/系统函数调用(即清理标准输入流,把多余的仍未被保存的数据丢掉)while(newI-month month 12);void WriteInfor(Infor *new1)/声明向文件内写入内容的函数FILE *fp;/定义指针fp = fopen(FilePath1, ab+);/打开或创建一个二进制文件,可读取或在文件的尾部添加数据if(fp = NULL)/判断文件是否为空printf(无法创建文件:%sn, FilePath1);exit(0);/从new1所指向的数据存储区获取数据,向fp所指向的文件写入数据,每次写sizeof(Infor)个字节,写入1次fwrite(new1, sizeof(Infor), 1, fp);/这里可以做特别处理可防止存在同一月份有2条以上的记录问题。fclose(fp);/关闭文件,避免内存泄露printf(数据存入文件成功!n);void ChangeFormat(void)/声明将dat格式文件转换为txt文件FILE *fp1, *fp2;/定义文件指针Infor *data; /定义结构指针data = (Infor *)malloc(sizeof(Infor);/开辟空间fp1 = fopen(FilePath1, rb+);/打开一个二进制文件,可读取或写入其中数据if(fp1 = NULL) printf(无法找到文件:%sn, FilePath2);/输出return;/返回主函数fp2 = fopen(FilePath2, wt+);if(fp2 = NULL)printf(无法创建文件:%sn, FilePath2);return;/返回主函数fputs(n个人账簿管理系统n, fp2);fputs(记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 n,fp2);printf(n记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入 n);/输出printf(n);/输出rewind(fp1);/函数调用(将文件内部的位置指针重新指向一个流数据流/文件)的开头/从fp1所指向的文件读取数据,每次读取sizeof(Infor)个字节,读取1次,将读取的数据存储到data所指向的数据存储区fread(data, sizeof(Infor), 1, fp1);/feof(stream)函数有两个返回值,如果遇到文件结束,函数返回值为非零值,否则为0while(!feof(fp1)printf(%7d %8d %8d %8d %8d %8d %8d %8dn, data-month, data-food_c, data-rent_c,data-children_c, data-water_ele_c, data-hospital_c, data-carring_c, data-income_c);/将数据写入fp2指向的文件fprintf(fp2, %7d %8d %8d %8d %8d %8d %8d %8dn, data-month, data-food_c, data-rent_c,data-children_c, data-water_ele_c, data-hospital_c, data-carring_c, data-income_c);fread(data, sizeof(Infor), 1, fp1);printf(n);fputs(关闭本程序继续原程序!n, fp2);fclose(fp1);/关闭文件fclose(fp2);/关闭文件remove(FilePath2);/删除文本文件 int Search(Infor *data)/声明查询函数(返回查询的结果及状态)FILE *fp1;/定义文件指针int mon, Find = 0;/定义整形数据printf(请输入要查询的月份:);scanf(%d, &mon);fflush(stdin);/清楚缓冲区fp1 = fopen(FilePath1, rb+);/打开一个二进制文件,可读取或写入其中数据if(fp1 = NULL)printf(无法找到文件:%sn, FilePath1);return Error;/返回函数rewind(fp1);/调用系统函数fread(data, sizeof(Infor), 1, fp1);while(!feof(fp1)/查询操作if(data-month = mon)Find = 1;/找到返回1break; /结束操作else Find = 0;/没找到返回0fread(data, sizeof(Infor), 1, fp1);fclose(fp1);/关闭文件if(Find) return Ok;else return Error;return Notfind;/*收缩单个错误*/void Search_one(Infor *data)Type Sort_info8 = 0;/初值赋值为0int num;char Str_info810 = 记录月份, 食品消费, 房租费用, 子女费用,水电费用, 医疗费用, 储蓄费用, 本月收入;printf(n);printf( 1 2 3 4 5 6 7 8n);printf(n);printf(记录月份 食品消费 房租费用 子女费用 水电费用 医疗费用 储蓄费用 本月收入n);/输出printf(nn);printf(请输入要修改的单个位置消费记录:);scanf(%d, &num);Sort_info0.data = data-month;Sort_info1.data = data-food_c;Sort_info2.data = data-rent_c;Sort_info3.data = data-children_c;Sort_info4.data = data-water_ele_c;Sort_info5.data = data-hospital_c;Sort_info6.data = data-carring_c;Sort_info7.data = data-income_c;Sort_infonum - 1.number = num - 1;printf(nn);printf(请输入要修改%s记录:, Str_infoSort_infonum - 1.number);scanf(%d, &Sort_infonum - 1.data);data-month = Sort_info0.data;data-food_c = Sort_info1.data;data-rent_c = Sort_info2.data;data-children_c = Sort_info3.data;data-water_ele_c = Sort_info4.data;data-hospital_c = Sort_info5.data;data-carring_c = Sort_info6.data;data-income_c = Sort_info7.data; void Sort(Infor *dat)/声明排序函数int i = 0, j = 0;/定义整形变量Type Sort_info8 = 0;/初值赋值为0int temp;/作为中间变量char Str_info810 = 记录月份, 食品消费, 房租费用, 子女费用,水电费用, 医疗费用, 储蓄费用, 本月收入;for(i = 0; i month;Sort_info1.data = dat-food_c;Sort_info2.data = dat-rent_c;Sort_info3.data = dat-children_c;Sort_info4.data = dat-water_ele_c;Sort_info5.data = dat-hospital_c;Sort_info6.data = dat-carring_c;Sort_info7.data = dat-income_c;for(i = 1; i 8; i+)/冒泡排序核心算法(由小到大排序)for(j = 0; j Sort_infoj + 1.data)/交换位置,temp作为中间变量temp = Sort_infoj.data;Sort_infoj.data = Sort_infoj + 1.data;Sort_infoj + 1.data = temp;temp = Sort_infoj.number;Sort_infoj.number = Sort_infoj + 1.number;Sort_infoj + 1.number = temp;printf(n);/输出for(i = 0; i 8; i+)printf(%s , Str_infoSort_infoi.number);printf(nn);for(i = 0; i 8; i+)printf(%6d , Sort_infoi.data);printf(n);void Sum_const(Infor *dat)/声明消费之和函数int i = 0, sum = 0;/定义整形变量Type Sort_info9 = 0;/初值赋值为0char Str_info910 = 记录月份, 食品消费, 房租费用, 子女费用,水电费用, 医疗费用, 储蓄费用, 本月收入, 月消费和;for(i = 0; i month;Sort_info1.data = dat-food_c;Sort_info2.data = dat-rent_c;Sort_info3.data = dat-children_c;Sort_info4.data = dat-water_ele_c;Sort_info5.data = d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论