ImageVerifierCode 换一换
格式:DOCX , 页数:91 ,大小:269.86KB ,
资源ID:8892668      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8892668.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(机房收费管理系统《程序设计基础ⅱ》课程设计大学论文.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

机房收费管理系统《程序设计基础ⅱ》课程设计大学论文.docx

1、机房收费管理系统程序设计基础课程设计大学论文东 莞 理 工 学 院课程设计报告课程名称 程序设计基础课程设计 题 目 机房收费管理系统 院系名称 计算机学院 专业班级 计科1班 学生学号 学生姓名 指导教师 完成时间 1、系统分析1.1功能需求分析1.2数据需求分析2、系统设计2.1函数调用关系设计2.2函数设计3、系统编码3.1程序文件模块3.2程序代码4、系统调试与运行5、总结5.1自我评价及收获5.2有待解决的问题及进一步完善的思路6、参考文献1系统分析11 功能需要分析开发设计一个机房收费管理软件,要求系统具有如下功能:功能介绍序号模块功能说明1*卡管理*添加卡输入卡号、密码、开卡金额

2、等卡信息,将卡信息保存到data文件夹的card.txt文件中2*查询卡根据输入的卡号,查询卡号相同的卡信息,并以表格形式显示在控制台中3*注销卡根据输入的卡号、密码,将对应卡的状态改为注销,注销卡不能进行上机4计费标准管理新增计费标准输入计费标准的信息,将输入的计费标准保存到data文件夹的rate.txt文件中5查询计费标准根据上机时间,查询对应的计费标准6删除计费标准从计费标准文件data文件夹的rate.txt文件中,删除一条计费标准7修改计费标准修改一条计费标准8计费管理上机根据输入的卡号、密码,判断该卡能否上机,如果能上机,则保存计费信息9下机根据输入下机卡的卡号,进行下机结算操作

3、10*费用管理*充值给一条已经存在的卡进行充值。11*退费将卡中余额返回给用户12查询统计查询消费记录查询一张卡在一段时间内的消费记录13统计总营业额统计一段时间内,总营业额14统计月营业额统计一年中,每个月上机次数、总营业额,将统计结果保存到文本文件中,并以列表形式显示在控制台中。15权限管理*添加管理员超级管理员添加一个管理员信息16*删除管理员超级管理员删除一个管理员信息17配置权限添加管理员时,配置管理员的权限18*系统*登录超级管理员和管理员登录系统19*退出超级管理员和管理员退出系统12 数据需要分析卡数据、管理员数据、计费标准数据是系统管理的主要数据,包括卡号、密码、余额、管理员

4、账号、管理员密码、管理员权限、计费标准。2系统设计21 函数调用关系设计系统分为六个模块,分别为卡管理、费用管理、权限管理、计费标准管理、计费管理、查询统计六个模块,每个模块分为2或3个子模块,每个子模块完成一项功能22 函数设计 主函数。功 能:读取文件信息,建立卡信息链表、管理员信息、计费标准链表。判断管理员类型。实现菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单。返回值:void。函数名:main。形参表: FILE *fp; struct card *cardhead=NULL,*p3,*p4=NULL; struct manager *managerhead=NULL,*p1,

5、*p2=NULL; struct charging_standard *standardhead=NULL,*p5,*p6=NULL; int l=0,n,i=1,j=1,sel,flag=0,m,f,index; char managernum40,password40;。算 法:定义文件指针fp、链表指针p1,p2和相关变量;以“读”方式打开本文文件card.txt; 循环从文件读取卡信息,存入链表,直至文件结束; while(!feof(fp)。开辟一个新节点:让p1指向新结点,并令p1-next为NULL;。从文件将卡信息读入结点的数据域;。若为首结点,则令cardhead、p2均指向

6、首结点,否则,把p1指向的新结点连接到表尾(则p2-next=p1)。令p2指向新的表尾结点。 以相同方式建立管理员信息链表和计费标准链表。依据输入的管理员类型判断是否与管理员信息链表中的信息相符,相符则依据管理员类型显示不同的菜单功能,不相符则返回。主函数提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数card_manage(cardhead); cost_manage(cardhead); power_manage(managerhead)、standard_manage(standardhea)、count_cost_manage(cardhead)、query_

7、count(cardhead); ),直到选择“退出”为止。由于循环次数未知,选while语句实现。算法用类while结构描述如下:while(1) 显示菜单; 输入菜单选项; 选择执行菜单:即分支调用input_score()、edit_score()、del_score()、count_sel()、print_sorce()或退出; 卡管理函数。功能:实现菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单。返回值:无。函数名:card_manage。形参表:sel。算法:提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数提供菜单功能,即循环显示菜单、输入菜单选项、选

8、择执行菜单(即分支调用函数add_card(cardhead);、 query_card(cardhead); 、delete_card(cardhead); ),直到选择“退出”为止。由于循环次数未知,一般选while语句实现。算法用类while结构描述如下:while(1) 显示菜单; 输入菜单选项; 选择执行菜单:即分支调用add_card(cardhead);、 query_card(cardhead); 、delete_card(cardhead); 或退出; 权限管理函数。功能:实现菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单。返回值:无。函数名:power_manage。

9、形参表:sel。算法:提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数add_manager(managerhead); 、delete_manage(managerhead); ),直到选择“退出”为止。由于循环次数未知,一般选while语句实现。算法用类while结构描述如下:while(1) 显示菜单; 输入菜单选项; 选择执行菜单:即分支调用add_manager(managerhead); 、delete_manage(managerhead); 或退出; 费用管理函数。功能:实现菜单功能

