学生选课管理系统:设计一个学生选课管理系统。设计要求:(1)用户登录功能(包括老师用户与学生用户);(2)设计程序运行界面;(3)能用菜单选择各功能;(4)所有信息以文件的形式保存。

本文介绍了一个学生选课管理系统的设计要求,包括用户登录(教师和学生)、程序运行界面、菜单驱动功能以及信息文件存储。教师可以管理课程信息和查看学生选课情况,学生则能管理个人信息并进行选课。系统采用C语言编程,菜单界面操作,具有扩展性。
摘要由CSDN通过智能技术生成

学生选课管理系统
设计一个学生选课管理系统。设计要求:(1)用户登录功能(包括老师用户与学生用户);(2)设计程序运行界面;(3)能用菜单选择各功能;(4)所有信息以文件的形式保存。
功能要求:
1、教师用户功能:
(1)输入课程信息,数据要求:课程编号、课程名、任课教师、课程针对专业,最大容纳选课人数;
(2)课程信息管理,对课程信息进行修改、删除、查询操作;
(3)查看学生选课情况(该教师)。
2、学生用户功能:
(1)输入学生信息询,数据要求:学号、姓名、所在学院、专业、班级;
(2)学生信息管理,对自己信息进行修改、删除、查询操作;
(3)学生选课,先查询所能选的课程,再进行选课,输入学号、课程进行选课;
(4)浏览自己选课情况,数据要求:学号、姓名、课程号、课程名、任课老师。
其他要求:
(1)编程使用C语言
(2)采用菜单界面
(3)学生可自动增加新功能模块(视情况可另加分)

————————————————————————————
下面是我自己写的代码,由于时间仓促,其中有很多的不足之处;同时,由于我初学C语言,只是会一些简单浅显的基础知识,所以有很多地方、很多功能的实现,代码很是繁琐麻烦。我就厚着脸皮抛砖引玉了,希望各位大佬能够留言进行指点,万分感谢!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h> 
struct id//账号密码结构体 
{
   
	char zh[20];//账号 。 
	char mm[20];//密码。 
};
struct lessons//课程信息结构体。 
{
   
	int num;			// 课程编号。 
	char lesson_name[50];	//课程名。 
	char teacher[50];		//任课教师。 
	char zhuanye[50];		//课程针对专业。 
	int people;				//最大容纳选课人数。 
	int n;				// 选择这门课程的人数。 
}; 				
struct stu//学生个人信息结构体 
{
   
	char num[20];//学号 
	char name[30];//姓名 
	char xueyuan[50];//学院 
	char zhuanye[50];//专业 
	int  clas;//班级 
	int n;//选课数量。 
};				
struct stu_xk//学生选课结构体 
{
   
	 char xh[30];//学号 
	 char name[40];//姓名 
	 int  num;//课程编号。
	 char lesson_name[50]; //课程名
	 char teacher[30];//任课老师 
};
					/*		账号数据管理模块		*/ 	
									
/*账号数据储存模块*/ 
 void Create_File_stu();//创建储存学生的文件。 
 void Create_File_teacher();//创建储存学生的文件。

/*账号注册模块*/ 
 void newid();//选择注册账号的身份(学生还是教师)
 void new_stu_id();//学生注册新用户。
 void new_teacher_id(); //教师注册新用户。

/* 登录方式*/ 
void teacher();//老师登录。 
void student();//学生登录。 
void init();//用户选择。 
void fstprint();//界面菜单显示 

		 						/*	教师用户功能模块	*/
								 

void select();//教师进行功能选择。 
void  put_in ();/*输入课程信息模块*/
void select_2();//输入课程信息的返回功能函数 
void Create_File_flog();//创建存储课程编号的文件。 
void upon(int a);//上传 课程编号信息 
int downlod();//读取课程编号
void Create_File_lesson();//创建保存课程信息的数据库。 
void change();	//课程信息管理,对课程信息进行修改、删除、查询操作	
	void modify();//修改课程信息。 
	void read();//查询输入的课程信息。
	void delet();//删除课程信息。 
	void select_3()	;	//具有返回功能的函数 
 	void read_1();//查看学生选课情况(该教师)。 
