XXXX大学
实 训 报 告
课程名称: C语言程序设计课设
项目名称: BBCC系统
学 院: 专 业:
姓 名:
学 号:
指导教师: 成 绩:
年月日
目 录
第1部分 课程设计题目与要求... 2
1.问题描述... 2
2.功能要求... 2
3.任务分工... 2
第2部分 《学生BBCC系统》的设计与功能实现... 3
1.总体设计... 3
2.数据结构... 3
3.算法设计... 3
4.程序代码设计... 3
5.测试与调试... 3
第3部分 课程设计总结... 4
1.个人总结... 4
2.结束语... 4
附录Ⅰ 程序清单... 5
附录Ⅱ 用户使用说明书... 5
参考文献... 5
第1部分 课程设计题目与要求
1.问题描述
AACC系统要求实现日常中对于AA的一些基本CC操作,建立AA文件、买饭、续钱、添加新AA、注销旧AA、设置与解除挂失等操作都要求能成功的在构建的平台上进行准确的处理。
2.功能要求
程序输出主菜单(如下),然后提示用户选择操作;
|――――――――――――――|
| 请输入选项编号(1—7): |
|――――――――――――――|
| 1-建立AA文件 |
| 2—买饭 |
| 3-续钱 |
| 4-添加新AA |
| 5-注销旧AA |
| 6-设置与解除挂失 |
| 7-信息查询 |
|――――――――――――――|
在主菜单中选择1,建立名为card.dat的文件,并在其中添加若干人的AA号、姓名、金额、挂失信息,要求输入的AA号是唯一的;
在主菜单中选择2,要求用户输入AA号、饭费,然后系统自动从该人的AA中减去饭前,并分别显示买饭前后的金额,如果原来AA中的余额不足5元,则不能买饭,而且显示“余额不足,请续钱!”,如果挂失信息为真,则显示“本卡已冻结!”;
在主菜单中选择3,要求用户输入AA号、续钱额,续钱完成后分别显示续钱前后的金额;
在主菜单中选择4,添加新AA,这是要求新AA号和已有的AA号不能重号;
在主菜单中选择5,注销旧AA;
在主菜单中选择6,要求用户输入AA号和挂失信息,然后更新该AA的挂失信息;
在主菜单选择7,然后用户选择查询方式,便可查询已存储信息的用户的卡号、姓名、卡上余额以及挂失锁定状态等信息。
3.任务分工
组长 负责对于主要函数的调试,调试的函数为mycreate、mybuy、myplus、myadd、myzhux、mylock,并将主程序调通并写部分设计报告
组员 负责部分函数的调试,调试的函数为myprint、main、myinfo,协助组长整理设计报告,并调试数据。
第2部分 《学生BBCC系统》的设计与功能实现
1.总体设计
AACC系统模块图
程序通过主模块调用其他函数来实现各种要求实现的功能。
显示主菜单模块通过调用myprint函数显示主菜单,提示使用的用户改执行的操作,实现基本的人机对话。
创建AA文件模块通过调用mycreat函数实现新建一个文件存储所要用户信息,从而实现程序的第一步操作;
买饭模块通过调用mybuy函数实现已存储用户信息的用户买饭的功能;
充值模块通过调用myplus函数实现已存储用户信息的用户为自己的卡号充值的功能;
添加新AA模块通过调用myadd函数实现添加在数据库中无用户信息的新用户的信息;
注销旧用户模块通过调用mylogout函数实现删除已存储用户信息的用户的信息;
设置和解除挂失模块通过调用mylock函数实现对用户的锁定信息的解除和执行操作,从而实现对于用户出现卡号丢失等情况时保护功能;
信息查询模块作为创新通过调用myinfo通函数实现用户通过卡号或姓名查询用户的卡号、姓名、卡上余额以及挂失锁定状态;
2.数据结构
在程序中为了实现对于对于AA进行CC,我们定义了
struct card
{
char num[10];
char name[10];
float money;
int lock;
};
其中card.num是用来存储用户的卡号信息,card.name用来存储用户的姓名信息,card.money用来存储用户的卡上即时余额,card.lock用来记录用户的锁定信息;
4.算法设计
采用模块化的思想,按照“自顶而下,逐步细化”的原则设计算法。
(1)菜单的设计
①主函数的作用主要是调用myprint函数显示主界面,由于菜单比较简单所以采用printf函数将菜单项注意打印在屏幕上,边框则采用printf输出|-拼接起来实现人机对话的第一步.
②然后通过读取用户的输入,调用switch函数对用户的输入进行进一步的处理,并使用do-while函数实现用户的选择性的重复操作。
我们为用户提供了一个正常的出口,我们采用人机对话的形式,用户选择某一菜单以后,程序完成对于的功能,然后询问用户是否继续选择,用户即可退出也可以继续输入,而且主菜单0选项也可正常退出。
(2)设计各模块的算法,这是主板细化的过程。
①为了实现AACC程序创建AA文件模块创建新的AA文件的功能,模块调用mycreat函数以实现这一目的。
函数使用指针创建名为card.dat的文件来对所要处理和保存的用户信息进行存储,并在开始的时候提示用户执行这步操作将会覆盖以前的数据,然后先定义将要使用变量,然后程序一步步的提示用户进行输入卡号、姓名、充值等操作,并规定了一切的新建用户属于非锁定状态,并且标识每次的输入的次数,提示用户存储了多少为用户的用户信息。
程序v1.0版使用的是输入任意#号后退出输入。输入完毕后系统自动关闭文件并存储所键入的用户信息在所建立的文件内。
②为了实现用户使用AACC程序买饭的功能,买饭模块调用mybuy函数以实现这一功能。
函数被调用后先定义需要使用的变量,然后通过while 的调用来检测程序被提供的数据读取文件是否存在,在确定存在的文件有数据的同时使用定义的结构体数组来记录存在的用户信息,然后提示用户输入想要买饭是使用的AA号,如果没有发先用户输入的卡号将返回主菜单,确定输入的卡号有记录以后,输出用户卡上的余额,然后检查卡号是否被执行挂失锁定,锁定的话便返回主菜单;系统然后检查用户卡号的余额是否大于5元,小于等于5元的时候,程序返回主菜单;余额充足的时候便提示用户输入想要买饭的金额,然后处理用户卡上余额,并将用户的卡上即时余额打印在屏幕上。
然后程序打开card.dat文件存储即时的数据,然后关闭文件,完成了用户的买饭的过程,返回主菜单。
③为了实现用户在帐号上余额不足时使用AACC程序为卡号的的功能,买饭模块调用myplus函数以实现这一功能。
函数被调用后先定义需要使用的变量,然后通过while 的调用来检测程序被提供的数据读取文件是否存在,在确定存在的文件有记录的同时使用定义的结构体数组来记录存在的用户信息,然后提示用户输入想要充值的AA号,如果没有发先用户输入的卡号将返回主菜单,确定输入的卡号有记录以后,输出用户卡上的余额,然后检查卡号是否被执行挂失锁定,锁定的话便返回主菜单;没锁定的提示用户输入要为输入的卡号充值的金额,处理卡上的余额并,并将用户的卡上即时余额打印在屏幕上。
程序打开card.dat文件存储即时的数据,然后关闭文件,完成了用户的充值的过程,返回主菜单。
④为了实现使用AACC系统添加新用户的功能,添加新AA模块调用myadd函数以实现这一功能。
函数被调用后先定义各种将使用的变量,然后通过while 的调用来检测程序被提供的数据读取文件是否存在,同时使用定义的结构体数组来记录存在的用户信息,然后提示用户输入想要添加的新用户的卡号,通过do-while语句并内嵌for语句、if语句以及do-while语句来读取用户输入新用户的卡号,同时确认是否与已有的数据重复,并使用if语句可以使用户提前推出输入。得到用户输入的正确的新用户卡号后,提示用户输入新用户的姓名并为新用户卡号充值,程序将所有的新添加的用户的挂失锁定状态定义为自由使用状态。
成功的将写入文件后,程序关闭card.dat文件,并返回主菜单。
mylogout函数流程图
⑤为了实现使用AACC系统注销旧用户的功能,注销旧用户模块调用mylogout函数以实现这一功能。
函数被调用后先定义各种将使用的变量,然后通过while 的调用来检测程序被提供的数据读取文件是否存在,同时使用定义的结构体数组来记录存在的用户信息,然后程序提示用户输入想要注销的卡号(由于是要删除信息,即使数据库中无数据也不会影响程序),在然后程序利用for循环内嵌if语句来检查card.dat有没有输入卡号的记录,没有的话直接退出到主菜单;有记录的话将会输出输入卡号的用户的信息,提示用户是否继注销操作,用户觉得退出的话,程序返回主菜单;用户决定继续注销操作后,打开文件,使用for内嵌if语句来删除注销卡号的信息。
成功的注销用户输入的卡号信息后,关闭文件返回主菜单。
⑥为了实现使用AACC系统设置和接触挂失的功能,设置和接触挂失调用mylock函数以实现这一功能。
mylock函数被调用后先定义需要使用的变量,然后通过while 的调用来检测程序被提供的数据读取文件是否存在,在确定存在的文件有数据的同时使用定义的结构体数组来记录存在的用户信息,然后提示用户输入想要执行操作的AA号,如果没有发先用户输入的卡号将返回主菜单,确定输入的卡号有记录以后,输出用户卡上的余额,然后检查卡号是否被执行挂失锁定,然后使用if else语句来分别处理两种情况,在锁定的情况下,询问用户是否确定要执行解除锁定操作,而在非挂失锁定的情况下,询问是否需要执行锁定操作。然后对用户的数据进行更改,并临时保存。
然后程序打开card.dat文件存储即时的数据,然后关闭文件,完成了用户对输入卡号的锁定和解除操作的过程,关闭文件返回主菜单继续操作。
⑦作为创新模块的信息查询,可以实现用户通过卡号或姓名中的一个查询文件有记录的用户的信息,信息查询模块通过调用myinfo模块实现用户信息的查询的功能。
myinfo函数被调用后先定义需要使用的变量,然后通过while 语句的调用来检测程序被提供的数据读取文件是否存在,在确定存在的文件有数据的同时使用定义的结构体数组来记录存在的用户信息,然后输出二级菜单,询问用户选择的查询方法,在用户选择卡号查询和姓名查询中一个选项时,分别提醒用户输入查询的卡号或姓名;然后检查是否有输入用户的的卡号或姓名,没有的输出提示信息返回主菜单,有的话输出该用户的信息。
然后程序返回主菜单,完成了用户的执行操作。
4.程序代码设计
(1)主函数需要读取用户输入的选项,需要成功的调用其他功能的函数,从而实现程序的各个功能;
char select='\0',y_n='\0';
首先主函数定义变量语句,select是读取并临时存储用户的选择的执行项,而y_n则是用来读取用户输入,判断用户是否继续执行操作;
do
{
myprint();
printf("");
select=getch();
switch(select)
{ case '1': mycreate(); break;
case '2': mybuy() ; break;
case '3': myplus() ; break;
case '4': myadd() ; break;
case '5': mylogout(); break;
case '6': mylock() ; break;
case '7': myinfo() ; break;
case '0': exit(0) ; break;
default : printf(" 错误指令!无法执行!\n"); getch();
}
system("cls");
printf("\n\n\n\n\n\n÷ 返回继续操作(Y/y)退出程序(N/n)\n");
do
{ y_n=getch();
}while(y_n!='Y'&&y_n!='y'&&y_n!='N'&&y_n!='n');
} while(y_n=='Y'||y_n=='y');
使用该语句来实现在用户输入选择项后,程序判断后进入对应模块,并相应的调用模块使用的函数进行运算,并使用break在调用完函数后退出switch语句。
然后询问用户是否继续操作,使用do-while语句来确认用户的输入的合法性,并使用使用getch语句来读取,然后使用外层的do-while判断是否退出循环;
而myprint函数简单使用了printf语句来显现将主菜单打印在屏幕上的功能。
(2)创建AA文件的mycreat函数需要4个参数,其中strust card类型的变量temp存储临时的卡号、姓名、卡上金额、锁定状态,int i型变量用于记录个数,文件指针fp指向记录文件,而char conti用于读取用户是否决定继续。
int i=1;
struct card temp={0};
FILE *fp=NULL;
char conti='\0';
利用指针打开D盘目录下名为card.dat的文件,if语句用来判断文件是否存在。
fp=fopen("d:\\card.dat","w");
if (fp==NULL)
{ printf("\n存储失败!请检查路径和文件名是否正确"); return;}
利用do-while语句来多次读取用户输入的信息,i的自加语句来记录输入记录个数,内嵌的do-while语句来确定用户输入正确的卡号,并在用户输入完以后提示用户是否继续输入
do
{
i++;
printf("\n开始录入第%d个数据:\n",i);
printf(" 输入AA编号: ");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 输入AA持有者姓名: ");
gets(temp.name);
printf(" 请为建立的AA充值: ");
scanf("%f",&temp.money);
printf(" 继续(Y/y)结束(N/n) ");
do
{ conti=getch();
}while(conti!='Y'&&conti!='y'&&conti!='N'&&conti!='n');
temp.lock=0;
fprintf(fp,"%23s%16s%8.2f%3d\n",temp.num,temp.name,temp.money,temp.lock);
}while(conti=='Y'||conti=='y');
(3)AACC系统的mybuy函数需要8个变量,其中strust card类型的变量temp存储临时的卡号、姓名、卡上金额、锁定状态,strust card类型的变量recrord[n]记录文件中存储的用户信息,int类型的i用为for语句的循环变量,n用来记录文件中记录用户信息的用户个数,find记录输入用户的在文件中和数组中位置,float类型的mon用来记录用户想要买饭的金额。
void mybuy()
{ char c='\0';
int n=0,i,find;
float mon;
struct card temp={0},record[N]={0};
FILE *fp=NULL;
该语句用来读取并存储文件中的用户信息,并用n记录文件中有效的记录数,但文件中不存在记录时返回主函数并提示用户。
while(feof(fp)==0)
{ fscanf(fp,"%23s%16s%f%3d\n",record[n].num,record[n].name,&record[n].money,&record[n].lock);
if(strcmp(record[n].num,"")!=0)
n++;
}
fclose(fp);
if(n==0)
{ printf("\n\n\n\n\n\n 文件中无记录!\n 请重新指定文件或创建文件 \n");
getch();
return;
}
使用for语句寻找输入卡号是否与输入的卡号是否匹配,如果文件中无盖卡号信息是返回主菜单,有记录是用find记录卡号的下标。然后使用两个if判断语句,在满足未锁定卡号且卡上余额充足食,提示用户输入购买金额。
for(i=0;i<n;i++)
{
if(strcmp(temp.num,record[i].num)==0)
{ printf("你卡上的余额: %8.2f\n",record[i].money);
find=i;
break;
}
}
if(find==n)
{
printf("无输入卡号记录!任意键返回主菜单\n");
getch();
return;
}
if(record[find].lock==1)
{
printf("输入的卡号已执行挂失锁定!任意键返回主菜单\n");
getch();
return;
}
if(record[find].money<=5)
{
printf("余额不足请续钱\n任意键返回主程序!");
getch();
return;
}
读取用户所需要的购买的金额,处理卡上余额,并写入数组中临时存储即时的余额。
scanf("%f",&mon);
record[find].money=record[find].money-mon;
(4) AACC系统的myplus函数需要8个变量,其中strust card类型的变量temp存储临时的卡号、姓名、卡上金额、锁定状态,strust card类型的变量recrord[n]记录文件中存储的用户信息,int类型的i用为for语句的循环变量,n用来记录文件中记录用户信息的用户个数,find记录输入用户的在文件中和数组中位置,float类型的mon用来记录用户想要充值的金额。
void myplus()
{ char c='\0';
int n=0 ,i,find;
float mon;
struct card temp={0},record[N]={0};
FILE *fp=NULL;
用户在提示后输入充值金额,系统读取用户输入的金额,然后处理卡上余额,并通过赋值改变数组的值。
scanf("%f",&mon);
record[find].money=record[find].money+mon;
(5)AACC系统的myadd函数需要8个变量,其中strust card类型的变量temp存储临时的卡号、姓名、卡上金额、锁定状态,strust card类型的变量recrord[n]记录文件中存储的用户信息,int类型的i用为for语句的循环变量,n用来记录文件中记录用户信息的用户个数,find记录输入用户的在文件中和数组中位置。
void myadd()
{
char c='\0';
int n=0,i,find=0;
struct card temp={0},record[N]={0};
FILE *fp=NULL;
函数提示用户输入卡号并使用do-while语句来确定用户输入非空的卡号,然后使用for内嵌的if与结构体数组中的是否有重复,重复时提示用户是退出输入还是重新输入,用户重新输入时将重复刚才的步骤。当成功的输入卡号是,将提醒用户输入姓名和卡上余额。
do
{
c='\0';
printf("请输入你要添加卡号: ");
gets(temp.num);
for(i=0;i<n;i++)
if(strcmp(temp.num,record[i].num)==0)
{
find=n;
printf("输入的卡号已存在!\n");
printf("是否重新输入(Y/N)\n");
do
{ c=getch();
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
}
if(c=='n'||c=='N')
return;
}while(c=='y'||c=='Y');
printf("输入该卡的用户姓名: ");
gets(temp.name);
printf("请为该卡充值: ");
scanf("%f",&temp.money);
程序打开card.dat文件后,初始化用户的信息,直接在文件尾添加所填加的数据。
fp=fopen("d:\\card.dat","a");
temp.lock=0;
fprintf(fp,"%23s%16d%8.2f%3d",temp.num,temp.name,temp.money,temp.lock);
fclose(fp);
(6)AACC系统的mylogout函数需要7个变量,其中strust card类型的变量temp存储临时的卡号、姓名、卡上金额、锁定状态,strust card类型的变量recrord[n]记录文件中存储的用户信息,int类型的i用为for语句的循环变量,n用来记录文件中记录用户信息的用户个数,find记录输入用户的在文件中和数组中位置,fin记录输入卡号是否存在,char conti用来出来用户是否确认删除数据。
void mylogout()
{
char conti='\0';
int fin=0,n=0,i;
struct card temp={0},record[N]={0};
FILE *fp=NULL;
提示用户是否删除继续操作,若用户选择N或n时系统将会返回主菜单,若用户悬着Y或者y时系统将继续执行下一步操作。
printf("是否注销用户%s(Y/N)!注销将会删除用户的所有信息!",temp.num);
do
{
conti=getch();
}while(conti!='Y'&&conti!='y'&&conti!='N'&&conti!='n');
if(conti=='n'||conti=='N')
return;
打开card.dat文件后,使用for内嵌的if语句,当卡号temp.num与数组record[i].num相同时不写文件,实现删除卡号的目的。
fp=fopen("d:\\card.dat","w");
for(i=0;i<n;i++)
{
if(strcmp(temp.num,record[i].num)!=0)
fprintf(fp,"%23s%16s%8.2f%3d\n",record[i].num,record[i].name,record[i].money,record[n].lock);
}
fclose(fp);
(6)AACC系统的mylogout函数需要7个变量,其中strust card类型的变量temp存储临时的卡号、姓名、卡上金额、锁定状态,strust card类型的变量recrord[n]记录文件中存储的用户信息,int类型的i用为for语句的循环变量,n用来记录文件中记录用户信息的用户个数,find记录输入用户的在文件中和数组中位置,fin记录输入卡号是否存在,char c用来出来用户是否确认对数据执行操作。
void mylock()
{
char c='\0';
int find=0,n=0,i;
struct card temp={0},record[N]={0};
FILE *fp=NULL;
利用for内嵌if内嵌if else语句来确定卡号是否存在,存在是输出其信息,并输出其锁定的状态。
for(i=0;i<n;i++)
if(strcmp(temp.num,record[i].num)==0)
{
find=i;
printf("用 户 信 息:\n 卡号:%10s 姓名:%10s 余额:%8.2f\n",record[i].num,record[i].name,record[i].money);
if(record[i].lock==1)
printf("该卡号已执行了挂失锁定:\n");
else
printf("该卡号的处于自由使用状态:\n");
}
运用if-else语句对要执行的卡号进行分类,当卡号已被挂失锁定时,询问用户是否要执行解除锁定操作,并使用do-while语句来确保用户的输入正确;相反,当卡号处于自由操作时,询问用户是否要执行锁定操作,并同样使用do-while语句来确保用户的输入正确;
if(record[find].lock==1)
{
printf("该卡号已执行了挂失锁定!\n");
printf("是否执行解除锁定操作!\n");
do
{ c=getche();
}while(c!='Y'&&c!='y'&&c!='n'&&c!='N');
if(c=='N'||c=='n')
return;
record[find].lock=0;
printf("\n已执行了对卡号%10s 姓名%10s的用户的解除锁定操作!\n",record[find].num,record[find].name);
}
else
{
printf("该卡号的处于自由使用状态:\n");
printf("是否执行挂失锁定操作\n");
do
{ c=getche();
}while(c!='Y'&&c!='y'&&c!='n'&&c!='N');
if(c=='N'||c=='n')
return;
record[find].lock=1;
printf("\n已执行了对卡号:%10s姓名:%10s的用户的锁定操作!\n",record[find].num,record[find].name);
getch();
}
(7)AACC系统的myinfo函数需要7个变量,其中strust card类型的变量temp存储临时的卡号、姓名、卡上金额、锁定状态,strust card类型的变量recrord[n]记录文件中存储的用户信息,int类型的i用为for语句的循环变量,int类型n用来记录文件中记录用户信息的用户个数,find记录输入用户的在文件中和数组中位置,fin记录输入卡号是否存在,choose用来读取用户需要选择的查询方式。
void myinfo()
{
char c='\0';
int find=0,n=0,i,choose;
struct card temp={0},record[N]={0};
FILE *fp=NULL;
二级菜单,提示用户输入想要执行操作的方式,当用户选择0时返回主函数,选择1时卡号查询,选择2时姓名查询
printf("\n\n\n\n\n\n你现在的位置是 >余额查询<");
printf("\n您想查询的方式为: ");
printf("\n >1.卡号查询<");
printf("\n >2.姓名查询<");
printf("\n >0.退 出<");
printf("\n >>");
if(choose==0)
return;
当选择1是提示输入卡号,并在记录的中寻找相应的用户信息,选择是2是提示输入姓名,并在记录中寻找相应的用户信息。当无法找到是返回主菜单,找到是输出相应的用户的信息。
if(choose==1)
{
printf("\n请您输入您的卡号(回车结束输入): ");
scanf("%s",temp.num);
for(i=0;i<n;i++)
if(strcmp(temp.num,record[i].num)==0)
{
printf("\n>用户信息\n>:姓名%16s: 姓名%16s: 余额%8.2f: 挂失状态%2d(1为锁定)",record[i].num,record[i].name,record[i].money,record[i].lock);
find=i;
}
}
else
{
printf("\n请您输入您的姓名(回车结束输入): ");
gets(temp.name);
for(i=0;i<n;i++)
if(strcmp(temp.name,record[i].name)==0)
{
printf("\n>用户信息\n>:姓名%16s: 姓名%16s: 余额%8.2f: 挂失状态%2d(1为锁定)",record[i].num,record[i].name,record[i].money,record[i].lock);
find=i;
}
}
(完整代码参见附录1)
5.测试与调试
第3部分 课程设计总结
1.个人总结
2.结束语
本程序和报告AACC程序共同完成。在编写过程中,得到了李论老师在百忙之余抽出时间给予我们大力指导和帮助,并提供机房给我们进行编写工作。同时,我们广泛的听取其他组的意见,感谢所有给予帮助的人。
附录Ⅰ 程序清单
附上AACC程序1.1的代码
附录Ⅱ 用户使用说明书
谢谢各位使用我们的AACC系统1.1,请大家在使用前阅读用户使用说明书,使你能更好的使用该程序。
本程序实现了人机对话,只要根据提示,便可以成功使用该程序。但是有以下几点用户需要注意的。
(1) 创建新用户时,请输入10位以下有效的字符的卡号和姓名,本系统只支持10位以下的输入存储。而新用户的卡上余额请输入99999999.99以下的金额(本系统默认的是人民币);
(2) 创建新AA,输入请确定你输入的卡号没有与前面输入的重复,为了系统的稳定性,请参看你输入记录;
(3) 买饭是请注意自己卡上的余额,系统现在尚不能处理您卡上金额比输入购买金额少时的情况,为了你的正常使用,请勿非法操作;
(4) 为了你的正常使用你的卡号请保证你卡上的余额充足,余额不足5元是系统将锁定你的卡好,你将不能使用你的卡号进行买饭,所以当你卡上余额到一定数目是请充值;
(5) 当你卡号遗失时,为了你的正当权益,请执行挂失操作,这是你的卡号将无法进行买饭和充值,找回卡号时,请执行接触锁定操作;
(6) 当你忘记你的信息是。你可登录系统,进行信息查询;
(7) 请你合法的使用该软件。
本软件版权由戰神工作室所有,基于开源的目的,请勿将该软件用于商业目的,如需要源代码,请联系我们:dgtqcomand@hotmail.com
参考文献
[1]崔武子,赵重敏,李青.C语言程序设计.2版.北京:清华大学出版社,2007
[2]杨永国.Visual C++ 6.0实用教程.
[3]谭浩强著.C程序设计.2版.清华大学出版社的