10、,即循环显示菜单、输入菜单选项、选择执行菜单。返回值:无。函数名:cost_manage。形参表:sel。算法:提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数recharge(cardhead); 、drawback(cardhead); ),直到选择“退出”为止。由于循环次数未知,一般选while语句实现。算法用类while结构描述如下:while(1) 显示菜单; 输入菜单选项; 选择执行菜单:即分支调用recharge(cardhead); 、drawback(cardhead); 或退出;

11、 计费管理函数。功能:实现菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单。返回值:无。函数名:count_cost_manage。形参表:sel。算法:提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数oncpt(cardhead); 、offcpt(cardhead); ),直到选择“退出”为止。由于循环次数未知,一般选while语句实现。算法用类while结构描述如下:while(1) 显示菜单; 输入菜单选项; 选择执行菜单:即分支调用oncpt(cardhead); 、offcpt(ca

12、rdhead); 或退出; 查询统计函数。功能:实现菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单。返回值:无。函数名:query_count。形参表:sel。算法:提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数query_cost_record(cardhead)、query_countmoney(cardhead)、count_year_money(cardhead); ),直到选择“退出”为止。由于循环次数未知,一般选while语句实现。算法用类while结构描述如下:while(1)

13、 显示菜单; 输入菜单选项; 选择执行菜单:即分支调用query_cost_record(cardhead)、query_countmoney(cardhead)、count_year_money(cardhead); 或退出; 计费标准管理函数。功能:实现菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单。返回值:无。函数名:standard_manage。形参表:sel。算法:提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数query_charging_standard(standardhea

14、d);、add_charging_standard(standardhead);、delete_charging_standard(standardhead);、re_charging_standard(standardhead); ),直到选择“退出”为止。由于循环次数未知,一般选while语句实现。算法用类while结构描述如下:while(1) 显示菜单; 输入菜单选项; 选择执行菜单:即分支调用query_charging_standard(standardhead)、add_charging_standard(standardhead)、delete_charging_standar

15、d(standardhead)、re_charging_standard(standardhead) 或退出; 计费标准管理函数。功能:实现菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单。返回值:无。函数名:standard_manage。形参表:sel。算法:提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数提供菜单功能,即循环显示菜单、输入菜单选项、选择执行菜单(即分支调用函数query_charging_standard(standardhead);、add_charging_standard(standardhead);、delete_charging_st

16、andard(standardhead);、re_charging_standard(standardhead); ),直到选择“退出”为止。由于循环次数未知,一般选while语句实现。算法用类while结构描述如下:while(1) 显示菜单; 输入菜单选项; 选择执行菜单:即分支调用query_charging_standard(standardhead)、add_charging_standard(standardhead)、delete_charging_standard(standardhead)、re_charging_standard(standardhead) 或退出;添加卡函

