基于链表的学生信息管理系统和基于MySQL的学生信息管理系统 -C语言

学习C语言有两个周了,基本语法都了解了,还有一些比较生疏,然后重新温习了一下数据结构,没有涉及到的是队列,图,树,排序中的归并排序和堆排序桶排序。


用了大概一天时间码了一个学生信息管理系统,比较粗糙,可能会有不少BUG,但这算是对我这段时间的一个总结把,


结束了windows下C编程,准备进入无GUI的命令行界面的Linux下的C编程,加油!


上代码

头文件定义

#ifndef ANDREW_LIU
#define ANDREW_LIU

#include<conio.h> 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <Windows.h>
#define USR_PWD_LEN 20
#define USR_NAME_LEN 20
#define ROLE 5

typedef struct usr_account_tag
{
	char usr_name[USR_NAME_LEN];
	char usr_pwd[USR_PWD_LEN];
	char usr_role[ROLE];
	struct usr_account_tag *next ;
}USR_ACCOUNT, *pUSR_ACCOUNT;



typedef struct usr_infor_tag
{
	int usr_id ;
	char usr_name[USR_NAME_LEN] ;
	int usr_course_id ;
	double usr_course_score;
	struct usr_infor_tag *next;

}USR_INFOR,*pUSR_INFOR;

pUSR_INFOR student;
pUSR_ACCOUNT account;

pUSR_ACCOUNT Account_build(); //建立账户链表  通过
void Role_confirm(pUSR_ACCOUNT account,char usrname[]);//账户名在链表中查找   通过
void show_normal_menu();//调用A权限界面    通过
void show_system_menu();//调用S权限界面   通过
void show_normal_search();//调用普通用户查询界面  通过
void show_system_search();//调用系统用户查询界面   通过
void GetPasswd(char *passwd);//密码验证
void Getname(char *usrname);//账户限制


void Register(pUSR_ACCOUNT *account);//注册账号   通过
pUSR_ACCOUNT Search_usr_account(pUSR_ACCOUNT *account, char search_name[]);//查询帐号信息   通过
void Update_usr_account(pUSR_ACCOUNT *account);//修改账户信息   通过
void Delete_usr_account(pUSR_ACCOUNT *account,char name[]); //删除账户信息  通过



pUSR_INFOR Student_build();//建立学生链表
pUSR_INFOR Search_id(pUSR_INFOR *student, int search_id);  //学号查询    通过
void Search_name(pUSR_INFOR student, char search_name[]);    //姓名查询    通过
void add_usr_infor(pUSR_INFOR *student);// 添加学生信息  通过
void update_usr_infor(pUSR_INFOR *student); //修改学生信息
void delete_usr_infor(pUSR_INFOR *student,int id); //删除学生信息    
void Input_all_student(pUSR_INFOR *student);  //输出所有学生的信息   通过
pUSR_INFOR Sortlinklist(pUSR_INFOR student); //学生成绩排序    通过

#endif

登录界面设计

#include "nevergiveup.h"

//打开系统后建立账户表
pUSR_ACCOUNT Account_build()
{
	pUSR_ACCOUNT account;
	FILE *fp;
	char str[USR_NAME_LEN];
	pUSR_ACCOUNT p;
	account=(pUSR_ACCOUNT)calloc(1,sizeof(USR_ACCOUNT));
	
	
	account=NULL;
    fp=fopen("D:\\Coding\\SIMS\\SIMS\\usr_account.txt","rb");
	if(fp==NULL)   //如果打开失败 
	{
		printf("Account open  wrong!!\n");
		system("pause");
		exit(0);
	}
	while (fscanf(fp,"%s",str)!=EOF)
	{
		//printf("%s",str);
		p=(pUSR_ACCOUNT)calloc(1,sizeof(USR_ACCOUNT));
		strcpy(p->usr_name,str);

		fscanf(fp,"%s",str);
		//printf("%s",str);
		strcpy(p->usr_pwd,str);

		fscanf(fp,"%s",str);
		//printf("%s",str);
		strcpy(p->usr_role,str);
		p->next=account;
		account=p;

	}	
	fclose(fp);
	return account;
}


