⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 学生信息管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/***************************************************************
V2.1正式版 主要代码
                                          written by BHR
										  2008年11月7日0:33:18
****************************************************************/
#include <stdio.h>
#include <windows.h>
#include "def.h"
#include "c_to_d.h"
#include <time.h>
#include "struct_stu.h"

typedef struct stu ElementData;             //typedef定义
typedef struct stu* LinkList;               //typedef定义

int Number=0;                                 //学生元素计数器

void save_record(char *Str_Information1,char *Str_Information2,char *Str_Information3,char *Str_Time);//记录打印函数

void main()
{
	system("title 学生信息管理系统");

	char * get_time();                             //获得时间
	void start();                                  //开始界面函数
	void menu();                        //菜单界面函数
	void ok_tuichu();                              //  正常退出界面函数
	void error_tuichu(int error);                           //不正常退出界面函数 

	start();
	menu();
}
/*定义开始界面函数*/
void start()
{
	void zifu();                                 //声明字符函数接口
	void dongtai();                              //动态显示

	char a;

	printf("\t\t\t\t欢迎使用\n");
    zifu();
    printf("请按任意键,以载入系统...\n");
	a=getchar();
	dongtai();
}

/*菜单界面函数*/
void menu()
{
	system("cls");
	system("title 登陆");

	void error_tuichu(int error);                         //不正常退出界面函数 
	void ok_tuichu();                                     //  正常退出函数
	int question_pw();                                    //获取密码提示
	int check_pw(char *str);                       //密码验证函数
	char * get_time();                             //获得时间函数
	int yesno(int xuanzhe);                        //功能选择函数
	void function_0();                             //菜单功能函数
	int  function_1();                             //菜单功能函数
	int  function_2();                             //菜单功能函数
	int  function_3();                             //菜单功能函数
	int  function_4();                             //菜单功能函数
	int  function_5();                             //菜单功能函数
	int  function_6();                             //菜单功能函数
                 /*...more...添加更多功能接口*/


	char str[20];
	int chishu=10;
	int xuanzhe=-1;                                //初始化成负一,以便yesno函数的第一次识别

	printf("\t\t\t   ***欢迎您的使用***\n");
	printf("\t\t\t\t\tnow time: %s",get_time());   /*通用时间获取语句*/
	printf("本系统要求密码验证,请输入密码以继续(9位):");
a1:	gets(str);

	if(! check_pw(str)){
		system("cls");
	    system("title 功能菜单界面");
		if(chishu<=1){
			printf("多次输入密码错误,请退出...\n");
			error_tuichu(ERROR);
		}
		printf("\t\t\t\t\tnow time: %s",get_time());    /*通用时间获取语句*/
		printf("输入密码错误,请重新输入,还有 %d 次机会\n>>",chishu = chishu-1);
		goto a1;
	}/*if(! check_pw(str))*/

	/*如果执行到这里,说明PW正确...*/

    save_record("****************************************************************\n\t\t\t用户成功登陆系统\n",
		"\t\t\t\t登陆时间:",
		"",
		get_time());

	system("cls");
	system("title 登陆中....");
	printf("\t\t\t\t\tnow time: %s",get_time());   /*通用时间获取语句*/
	printf("\n密码获得确认,登陆中,请稍候......\n");
	Sleep(800);                                   //延时函数,让进程睡五秒钟
	system("cls");
	printf("");
	printf("\t\t\t\t\tnow time: %s",get_time());   /*通用时间获取语句*/
	printf("\n登陆成功,正在生成主界面...\n");
	Sleep(500);                                   //延时函数,让进程睡两秒
	system("cls");


	while(!(yesno(xuanzhe)))
	{
a2:	system("cls");
	system("title 功能菜单界面");
	printf("\t\t\t   ***欢迎您的使用***\n");
	printf("\t\t\t***系 统 功 能 菜 单***\n");
	printf("\t\t\t\t\tnow time: %s",get_time());   /*通用时间获取语句*/


	printf("1,数据库中学生信息输出.\n\n");
	printf("2,在数据库中查找特定学生.\n\n");
	printf("3,在数据库中修改特定学生的信息.\n\n");
	printf("4,管理系统操作记录查看.\n\n");
	printf("5,PassWord 修改.\n\n");
	printf("6,查看该系统发行文档.\n\n");
	printf("0,退出本系统.\n\n");

	printf("_______________________\n");
	printf("请选择功能< >\b\b");
	scanf("%d",&xuanzhe);
    
	switch(xuanzhe)
	{
	case 0: function_0();
		break;
	case 1: if(function_1())
				goto a2;
		else ok_tuichu();
		break;

    case 2: if(function_2())
		        goto a2;
		else ok_tuichu();
		break;

	case 3: if(function_3())
		        goto a2;
		else ok_tuichu(); 
		break;

    case 4: if(function_4())
				goto a2;
		else ok_tuichu();
		break;
    case 5: if(function_5())
				goto a2;
		else ok_tuichu();
		break;
    case 6: if(function_6())
				goto a2;
		else ok_tuichu();
		break;
 /*......more......hehe...功能增加,在这里添加*/
/*注意在此添加后,要修改yesno的实现部分.否则执行时将*/
/*视新增加的命令为无效命令*/
	}

	}
}

