C语言计费系统报告_第1页
C语言计费系统报告_第2页
C语言计费系统报告_第3页
免费预览已结束,剩余16页可下载查看

下载本文档

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

文档简介

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

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

3、、开卡时间、截止时间、最后使用时间、使用次数、累积金额。在输入后程序自动显示本次添加的卡信息内容,添加卡八气御卡L上机1.卜FLM充值匚注销卡).退由着选择桨单J页编4()3=添力口卡者输入卡。(氐度为LIS)!tost肖偷入密码(女度为1F):123456吉4俞入汁卡金削13V1R):1OO尔所添加的R信息如F:k状态余制i;est1234561()0,0乔力II仁佶息成力!查询卡信息::精确查询,要求输入正确格式的卡号,若不存在输入的卡号则提示用户无此卡,若存在卡号,则输出此卡的信息。若找到相对应符合条件的卡,则按照结构所存储的内容输出卡信息查询卡请输入查询的卡号(长度为ri8):test

4、查询到的卡信息如下使用次数上次使用时间02016-04-2521:4*卡号状态余额察计使用test0100,0100.fl:模糊查询,要求输入卡号的关键字符申,若存在包含此关键字符申,则输出这些卡的信息。不存在则提示用户请输入查询的卡号(长度为1、18):t查询到的卡信息如下使用次数上次使用时间02016-04-2521:48卡号状态奈额察计使用test0100.01D0.02.上机:提示用户输入正确格式的上机的卡号及密码,若不存在此卡,则提示用户卡号不存在,若存在,则判断卡的状态,若未上机状态则提示上机成功,更新上机信息,否则提示卡的状态以及上机失败。同时程序更改卡的状态,记录下当前上机时间

5、保存在链表中。1. 下机:提示用户输入正确格式的下机的卡号及密码,若不存在此卡,则提示卡号不存在,若存在,则判断卡的状态,若上机状态则提示下机成功,更新下机信息,否则提示卡的状态及下机失败。同时把上下机的时间,和扣除消费金额的余额输出。国输入卡号(长度为18):test,输入密码(长度为8):123456卜一一下机信息如下俐号消费余额上机时间下机时间Lst0.299.82016-04-2522:072016-04-2522:12卜机成珈充值:提示用户输入正确格式的充值的卡号及密码和充值金额,若不存在此卡,则提小用户卡号不存在,若存在,则判断卡的状态,若已注销或失效则提小已注销或失效及充值失败,

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

7、退费信息如下怡号退费金额余额test150.00,0退费成功!5. 注销卡信息:提示用户输入正确的要注销的卡号以及密码,若不存在此卡,则提小用户卡号不存在,若存在,则判断卡的状态,并提小用户注销成功。抱歉!退费失败,请检查后重试_注销-请输入卡号(长度ri8):test浦输入密码(长度为8):123456主销成功!6. 自己添加的部分特色功能:(1)按使用次数排序使用次数底*数排序后岑状态余额累计使用56O0.3230213.00.0充值送费3典型算法分析(完整源代码请见光盘)搭建程序框架在主界面功能的基础上进行迭代开发程序按照三层结构进行构建:表示层、逻辑层、存储层'编写相应预处理指

8、令:文件包含、条件编译以及宏定义。#include<stdio.h>#include<stdlib.h>#include"menu.h"#include"data.h"#include"card_file.h"#define_CRT_SECURE_NO_WARNINGintmain(void)(intnum_selection=-1;printf("您好,欢迎进入计费管理系统n");printf("n");goon>>然后通过分解与重组,将程序分为几个模块,方

9、便以后查看,修改,完善以及维接下来是宏定义部分#ifndefMENU_H#defineMENU_HvoidoutputMenu();voidadd();voidquery();voidlogon();voidlogoff();voidaddMoney();voidrefundMoney();/voidqueryStatistics();voidannul();添加卡操作/查询卡操作/上机操作/下机操作/充值操作/退费操作/查询统计操作/注销卡操作/退出voidexitApp();通过使用宏定义,可以有效防止程序过于繁杂,也能够使同一个语句能够在多次使用时不需要重复编写,从而不影响整个程序的运行

10、,减少了工作量,提高了效率。文件的处理直接到卡文件中查找卡,通过循环读取卡,当卡的卡号正确时返回1,否则返回0tips:fseek(fp,sizeof(Card)-sizeof(aName),1);/将位置指针移到下一个结构代码部分:intisExist(constchar*pName,constchar*pPath)FILE*fp=NULL;charaName18=0;/保存读取的卡号信息if(fp=fopen(pPath,"rb")=NULL)printf("ThefunctionofisExsitcan'topenfile!n");exit

11、(-1);while(!feof(fp)if(fread(aName,sizeof(aName),1,fp)=1)if(strcmp(aName,pName)=0)fclose(fp);return1;else(fseek(fp,sizeof(Card)-sizeof(aName),1);/将位置指针移到下一个结构体fclose(fp);return0;关闭文件用fclose函数,可以使文件指针变量不再指向该文件,及时关闭文件,可以防止误操作创建链表用来添加,查询卡信息,将链表中的数据保存到文件中部分代码:intaddCard(Cardcard)/复制新添加的卡信息到链表(lpCardNode

12、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;returnTRUE;returnFALSE;一:从文件中读取信息(1) 用一个指针p指向链表的头结点(2) 判断读取是否有错

13、误,如果没有执行下一步,否则提示错误(3) while(!feof(fp)(4) 判断需要的值,如果是则执行4,如果不是则执行5(5) 再次判断是否读出,如果满足则输出或者返回,如果不满足则提示用户(6) p指向下一个节点关闭文件第二:更新文件中的信息(1) 创建文件指针,(2) while(!feof(fp)判断fread(&card,sizeof(Card),1,fp)是否为空,如果是,获取文件位置,如果不是,继续循环。(3) 指针移到标记的位置(4) 更新卡中的信息(5) 输出更新的信息关闭文件第三:将数据保存到文件中去(1) 创建文件指针(2) 判断文件打开是否有错误,如果有,

14、提示用户,如果没有,则执行下一步(3) 每一一个card的长度的向文件中输入数据。(4) 关闭文件结束第四:获取当地的时间(虽然不是很难但是用的很多很典型)(1) 用某某等丁time(NULL)来获取当地的时间(2) 编写tinetostring函数将time的类型转化为%Y-%m-%d%H:%M类型以字符申的类型输出4开发难点与体会刚开始的时候自己连VS2010都不会用,以前一直用的是DEVC+,然后边开始在白度上面不断搜索怎样使用VS2010,慢慢地终丁知道并开始熟悉VS2010的环境,也知道了如何创建文件,以前都只是写点小程序,还没写过这么大的程序,开始挺高兴的,但是当真正去做的时候,却

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

16、寝室的大神韩飞翔,好多问题都得到了解决。通过这次实验,我学习到了如何将卡信息保存到文本文件,如何读取文件,掌握了FILE类型结构体,并且知道了如何打开文件以及读取数据以及关闭文件,等等好多以前不知道的知识。有一下一些难点:链表的形式:在链表中查找节点:瑜入被TEfft返回查找不成功.返呵我们这次计费管理系统分三步.一是对要写成的计费管理系统做全面的分析,即对计费管理系统要使用的编写方法,管理功用,运行方式进行分析,并作出明确的解决方案.针对这次的计费管理系统,它的流程是:以管理员和用户方式进入,要有密码认证.实现添加、查询、上机、下机、充值、退费、查询统计、注销等功能。二是程序的编写.由丁计费

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

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

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

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

温馨提示

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

评论

0/150

提交评论