C语言计费系统报告_第1页
C语言计费系统报告_第2页
C语言计费系统报告_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、学号计算机基础与综合编程实验报告学 院计算机科学与技术学院专业计算机类班级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系统功能与描述将卡号、密码(呆存芸悽构体中4呆存至啦吉构体中以列表形式显示1. 添加卡与查询卡的操作添加卡信息。在数据结构的基础上进行迭代开发,添加一张新卡,将卡信息保存到结构体变 量中。卡信息包括:卡号、密码、开卡金额、卡

3、状态、开卡时间、截止时间、最后使 用时间、使用次数、累积金额。 在输入后程序自动显示本次添加的卡信息内容L 7恭力II卡h査询卡L上机I. F49Lh ism右选择荣单项编号心禺添加卡 靑输入卡号(监度为广): 青输入密宓(瞪丿夏为 m : 123456 青输 入丿F卡金M(bmb) : 10()尔所添加的忖偵息如I':K号状态余额est 2345B1(H), 0忝丿川耘倍息成功!查询卡信息:精确查询,要求输入正确格式的卡号,若不存在输入的卡号则提示用户 无此卡,若存在卡号,则输出此卡的信息。若找到相对应符合条件的卡,则按照结构所存储的内容输出卡信息一 一 _ 一 _ _.|- C_-

4、 ” 一 请输入?f询的卡号(七度为广1R) : test匸一-查询到的卡信息如下 卡号 状态 余额舉计使用使用次数匕次使用时间test 0100.0100.002016-04-25 21:8:模糊查询,要求输入卡号的关键字符串,若存在包含此关键字符串,则 输出这些卡的信息。不存在则提示用户。请输入査询的卡号(长度为1助:t使用次数0上次使用时间2016-04 25 21:48L查询到的绘信息如下- 卡号状态余额罢计便用rest 0100.0100.02. 上机:提示用户输入正确格式的上机的卡号及密码,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若未上机状态则提示上机成功,更新

5、 上机信息,否则提示卡的状态以及上机失败。同时程序更改卡的状态,记录下当 前上机时间保存在链表中。3. 下机:提示用户输入正确格式的下机的卡号及密码, 若不存在此卡,则提 示卡号不存在,若存在,则判断卡的状态,若上机状态则提示下机成功,更新下 机信息,否则提示卡的状态及下机失败。 同时把上下机的时间,和扣除消费金额 的余额输出。下机-请输入定号(长度为ri8):wst 青输入密码(长度为P8): 123456 下机信息如下 汗号 消费 余额 卜.机时间下机时间hst 0.299.82016-04 25 22:07201G-04 25 22:12下机成功!4. 充值:提示用户输入正确格式的充值的

6、卡号及密码和充值金额,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若已注销或失效则提示已注 销或失效及充值失败,否则更新卡余额,提示用户充值成功,输出充值信息。同 时程序更改卡的余额,以原来的金额加上充值金额,保存在链表中。-充值-请输入卡号(长度为1'18): test 请输入密码(长度为P8): 123456 请输入充值金额:50充值信息如下 卡号充值金额余额test50.0149.0菟值成功!6. 退费:提示用户输入正确格式的退费的卡号及密码和退费金额,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若已注销或失效则提 示已注销或失效及退费失败,否则判

7、断卡余额,若余额大于退费金额,则更新卡 余额,提示用户退费成功,否则提示用户余额不足。-退费-请输入卡号(长度为P18) : test 请输入密码(长度为广8): 123456退费信息如下卡号 退费金额余额test 150.00.0退费成加7. 注销卡信息:提示用户输入正确的要注销的卡号以及密码,若不存在此卡, 则提示用户卡号不存在,若存在,则判断卡的状态,并提示用户注销成功。抱歉!退费失败,请检查后重试7注销 请输入卡号(长度为ri8):test 请输入密码(长度为3):123456 注销成功!8. 自己添加的部分特色功能:(1)按使用次数排序累计使用0.00JO使用次数 a使用次数排序一

8、帚y驶态余额456045 61238213,9(2)充值送费恭喜恭喜!充酋咸功!卡号1 23余额31 亠 143典型算法分析(完整源代码请见光盘)(1)搭建程序框架在主界面功能的基础上进行迭代开发 程序按照三层结构进行构建:表示层、逻辑层、存储层' 编写相应预处理指令:文件包含、条件编译以及宏定义。#i nclude <stdio.h>#i nclude <stdlib.h>#include "menu.h"#include "data.h"#include "card_file.h"#define _

9、CRT_SECURE_NO_WARNINGint main(void)int num_selection = -1;printf( "您好, 欢迎进入计费管理系统 n" ) ;printf( "n" ) ;go on>>然后通过分解与重组,将程序分为几个模块,方便以后查看,修改,完善以及维接下来是宏定义部分#ifndef MENU_H #define MENU_H void outputMenu(); void add();void query();void logon();void logoff(); void addMoney(); vo

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

11、),1); / 个结构代码部分:int isExist(const char* pName, const char* pPath) FILE* fp = NULL;char aName18=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)=

12、0)fclose(fp);return 1;elsefseek(fp,sizeof(Card)-sizeof(aName),1); / 将位置指针移到 下一个结构体fclose(fp);return 0;关闭文件用 fclose 函数,可以使文件指针变量不再指向该文件, 及时关闭文件, 可以防止误操作(3) 创建链表用来添加,查询卡信息,将链表中的数据保存到文件中 部分代码:int addCard(Card card) / 复制新添加的卡信息到链表lpCardNode cur=NULL;if (cardList=NULL) initCardList();/ 将卡信息添加到当前位置cur = (

13、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)判断需要的值,如

14、果是则执行 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) 关闭