/*密码效验函数*/
int check_pw(char *str)
{
	void error_tuichu(int error);                         //不正常退出界面函数
    FILE *fp;          //ID文件操作指针
	char flag[10];      //密码转换后的存放地点
	char flag_[10];     //正确密码存放点
	int i;

		fp = fopen("d:\\id.txt","rb");

		if(fp==NULL)
			error_tuichu(ERROR_4); //如果打开失败,则抛出失败信息,让error_tuichu函数处理

	if(strlen(str) !=9)  /*位数效验*/
		return ERROR;
	
	for(i=0;i<9;i++)  /*字符较验*/
		if(!(
			   str[i]>='0' 
			&& str[i]<='9'
			))
			return ERROR;

/*字符格式符合要求,进入判断*/
		for(i=0;i<9;i++){  //转换成符合要求的对比规则
			flag[i] = str[i]+i;      /*加密规则:ASCII + i*/
		/* printf("flag:%c  \n",flag[i]);*/ //编程检测行
			/*printf("%d  ",flag[i]);*/    //编程检测行
		}

/*写系统时用的临时代码,以生成ID文件*/
/*
        fp= fopen("d:\\id.txt","wb");
		fwrite(&flag[0],sizeof(char),9,fp);
	    fclose(fp);
		return OK;
*/
		fread(&flag_[0],sizeof(char),9,fp); //取出密码
        fclose(fp);

/**************************************
         //检测行
        for(i=0;i<9;i++){
			printf("flag_:%c  ",flag_[i]);
			printf("flag: %c  \n",flag[i]);
		}
****************************************/

		for(i=0;i<9;i++){ //对比
			if(flag[i] == flag_[i])
				continue;
			else break;
		}
/*
//检测行	
       printf("%d ",i);
*/
		if(i==9) {return OK;}
	
		return ERROR;

}

/*简单时间获取函数*/
char * get_time()
{
	time_t start;
	char time_str[30];

	start = time(NULL);
	
	return  ctime(&start);
}

/*功能循环函数*/
int yesno(int xuanzhe)
{ 
	if(xuanzhe>=0 && xuanzhe<=6)
		return OK;
	else
		return ERROR;
}

/*功能循环函数2*/
int yesno_3(int xuanzhe)
{ 
	if(xuanzhe>=0 && xuanzhe<=2)
		return OK;
	else
		return EXIT;
}

/*功能函数:0*/
void function_0()
{
    void ok_tuichu();
	ok_tuichu();
}

