资源简介

诗词大会-C语言版(实现查找、随机出诗句、登录注册)
采用本地txt存储账号密码、诗句
没有采用MySQL来管理相关的代码
C语言没有好好学,功能都能实现,但是代码书写不规范,仅供参考,可以修改。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include “defen.h“
#define USER_MAX 20
#define N 10
#include 
#define M_bushiju 100
#define N_bushiju 2
#include 
#include 
/* 此系统能存放最多的用户数 */
typedef struct {
char name[10];
char password[10];
}
User;
/* 定义一个存放用户的结构体 */
User list[USER_MAX];
/* 定义一个全局数组,类型是User大小是USER_MAX */
char * filename = “user.txt“;
char * filerank = “ranking.txt“;
char * filepoem = “poem.txt“;
/* 需要在你的程序目录下新建一个user.txt、ranking.txt文件 */
/* -----------------------------------------------------登录模块 -----------------------------------------------------*/
/* 登录函数 */
User login() {
char name[10];
char password[10];
User lg;
printf( “输入账号:“ );
scanf( “%s“ name );
strcpy( lg.name name );
printf( “输入密码:“ );
scanf( “%s“ password );
strcpy( lg.password password );
return(lg);
}
/* 写入txt文件,每一行存在一个用户 */
void writeToFile( User u ) {
FILE *fw = fopen( filename “a+“ );
fprintf( fw u.name );
fprintf( fw “\t“ );
fprintf( fw u.password );
fprintf( fw “\n“ );
}
/* 判断是否存在该用户 */
int exist( User u ) {
int i;
for ( i = 0; i < USER_MAX; i++ ) {
if ( 0 == strcmp( list[i].name u.name ) && 0 == strcmp( list[i].password u.password ) ) {
return(1);
}
}
return(-1);
}
/* 注册用户 */
void registerUser() {
char name[10];
char password[10];
User user;
int i;
printf( “请输入用户名“ );
scanf( “%s“ name );
strcpy( user.name name );
/* 判断注册的用户是否已存在 */
for ( i = 0; i < USER_MAX; i++ ) {
if ( 0 == strcmp( list[i].name name ) ) {
printf( “用户已存在“ );
}
}
printf( “请输入密码“ );
scanf( “%s“ password );
strcpy( user.password password );
writeToFile( user );
printf( “注册成功“ );
}
int menu() {
int choice;
printf( “----------诗词大会系统----------\n“ );
printf( “1.登录\n“ );
printf( “2.注册\n“ );
printf( “3.退出\n“ );
printf( “--------------------------------\n“ );
printf( “请输入你的选择:“ );
scanf( “%d“ &choice );
return(choice);
}
/* -----------------------------------------------------登录模块 -----------------------------------------------------*/
/* 诗词系统 */
int poemmenu(){
int choice;
printf( “-------------主菜单-------------\n“ );
printf( “1.诗词学习\n“ );
printf( “2.搜索诗词\n“ );
printf( “3.诗词游戏:补充诗句\n“ );
printf( “4.我的得分\n“ );
printf( “5.增加诗词\n“ );
printf( “6.退出\n“ );
printf( “--------------------------------\n“ );
printf( “请输入你的选择:“ );
scanf( “%d“ &choice );
return(choice);
}
/* 逐行读取数据 */
char *ReadSpeacialLine( int i ) {
char filepoem[] = “poem.txt“;
/* 文件名 */
FILE *fp1;
//声明fp是文件指针 
int WhichLine = i;
/* 指定要读取哪一行 */
int CurrentIndex = 0;
/* 当前读取的行 */
static char StrLine[1024];
/* 每行最大读取的字符数可根据实际情况扩大 */
if ( (fp1 = fopen( filepoem “r“ ) ) == NULL )  
/* 判断文件是否存在及可读 */ {
printf( “文件为空!“ );
return(NULL);
}
while ( !feof( fp1 ) ) {
//判断文件是否结束 
if ( CurrentIndex == WhichLine ) {
fgets( StrLine 1024 fp1 );
/*从fp1即输入缓冲区中读取最多1024个字符到字符

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       8841  2020-01-03 15:26  诗词大会.c

     文件       3204  2020-01-03 15:26  defen.h

----------- ---------  ---------- -----  ----

                12045                    2


评论

共有 条评论