17、数 。功能:向卡信息链表添加一个新的包含卡信息的结点,最后返回链表头指针; 。返回值:cardhead 。函数名:add_card 。形参表: struct card *newcard,*p1;int m; 。算法:开辟一个新结点:让newcard指向新结点,并令newcard -next为NULL; 输入新结点的数据域数据;判断原链表是否为空,若为空,则将newcard指向的结点插入到cardhead之后并置该结点指针域为NULL;否则将newcard指向的结点插入到链表尾结点。 if(cardhead-countmoneynext=NULL; /判断文件是否为空 else p1=cardh

18、ead; while(p1-next!=NULL)p1=p1-next; /将结点插入链表 p1-next=newcard; newcard-next=NULL;查询卡函数 。功能:根据输入的卡号,查询卡号相同的卡信息,并以表格形式显示在控制台中 。返回值:cardhead 。函数名:query_card 。形参表:int j=1,n; struct card *p1;char cardnum40; 。算法:。定义1个struct card结构体指针变量p1,设置p初值为cardhead; 。根据卡号cardnum,从链表头开始顺序查找卡信息,直到找到或链表结束。 查找结点:描述如下while

19、(p1!=NULL&strcmp(cardnum,p1-cardnum)!=0) p1=p1-next; /查找卡号所在结点 显示数据:描述如下if(p1!=NULL)printf(%s%s%dn,p1-cardnum,p1-cardpassword,p1-money);注销卡函数 。功能:根据输入的卡号,删除链表中指定位置的结点,最后返回链表头指针; 。返回值:cardhead 。函数名:delete_card 。形参表:int i=1,j=1,n;struct card *p1,*p2=NULL;char cardnum40,cardpassword40; 。算法:。定义2个struct

20、card结构体指针变量p1和p2,设置p1初值为cardhead,p2 初值为NULL。 。根据卡号cardnum,从链表头开始顺序查找卡信息,直到找到或链表结束。查找结点:描述如下 p1=cardhead; while(p1!=NULL&(n=cardnum-p1-cardnum)!=0) p2=p1;p1=p1-next; 。删除结点:描述如下 if(p1!=NULL) if(strcmp(p1-cardpassword,cardpassword)=0) if(strcmp(p1-cardnum,cardhead-cardnum)=0)cardhead=p1-next; /删除卡号所在结点

21、 else p2-next=p1-next; free(p1); /释放空间 j+; else i+; if(j!=1)printf(注销成功!按回车键返回。); if(i!=1)printf(密码错误!按回车键返回。); if(p1=NULL)printf(操作失败!无此卡信息,按回车键返回。);新增计费标准函数 。功能:在计费标准链表插入一个结点,最后返回链表头指针; 。返回值:standardhead 。函数名:add_charging_standard 。形参表:struct charging_standard *newstandard,*p1; 。算法: 开辟一个新结点:让newst

22、andard指向新结点,并令newstandard -next为NULL; 输入新结点的数据域数据;判断原链表是否为空,若为空,则将newstandard指向的结点插入到cardhead之后并置该结点指针域为NULL;否则将newcard指向的结点插入到链表尾结点。用伪代码表示如下 if(standardhead-numnext=NULL; else p1=standardhead; while(p1-next!=NULL)p1=p1-next; p1-next=newstandard; newstandard-next=NULL; 查询计费标准函数 。功能:读取计费标准文件中的数据,并且显示

23、在控制台上。 。返回值:standardhead 。函数名:query_charging_standard 。形参表: struct charging_standard *p1; 。算法:定义1个struct charging_standard结构体指针变量p1,设置p初值为standardhead; 逐个显示计费标准直到链表结束。 用伪代码表示如下: while(p1-next!=NULL) printf(%d %s n,p1-num,p1-ch); p1=p1-next; 删除计费标准函数 。功能:根据输入的编号,删除链表中指定位置的结点,最后返回链表头指针。 。返回值:standardh

24、ead 。函数名:delete_charging_standard 。形参表: int j=1,n,num; struct charging_standard *p1,*p2=NULL; 。算法: 定义2个struct charging_standard结构体指针变量p1和p2,设置p1初值为cardhead,p2初值为NULL。 。根据编号num,从链表头开始顺序查找计费标准信息,直到找到或链表结束。查找结点:描述如下 p1=standardhead; while(p1!=NULL&(n=num-p1-num)!=0) p2=p1;p1=p1-next; 删除结点:描述如下 if(p1!=N

25、ULL) if(p1-num=standardhead-num)standardhead=p1-next; else p2-next=p1-next; free(p1); j+; if(j!=1)printf(删除成功!按回车键返回。); if(p1=NULL)printf(操作失败!无计费标准信息,按回车键返回。);修改计费标准函数 。功能:根据输入的编号,重新输入链表中指定位置的结点的数据域的数据,最后返回链表头指针。 。返回值:standardhead 。函数名:re_charging_standard 。形参表: int j=1,n,num; char ch200; struct ch

26、arging_standard *p1,*p2=NULL; 。算法: 定义2个struct charging_standard结构体指针变量p1和p2,设置p1初值为cardhead,p2初值为NULL。定义char型变量储存新的计费标准。查找结点:描述如下 p1=standardhead; while(p1!=NULL&(n=num-p1-num)!=0) p2=p1;p1=p1-next; 修改数据域:描述如下 p1=standardhead; while(p1!=NULL&(n=num-p1-num)!=0) p2=p1;p1=p1-next; if(p1!=NULL) strcpy(p

27、1-ch,ch); j+; if(j!=1)printf(修改成功!按回车键返回。); if(p1=NULL)printf(操作失败!无此计费标准信息,按回车键返回。);上机函数 。功能:根据输入的卡号,修改链表中指定位置的结点的数据域的数据,最后返回链表头指针。 。返回值:cardhead 。函数名:oncpt 。形参表: struct tm *local; int i=1,j=1,n; struct card *p1,*p2=NULL;char cardnum40,cardpassword40 。算法:定义int型变量cardnum,cardpassword,定义 2个struct car

28、d结构体指针变量p1,p2.定义时间结构体指针local 根据卡号和密码,判断是否能上机,若能上机则将记录当月上机次数的数据加1:描述如下 p1=cardhead; while(p1!=NULL&(n=cardnum-p1-cardnum)!=0) p2=p1;p1=p1-next; if(p1!=NULL) if(p1-cardpassword=cardpassword) if(p1-money0) j+; p1-count=p1-count+1; time_t t; t=time(NULL); local=localtime(&t); p1-onlocal-tm_mon=p1-onlocal-tm_mon+1; else printf(该卡欠费%d元,请先缴纳欠费!按回车键返回。,-p1-money); else i+; if(j!=

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1