/*功能函数:1*/
int function_1()
{
	system("cls");                              //清屏
	system("title 学生信输出界面");           //刷新界面名字

	printf("\t\t\t   ***欢迎您的使用***\n");
	printf("\t\t\t***学 生 信 息 输 出***\n");
	printf("\t\t\t\t\tnow time: %s",get_time());   /*通用时间获取语句*/
//...........................函数声明........................................
LinkList InsList();                                        //声明外文件中函数
	                                                       //来自Link.cpp中的函数,初始化链表

void Start_List(LinkList L,ElementData data,int *Number);  //声明外文件中的函数
	                                                       //来自Link.cpp中的函数.拓补
	                                                       //线性表
void error_tuichu(int error);                                  //不正常退出函数声明
void get_ok_name(LinkList L1,char* input_name);                //打印声明
//...........................................................................

//...........................变量声明........................................
char check_str;                                            //用户选择是否循环
ElementData data,*L,*L1,*L2;                                   //学生元素相关变量
FILE *fp;                                                  //文件指针
int printf_count=0;                                        //循环打印变量
char input_name[3];                                        //相关变量
char input_add[50];                                        //导出可视化文本地址
//...........................................................................

		L = InsList();                              //初始化线性表
		fp = fopen("d:\\student_data.txt","r");
		if(fp == NULL) error_tuichu(ERROR_2);        //模仿异常的抛出
		while(!feof(fp)) {
			fread(&data,sizeof(ElementData),1,fp);   //从文件读取data数据
			Start_List(L,data,&Number);              //文件中读出的数据压进动态链表
		} /*while(!feof(fp))*/
      fclose(fp);
//............排序........
		for(L1 = L->next->next; L1->next !=NULL; L1 = L1->next) {
			for(L2 = L1; L2!= NULL; L2 = L2->next){
				if(c_to_d(L2->num) < c_to_d(L1->num))
				{
					strcpy(data.num,L1->num);
					strcpy(L1->num,L2->num);
					strcpy(L2->num,data.num);

					strcpy(data.name,L1->name);
					strcpy(L1->name,L2->name);
					strcpy(L2->name,data.name);

					strcpy(data.yuwen,L1->yuwen);
					strcpy(L1->yuwen,L2->yuwen);
					strcpy(L2->yuwen,data.yuwen);

					strcpy(data.shuxue,L1->shuxue);
					strcpy(L1->shuxue,L2->shuxue);
					strcpy(L2->shuxue,data.shuxue);

					strcpy(data.englise,L1->englise);
					strcpy(L1->englise,L2->englise);
					strcpy(L2->englise,data.englise);

					strcpy(data.cplus,L1->cplus);
					strcpy(L1->cplus,L2->cplus);
					strcpy(L2->cplus,data.cplus);
				}/*if('j'>'i')*/
			}/*for(j=i;j<List_Num;j++)*/
			
		}/*for(i=0;i<List_Num-1;i++)*/
//........................
		free(L2);

	  L1 = L->next;	 L1 = L1->next;

	         for(printf_count =0; printf_count<80;printf_count++) printf("_"); printf("\n");
				printf("   学号\t       姓名\t 性 别\t    手机\t 短号\t    系别\n");
			while(L1!=NULL) { 
             get_ok_name(L1,input_name); //打印 数据项
    		 L1 = L1->next;        //链表下移
			} /*while(L_name !=NULL)*/
            for(printf_count =0; printf_count<80;printf_count++) printf("_"); printf("\n");

    printf("学生信息输出完毕,请查看....\n");	
	save_record("________________________________________________________\n用户使用了全体学生信息输出功能\n",
		"使用时间:" ,
		"\t\t\t>>>没有异常\n________________________________________________________\n",
		get_time());

	getchar();
	printf("是否将该记录导出(y/n) < >\b\b");
	check_str=getchar();
	if(check_str=='y' || check_str=='Y')
	{
		L1 = L->next;
		L1 = L1->next;
		printf("请输入文本存放地址及文本名:");
		scanf("%s",input_add);
		fp = fopen(input_add,"w");
		if(NULL == fp) error_tuichu(ERROR_1); //模仿异常抛出
		fprintf(fp,"%s","\t\t\t***学生信息***\n");
		fprintf(fp,"%s%s%s","\t\t\t\t保存时间: ",get_time(),
			"______________________________________________________________________\n");
		fprintf(fp,"   学号\t       姓名\t 性 别\t    手机\t 短号\t    系别\n");

        printf_count=0;
		while(L1!= NULL) {
			printf_count++;
         fprintf(fp,"%s    %s\t   %s\t %s\t%s\t   %s\n",L1->num,L1->name,L1->yuwen,
                 L1->shuxue,L1->englise,L1->cplus);	
			L1 = L1 ->next;
		} /*while(L1 != NULL)*/
		fprintf(fp,"______________________________________________________________________\n");
		fprintf(fp,"\t\t\t\t\t-->>>完 毕,共 %d 条记录\n",printf_count);
		fprintf(fp,"\t\t学生信息存储系统 V 2.1 正式版 by BHR");
		fclose(fp);
		free(L);
		free(L1);
        printf("导出成功,记录存放于 \"%s\" 中.\n",input_add);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -