网吧管理系统------C语言课设
1.课程设计报告的要求
开发一个简单的网吧管理系统,实现以下基本功能:
【基本功能】
1.网吧会员信息包括:会员号、会员姓名、手机号、身份证号、积分等。
2.上网信息包括:会员号、电脑编号、上网开始时间等。
3.能够添加、删除、修改会员信息,并将修改后的信息再次写入文件。
4.能够按给定会员号、姓名等信息进行查找并显示相关信息。
5.能够按照姓名或会员号对会员信息进行排序,并存入文件中。
6.结算时,需将对应上网信息删除,并添加相应会员积分。
【扩展功能】
可以按照自己对网吧管理系统的需求理解进行扩展。比如:(1)权限处理 (2)模糊查询(3)综合查询(4)统计等功能。总之,可以根据自己的需求分析进行功能扩展。
2.实现管理员注册和登录模块的代码
部分函数声明及功能简介
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
//#include "user_vip.h"
void menu();
//打印菜单以供用户选择
void menu_choice(int choice);
//对用户菜单的选项来调用函数
void sign_in();
//设置登陆系统,默认账号12345678
//默认密码admin
//第一次输入需要用户更新账号密码存于名为key的文本文档中
//运用fopen函数
void registe();
/*注册函数
* 先判断是否是默认函数(sign_flag是否为0)
* 如果是则可以修改
* 如果不是则需要输入任意一位管理员账号密码才能注册
*/
void add_administrator_menu();
//打印添加管理员菜单
void add_administrator(int choice);
/*在默认账号密码已经被使用过之后
* 使用的添加管理员的函数
* 需要输入之前任意一位管理员的账号密码
才能注册新的管理员账号密码
*/
//建立所需文件
void OpenFile();
各个函数具体内容
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "sysytem.h"
#include "user_vip.h"
char id[15];
char key[15];
//int sign_flag;
//FILE* p = fopen("flag.txt", "r");
//fscanf(p,"%d",&sign_flag);
//flag.txt表示注册次数,第一次则直接覆盖默认账号密码
void set_file()
{
FILE *p1=fopen("管理员key.txt", "a+");
FILE *p2=fopen("管理员id.txt", "a+");
FILE* p3= fopen("sign_flag.txt", "a+");
FILE* p4 = fopen("user_somebody.txt", "a+");
FILE* p5 = fopen("user_vip.txt", "a+");
//fprintf(p4,"**********************会员号码*****会员名称*****会员手机号*****零钱余额*****积分余额**********************");
fclose(p1);
fclose(p2);
fclose(p3);
fclose(p4);
fclose(p5);
}
void menu()
{
//int sign_flag = 0;//表示注册次数,第一次则直接覆盖默认账号密码
int choice;
printf("\n\n\n\n");
printf(" **************************************************************** \n");
printf(" * 网吧管理系统 * \n");
printf(" * * \n");
printf(" * * \n");
printf(" * 请输入账号密码来进入管理员后台! * \n");
printf(" * * \n");
printf(" * ( 默认账号:12345678 * \n");
printf(" * * \n");
printf(" * 默认密码:admin ) * \n");
printf(" * 1.登录 * \n");
printf(" * 2.注册账号 * \n");
printf(" * 3.退出系统 * \n");
printf(" * * \n");
printf(" * * \n");
printf(" * [默认账号密码仅用于注册第一位管理员,使用一次之后会失效] * \n");
printf(" * * \n");
printf(" * * \n");
printf(" * * \n");
printf(" * * \n");
printf(" **************************************************************** \n");
printf("\n\n\n");
printf("请输入对应菜单选项!\n");
scanf("%d", &choice);
menu_choice(choice);
}
/*
* 1.登录(未完成)
* 2.注册账号
* 3.退出系统
*/
//默认密码登录不安全提示?直接跳注册界面?
//显示当前已有多少管理员?
void menu_choice(int choice)
{
switch (choice)
{
case 1:
sign_in();
break;
case 2:
registe();
break;
case 3:
printf("\n\n谢谢使用本管理系统,系统已退出!\n\n");
exit(0);
break;
default:
printf("输入错误,请重新输入!\n");
menu();
}
}
//第一个管理员允许才能创建第二个管理员?[已完成]
//注册函数要注意思考用户名重复问题[已完成]
//"\n"是否读入?[已完成fseek解决,读入\n]
//时间动感?颜色?
void sign_in()
//登录
{
FILE* fp1=fopen("管理员id.txt","r" );
FILE* fp2 = fopen("管理员key.txt", "r");
//r表示只读
int sign_flag;
FILE* p = fopen("sign_flag.txt", "r");
fscanf(p, "%d", &sign_flag);
int flag = 0;
char library_id[15];
char library_key[15];
int count = 0;
printf(" **************************************************************** \n");
printf(" * * \n");
printf(" * * \n");
printf(" 账号:");
scanf("%s", &id);
while (strlen(id) > 15)
{
printf("账号长度过大,请重新输入\n");
scanf("%s", id);
}
printf(" * * \n");
printf(" * * \n");
puts("");
printf(" 密码:");
scanf("%s", &key);
while (strlen(key) > 15)
{
printf("密码长度过大,请重新输入\n");
scanf("%s", key);
}
printf(" * * \n");
printf(" * * \n");
printf(" **************************************************************** \n");
puts("");
if (sign_flag == 0 && strcmp(id, "12345678") == 0 && strcmp(key, "admin") == 0)
{
printf("请勿用默认管理员账号密码进入系统!仅用来注册使用!\n");
printf("\n即将返回上一层菜单!\n");
menu();
}
else
{
while (strcmp(library_id, id) != 0)
{
fscanf(fp1, "%s", library_id);
if (strcmp(library_id, id) == 0)
flag = 1;
count++;
if (count > sign_flag)
{
printf("\n\n您暂无管理员权限,请重新输入!\n\n");
menu();
break;
}
}
if (flag == 1)
{
count = 0;
while (strcmp(library_key, key) != 0)
{
fscanf(fp2, "%s", library_key);//不能换行输入的话,"内加空格试试
if (strcmp(library_key, key) == 0)
flag = 2;
count++;
if (count > sign_flag)
{
printf("\n密码错误,请重新输入!\n");
sign_in();
break;
}
}
}
if (flag == 2)
{
pr_vip_menu();
}
}
}
void registe()
{
int sign_flag;
FILE* p = fopen("sign_flag.txt", "r");
fscanf(p, "%d", &sign_flag);
fclose(p);
printf(" **************************************************************** \n");
printf(" * 新管理员后台注册系统 * \n");
printf(" * * \n");
printf(" * * \n");
printf(" * * \n");
printf(" 请输入新管理员账号:");
scanf("%s", &id);
while (strlen(id) > 15)
{
printf("账号过长,请输入0-15位字符作为账号密码,\n请重新输入账号");
scanf("%s", &id);
}
printf(" 请输入新管理员密码:");
scanf("%s", &key);
while (strlen(key) > 15)
{
printf("账号过长,请输入0-15位字符作为账号密码\n请重新输入密码");
scanf("%s", &key);
}
printf(" * * \n");
printf(" * [第一次注册请使用默认账号密码注册!] * \n");
printf(" * * \n");
printf(" * * \n");
printf(" **************************************************************** \n");
if (sign_flag > 0)
{
printf("\n\n\n");
printf("您暂无注册管理员权限!请联系任意一位管理员获取权限!!\n");
printf("\n\n\n");
add_administrator_menu();
}
else if (sign_flag == 0)
{
if (strcmp(id, "12345678") == 0 && strcmp("admin", key) == 0)
{
FILE* fp1=NULL;
FILE* fp2=NULL;
FILE* fp3=NULL;
FILE* fp4=NULL;
fp1 = fopen("管理员id.txt", "w");
fp2 = fopen("管理员key.txt", "w");
fclose(fp1);
fclose(fp2);
fp3 = fopen("管理员id.txt", "r+");
fp4 = fopen("管理员key.txt", "r+");
printf(" 请输入新的管理员账号:\n");
scanf("%s", &id);
while (strlen(id) > 15)
{
printf("账号过长,请输入0-15位字符作为账号密码,\n请重新输入账号");
scanf("%s", &id);
}
printf(" 请输入新管理员密码:");
scanf("%s", &key);
while (strlen(key) > 15)
{
printf("账号过长,请输入0-15位字符作为账号密码\n请重新输入密码");
scanf("%s", &key);
}
fputs(key, fp4);
fputs(id,fp3);
fclose(fp3);
fclose(fp4);
sign_flag++;
}
else
{
printf("默认账号密码有误,请重新尝试!\n");
registe();
}
p = fopen("sign_flag.txt", "w");
fclose(p);
p = fopen("sign_flag.txt", "r+");
fprintf(p, "%d", sign_flag);
fclose(p);
printf("\n\n\n您已注册成功,即将返回主菜单!!\n");
menu();
}
}
/* 用户名重复问题[已完成]
* \n读入问题[已完成]
* 是否要限制用户名和密码位数?
* 是否密码复杂度?修改密码?
打印菜单供选择[已完成]
*/
void add_administrator_menu()
{
int choice;
printf("\n\n\n");
printf(" **************************************************************** \n");
printf(" * 您正在申请注册新的管理员权限 * \n");
printf(" * * \n");
printf(" * 请输入以下菜单编号来获取功能 * \n");
printf(" * * \n");
printf(" * 1.注册新的管理员权限 * \n");
printf(" * * \n");
printf(" * 2.返回登陆界面 * \n");
printf(" * * \n");
printf(" * 3.退出系统 * \n");
printf(" * * \n");
printf(" * * \n");
printf(" * * \n");
printf(" * * \n");
printf(" **************************************************************** \n");
printf("\n\n");
printf("请输入菜单编号:\n");
scanf("%d", &choice);
add_administrator(choice);
}
/*
* 1.注册新管理
* 2.返回登陆
* 3.退出系统
*/
void add_administrator(int choice)
{
char id[15];
char key[15];
int sign_flag;
FILE* p = fopen("sign_flag.txt","r");
fscanf(p,"%d",&sign_flag);
fclose(p);
FILE* fp1 = fopen("管理员id.txt", "r");
FILE* fp2 = fopen("管理员key.txt", "r");
char id_tem[15];
int flag = 0;
char key_tem[15];
//媒介用于对比
switch (choice)
{
case 1:
printf("\n\n\n");
printf(" **************************************************************** \n");
printf(" * * \n");
printf(" * * \n");
printf(" 请输入已注册管理员的账号:");
scanf("%s", id);
while (strlen(id) > 15)
{
printf("账号长度过大,请重新输入\n");
scanf("%s", id);
}
printf(" * * \n");
printf(" * * \n");
printf(" 请输入已注册管理员的密码:");
scanf("%s", key);
while (strlen(key) > 15)
{
printf("密码长度过大,请重新输入\n");
scanf("%s", key);
}
printf(" * * \n");
printf(" * * \n");
printf(" * * \n");
printf(" **************************************************************** \n");
//接下来核对管理员账号密码是否正确
for (int i = 0; i < sign_flag; i++)
{
fscanf(fp1, "%s", id_tem);
fscanf(fp2, "%s", key_tem);
if (strcmp(id_tem, id) == 0)
{
flag = 1;
if (strcmp(key_tem, key) == 0)
{
flag = 2;
}
}
//fp1 += strlen(id_tem);
//fp2 += strlen(key_tem);
fseek(fp1, strlen(id_tem), SEEK_CUR);
fseek(fp1, strlen(key_tem), SEEK_CUR);
}
fp1 = fopen("管理员id.txt", "r");
fp2 = fopen("管理员key.txt", "r");
if (flag == 0)
{
printf("无此管理员权限信息!请检查是否账号输入错误\n");
printf("\n\n\n");
add_administrator_menu();
}
if (flag == 1)
{
printf("管理员密码错误!\n"