//链表,和输入的字符串账号进行查找,如果S系统权限 返回1 用户权限
void Role_confirm(pUSR_ACCOUNT account,char usrname[])   
{
	int i=0;
	int j=3;
	char role1[ROLE]="S";
	char role2[ROLE]="A";
	char psd[USR_PWD_LEN];
	pUSR_ACCOUNT p;
	p=account;       //指向第一个账户结点
	while(p!=NULL)
	{
		if(!strcmp(p->usr_name,usrname))
		{
			
			system("cls");    
			
			printf("enter usr_password: "); 
// 			while(psd[i]=getch())
// 			{
// 				if(i==20)   //回车停止输入
// 					break;
// 				if(psd[i]==13)
// 					break;
// 				if(psd[i]!='\b')
// 				{
// 					printf("*");
// 					i++;
// 				}
// 				else
// 				{
// 					printf("\b \b ");
// 					i--;
// 				}
// 			}
// 			psd[i]='\0';
			 while(j>0)
			 {

				 GetPasswd(psd);
				 if(!strcmp(p->usr_pwd,psd))
				 {
					 system("cls");
					 if(!strcmp(p->usr_role,role1))
					 {
						 show_system_menu();
					 }
					 else if(!strcmp(p->usr_role,role2))
					 {
						 show_normal_menu();
					 }
					 else
					 {
						 printf("No privilege!!\n");
					 }
				 }
				 else
				 {
					 system("cls");
					 printf("the password is wrong! Please input again!\n");
					 printf("enter usr_password: "); 
				 }
				 j--;

			 }
			
		      }
			 if(j==0)
			 {
				 exit(-1);
			 }

		else
		{
			p=p->next;
		}
	}

	if(p==NULL)
	{
		printf("No Account!Please Register\n");
		printf("Inverting to the Page of Register,loading............ ");
		Sleep(3000);
		Register(&account);
		//注册的信息,调用函数
	}
}

void GetPasswd(char *passwd)
{
	unsigned char c;
	int i = 0;
	while ((c=getch())!='\r')
	{
		if (i<USR_PWD_LEN && !isspace(c) && isprint(c))
		{
			passwd[i++] = c;
			putchar('*');
		}
		else if (i>0 && c=='\b')
		{
			--i;
			putchar('\b');
			putchar(' ');
			putchar('\b');
		}
		else if( c=='\n' || c==' ')
		{
			continue;
		}
	}
	if( passwd[0]=='\0')
		GetPasswd(passwd);
	else
	{
		putchar('\n');
		passwd[i] = '\0';
	}

}


主界面的设计

#include "nevergiveup.h"

