C语言计费系统报告
物业费管理系统c语言程序设计报告
物业费管理系统C语言程序设计报告1. 系统概述物业费管理系统是一个基于C语言开发的简单管理系统,用于帮助物业公司管理各个小区的物业费用情况。
该系统包括物业费用录入、查询、修改和统计等功能,旨在提高物业管理的效率和准确性,降低管理成本。
2. 系统功能2.1 物业费用录入系统通过输入小区名称、业主姓名、缴费月份和金额等信息,将物业费用信息录入系统中,方便后续查询和统计。
2.2 物业费用查询用户可以通过输入小区名称或业主姓名,查询特定业主的物业费用情况,包括缴费月份和金额。
2.3 物业费用修改系统允许用户修改录入的物业费用信息,如更改缴费金额或月份。
2.4 物业费用统计系统可以对录入的物业费用信息进行统计分析,包括每个小区的总缴费金额、平均缴费金额以及最高/最低缴费金额等。
3. 系统设计3.1 数据结构系统采用链表数据结构来存储录入的物业费用信息,每个节点包含小区名称、业主姓名、缴费月份和金额等字段。
3.2 界面设计系统采用命令行界面,用户可以通过简单的指令进行录入、查询、修改和统计操作。
界面简洁明了,易于操作。
3.3 算法设计系统采用基本的搜索和排序算法来实现查询和统计功能,如线性搜索和快速排序等,保证系统的效率和准确性。
4. 系统实现系统基于C语言开发,利用结构体和指针等特性实现数据的存储和操作。
通过模块化设计,实现系统功能的独立性和可维护性。
5. 系统测试系统经过多次测试,确保录入、查询、修改和统计功能正常运行,无错误和异常情况。
6. 总结物业费管理系统是一个简单而实用的管理系统,可以有效帮助物业公司管理物业费用,提高管理效率和准确性。
系统具有良好的扩展性和可维护性,能够满足不同物业管理需求。
7. 参考文献暂无以上为物业费管理系统C语言程序设计报告内容,如有错误或不妥之处,欢迎指正。
C语言课程设计报告-高速公路收费系统
题目:高速公路计费系统设计功能:在某高速公路出口收费处,对三种类型的车辆计费,大型车每公里0。
5元,中型车每公里0。
4元,小型车每公里0。
3元,来车验条,乘公里数即得该收的款项。
在交班时要统计出总数。
分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2、完成最低要求:建立一个只有三个入口的计费系统,并能进行统计计算,打印出报表;3、进一步要求:完成任意多个入口的通用系统。
要求:1、用C语言实现程序设计;2、利用结构体数组实现信息的数据结构设计;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序加必要的注释。
总体设计1.本程序涉及的知识点变量的定义,输入输出函数、对文件的输入和输出和保存、for、switch、if等语句的使用,定义和使用结构体数组等等。
进入系统首页为主菜单,主菜单下分4个模块:模块1:录入车辆信息进入模块1后按提示要求录入车牌号码、时间、型号大小(用a、b、c分别表示大型、中型、小型)和入站口(1、2、3、4……表示不同入口站名称并分别对应不同公里路程数)。
模块2:查询车辆信息进入模块2后按提示要求录入所要查询的车牌号码,即可查询其进站入口,时间,及所需费用等信息模块3:车辆统计报表进入模块3后即可显示操作员之前录入的所有车辆的各个信息,并统计出车辆总数及应收总费用。
模块4:保存关闭系统进入模块4后系统自动保存所有车辆信息,并按提示可推出本系统。
流程图主函数:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define N 100#define M 4 //入口数量,可设置多个路口char a[]={20,30,40,50}; //路口1 :20公里,路口2 :30公里,路口3 :40公里, 路口4 :50公里char str[][3]={"k1","k2","k3","k4"}; //入口名称,分别对应上面数组的公里数FILE*fp;int count;void input();void cheak();void tongji();void read();void menu();void writefile();struct vehicle //车辆信息{char num[15];char time[6];char size[2];char road[3];float cost;}ve[N];void main(){read();while(1){menu();}}void read() //导入文件{char filename[20];if((fp=fopen("tql.txt","r"))==NULL){printf("无此文件,新建一个文件\n");printf("输入文件名,回车键结束:");scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("新建失败");exit(0);}else{printf("新建文件成功,按任意键返回主菜单");getchar();return;}}fseek(fp,0,2); // 文件内部指针退回到离文件结尾0位置,即指针指向文件内部末尾处if(ftell(fp)>0) // 使用fseek函数后再调用函数ftell()就能非常容易地确定文件的当前位置。
收费管理系统c语言课程设计
收费管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言在收费管理系统中的应用,掌握基本的数据结构(如数组、结构体)和文件操作相关知识。
2. 学会使用C语言编写程序,实现收费管理系统的基本功能,如用户注册、登录、费用查询、费用缴纳等。
3. 了解收费管理系统的设计思路和模块划分,掌握模块化编程的方法。
技能目标:1. 培养学生运用C语言解决实际问题的能力,提高编程实践技能。
2. 学会使用调试工具,能够自主调试程序,找出并修复错误。
3. 提高团队协作能力,学会与他人共同分析问题、设计解决方案。
情感态度价值观目标:1. 培养学生积极探究、勇于实践的精神,增强学习编程的兴趣。
2. 培养良好的编程习惯,注重代码规范和程序优化。
3. 增强学生的网络安全意识,认识到收费管理系统在实际应用中的重要性。
课程性质:本课程为实践性较强的课程,要求学生在掌握C语言基础知识的基础上,运用所学知识进行实际编程。
学生特点:学生已经具备一定的C语言基础,但实际编程经验不足,对收费管理系统这一实际应用场景较为陌生。
教学要求:注重理论与实践相结合,通过讲解、示范、练习、讨论等多种教学方式,引导学生掌握收费管理系统的设计与实现方法。
同时,关注学生的个体差异,提供个性化指导,确保每个学生都能达到课程目标。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 数据结构与文件操作:回顾C语言中的数组、结构体等基本数据结构,介绍文件操作相关知识,为编写收费管理系统打下基础。
- 数组的使用与操作- 结构体的定义与使用- 文件读写操作2. 收费管理系统功能模块设计:- 用户注册模块:实现用户注册功能,包括用户名、密码等信息的存储- 用户登录模块:实现用户登录功能,验证用户名和密码的正确性- 费用查询模块:实现用户费用查询功能,展示用户消费记录- 费用缴纳模块:实现用户费用缴纳功能,包括充值、支付等操作3. 编程实践与模块化设计:- 编程规范与代码优化- 模块化编程方法与实践- 调试工具的使用与程序调试技巧4. 团队协作与项目实践:- 分析与讨论:分组讨论,共同分析收费管理系统的需求与设计- 项目实践:小组成员分工合作,共同完成收费管理系统的设计与实现5. 教学进度安排:- 第一周:数据结构与文件操作知识回顾- 第二周:收费管理系统功能模块设计- 第三周:编程实践与模块化设计- 第四周:团队协作与项目实践,完成收费管理系统设计与实现教学内容与教材关联性:本课程教学内容与教材相关章节紧密相关,如数据结构与文件操作、模块化编程、调试技巧等,确保学生能够将所学知识应用于实际项目中。
c语言课程设计报告会员卡计费系统源代码
break;
}
printf("\n>输入错误!(注:请选择1-%d)\n",MENU_MAIN_COUNT);
}
menu_main_func[selected-1]();//调用相应的函数指针数组中的函数,执行操作
}
intmain()/*主函数*/
{
menu();//调用菜单函数
"\t\t|2按消费总额排序\n"
"\t\t|3返回菜单\n"
"\t\t|\n"
"\t\t=======================================\n"
);
printf("请选择功能:");
scanf("%d",&f);
switch(f)
{//用switch语句选择功能
case1:p=sort_m(p);//调用按缴费总额排序
p->next=head;
head=p;
tail=NULL;//定义tail
while(tail!=head->next)
{
p=head;
q=p->next;
while(q->next!=tail)
{//判断q是否为空
if(p->next->money>q->next->money)
{
p->next=q->next;//比较大小,排序
}
returnsumc;//返回总额
}
voidstatistics()
{//统计会员信息函数
c语言程序课程设计报告 电费系统
课程设计课程名称 C语言课程设计题目名称酒店房间预订系统学院物理与光电工程专业班级 14级光电信息科学与工程(2)班学号3114008620 3114008621 3114008622 3114008623 3114008615 姓名陆卓焱佘金鸿谭江瀚欧阳永祥梁应贤任课教师郑玲利2016年 5月20日广东工业大学课程设计任务书一、课程设计的内容《C语言课程设计》是《C语言程序设计》课程的姐妹课程。
通过课程设计这一教学实践环节,使学生熟练掌握C语言的基础知识(数据类型、运算符和表达式)、C语言的三种基本结构(顺序结构、选择结构和循环结构)、数组、函数和指针的使用,并通过学生自学,掌握用户建立的数据类型和文件的使用。
通过《酒店房间预订系统》题目的完成,使学生能够运用C语言的知识分析问题和解决问题,使综合分析问题和解决问题的能力得到提高。
该题目要求学生在Visual C++环境中实现程序的编译、连接和运行。
具体完成的内容如下:1、系统功能设计(具有插入、查询、修改、删除、显示等功能);2、总体设计方案;3、模块设计(函数算法及代码设计);4、程序调试;5、系统的操作说明。
二、课程设计的要求与数据1、要求使用模块化程序设计。
2、代码使用锯齿形的书写格式。
3、小组采用分工合作的形式完成设计任务。
三、课程设计应完成的工作1、完成“酒店房间预订系统”程序的设计和调试。
2、撰写课程设计报告(论文),其结构如下:封面、任务书、摘要、小组情况、目录、正文、参考文献(详细信息请参考“C语言课程设计报告提纲”)。
3、提交材料课程设计结束,学生应该提交1)纸质版的设计报告一份;2)电子版的设计报告一份;3)电子版的系统文件一套(含*.C程序和数据文件)。
四、课程设计进程安排五、应收集的资料及主要参考文献[1] 谭浩强.C程序设计(第四版)[M].北京:清华大学出版社,2010.6.[2] 谭浩强. C程序设计(第四版)学习辅导[M].北京:清华大学出版社,2010.7. 发出任务书日期: 2016年 4 月25 日指导教师签名:计划完成日期: 2016年5月13日基层教学单位责任人签章:主管院长签章摘要在市场经济的激烈的竞争情况下,对酒店整个来说,对酒店经营状况起决定作用的是酒店的服务管理水平。
C语言网吧计费系统(小项目)
系统是基于c语言写的小程序,以应付毕业项目或期末考试用。
由于用到fopen读写文件操作,编译前必须在当前文件下建立用户信息.txt 和充值卡.txt 两个文件,否则会报错。
效果图#include <stdio.h>#include <windows.h>#include <string.h>#include <stdlib.h>#include <time.h>//定义链表typedef struct{char name[20];char mima[20];int state;int jine;}user;typedef struct lnod{user data;struct lnod *next;}lnod, *linklist;//充值卡定义链表typedef struct{char name[30];int jine;}kami;typedef struct kk{kami data;struct kk *next;}kk, *kamil;//创建链表void createlist_l(linklist *l){*l = (linklist)malloc(sizeof(lnod));(*l)->next = NULL;}//插入用户信息(尾插法)int listinset_l(linklist *l,user data) {linklist p = *l,q;if (NULL==p)return -1;while (NULL!=p){}p = (linklist)malloc(sizeof(lnod));p->data = data;p->next = q->next;q->next = p;return 0;}//载入文件到链表void filelist_l(linklist *l){int i;FILE *fp1;user user0;fp1 = fopen("用户信息.txt","rb");for (i = 0;i<50;i++){if (1!=fread(&user0,sizeof(user),1,fp1)){break;}listinset_l(l,user0);}fclose(fp1);}//查找制定用户是否存在int locateelem_l(linklist l,char name[]){linklist p;p = l->next;while (p!=NULL){if (!(strcmp(p->,name))){break;}p = p->next;}if (p == NULL){return -1;}elsereturn 0;}//查找指定用户和密码int locateelem_l2(linklist l,char name[],char mm[]) {p = l->next;while (p!=NULL){a = strcmp(p->,name);b = strcmp(p->data.mima,mm);if (a==0&&b==0){//p->data.state = 1;break;}p = p->next;}if (p == NULL){return -1;}elsereturn 0;}//登陆后state = 1;void gaistate_l(linklist *l,char name[]) {linklist p;int b;p = (*l)->next;while (p!=NULL){b = strcmp(p->,name);if (b==0){p->data.state=1;break;}else{p = p->next;}}}//下线state = 0void xiaxian_l(linklist *l,char name[]) {linklist p;int b;p = (*l)->next;while (p!=NULL)if (b==0){p->data.state=0;break;}else{p = p->next;}}}//修改金额void gaijine_l(linklist *l,char name[],int j){linklist p;int b;p = (*l)->next;while (p!=NULL){b = strcmp(p->,name);if (b==0){p->data.jine=p->data.jine+j;printf("您当前余额为%d元",p->data.jine);break;}else{p = p->next;}}}//修改密码void gaimm_l(linklist *l,char name[],char gmm[]){linklist p;int b;p = (*l)->next;while (p!=NULL){b = strcmp(p->,name);if (b==0){strcpy(p->data.mima,gmm);break;{p = p->next;}}}//下线扣费void koufei_l(linklist *l,char name[],int j){linklist p;int b;p = (*l)->next;while (p!=NULL){b = strcmp(p->,name);if (b==0){p->data.jine = p->data.jine-j;break;}else{p = p->next;}}}//写文件void userfile(user user0){FILE *fp0;if((fp0=fopen("用户信息.txt","ab"))==NULL){printf("cannot open file\n");return;}if(fwrite(&user0,sizeof(user),1,fp0)!=1)printf("file write error\n");fclose(fp0);}//更新文件void update_file(linklist l){FILE *fp;linklist p;p = l->next;if (( fp= fopen("用户信息.txt","wb"))==NULL)return;}while (p!=NULL){if (p->data.state==1){p->data.state = 0;userfile(p->data);p->data.state = 1;}else{userfile(p->data);}p = p->next;}}//查询所有用户void chaxun_l(linklist l){linklist p;p = l->next;while (p != NULL){printf("用户名:%-10s密码:%-10s余额%-10d是否在线(1/0):%d \n",p->,p->data.mima,p->data.jine,p->data.state);p = p->next;}}//充值卡创建链表void createlist_k(kamil *l){*l = (kamil)malloc(sizeof(kk));(*l)->next = NULL;}//充值卡查找制定用户是否存在int locateelem_k(kamil kl,char name[]){kamil p;p = kl->next;while (p!=NULL){if (!(strcmp(p->,name))){break;}if (p == NULL){return -1;}elsereturn 0;}//充值卡插入用户信息(尾插法)int listinset_k(kamil *l,kami data){kamil p = *l,q;if (NULL==p)return -1;while (NULL!=p){q = p;p = p->next;}p = (kamil)malloc(sizeof(kk));p->data = data;p->next = q->next;q->next = p;return 0;}//充值卡载入文件到链表void filelist_k(kamil *l){int i;FILE *fp1;kami kami0;fp1 = fopen("充值卡.txt","rb");for (i = 0;i<50;i++){if (1!=fread(&kami0,sizeof(kami),1,fp1)){break;}listinset_k(l,kami0);}fclose(fp1);}//充值卡修改金额void gaijine_k(kamil *l,char name[],int j){kamil p;while (p!=NULL){b = strcmp(p->,name);if (b==0){p->data.jine=p->data.jine+j;printf("您当前余额为%d元",p->data.jine);break;}else{p = p->next;}}}//充值卡写文件void kamifile(kami kami0){FILE *fp0;if((fp0=fopen("充值卡.txt","ab"))==NULL){printf("cannot open file\n");return;}if(fwrite(&kami0,sizeof(kami),1,fp0)!=1)printf("file write error\n");fclose(fp0);}//充值卡更新文件void update_file_k(kamil l){FILE *fp;kamil p;p = l->next;if (( fp= fopen("充值卡.txt","wb"))==NULL){printf("无法打开文件\n");return;}while (p!=NULL){kamifile(p->data);p = p->next;}void delete_k(kamil *L,char name[]) {kamil p,q;int i;p=(*L)->next;q=*L;while(p!=NULL){i = strcmp(p->,name);if(i == 0){q->next=p->next;free(p);break;}else{q=p;p=p->next;}}}//主函数void main(){linklist l;int b;//选择点int z;//判断z是否等于0int j;//金额char yhm[20];char mm[20],mm1[20];char gmm[20],gmm1[20];//改密码user n;clock_t start,finish;float jf;char nk[15],nk0[15];//之下是卡密int i;// int kjine;kami lsk;kamil kl;char gly[20] = "admin";//管理员密码srand((unsigned)time(NULL));createlist_l(&l);filelist_l(&l);createlist_k(&kl);filelist_k(&kl);while (1){system("color f9");system("cls");printf(" ╭═══════欢═迎═光═临══════╮\n");printf(" ╰╮╭----------------╮╭╯\n");printf(" ▲╯║~~1、注册~~║╰▲\n");printf(" ◇★║~~2、用户登陆~~║★◇\n");printf(" ◇★║~~3、管理员登陆~~║★◇\n");printf(" ★◇║~~4、退出~~║◇★\n");printf(" ▼╮║~~本网吧壕专享一秒钟一元~~║╭▼\n");printf(" ╭╯╰----------------╯╰╮\n");printf(" ╰═══════祝═你═快═乐══════╯\n");scanf("%d",&b);switch(b){case 1:{while (1)//注册界面{system("cls");printf("请输入账号:\n");scanf("%s",yhm);z = locateelem_l(l,yhm);if (z == 0){printf("该用户名已存在,任意键返回");fflush(stdin);getchar();break;}else{printf("请输入密码:\n");scanf("%s",mm);printf("请再次输入密码:\n");scanf("%s",mm1);if (!(strcmp(mm,mm1))){printf("注册成功,任意键返回\n");strcpy( , yhm);strcpy(n.mima , mm);n.jine = 0;listinset_l(&l,n);update_file(l);fflush(stdin);getchar();break;}else{printf("两次密码输入不一致,请重新注册\n");Sleep(1000);continue;}}}break;}case 2://用户登陆{system("cls");while(1){printf("请输入用户名\n");scanf("%s",yhm);z = locateelem_l(l,yhm);if (z!=0){printf("用户名不存在,即将返回\n");Sleep(1000);break;}else{printf("请输入密码:\n");scanf("%s",mm);z = locateelem_l2(l,yhm,mm);if (z==0){gaistate_l(&l,yhm);start = clock();while(1){system("cls");printf(" ╭═══════祝═你═快═乐══════╮\n");printf(" ╰╮╭----------------╮╭╯\n");printf(" ▲╯║~~1、查余额~║╰▲\n");printf(" ◇★║~~2、改密码~║★◇\n");printf(" ◇★║~~3、充值卡充值~║★◇\n");printf(" ★◇║~~4、小游戏~║◇★\n");printf(" ▼╮║~~5、下线~║╭▼\n");printf(" ╭╯╰----------------╯╰╮\n");printf(" ╰═══════祝═你═快═乐══════╯\n");scanf("%d",&b);if (b == 1){system("cls");gaijine_l(&l,yhm,0);printf("\n任意键返回\n");fflush(stdin);getchar();continue;}if (b == 2){system("cls");printf("请输入新密码\n");scanf("%s",gmm);printf("请再次输入密码\n");scanf("%s",gmm1);if (!(strcmp(gmm,gmm1))){printf("修改密码成功,任意键后返回\n");gaimm_l(&l,yhm,gmm);update_file(l);fflush(stdin);getchar();break;}else{printf("两次密码输入不一致,请重新修改\n");Sleep(1000);continue;}}if (b == 5){printf("下线成功,任意键返回主界面:\n");xiaxian_l(&l,yhm);finish = clock();jf = (int)((finish - start)/1000);koufei_l(&l,yhm,jf);update_file(l);fflush(stdin);getchar();break;}if (b == 3){system("cls");printf("请输入充值卡\n");scanf("%s",nk0);b = locateelem_k(kl,nk0);if (b!=0){printf("您输入的充值卡不存在,请重新输入\n");Sleep(1000);continue;}if (b == 0){printf("100元已成功充值进您的账号,任意键返回\n");gaijine_l(&l,yhm,100);update_file(l);delete_k(&kl,nk0);update_file_k(kl);fflush(stdin);getchar();continue;}}if (b == 4){while (1){system("cls");iy = 10;jy = 0;printf("请在两秒钟内输入以下简单等式,答对过关,答错结束,任意键开始\n");fflush(stdin);getchar();while(1){system("cls");ay = rand()%iy;by = rand()%iy;iy=iy+100;printf("%d + %d = ",ay,by);fflush(stdin);Sleep(2000);ky = kbhit();scanf("%d",&zhi);fflush(stdin);if (ky == 0){printf("时间到啦\n");if(jy<=5){printf("你只通过了%d关,只击败了5%%的人,弱爆了。
C语言课程设计宾馆房间登记与计费管理系统
C语言课程设计--宾馆房间登记与计费管理系统《C语言》课程设计报告学生姓名:学号:2222222222221111111111111000000000000 学院:班级:题目: 宾馆房间登记与计费管理系统指导教师:职称:教授实验师王王王实验师2012年07月15日目录目录 (I)一、选题背景 (1)1.1主要问题及技术要求 (1)1.2指导思想 (1)二、算法设计 (1)2.1程序功能需求 (1)2.2功能框架图 (2)2.3设计方案说明 (3)2.4计算公式 (3)三、程序设计及功能说明 (4)3.1程序功能介绍 (4)四、结果分析 (6)4.1主界面 (6)4.2登记入住 (6)4.3结账退房 (9)4.4查询当前入住情况 (12)4.5查询当前费用 (13)4.6查询历史记录 (14)五、结论或总结 (14)六、课程设计心得体会 (15)参考文献 (16)源程序 (17)附表一 (63)一、选题背景1.1主要问题及技术要求本题对时间的控制要求较高,尤其是必须控制输入的时间,使其不能小于以前录入过的时间,防止当前时间输入错误。
还有退房时的信息对比难度也较高,必须保证退房顾客与系统记录信息一致,防止服务错漏或错误退房。
这是本题两个较大的难点。
此外还有房间号、身份证号、时间的输入格式的控制、跨年的时间计算等难点。
1.2指导思想学了C语言,我们需要一个学以致用的机会。
选题后,在题目的完成过程中,我们的知识可以更加牢固。
在完善酒店管理系统的过程中,我们要锻炼自己的基于现实思考的能力,培养自己缜密的思维。
相对于大多数人做的学生管理系统,酒店管理系统对于时间的控制要求严格,对于我们的算法思想要求较高,因此,在完成该次课程设计的过程中,我们要锻炼我们的逻辑思维能力,同时对C语言有更深刻的认识,把C语言知识掌握得更牢固。
同时,该系统以能够帮助酒店很好地管理客户信息,提高营业效率和数据的安全性和可靠性,减少劳力浪费为设计目标。
C语言课程设计报告会员卡计费系统
计算机程序设计基础(C语言)课程设计说明书设计题目:会员卡计费管理系统班级:姓名:学号:2021年5月设计任务书(1)新会员登记。
(将会员个人信息及此会员的会员卡信息进行录入。
)(2)会员信息修改。
(3)会员续费。
(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。
此时可以进行续费,续费后,提示成功,并显示更新后的信息。
)(4)会员消费结算。
(会员出示会员卡后,管理人员根据卡号查找到该会员的信息,结算本次费用。
提示成功,并显示更新后的信息。
)累计消费满1000元,及自动升级为VIP会员。
之后每次消费给予9折优惠。
(4)会员退卡。
(收回会员卡,并将余额退还,删除该会员信息。
)(5)用菜单进行管理(6)统计功能。
能够按每个会员的缴费总额进行排序。
在排序的最后一行显示所有会员的缴费总额,以及消费总额。
能够按累计消费总额进行排序。
在排序的最后一行显示所有会员的缴费总额,以及消费总额。
1需求分析(1)能够对新会员信息进行登记。
(2)能够对会员信息进行修改。
(3)能够进行续费与消费结算,且累计消费满1000元,及自动升级为VIP会员;之后每次消费给予9折优惠。
(4)能够收回会员卡,并将余额退还,删除该会员信息。
(5)用菜单进行管理。
(6)能够统计消费与续费情况。
2概要设计3 详细设计主界面录入新会员信息会员信息修改会员续费会员消费结算会员退卡统计功能退出系统4 课设小结通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识。
但在程序运行过程中出现了许多问题,随大多数已解决但仍存在瑕疵,且界面有些简陋,仍需要调整。
在以后的学习中仍需要端正态度,认真学习,巩固知识。
c语言 水电费管理系统报告
HUNAN UNIVERSITY程序设计训练——水电费管理系统报告学生姓名学生学号专业班级指导老师2012-7-2至 2012-7-13一程序设计目的1.掌握结构化程序设计的基本思想;2.熟练掌握结构的设计和运用;3.了解综合系统设计的基本原理;4.掌握C语言程序的综合应用。
二程序设计任务内容水电费管理系统给用户提供了一个在Windows操作系统上运行的管理平台,用户可以对其成员ID、姓名以及用水量、用电量、缴费信息构成进行查看、添加、删除、修改等管理操作。
由生活常识知,用户只需根据管理员的要求缴费即可,而管理员则需要计算、统计、纪录缴费信息,因此此系统只针对管理员开发。
水电费管理系统软件是为管理员进行用户成员的用水电量及缴费信息管理进行计算、统计、纪录的应用软件,功能描述如下:1.给管理员提供功能选择界面:该系统只针对管理员,所以无需登录,直接进入功能选择界面。
功能选择界面包括输入功能选项、调用相应程序两大需求。
2.管理用户信息:管理员可操作添加、查看、修改、删除用户信息,包括姓名、ID、用水量及用电量。
3.查看用户缴费信息:可以查看每个用户应缴的水费、电费,系统默认水1.8元/吨,电0.5元/度。
4.统计总费用:可以统计总的电费、水费及总费用,便于收缴费用后进行检查、核实,以免出错。
三程序详细设计说明系统结构设计1.总体设计本系统的总体思想基于结构化的程序设计。
应用高级语言程序设计中的基本控制结构,着重实现管理系统的增、删、改、查等典型的管理功能。
因此,系统的设计方法是结构化设计方法,开发手段是C语言,在Microsoft Visual C++ 6.0环境下开发。
2.系统模块结构图依据需求分析结果,水电费管理系统可以分为3个模块:1、用户管理模块、2、功能选择模块、3、用户缴费查看模块、如图1所示。
图1系统模块结构图3. 系统流程描述:图2系统流程图4.界面设计水电费管理系统的界面设计主要遵循方便易用、界面友好的原则,具体设计如下。
电信计费模拟实现(C语言)..
电信计费模拟实现(C语⾔)..程序设计报告( 2012 / 2013 学年第⼆学期)题⽬:电信计费模拟实现专业通信⼯程学⽣姓名班级学号指导教师郭剑指导单位计算机软件教学中⼼⽇期 2013年6⽉27⽇电信计费模拟实现⼀、课题内容和要求电信计费系统主要负责对电信各类客户每⽉帐单统计、查询、备份等管理⼯作。
本课题以该系统要求编写⼀个程序,实现对电信计费的模拟。
通过此可以,熟练掌握⽂件读写、函数调⽤等知识,以及查找、典型算法的设计与应⽤。
⼆、需求分析功能框架图:(见图1)图1(1)提供可操作的主菜单:输出个菜单,⽤于显⽰以从⽂件中加载的总客户信息和若⼲个可选的功能选项。
根据客户输⼊的选项来运⾏不同的功能,运⾏不同的函数。
(2)进⾏⽂本信息的载⼊:从指定的⽂件中以链表形式加载所需的客户信息。
这⾥的⽂件是在编译时就已经指定好的、存在的⽂本,需设计者预先⾃⼰建⽴好。
(3)查找客户功能:以客户输⼊的电话号码进⾏查找对应的客户信息并将它们输出。
(4)对现有信息的保存:保存内存中的最新的记录输出到磁盘⽂件中。
这⾥默认的是保存到原读取⽂件中并覆盖原来的信息。
(5)将信息备份到另外的⼀个⽂本中:通过⽂件格式读写函数,将源⽂件信息写到客户提供的⽬标⽂件中。
(6)分类合计功能:客户话费⼩计、长话费⼩计、通话费合计、客户帐单数量。
三、概要设计1 主要结构体:ishi,hd[j].zhongzhi);if((t-(int)t)>0) t=(int)t+1;else t=(int)t;if(hd[j].number2[0]=='0')changtuhf+=d*t;elseshineihf+=c*t;}}sum=a+num1+shineihf+changtuhf;fprintf(fp3,"%-10s%-6s%-10s%-10d%-10d%-15lf%-15lf%-15lf\n",yhzl[i].phone,yhzl[i].name1,yhzl[i].name2,a,num1,shineihf,changtuhf,sum);rewind(fp1);changtuhf=,shineihf=,sum=;}fclose(fp1);fclose(fp2);fclose(fp3);}void menu(){printf("*****************************************************************************\n") ;printf("请选择需要的服务:\n");printf("************************************************************************* ****\n");printf("1-通话记录显⽰ \n");printf("2-详细话费 \n");printf("3-保存话费 \n");printf("4-检测通话时长异常 \n");printf("0-退出 \n");printf("************************************************************************* ****\n");}void jilu(char phone1[]) xt","r");if(!tt){printf("file cannot be opened");exit(0);}fscanf(tt,"%s%s%s%s",&hd[i].number1,&hd[i].number2,&hd[i].qishi,&hd[i].zhongzhi);while(!feof(tt)){if(strcmp(hd[i].number1,phone1)==0)fprintf(stdout,"%-10s%-10s%-20s%-20s\n",hd[i].number1,hd[i].number2,hd[i].qishi,h d[i].zhongzhi); i++;fscanf(tt,"%s%s%s%s",&hd[i].number1,&hd[i].number2,&hd[i].qishi,&hd[i].zhongzhi);}fclose(tt);}void xiangxi(char phone1[]) xt","r");if(!ss){printf("file cannot be opened");exit(0);}fscanf(ss,"%s%s%s%d%d%lf%lf%lf",&hfd[i].haoma,&hfd[i].xingming1,&hfd[i].xingming2,&hfd[i] .y,&hfd[i].g,&hfd[i].shinei,&hfd[i].changtu,&hfd[i].zonghe);while(!feof(ss)){if(strcmp(hfd[i].haoma,phone1)==0){printf(" ⽤户号码⽤户姓名⽉租费功能费市话费长途费合计\n ");printf("%-10s%-6s%-10s%-10d%-10d%%%\n",hfd[i].haoma,hfd[i].xingming1,hfd[i].xingming2,hfd [i].y,hfd[i].g,hfd[i].shinei,hfd[i].changtu,hfd[i].zonghe);break;}elsefscanf(ss,"%s%s%s%d%d%lf%lf%lf",&hfd[i].haoma,&hfd[i].xingming1,&hfd[i].xingming2,&hfd[i] .y,&hfd[i].g,&hfd[i].shinei,&hfd[i].changtu,&hfd[i].zonghe);}fclose(ss);}void savefile(char phone1[]) xt","r");p=fopen("D:\\话单保存.txt","w");if(!q){printf("file cannot be opened");exit(0);}if(!p){printf("file cannot be opened");while(!feof(q)){if(strcmp(hd[i].number1,phone1)==0)fprintf(p,"%-10s%-10s%-20s%-10s\n",hd[i].number1,hd[i].number2,hd[i].qishi,hd[i]. zhongzhi);i++;fscanf(q,"%s%s%s%s",&hd[i].number1,&hd[i].number2,&hd[i].qishi,&hd[i].zhongzhi);}printf("您的话单已保存于D盘");fclose(q);fclose(p);}void check(char phone1[]) xt","r");p2=fopen("D:\\ 话单异常.txt","w");if(!p1){printf("file cannot be opened");exit(0);}if(!p2){printf("file cannot be opened");exit(0);}fscanf(p1,"%s%s%s%s",&hd[i].number1,&hd[i].number2,&hd[i].qishi,&hd[i].zhongzhi);while(!feof(p1)){t=shijian(hd[i].qishi,hd[i].zhongzhi);if(t>4320){fprintf(p2,"%-10s%-10s%-20s%-10s\n",hd[i].number1,hd[i].number2,hd[i].qishi,hd[i].zho ngzhi);if(strcmp(phone1,hd[i].number1)==0)printf("您的异常通话时长话单为:\n%-10s%-10s%-20s%-10s\n",hd[i].number1,hd[i].number2,hd[i].qishi,hd[i].zhongzhi); }}i++;}fclose(p1);fclose(p2);}double shijian(char kt[],char jt[]){int tyear,tmonth,tday,thour,tminute,ts;int kyear,kmonth,year,month;double t,t1;tyear=(jt[0]-kt[0])*1000+(jt[1]-kt[1])*100+(jt[2]-kt[2])*10+(jt[3]-kt[3]);tmonth=(jt[4]-kt[4])*10+(jt[5]-kt[5]);tday=(jt[6]-kt[6])*10+(jt[7]-kt[7]);thour=(jt[8]-kt[8])*10+(jt[9]-kt[9]);tminute=(jt[10]-kt[10])*10+(jt[11]-kt[11]);ts=(jt[12]-kt[12])*10+(jt[13]-kt[13]);kyear=kt[0]*1000+kt[1]*100+kt[2]*10+kt[3];if(kyear%4==0&&kyear%100!=0||kyear%400==0)year=tyear*527040;elseyear=tyear*525600;kmonth=(kt[6]-48)*10+(kt[7]-48);switch(tmonth){case -11: if(kyear%4==0&&kyear%100!=0||kyear%400==0) month=-335; else month=-334; break;case 0: month=0; break;case 1: month=kmonth; break;default: break;}t1=year+month*1440+tday*1440+thour*60+tminute+ts/;t=t1;return t; //返回值:单次通话时间}五、测试数据及其结果分析(1)主菜单:图6(2)主要操作图7(3)主要功能图8(4)输出的所有话单记录⽂件图9(5)输出账单⽂件图10(6)退出系统输⼊0或当出现“是否继续”时输⼊N图11结果分析:1)在输⼊菜单选项时如果输⼊的内容不是0-4之间的数字,⽽是其他数字,系统将显⽰“不可⽤,是否继续”,等待下次正确的输⼊。
c语言课程设计机房收费管理系统
c语言课程设计机房收费管理系统一、教学目标本课程的教学目标是使学生掌握机房收费管理系统的开发过程,培养学生运用C语言进行实际项目开发的能力。
具体目标如下:1.知识目标:使学生掌握C语言的基本语法、数据结构、算法和编程思想,理解面向对象编程的基本概念。
2.技能目标:培养学生具备使用C语言进行程序设计的能力,能够独立完成简单的项目开发。
3.情感态度价值观目标:培养学生具有良好的团队合作精神,提高学生的问题解决能力和创新意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和面向对象编程。
具体安排如下:1.C语言的基本语法:介绍C语言的基本数据类型、运算符、控制结构等。
2.数据结构:讲解常用的数据结构如数组、链表、栈和队列等。
3.算法:介绍常见的排序算法和查找算法,培养学生分析问题和解决问题的能力。
4.面向对象编程:讲解类和对象的概念,培养学生运用面向对象思想进行程序设计的能力。
5.机房收费管理系统:以实际项目为背景,引导学生运用所学知识进行项目开发,提高学生的实际编程能力。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。
具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、算法和面向对象编程等知识,使学生掌握课程的基本概念。
2.案例分析法:通过分析实际项目案例,使学生了解机房收费管理系统的开发过程,提高学生的实际编程能力。
3.实验法:安排上机实验,使学生在实践中掌握C语言的编程技巧,培养学生的实际动手能力。
4.小组讨论法:学生进行小组讨论,培养学生的团队合作精神和问题解决能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.参考书:提供相关的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作精美的PPT课件,提高课堂教学质量。
4.实验设备:保证学生有足够的上机实践机会,提高学生的实际编程能力。
c语言课程设计缴费系统
c语言课程设计缴费系统一、教学目标本课程的目标是让学生掌握C语言的基本语法,能够运用C语言设计一个简单的缴费系统。
通过本课程的学习,学生应能够理解C语言的基本数据类型、运算符、控制结构、函数等概念,并能够运用这些知识设计、编写并调试C语言程序。
同时,通过课程的学习,培养学生的逻辑思维能力、问题解决能力和团队合作能力。
二、教学内容教学内容主要包括C语言的基本语法和编程技巧。
具体包括以下内容:1.C语言的基本数据类型和运算符2.控制结构:条件语句、循环语句3.函数:定义、调用、返回值4.数组和字符串5.结构体和文件操作6.编程技巧:代码规范、调试方法、算法设计三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解C语言的基本概念和语法规则。
2.案例分析法:通过分析实际案例,让学生掌握编程技巧和解决问题的方法。
3.实验法:通过上机实验,让学生动手实践,加深对C语言的理解和运用能力。
四、教学资源教学资源包括教材、实验设备和相关多媒体资料。
1.教材:《C语言程序设计》2.实验设备:计算机、网络设备3.多媒体资料:教学PPT、视频教程、在线编程练习平台五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。
1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和理解能力。
2.作业:布置课后编程作业,评估学生的编程能力和解决问题的能力。
3.考试:定期进行理论考试和上机考试,评估学生对C语言知识的掌握程度。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保每个章节都有充分的时间进行讲解和实践。
2.教学时间:每周安排2个课时,其中1个课时用于讲授,1个课时用于实验和实践。
3.教学地点:教室和计算机实验室交替使用,以便学生能够及时进行实践操作。
七、差异化教学根据学生的不同学习风格、兴趣和能力水平,本课程将采取以下差异化教学措施:1.学习风格:提供多种学习资源,如视频教程、PPT讲解等,以满足不同学习风格的学生的需求。
c语言编程机房收费管理系统
课程设计报告题目:微机机房收费管理系统学号: ***********名:**专业:计算机系统维护班级: 12 计维指导教师:***2 0 1 4年 7 月17日目录课程设计报告封面 (1)目录 (2)一.实验题目 (3)二.实验目的 (3)三.实验设计说明与要求.............................................3-4四.程序实现流程图为 (4)五.课程设计与心得体会………………………………………4-5六.程序实现过程………………………………………………5-10七.实验结果……………………………………………………10-12机房收费系统课程设计报告一.实验题目:《机房收费管理系统》设计任务(1)输入功能:输入15名学生的学号、班级、姓名、上机起始时间,下机时间。
(2)计算功能:计算每个学生的上机费用。
(上机费用=上机时间* 1.0/h ,注:不足一小时按一小时计算)(3)查询功能:按条件查询显示学生上机信息。
如:(查询班级、学号、姓名、上机时间)等。
二.实验目的:通过对基本数据类型、语句、数组、函数、结构、指针以及文件等的操作,使学生全面掌握结构化程序设计的基本方法。
让我们进一步了解和熟悉C语言的理论基础,能熟练地运用C语言进行编程,相关运用程序的完善与维护,及相关的设计。
从而在今后的发展中有一定的学习基础便于实用。
三.实验设计说明与要求:从课程设计的目的出发,通过课程设计的各个环节,达到以下教学要求:1. 编写一个菜单驱动的学生机房上机收费管理系统程序(要求使用VC++6.0),实现相关功能。
备注:记录以下信息:学号,姓名,班级,上机时间,上机费用。
2. 进一步掌握C语言程序设计的基本思想和方法;3. 掌握结构化程序设计的基本原理及应用;4. 要求通过数字键或者字母键的选择来对信息进行相应的操作。
需求分析:根据机房收费管理设计的要求,需要设计三个功能:分别是输入学生上机信息功能,计算上机所花费的时间和费用功能和用学号,姓名,班级能查询到学生的信息功能等1. 在输入功能方面,需要把学号、班级、姓名、上机时间等输入进系统中。
实训报告--机房收费管理系统
北京联合大学课程设计报告课程名称: C语言程序设计课设项目名称:机房收费管理系统学院:自动化学院专业:建筑电气与智能化姓名:学号:指导教师:成绩:2010年6月18日目录第1部分课程设计题目与要求 (1)1.问题描述 (1)2.功能要求 (1)3.任务分工 (2)第2部分《》的设计与功能实现 (2)1.总体设计 (2)2.数据结构 (4)3.算法设计 (5)4.程序代码设计 (11)5.测试与调试 (18)第3部分课程设计总结 (20)1.个人总结 (20)2.结束语 (24)附录Ⅰ程序清单 (25)附录Ⅱ用户使用说明书 (45)参考文献 (46)1第1部分 课程设计题目与要求1.问题描述为了便于管理,需要对机房的上机收费进行计算机管理,所需要的功能为:建立学生的上级档案、对于毕业的学生能够删除其档案、根据上机和下机时间计算出本次所需费用、能够续钱。
2.功能要求循环显示如图12.17所示的主菜单。
在主菜单中选择1:建立名为duli16_3.dat 的文件,并在其中添加若干学生的上机档案,信息包括学号、姓名、金额,要求学号是唯一的。
在主菜单中选择2:要求用户输入学号,然后系统显示该学生档案,并自动开始计时,如果原来金额不足6元,则不能上机,而且显示“余额不足,请续钱!”。
在主菜单中选择3:停住对该学生记时,同时根据用户输入的学号,计算该学生上机时间,并按1小时2元收费(30分钟以内均按半小时处理,60分钟以内按1小时处理),然后显示上机前后的金额。
在主菜单中选择4:添加新档案,这时要求新学号和已有的学号不能重号。
在主菜单中选择5:注销旧档案。
在主菜单中选择6:要求用户输入学号和续钱额,续钱完成后分别显示续钱前后的金额。
在主菜单中选择7:此项功能学生自由发挥,根据本组爱好增加与本题目相关的新功能。
在主菜单中选择0:显示结束信息,按任意键后,退出本系统。
12.173.任务分工主要负责编写:下机函数mylikai()、注销函数myzhuxiao()。
c语言课程设计日常费用系统
c语言课程设计日常费用系统一、教学目标本章节的教学目标是使学生掌握C语言编程的基本技能,通过设计一个日常费用管理系统,让学生能够理解和运用C语言编程思想,培养学生的实际编程能力和问题解决能力。
在知识目标方面,学生需要掌握C语言的基本语法、数据类型、控制结构、函数等基本知识;在技能目标方面,学生需要能够运用C语言进行程序设计,能够独立完成一个日常费用管理系统的设计和实现;在情感态度价值观目标方面,学生需要培养对编程的兴趣和热情,培养良好的编程习惯和团队协作精神。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、控制结构、函数等基本知识,以及如何运用这些知识设计一个日常费用管理系统。
具体的教学大纲如下:1.C语言的基本语法和数据类型2.C语言的控制结构3.C语言的函数4.日常费用管理系统的需求分析5.日常费用管理系统的程序设计6.日常费用管理系统的测试和优化三、教学方法为了达到本章节的教学目标,我们将采用多种教学方法,包括讲授法、案例分析法、实验法等。
通过这些方法,我们将引导学生掌握C语言的基本知识,培养学生的编程能力和问题解决能力。
具体的教学方法如下:1.讲授法:用于讲解C语言的基本语法、数据类型、控制结构、函数等基本知识。
2.案例分析法:通过分析日常费用管理系统的案例,让学生理解和掌握如何运用C语言进行程序设计。
3.实验法:让学生动手编写和测试日常费用管理系统,培养学生的实际编程能力和问题解决能力。
四、教学资源为了支持本章节的教学内容和教学方法,我们将准备多种教学资源,包括教材、参考书、多媒体资料、实验设备等。
具体的教学资源如下:1.教材:C语言编程教程,用于讲解C语言的基本语法、数据类型、控制结构、函数等基本知识。
2.参考书:C语言编程实践,用于引导学生进行案例分析和实验操作。
3.多媒体资料:包括PPT、视频教程等,用于辅助讲解和演示C语言编程方法。
4.实验设备:计算机、编程环境等,用于学生进行实验操作和编写程序。
c语言编亏一个月度收费系统,功能包括计算电费、水费、燃气费。
c语言编亏一个月度收费系统,功能包括计算电费、水费、燃气费。
1. 首先确定需要输入的数据。
根据收费系统的功能,输入数据应该包括电费、水费、燃气费的使用量。
这些信息可以通过键盘输入,或者从文件中读取。
2. 定义变量。
根据上一步确定的需要输入的数据,定义相关的变量,如电费、水费、燃气费的使用量变量。
还需要定义一些常量,如电费、水费、燃气费的单价。
3. 计算费用。
根据上一步定义的变量和常量,计算出电费、水费、燃气费的总量和总费用。
需要注意的是,在计算时需要判断输入的数据是否合法(如使用量是否为正数,是否超出了合理范围等),避免出现计算错误。
4. 输出结果。
将计算出来的费用输出到屏幕上,或者写入文件中。
5. 完善用户交互界面。
可以加入菜单、选择功能等,使用户操作更加方便。
下面是一份简单的代码示例,仅供参考:#include <stdio.h>// 定义电费、水费、燃气费的单价常量#define ELECTRIC_PRICE 0.5#define WATER_PRICE 1.2#define GAS_PRICE 2.0int main() {// 定义电费、水费、燃气费的使用量变量float electric, water, gas;// 输入电费、水费、燃气费的使用量printf("请输入电费使用量(度):");scanf("%f", &electric);printf("请输入水费使用量(吨):");scanf("%f", &water);printf("请输入燃气费使用量(立方米):");scanf("%f", &gas);// 计算费用float electricFee = electric * ELECTRIC_PRICE;float waterFee = water * WATER_PRICE;float gasFee = gas * GAS_PRICE;float totalFee = electricFee + waterFee + gasFee;// 输出费用printf("电费:%f 元\n", electricFee);printf("水费:%f 元\n", waterFee);printf("燃气费:%f 元\n", gasFee);printf("总费用:%f 元\n", totalFee);return 0;}当然,这只是一个简单示例,如果实际使用时还需要加入其他功能或优化代码,可以根据实际需要进行修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号0121510880212《计算机基础与综合编程实验》报告学院计算机科学与技术学院专业计算机类班级m1502班姓名韩龙指导教师张蕊日期 2016-4-25目录1.实验目的-------------------------------------------------------12.系统功能描述-------------------------------------------------1 添加卡信息----------------------------------------------------1 查询卡信息----------------------------------------------------2 上机操作-------------------------------------------------------------2 下机操作--------------------------------------------------------------2 充值操作--------------------------------------------------------------3 退费操作--------------------------------------------------------------3 注销卡操作-----------------------------------------------------------43.典型算法分析-------------------------------------------------44.开发难点与体会-------------------------------------------------75.实验总结----------------------------------------------------------81 实验目的了解迭代式软件开发的一般过程,领会需求分析、系统设计、系统实现以及系统测试等阶段的任务要点;深入理解和熟练应用C/C++语言的基本概念和基本原理,如数据类型、顺序选择和循环结构程序设计、函数等;熟练理解和掌握C/C++语言的高级知识,如字符串、结构体、文件读写、动态内存管理、链表等技术;熟练掌握在C/C++语言环境下,模块化开发的具体实现方法,深入领会和分析一些C/C++程序设计实用开发方法和技术;综合应用所学知识去分析需求,能够把所学的C/C++语言技术应用到具体的实践中去,并迭代式开发出一个软件系统,从而培养学生分析和解决问题的能力。
通过迭代式开发,深入掌握C语言的文件、链表、结构体、动态内存管等技术,开发实现一个计费管理软件。
2 系统功能与描述实验流程:1.添加卡与查询卡的操作⑴添加卡信息。
在数据结构的基础上进行迭代开发,添加一张新卡,将卡信息保存到结构体变量中。
卡信息包括:卡号、密码、开卡金额、卡状态、开卡时间、截止时间、最后使用时间、使用次数、累积金额。
在输入后程序自动显示本次添加的卡信息内容。
⑵查询卡信息:①:精确查询,要求输入正确格式的卡号,若不存在输入的卡号则提示用户无此卡,若存在卡号,则输出此卡的信息。
若找到相对应符合条件的卡,则按照结构所存储的内容输出卡信息。
②:模糊查询,要求输入卡号的关键字符串,若存在包含此关键字符串,则输出这些卡的信息。
不存在则提示用户。
2.上机:提示用户输入正确格式的上机的卡号及密码,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若未上机状态则提示上机成功,更新上机信息,否则提示卡的状态以及上机失败。
同时程序更改卡的状态,记录下当前上机时间保存在链表中。
3.下机:提示用户输入正确格式的下机的卡号及密码,若不存在此卡,则提示卡号不存在,若存在,则判断卡的状态,若上机状态则提示下机成功,更新下机信息,否则提示卡的状态及下机失败。
同时把上下机的时间,和扣除消费金额的余额输出。
4.充值:提示用户输入正确格式的充值的卡号及密码和充值金额,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若已注销或失效则提示已注销或失效及充值失败,否则更新卡余额,提示用户充值成功,输出充值信息。
同时程序更改卡的余额,以原来的金额加上充值金额,保存在链表中。
6.退费:提示用户输入正确格式的退费的卡号及密码和退费金额,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若已注销或失效则提示已注销或失效及退费失败,否则判断卡余额,若余额大于退费金额,则更新卡余额,提示用户退费成功,否则提示用户余额不足。
7.注销卡信息:提示用户输入正确的要注销的卡号以及密码,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,并提示用户注销成功。
8.自己添加的部分特色功能:(1)按使用次数排序(2)充值送费3 典型算法分析(完整源代码请见光盘)(1)搭建程序框架在主界面功能的基础上进行迭代开发。
程序按照三层结构进行构建:表示层、逻辑层、存储层。
编写相应预处理指令:文件包含、条件编译以及宏定义。
#include<stdio.h>#include<stdlib.h>#include"menu.h"#include"data.h"#include"card_file.h"#define _CRT_SECURE_NO_WARNINGint main(void){int num_selection = -1;printf("您好,欢迎进入计费管理系统\n");printf("\n");go on>>然后通过分解与重组,将程序分为几个模块,方便以后查看,修改,完善以及维接下来是宏定义部分#ifndef MENU_H#define MENU_Hvoid outputMenu();void add(); //添加卡操作void query(); //查询卡操作void logon(); //上机操作void logoff(); //下机操作void addMoney(); //充值操作void refundMoney(); //退费操作//void queryStatistics(); //查询统计操作void annul(); //注销卡操作void exitApp(); //退出通过使用宏定义,可以有效防止程序过于繁杂,也能够使同一个语句能够在多次使用时不需要重复编写,从而不影响整个程序的运行,减少了工作量,提高了效率。
(2)文件的处理直接到卡文件中查找卡,通过循环读取卡,当卡的卡号正确时返回1,否则返回0tips:fseek(fp,sizeof(Card)-sizeof(aName),1); //将位置指针移到下一个结构代码部分:int isExist(const char* pName, const char* pPath){FILE* fp = NULL;char aName[18]={0}; //保存读取的卡号信息if((fp=fopen(pPath,"rb"))==NULL){printf("The function of isExsit can't open file!\n");exit(-1);}while(!feof(fp)){if(fread(aName,sizeof(aName),1,fp)==1){if(strcmp(aName,pName)==0){fclose(fp);return 1;}else{fseek(fp,sizeof(Card)-sizeof(aName),1); //将位置指针移到下一个结构体}}}fclose(fp);return 0;}关闭文件用fclose函数,可以使文件指针变量不再指向该文件,及时关闭文件,可以防止误操作(3)创建链表用来添加,查询卡信息,将链表中的数据保存到文件中部分代码:int addCard(Card card)//复制新添加的卡信息到链表{lpCardNode cur=NULL;if(cardList==NULL){initCardList();}//将卡信息添加到当前位置cur = (lpCardNode)malloc(sizeof(CardNode));if(cur!=NULL){cur->data =card;cur->next =NULL;while(cardList->next!=NULL)//提高循环在链表找到最后一个结点{cardList=cardList->next;}cardList->next=cur;return TRUE;}return FALSE;}一:从文件中读取信息(1)用一个指针p指向链表的头结点(2)判断读取是否有错误,如果没有执行下一步,否则提示错误(3)while(!feof (fp))(4)判断需要的值,如果是则执行4,如果不是则执行5(5)再次判断是否读出,如果满足则输出或者返回,如果不满足则提示用户(6)p指向下一个节点(7)关闭文件第二:更新文件中的信息(1)创建文件指针,(2)while(!feof (fp))(3)判断fread(&card,sizeof(Card),1,fp)是否为空,如果是,获取文件位置,如果不是,继续循环。
(4)指针移到标记的位置(5)更新卡中的信息(6)输出更新的信息(7)关闭文件第三:将数据保存到文件中去(1)创建文件指针(2)判断文件打开是否有错误,如果有,提示用户,如果没有,则执行下一步(3)每一一个card的长度的向文件中输入数据。
(4)关闭文件(5)结束第四:获取当地的时间(虽然不是很难但是用的很多很典型)(1)用某某等于time(NULL)来获取当地的时间(2)编写tinetostring函数将time的类型转化为%Y-%m-%d %H:%M的类型(3)以字符串的类型输出4 开发难点与体会刚开始的时候自己连VS2010都不会用,以前一直用的是DEVC++,然后边开始在百度上面不断搜索怎样使用VS2010,慢慢地终于知道并开始熟悉VS2010的环境,也知道了如何创建文件,以前都只是写点小程序,还没写过这么大的程序,开始挺高兴的,但是当真正去做的时候,却茫然不知所措,不断地看书与实践。
这次实验比上学期难的多,并且要求各个方面知识都要学好,但是上学期没有认真听讲,导致落下很多,所以只能一点点去充实自己。