logo资料库

计费管理系统实验报告.doc

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
1 实验目的
2 系统功能与描述
3 典型算法分析(完整源码请见光盘)
4 开发难点与体会
5 实验总结
学号 《计算机基础与综合编程实验》报告 学 院 计算机科学与技术学院 专 业 班 级 姓 名 指导教师 日期
1 实验目的 通过迭代式开发,深入掌握 C 语言的文件、链表、结构体、动态内存管理等 技术,开发实现一个计费管理软件。 计费软件背景:计费管理系统是一个计费平台,按时间计费,用卡消费。 可 应用于网吧、学校机房、学校电子阅览室等。除多样化、灵活的计费形式外, 本 系统还可进行修改相关卡信息、费用信息,且具有查询统计、系统管理等功能。 2 系统功能与描述 项目功能包括:对计费系统平台的用户进行管理,每个用户对应一张卡,功 能有卡的添加、查询、注销功能,上机、下机功能,充值、退费功能,密码查询、 修改功能,查询功能(输出查询卡的所有卡信息),统计功能(输出卡信息数量、 计费信息数量)。 ·添加卡 输入卡号、密码,开卡金额。 将用户账户的卡信息保存到卡信息结构体,添加到相应路径下保存卡信息的文本 文件的末尾。保存失败,则显示“添加失败!”;保存成功,则显示“添加成功!”, 并显示添加卡的卡号、密码、状态、开卡金额。 考虑到一次添加多个用户账户,添加卡成功后,利用 switch-case 函数可选择返 回主菜单、继续添加卡或是退出系统。 【技术实现】:while 循环,指针变量的初始化及使用,字符串拷贝函数 strcop(), 头文件 time.h 相关变量、函数的使用,将卡信息写入文本文件。 1
·查询卡 输入查询卡的卡号,判断长度符合要求后,选择查询方式(精准查询、模糊查询) 进行查询卡并输出查询到的卡信息。 将文本文件中的用户账户信息即卡信息,利用 getCard()函数保存到链表 CardList。保存到链表时调用 getCardCount()函数获取卡信息数量,便于动态 分配内存;调用 readCard()函数读取卡信息,读取卡信息时用到 praseCard() 函数解析文本文件。 精准查询:根据输入的卡号,利用 while 循环遍历链表,在卡信息链表 CardList 中查询卡号相同的结点,返回结点中的卡信息。 模糊查询:输入的卡号作为查询的关键字,根据输入的关键字,进行模糊查询。 遍历链表,利用函数 strstr()判断卡号中有无输入的关键字。若找到则将该卡 的卡信息一次保存到卡信息结构体中,返回卡信息结构体。 【技术实现】:字符串拷贝函数 strcpy(),字符串比较函数 strcmp(),头文件 time.h 相关变量、函数的使用,时间类型转换为字符串,将文本文件的信息解析 后写入链表,匹配信息并输出查询到的卡信息。 ·上机 输入要上机的卡号、密码。 2
将文本文件中的用户账户信息即卡信息,保存到链表,保存过程同查询卡。 根据输入的卡号、密码,遍历链表,找到相应的卡信息并保存到变量中。未找到 或卡号与密码不匹配,则输出“无该卡信息 上机失败”。 找到卡信息,判断该卡是否符合上机条件。要求卡状态为未上机,否则输出“该 卡正在上机、已经注销或失效 上机失败”;卡余额大于零,否则输出“余额不 足 上机失败”。 符合上机条件,更新卡信息,将计费信息保存到计费信息结构体、计费信息文本 文件。保存成功则输出“上机成功”并输出上级卡的卡号、余额、上机时间。否 则输出“上机失败”。 【技术实现】:将文本文件的信息解析后写入链表。文本文件的打开、读写、关 闭。匹配信息并输出上机成功的卡信息。 ·下机 3
输入要上机的卡号、密码。 将文本文件中的用户账户信息即卡信息,保存到链表 CardList,保存过程同查 询卡。 根据输入的卡号、密码,遍历链表,找到相应的卡信息并保存到相应的变量中。 未找到或卡号与密码不匹配,则输出“无该卡信息 下机失败”。 找到卡信息,判断该卡是否符合下机条件。卡状态为正在上机,否则输出“该卡 未上机、已经注销或失效 下机失败”;计算消费金额,若卡余额少于消费金额, 则输出“余额不足 下机失败”。 更新卡信息、计费信息,保存计费信息到计费信息结构体、计费信息文本文件。 保存失败则输出“下机失败”。 下机成功,输出下机信息,即下机卡的卡号、消费金额、余额、上机时间、下机 时间。 【技术实现】:将文本文件的信息解析后写入链表。文本文件的打开、读写、关 闭。匹配信息并输出下机成功的卡信息。 ·充值 输入充值卡卡号、密码。 将文本文件中的用户账户信息即卡信息,保存到链表,保存过程同查询卡。 4
根据输入的卡号、密码,遍历链表,找到相应的卡信息并保存到变量中。 判断该卡是否可以充值。要求卡状态为未使用或正在使用。不符合输出“充值失 败”。 若可以充值,输入充值金额计算优惠后的金额作为卡余额。 更新卡信息结构体,更新、保存文本文件中的卡信息和二进制文件中的充值记录 信息。若更新、保存则输出“充值失败!”,否则输出“充值成功!”。 【技术实现】:二进制文件、文本文件的读写操作。信息的匹配。 ·退费 输入退费卡卡号、密码。 将文本文件中的用户账户信息即卡信息,保存到链表,保存过程同查询卡。 根据输入的卡号、密码,遍历链表,找到相应的卡信息并保存到变量中。 判断该卡可否退费。要求卡状态为未使用且卡余额大于 0。不符合则输出“退费 失败”。 若可以退费,输出退费金额,更新链表中的信息、卡信息文件信息,保存退费记 录。输出“退费成功!”。 否则,输出“退费失败!”。 【技术实现】:二进制文件、文本文件的读写操作。信息的匹配及输出。 5
·注销卡 判断管理员用户名、密码正确,获得注销卡的使用权限。 输入注销卡卡号、密码。 将文本文件中的用户账户信息即卡信息,保存到链表,保存过程同查询卡。 根据输入的卡号、密码,遍历链表,找到相应的卡信息并保存到变量中。 判断可否注销。要求卡状态为未上机,且卡余额大于 0。 若可注销,输出卡号和退款金额。 更新链表中的信息、卡信息文件中的卡信息,输出“注销成功”。 【技术实现】:将文本文件的信息解析、保存到链表。字符串比较函数。文本文 件的打开、读写、关闭。信息的匹配与输出。 --------------------------------------------------------------------- 以上为该项目的基本功能。 除了基本功能,还添加了几项特色功能:开卡优惠,充值优惠,查询密码,修改 密码,管理员权限的设置,查询统计文件中卡信息、计费信息的数目。 --------------------------------------------------------------------- ·特色功能①:开卡优惠 6
添加卡信息时,输入开卡金额,每一百元送五十元。计算得到输入的开卡金额是 100的整数倍,将倍数乘50加到原金额上,计算得到优惠后的金额作为卡信 息中的余额。 【技术实现】:数值运算。更新文件中的信息。 ·特色功能②:充值优惠 充值卡时,输入充值金额后,每一百元送五十元。计算得到输入的充值金额是 100 的整数倍,倍数*20+输入充值金额+原余额所得,作为卡信息的余额。 【技术实现】:数值运算。更新文件中的信息。 7
分享到:
收藏