void see()	; //选择精确查询方式。 
	 void see_1();	//按课程编号精确查询。
	 
	 
										/*学生功能模块*/
										
															
 void Create_stuxx();//建立储存学生信息的数据库。 
 void stu_slect();//学生进行功能选择。
 void in_stuxx ();//学生输入个人信息。 
 void see_stuxx();//浏览自己选课情况
 void change_stuxx();//学生信息管理功能选择。
 void stu_modify();//修改学生个人信息。 
 void stu_delete();//删除功能。 
 void stu_chaxun();//查询个人基本信息。	
 void stu_xk_1();//学生选课。
 int pd2(int n);//判断选择的课程是否达到最大容纳量。 
 int pd1(char xh[]);//判断学生选课是否达到上限。 
 int pd3(int n);//判断专业是否匹配。
 void xk_1() ;// //学生选课,先查询所能选的课程
					 			 
/*全局变量*/
int s=0,t=0;

/*主函数*/ 
int main()
{
   
	Create_File_stu();
	Create_File_teacher();
	fstprint();//登录界面。 
	init();//用户选择登录模式。 
	return 0;
 } 
 
 /*账号数据储存模块*/ 
 void Create_File_stu() /*创建储存学生用户账号密码的文件*/ 
{
   
    FILE *fp;
    if ((fp = fopen("studentusers.txt","r"))==NULL)                 /*如果此文件不存在*/
    {
   
        if ((fp = fopen("studentusers.txt","w+"))==NULL)
        {
   
            printf("无法建立文件!\n");
            exit(0);  
        }
    }
}

 void Create_File_teacher() /*创建储存学生用户账号密码的文件*/ 
{
   
    FILE *fp;
    if ((fp = fopen("teacherusers.txt","r"))==NULL)                 /*如果此文件不存在*/
    {
   
        if ((fp = fopen("teacherusers.txt","w+"))==NULL)
        {
   
            printf("无法建立文件!\n");
            exit(0);  
        }
    }
}

void fstprint()//登录界面。 
{
   		
		system("color 3f");
		system("cls");
		printf("\n\n\n");
		printf("\t*******************************\n");
		printf("\t**    学生选课管理系统       **\n");
		printf("\t**   	   软件工程          **\n");
		printf("\t**   	    岳跃豪    	     **\n");
		printf("\t**     	  19031210233	     **\n");
		printf("\t*******************************\n");
		printf("\n\t ┌──────────┐");
		printf("\n\t │ 1.教师系统登录     │");
		printf("\n\t │ 2.学生系统登录     │");
		printf("\n\t │ 3.注册账号         │");
		printf("\n\t └──────────┘");
}
 
 /*系统登录模块*/ 
 void teacher()//老师的登录 
 {
   
 	struct id a,b;//
    system("cls");
    FILE *fp;
    printf("\n\n\n选课系统教师登录界面\n");
    fp = fopen("teacherusers.txt","r");  
    fread(&b, sizeof(struct id), 1, fp); //读入一个结构体字符块 写入b
    printf("\n\t\t请输入账号\n");
    scanf("%s",&a.zh);   
    
             while (1)
           {
      
	           if (strcmp(a.zh, b.zh)==0)         //如果有此用户名
	               break;                
	           else 
	           {
   
	               if (!feof(fp))  //如果文件没有读完                            
	                   fread(&b, sizeof(struct id), 1, fp);	               
	               else
	               {
   
	                   printf("此用户名不存在,请重新输入!\n");
					   Sleep(500); 
	                   fclose(fp);  
					   return teacher();              
	               }
	           }
       }
       printf("\t\t请输入密码\n");
       	scanf("%s",&a.mm); 
    do{
      
	       
		if (strcmp(a.mm, b.mm)==0)            /*如果密码匹配*/
	           
	       {
     
	          fclose(fp);
	          Sleep(500);
	          return  select();
	          }
	       else  
	       {
       printf("\t\t密码不正确!请重新输入密码\n");
	       		scanf("%s",&a.mm);         
	       }
	}while(strcmp(a.mm, b.mm)==0);
 }
 
 void student()//学生的登录 
 {
   	   
 	system("cls");
 	struct id a,b;  
    FILE *fp;
    printf("\n\n选课系统学生登录界面\n");
         Sleep(1000);
    fp = fopen("studentusers.txt","r");
    fread(&b, sizeof(struct id), 1, fp); //读入一个结构体字符块 写入b
    printf("\n\t\t请输入账号\n");
    scanf("%s",&a.zh);   
    
             while (1)
           {
      
	           if (strcmp(a.zh, b.zh)==0)         //如果有此用户名
	               break;       
	           
	           else 
	           {
   
	               if (!feof(fp))  //如果文件没有读完                            
	            
	               {
   
	                   fread(&b, sizeof(struct id), 1, fp);
	               }
	               
	               else
	               {
   
	                   printf("此用户名不存在,请重新输入!\n");
					   Sleep(500); 
	                   fclose(fp);  
					   return student();              
	               }
	           }
       }
       printf("\t\t请输入密码\n");
       	scanf("%s",&a.mm); 
    do{
      
	       
		if (strcmp(a.mm, b.mm)==0)            /*如果密码匹配*/
	           
	       {
     
	          fclose(fp);
	          printf("\t\t登录成功,欢迎使用!");
	          Sleep(500);
	          return stu_slect();
	          }
	       else  
	       {
      
		   		printf("密码不正确!请重新输入密码\n");
	       		scanf("%s",&a.mm);         
	       }
	}while(strcmp(a.mm, b.mm)==0);
 }

