C语言计费系统报告

上传人:cl****1 文档编号:423178605 上传时间:2024-01-02 格式:DOC 页数:16 大小:505KB
返回 下载 相关 举报
C语言计费系统报告_第1页
第1页 / 共16页
C语言计费系统报告_第2页
第2页 / 共16页
C语言计费系统报告_第3页
第3页 / 共16页
C语言计费系统报告_第4页
第4页 / 共16页
C语言计费系统报告_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《C语言计费系统报告》由会员分享,可在线阅读,更多相关《C语言计费系统报告(16页珍藏版)》请在金锄头文库上搜索。

1、学号 0121510880212 计算机基础与综合编程实验报告学 院计算机科学与技术学院专 业计算机类班 级m1502班姓 名韩龙指导教师张蕊日期 2016-4-25 目录1. 实验目的-12. 系统功能描述-1添加卡信息-1查询卡信息-2上机操作-2下机操作-2充值操作-3退费操作-3注销卡操作-43典型算法分析-44.开发难点与体会-75.实验总结-81 实验目的了解迭代式软件开发的一般过程,领会需求分析、系统设计、系统实现以及系统测试等阶段的任务要点;深入理解和熟练应用C/C+语言的基本概念和基本原理,如数据类型、顺序选择和循环结构程序设计、函数等;熟练理解和掌握C/C+语言的高级知识,

2、如字符串、结构体、文件读写、动态内存管理、链表等技术;熟练掌握在C/C+语言环境下,模块化开发的具体实现方法,深入领会和分析一些C/C+程序设计实用开发方法和技术;综合应用所学知识去分析需求,能够把所学的C/C+语言技术应用到具体的实践中去,并迭代式开发出一个软件系统,从而培养学生分析和解决问题的能力。通过迭代式开发,深入掌握C语言的文件、链表、结构体、动态内存管等技术,开发实现一个计费管理软件。2 系统功能与描述实验流程:1.添加卡与查询卡的操作添加卡信息。在数据结构的基础上进行迭代开发,添加一张新卡,将卡信息保存到结构体变量中。卡信息包括:卡号、密码、开卡金额、卡状态、开卡时间、截止时间、

3、最后使用时间、使用次数、累积金额。在输入后程序自动显示本次添加的卡信息内容。查询卡信息:精确查询,要求输入正确格式的卡号,若不存在输入的卡号则提示用户无此卡,若存在卡号,则输出此卡的信息。若找到相对应符合条件的卡,则按照结构所存储的内容输出卡信息。:模糊查询,要求输入卡号的关键字符串,若存在包含此关键字符串,则输出这些卡的信息。不存在则提示用户。2.上机:提示用户输入正确格式的上机的卡号及密码,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若未上机状态则提示上机成功,更新上机信息,否则提示卡的状态以及上机失败。同时程序更改卡的状态,记录下当前上机时间保存在链表中。3.下机:提示用

4、户输入正确格式的下机的卡号及密码,若不存在此卡,则提示卡号不存在,若存在,则判断卡的状态,若上机状态则提示下机成功,更新下机信息,否则提示卡的状态及下机失败。同时把上下机的时间,和扣除消费金额的余额输出。4.充值:提示用户输入正确格式的充值的卡号及密码和充值金额,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若已注销或失效则提示已注销或失效及充值失败,否则更新卡余额,提示用户充值成功,输出充值信息。同时程序更改卡的余额,以原来的金额加上充值金额,保存在链表中。6.退费:提示用户输入正确格式的退费的卡号及密码和退费金额,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若

5、已注销或失效则提示已注销或失效及退费失败,否则判断卡余额,若余额大于退费金额,则更新卡余额,提示用户退费成功,否则提示用户余额不足。7.注销卡信息:提示用户输入正确的要注销的卡号以及密码,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,并提示用户注销成功。8.自己添加的部分特色功能:(1)按使用次数排序(2)充值送费3 典型算法分析(完整源代码请见光盘)(1)搭建程序框架在主界面功能的基础上进行迭代开发。 程序按照三层结构进行构建:表示层、逻辑层、存储层。 编写相应预处理指令:文件包含、条件编译以及宏定义。#include #include #include menu.h#incl

6、ude 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();/下机操作vo

7、id addMoney();/充值操作void refundMoney();/退费操作/void queryStatistics();/查询统计操作void annul();/注销卡操作void exitApp();/退出通过使用宏定义,可以有效防止程序过于繁杂,也能够使同一个语句能够在多次使用时不需要重复编写,从而不影响整个程序的运行,减少了工作量,提高了效率。(2)文件的处理直接到卡文件中查找卡,通过循环读取卡,当卡的卡号正确时返回1,否则返回0tips:fseek(fp,sizeof(Card)-sizeof(aName),1); /将位置指针移到下一个结构代码部分:int isExis

8、t(const char* pName, const char* pPath) FILE* fp = NULL; char aName18=0; /保存读取的卡号信息 if(fp=fopen(pPath,rb)=NULL) printf(The function of isExsit cant 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)-

9、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 =

10、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)创建文件

11、指针,(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的环境,也知道了如何创建文件,以前都只是写点小程序,还没写过这么大的程序,开始挺高兴的,但是当真正去做的时候,却茫然不知所措,不断地看书与实践。这次实验比上学期难的多,并且要求各个方面知识都要学好,但是上学期没有认真听讲,导致落下很多,所以只能一点点去充实自己。第一次实验并不是特别难,但是不知道怎么创建文件,最后在软酷上看学习资料慢慢会了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 销售管理

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号