//如果权限为A,调用
void show_normal_menu()
{
	int i,circle;
	system("cls");
	printf("******************************************************************************\n");
	printf("********************Student Information Management System************************\n");
	printf("******************************************************************************\n");
	printf("\n");
	printf("\n");
	printf("                       1.search student information\n");
	printf("                       9.            exit\n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("\n");
	while(fflush(stdin),printf("select the number :"),scanf("%d",&i)!=EOF)
	{
		switch(i)
		{
		case 1:
			system("cls");
			show_normal_search();
			break;
		case 9:
			exit(0);
			break;
		default:
// 			while(scanf("%d",&circle)==EOF)
// 			{
// 				system("cls");
// 				show_normal_menu();
// 			}
				printf("No Privilege!!!\n");
				break;
			
		}
	}
	
}


//如果权限S调用   
void show_system_menu()
{
	int circle;
	int i;
	int id;
	char name[USR_NAME_LEN];
	char search_name[USR_NAME_LEN];
	pUSR_ACCOUNT p;
	system("cls");
	printf("******************************************************************************\n");
	printf("********************Student Information Management System************************\n");
	printf("******************************************************************************\n");
	printf("\n");
	printf("\n");
	printf("                   1.search student information \n");
	printf("                   2.add student information\n");
	printf("                   3.update student information\n");
	printf("                   4.delete student information\n");
	printf("                   5.add user account\n");
	printf("                   6.update user account\n");
	printf("                   7.delete user account\n");
	printf("                   8.search user account\n");
	printf("                   9.        exit");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("\n");
	
	while(fflush(stdin),printf("select the number :"),scanf("%d",&i)!=EOF)
	{
		switch(i)
		{
		case 1:
			system("cls");
			show_system_search();
			break;
		case 2:
			add_usr_infor(&student);
			while(scanf("%d",&circle)==EOF)
			{
				system("cls");
				show_system_menu();
			}
			break;
		case 3:
			update_usr_infor(&student);
			while(scanf("%d",&circle)==EOF)
			{
				system("cls");
				show_system_menu();
			}
			break;
		case 4:
			printf("Please Input information about usr_id : \n"); //and usr_name
			scanf("%d %s",&id/*,name*/);
			delete_usr_infor(&student,id/*,name*/);
			while(scanf("%d",&circle)==EOF)
			{
				system("cls");
				show_system_menu();
			}
			break;
		case 5:
			Register(&account);
			while(scanf("%d",&circle)==EOF)
			{
				system("cls");
				show_system_menu();
			}
			break;
		case 6:
			Update_usr_account(&account);
			while(scanf("%d",&circle)==EOF)
			{
				system("cls");
				show_system_menu();
			}
			break;
		case 7:
			printf("Please the Account name Which you want to delete : ");
			scanf("%s",name);
			Delete_usr_account(&account,name);
			while(scanf("%d",&circle)==EOF)
			{
				system("cls");
				show_system_menu();
			}
			break;
		case 8:
			printf("\rPlease input the search_account_name  :");
			scanf("%s",search_name);
			p=Search_usr_account(&account,search_name);
			while(scanf("%d",&circle)==EOF)
			{
				system("cls");
				show_system_menu();
			}
			break;
		case 9:
			exit(0);
			break;
		default:
			printf("Error number! please input the number again!\n");
			break;
		}
	}
	
	
}

void show_normal_search()
{
	int circle;
	pUSR_INFOR p;
	int i;
	int search_id;
	char search_name[USR_NAME_LEN];
	system("cls");
    printf("******************************************************************************\n");
    printf("********************Student Information Management System************************\n");
    printf("******************************************************************************\n");
    printf("\n");
    printf("\n");
    printf("                   1.search student information by name\n");
    printf("                   2.search student information by id   \n");
	printf("                   3.           return  \n");
	printf("                   4.           exit  \n");
    printf("\n");
    printf("\n");
    printf("\n");
    printf("\n");
	while(fflush(stdin),printf("select the number :"),scanf("%d",&i)!=EOF)
	{
		switch(i)
		{
		case 1:
			printf("\rPlease input the search_name  :");
			scanf("%s",search_name);
			Search_name(student,search_name); 
			break;
		case 2:
			printf("\rPlease input the search_id  :");
			scanf("%d",&search_id);
			//****************************
			p=Search_id(&student,search_id);
			break;
		case 3:
			system("cls");
			show_normal_menu();
			break;
		case 4:
			exit(0);
		break;
		default:
			printf("Please input the number again!!!");
			break;
		}
	}
}

void show_system_search()
{
	pUSR_INFOR p;
	int i,circle;
	char search_name[USR_NAME_LEN];
	int search_id;
	system("cls");
	printf("******************************************************************************\n");
	printf("********************Student Information Management System************************\n");
	printf("******************************************************************************\n");
	printf("\n");
	printf("\n");
	printf("                   1.search all students information \n");
	printf("                   2.search student information by name   \n");
	printf("                   3.search student information by id \n");
	printf("                   4.            return \n");
	printf("                   9.            exit \n");
	printf("\n");
	printf("\n");
	printf("\n");
	printf("\n");
	while(fflush(stdin),printf("select the number :"),scanf("%d",&i)!=EOF)
	{
		switch(i)
		{
		case 1:
			Input_all_student(&student);

			while(scanf("%d",&circle)==EOF)
			{
				system("cls");
				show_system_search();
			}
			break;
		case 2:
			printf("\rPlease input the search_name  :");
			scanf("%s",search_name);
			Search_name(student,search_name); 
			while(scanf("%d",&circle)==EOF)
			{
				system("cls");
				show_system_search();
			}
			break;
		case 3:
			printf("\r");
			printf("Please input the search_id  :");
			scanf("%d",&search_id);
			//****************************
			p=Sear
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值