15、文件(5) 结束第四:获取当地的时间(虽然不是很难但是用的很多很典型)(1) 用某某等于time(NULL)来获取当地的时间(2) 编写tinetostring函数将time的类型转化为Y-%m-%d %H:%J类型(3) 以字符串的类型输出4开发难点与体会刚开始的时候自己连VS2010都不会用,以前一直用的是 DEVC+然后边开始在 百度上面不断搜索怎样使用 VS201Q慢慢地终于知道并开始熟悉 VS2010的环境, 也知道了如何创建文件,以前都只是写点小程序,还没写过这么大的程序,开始 挺高兴的,但是当真正去做的时候,却茫然不知所措,不断地看书与实践。这次 实验比上学期难的多,并且要求各个

16、方面知识都要学好,但是上学期没有认真听 讲,导致落下很多,所以只能一点点去充实自己。第一次实验并不是特别难,但 是不知道怎么创建文件,最后在软酷上看学习资料慢慢会了。 添加卡和查询卡要 用文件和数组知识。但是自己这方面并没有掌握的很好。 所以只能一边写,遇到 不会的再问老师和同学,就这样最终还是成功了。然后是对链表的单独操作,链 表是我最头痛的地方,关键是一点都不会,然后又把上学期的书翻出来好好地补 习了一下。最后还是完成任务了。到后来越来越难,但是有了前面的铺垫,自己 慢慢地得心应手,所以遇到困难也不怕,能够一一克服,通过我们的导师张蕊老 师和寝室的大神韩飞翔,好多问题都得到了解决。通过这次

17、实验,我学习到了如 何将卡信息保存到文本文件,如何读取文件,掌握了FILE类型结构体,并且知道了如何打开文件以及读取数据以及关闭文件,等等好多以前不知道的知识。有一下一些难点: 链表的形式:head插入操作:*1ab .*n在链表中查找节点:我们这次计费管理系统分三步 一是对要写成的计费管理系统做全面的分析,即对计费管理系统要使用的编写方法,管理功用,运行方式进行分析,并作出明确的解决方案针对这次的计费管理系统,它的流程是:以管理员和用户方式进入,要有密码认证. 实现添加、查询、上机、下机、充值、退费、查询统计、注销等功能。二是程序的编写由于计费管理系统的功能十分強大,程序的编写也十分的复杂,

18、 所以我们花了两个多月,每个星期完成一部分程序 程序的编写是一项困难的任 务,完成此程序必需运用书中的大部分知识,而且要有清晰的思路,有较強的语言 组织能力由于每个星期完成一部分,所以程序能衔接得十分完整,所以每个星期编写程序的基础上考虑以前的程序结构.编写程序就是一项十分困难的事,所以 一定要细心,不能有一丝的马虎,否则会前功尽弃三是程序的检查和系统的调用.程序写完后并不能保证它一定能运行,所以要对 它进行调试,发现其中的弊端,并作出相应的修改,以完善程序,使其逻辑性,运算 能力都符合题目要求,使计费管理系统的运行能力达到课程的目的。5实验总结实验框架:本次实验难度较大,需要考察学生的多方面

19、能力:对基础编程知识的掌握,在开始阶段,大部分的代码都是利用我们的已有知识进 行实验,通过实验让我们对知识的掌握更加熟练对整个系统的功能以及实现的认识, 在后期的实验中,我们不断的向初始工程中 添加代码,这时由于工程变大,我们就需要了解到整个工程的各个部分,以便我们的工程能够有效快速的进行。对新知识的吸收能力。在工程进行的过程中,我们将会遇到许多我们现有知识无 法解决的问题,这就需要我们通过各种方法来解决, 如上网查阅资料,向老师提 冋等。对实验中发现的问题要有耐心去解决它, 只有通过一次又一次的错误,并从中吸 取经验,我们才能让自己做的更好。这次实验让我们知道了如何使用函数, 链表 和文件的

20、操作。也让我们对我们所学的有了更加一步的了解, 也终于有了学以致 用的感觉, 虽然自己写的程序并不完美无瑕, 可以说丑陋无比, 但是我相信以后 会越来越优化与美好。 更加重要的是我们知道了什么叫迭代, 它对于我们来说不 再难以理解, 而是深入我们的内心。 但是我觉得这次实验也有许多与实际生活不 符的地方, 如输密码的时候不能隐藏, 可能会造成信息的泄露。 经过两个多月的 课程实训,完成了对计费管理系统代码的设计,收获颇多。也明白了自己在 C 语言上存在的一些问题, 尤其在用 C 语言编程方面存在的缺点与不足。 经过课程 实训使我明白做一个完整的系统要用到我们学到的很多方面的知识, 一个完整的

21、系统包含的 C 语言知识很多,要有好强的综合运用能力才能开发一个完整的系 统。在程序操作过程中要有耐心,更要细心。同时,也体会到学软件专业要有好 强的动手能力, 而实训操作完成小系统锻炼了我的动手能力, 今后,在动手操作 方面要加强,毕竟熟能生巧,练多了才能提高自己的编写程序的能力。毕竟,对 于软件专业的初学者来说, 起初的编程还属于经验编程, 靠自己的学习及动手操 作获得经验,以便为今后开发出新的程序打下基础。 通过这次实验, 学到了很多, 也坚定了我学习计算机的决心,我相信以后会越做越好的。通过这次课程设计, 我把书本的理论和实践联系起来, 有利于巩固所学理我感觉收益匪浅, 同时也为 我以后走向工作岗位打下一个初步的基础。 尽管时间有限, 我们做的设计不是很 完善,但是仍然给了我很多启示。 在这次课程设计中, 我觉得组员之间的合作很 重要,组员之间

温馨提示

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

评论

0/150

提交评论