网络机房计费系统的设计与实现Word格式文档下载.docx
- 文档编号:7497496
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:22
- 大小:152.43KB
网络机房计费系统的设计与实现Word格式文档下载.docx
《网络机房计费系统的设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《网络机房计费系统的设计与实现Word格式文档下载.docx(22页珍藏版)》请在冰点文库上搜索。
membermem[100];
intmem_mum;
}mem_info;
mem_infom;
其中member_id表示会员编号,member_name[10]表示会员姓名,money表示该会员账户余额,flag标志该用户是否在上网,mem_mum表示会员的总人数。
下面这个是上网信息的结构体:
typedefstructmem_com{
intcomputer_id;
my_timebegin_time;
}mem_com;
typedefstructmem_com_info{
mem_comm_c_info[5];
intm_c_num;
}mem_com_info;
mem_com_infom_c;
其中member_id表示上网的会员编号,computer_id表示电脑编begin_time表示该会员此次开始上网时间,m_c_num表示正在上网的会员的总人数。
下面给出一些函数,这些函数可以完成上面概要设计的要求。
init():
此函数用来初始化有关变量;
add_member();
此函数用来添加会员信息;
sel_member();
此函数可以查找会员信息;
del_member();
此函数可以删除会员信息;
add_money();
此函数可以为会员账户充钱;
begin();
此函数可以模拟会员开始上网,并记录有关信息
end();
此函数可以模拟会员退出上网,并进行结算。
check_computer()此函数可以查看每台电脑的运行情况。
通过主函数对这些子函数的调用,可以完成该系统的功能。
四详细设计
根据上面的详细设计,我们把它转换成计算机C程序代码。
由于源代码过长过多,在这里,只给出一些核心函数的代码:
下面是主函数:
intmain(){
init();
intn;
while
(1){
printf("
请选择以下操作:
\n"
);
1添加会员\t2查询会员\t3删除会员\n4充钱\t5上网\t6退网\n7查看电脑运行情况\n"
请输入操作编号:
"
scanf("
%d"
&
n);
switch(n){
case1:
break;
case2:
case3:
case4:
case5:
case6:
case7:
check_computer();
}
}
}
下面是添加会员子函数:
voidadd_member(){
inti=0;
charch;
printf("
添加的该会员编号为%d\n"
first_member_id);
m.mem[m.mem_mum].member_id=first_member_id;
first_member_id++;
添加的该会员姓名为(以‘#’结束)"
do{
scanf("
%c"
ch);
m.mem[m.mem_mum].member_name[i]=ch;
i++;
}while(ch!
='
#'
m.mem[m.mem_mum].member_name[i-1]='
\0'
;
m.mem[m.mem_mum].money=0;
m.mem[m.mem_mum].flag=0;
m.mem_mum++;
添加成功\n"
下面是查询会员子函数:
voidsel_member(){
intid;
printf("
请输入要查询的会员编号:
id);
for(inti=0;
i<
m.mem_mum;
i++)
{
if(m.mem[i].member_id==id)
flag=1;
要查询的会员姓名:
%s\n"
m.mem[i].member_name);
要查询的会员账户余额:
%d\n"
m.mem[i].money);
break;
if(flag==0)printf("
不存在该会员号\n"
下面是给会员充钱函数:
voidadd_money(){
请输入要充钱的会员编号:
flag=1;
该账户余额为:
请输入要充钱的金额:
money);
m.mem[i].money=m.mem[i].money+money;
该账户现在余额为:
\n不存在该会员号\n"
elseprintf("
\n充钱成功\n"
下面是开始上网子函数:
intbegin(){
intm_id;
inti;
intflag=0;
time_tnowtime;
structtm*timeinfo;
time(&
nowtime);
timeinfo=localtime(&
请输入要上网的会员编号:
m_id);
if(m.mem[i].member_id==m_id){
flag=1;
m.mem[i].flag=1;
if(flag==0){printf("
return0;
for(i=0;
5;
i++){
if(com[i].flag==0)break;
if(i<
5){
该会员分配的上网电脑编号为:
i+1);
com[i].flag=1;
m_c.m_c_info[m_c.m_c_num].member_id=m_id;
m_c.m_c_info[m_c.m_c_num].computer_id=i;
m_c.m_c_info[m_c.m_c_num].begin_time.month=timeinfo->
tm_mon+1;
m_c.m_c_info[m_c.m_c_num].begin_time.day=timeinfo->
tm_mday;
m_c.m_c_info[m_c.m_c_num].begin_time.hour=timeinfo->
tm_hour;
m_c.m_c_info[m_c.m_c_num].begin_time.minute=timeinfo->
tm_min;
m_c.m_c_info[m_c.m_c_num].begin_time.second=timeinfo->
tm_secprintf("
开始上网时间:
%d月%d日%d时%d分%d秒\n"
timeinfo->
tm_mon+1,timeinfo->
tm_mday,timeinfo->
tm_hour,timeinfo->
tm_min,timeinfo->
tm_sec);
m_c.m_c_num++;
elseprintf("
上网人数已满\n"
return1;
还有其他的子函数就不一一列举了。
五程序测试
程序运行如下,用户可以选择操作.如下图,选择添加会员操作,以及通过会员编号查询会员信息。
图5-1会员操作
管理员也可以通过选择操作4给会员充钱,如下图5-2,在给会员充钱时,会显示会员账户余额和充钱数额,非常清晰。
图5-2会员账户充钱
下面这是上网操作,管理员输入会员编号,系统会自动分配一台空电脑给会员上网,并记录上网时间。
图5-3会员开始上网
下面是会员退网操作,会员退网后,会显示该会员开始上网时间,以及一共上网时间和所用的花费。
图5-4会员退网结算
六总结
在这次的设计过程中,我学到的不仅是知识,我还认识到许多事情。
在开始编写程序的时候总是有一些出错,在查找有关书籍和向老师询问后得出了结果。
这次设计使我的编程水平提高了一大步,同时还使我充分的认识到合作的可贵。
这次设计对我的综合能力是一次很好的锻炼,但是我必须承认自己的能力和知识还很肤浅,所以今后我的学习道路还是很漫长的。
我认为这次的课程设计意义很深,和其他同学的共同学习﹑配合﹑努力的过程也很愉快,另外还要感谢老师的耐心辅导另外在课程设计的过程中,当我们碰到不明白的问题时,指导老师总是耐心的讲解,给我们的设计以极大的帮助,使我们获益匪浅。
因此非常感谢老师的教导。
由于我水平有限,加之时间短暂,故该网络机房计费系统中还有许多不足之处,请老师批评指正,以使我自己能在以后的制作中不断改进,不断完善。
七参考文献
[1]黄晓东等.课程设计案例精编[M].北京.高等教育出版社.2007
[2]丁亚涛等.C语言程序设计[M].北京.高等教育出版社.2009
[3]严蔚敏等.数据结构[M].北京.清华大学出版社.2007
[4]严蔚敏等.数据结构习题集[M].北京.清华大学出版社.2007
[5]乔林.C语言上机指导[M].北京.清华大学出版社.2007
源程序代码
#include<
stdio.h>
stdlib.h>
time.h>
string.h>
typedefstructmy_time{
intmonth;
intday;
inthour;
intminute;
intsecond;
}my_time;
typedefstructcomputer{
}computer;
computercom[5];
typedefstructmember{
intfirst_member_id=1001;
typedefstructmem_com{
voidinit(){
m.mem_mum=0;
m_c.m_c_num=0;
for(inti=0;
{
com[i].computer_id=i+1;
com[i].flag=0;
inti=0;
if(m.mem[i].member_id==id)
voiddel_member(){
intflag=0;
请输入要删除的会员编号:
scanf("
if(m.mem[i].member_id==id){
m.mem_mum--;
for(intj=i;
j<
j++){
m.mem[i]=m.mem[i+1];
删除成功\n"
tm_sec;
tm_mon+1,timeinfo->
m_c.m_c_num++;
voidend(){
inth,m1;
intmonth,day,hour,minute,second;
month=timeinfo->
day=timeinfo->
hour=timeinfo->
tm_hour;
minute=timeinfo->
second=timeinfo->
请输入要退网的会员编号:
m_c.m_c_num;
if(m_c.m_c_info[i].member_id==m_id){
%d时%d分\n"
m_c.m_c_info[i].begin_time.hour,m_c.m_c_info[i].begin_time.minute);
现在时间为:
%d时%d分\n"
hour,minute);
h=hour-m_c.m_c_info[i].begin_time.hour;
m1=minute-m_c.m_c_info[i].begin_time.minute+h*60;
一共上网%d时%d分,花费%d元"
m1/60,m1-(m1/60)*60,m1);
for(intj=0;
j++)
if(m.mem[j].member_id==m_id){
printf("
账户原有%d元,还剩下%d元\n"
m.mem[j].money,m.mem[j].money-m1);
m.mem[j].money=m.mem[j].money-m1;
}
intcheck_computer(){
inth,m1;
inti,j;
请输入要查看的电脑编号:
if(com[id-1].flag==0){printf("
该电脑没被使用\n"
else{
for(i=0;
if(m_c.m_c_info[i].computer_id==id-1){
printf("
该电脑正被使用\n"
使用该电脑的会员编号为:
m_c.m_c_info[i].member_id);
for(j=0;
if(m.mem[j].member_id==m_c.m_c_i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 机房 计费 系统 设计 实现