void init()//用户进行选择登录模式。 
{
    
	printf("\n\t	请选择登录模式: ");
	scanf("%d", &s);	//用户输入对应数字进行选择。 
	if (s != 1 && s != 2&&s!=3 )
	{
   
		printf("输入有误,请重新输入:");
		return init();
	 } 
	if(s==1)  teacher();
	if(s==2)  student();
	if(s==3)  newid();
}

 /*注册账号模块*/ 
 void new_teacher_id()//教师注册新用户。 
 {
      
 	 	 system("cls");
 		 Create_File_teacher();
         struct id a,b;
         FILE *fp;
         char temp[20];
         int count = 0;
         printf("\n\n\n\t\t\t\t新用户注册!\n");
         Sleep(1000);
         fp = fopen("teacherusers.txt","r");       
         fread(&b, sizeof(struct id), 1, fp); //读入一个结构体字符块 到b
          printf("\n\t\t请输入账号\n");
         scanf("%s",&a.zh);                
         while (1)
         {
       
             if (strcmp(a.zh, b.zh)) /*如果两串不相等*/
             {
   
                 if (!feof(fp))    /*如果未到文件尾*/                                                
                 {
   
                     fread(&b, sizeof(struct id), 1, fp);
                 }
                 else
                     break;
             }
             else
             {
      
                 printf("\n\t此用户名已存在!请重新注册!\n"); 
                 Sleep(1000);
                fclose(fp);
                 return newid();      
             }
         }
         printf("\t\t请输入密码\n");
         scanf(" %s",&a.mm);
         printf("\t\t请确认密码\n");
         scanf(" %s",&temp);
		 do{
   
         	if(!strcmp(a.mm,temp))
			 {
   
         		fp = fopen("teacherusers.txt","a");
		         fwrite(&a, sizeof(struct id), 1, fp);
		         printf("\t\t账号注册成功,请登录!\n"); 
		         Sleep(500);
		         fclose(fp);
				 return teacher();
			 }
			 else
			 {
   
			 	printf("\t\t两次密码不匹配!请重新输入!\n");
		         scanf("%s",&a.mm);
		         printf("请确认密码\n");
		         scanf("%s",&temp
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值