精华内容
下载资源
问答
  • c++课程设计:学生选修课程管理系统设计报告,内含完整代码
  • 自主开发的一款毕业设计及其课程设计中使用的学生选课管理系统,是学习和借鉴的极好材料!
  • 学生选修课程系统(C语言/C++实现)

    千次阅读 多人点赞 2020-11-24 20:17:13
    话不多说,先上代码 #include <stdio.h> #include <... //声明浏览学生所有选修课程函数 void choose(); //声明学生选课函数 typedef struct subjects //定义结构体叫作SUB,在后面就可以直接使用 {

    话不多说,先上代码

    #include <stdio.h>
    #include <string.h>
    #include<malloc.h>
    #include <stdlib.h>  //用于system语句的声明
    void prin1();         //声明浏览学生所有选修课程函数
    void choose();       //声明学生选课函数
    typedef struct subjects        //定义结构体叫作SUB,在后面就可以直接使用
    {
    	 int num;                 //课程编号
    	 char name[30];           //课程名称
    	 char kind[20];           //课程性质
    	 int stime;               //总学时
    	 int ttime;               //授课学时
    	 int etime;               //实验或上机学时
    	 int score;               //学分
    	 int term;                //开课学期
    	 struct subjects *next;
    }SUB;              
    
    SUB *head=NULL;
    
    SUB *create_form()          //创建链表 
    {
    	 SUB *head,*tail,*p;
    	 int num,stime,ttime;
    	 int etime,score,term;
    	 char name[20],kind[10];
    	 int size=sizeof(SUB);
    	 head=tail=NULL;
    	 printf("输入选修课程信息:\n");
    	 scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);
    	while(num!=0)
    	{
    		  p=(SUB *)malloc(size);
    		  p->num=num;
    		  strcpy(p->name,name);
    		  strcpy(p->kind,kind);
    		  p->stime=stime;
    		  p->ttime=ttime;
    		  p->etime=etime;
    		  p->score=score;
    		  p->term=term;
    		 if(head==NULL)
    			 head=p;
    		 else
    			 tail->next=p;
    		 tail=p;
    		 scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);
    	 }
    	 tail->next=NULL;
    	 return head;
    }
    
    
    
    void savefile()         //保存管理员文件 
    {
    	 SUB *p;
    	 FILE *fp;
    	 fp=fopen("2.txt","w");
    	 if(fp==NULL)exit(0);
    	 printf("课程编号  课程名称  课程性质  总学时  授课学时  实验或上机学时  学分  开课学期\n");
    	 for(p=head;p;p=p->next)
    		fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);
    	 fclose(fp);
    	 printf("创建后的信息已放入'2.txt'文件中\n");
    	 system("pause");
    }
    
    void savefile1()         //保存学生文件 
    {
    	SUB *p;
    	FILE *fp;   //声明fp是指针,用来指向FILE类型的对象,fp是指向文件结构体的指针变
    	fp=fopen("3.txt","w");
    	 if(fp==NULL)exit(0);
    	 for(p=head;p;p=p->next)
    		fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);
    	 fclose(fp);
    	 printf("创建后的信息已放入'3.txt'文件中\n");
    	 system("pause"); 
    } 
    
    
    void readfile()                    //阅读文件 
    {
    	void *myInsert(SUB*);
    	SUB *newSub;     //新课程
        int num,stime,ttime,etime;
        int score,term;
        char c,name[20],kind[10],fname[20];
    	FILE *fp;     //声明fp是指针,用来指向FILE类型的对象,fp是指向文件结构体的指针变
    	fp=fopen("2.txt","r");
        while(!feof(fp))
        {
        	newSub=(SUB*)malloc(sizeof(SUB));
    		fscanf(fp,"%d%s%s%d%d%d%d%d\n",&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);
    		myInsert(newSub);
        }
        fclose(fp);
    }
    
    
    void prin()   //浏览管理员所有课程
    {
    	SUB *ptr;
    	head=NULL;
    	readfile();
    	if(head==NULL)
    	{
    		printf("\n\n\t*********NO RECORDS!************\n");
    		return;
    	}
    	printf("课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\n");
    	for(ptr=head;ptr;ptr=ptr->next)
    		{
    			printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);
    		}
    	system("pause");
    }
    
    void prin1()   //浏览学生所有选修课程
    {
    	SUB *ptr;	
    	FILE *fp;   //声明fp是指针,用来指向FILE类型的对象,fp是指向文件结构体的指针变量
    	if((fp=fopen("3.txt","r"))==NULL)
    	{
    	printf("Cannot open file.\n");
    	choose();
    	}
    	printf("课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\n");
    	while(!feof(fp))
    	{
    		ptr=(SUB*)malloc(sizeof(SUB));
    		fscanf(fp,"%d%s%s%d%d%d%d%d\n",&ptr->num,ptr->name,ptr->kind,&ptr->stime,&ptr->ttime,&ptr->etime,&ptr->score,&ptr->term);
    		printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);
    	}
    	system("pause");
    }
    
    void *myInsert(SUB *subj)  //链表插入操作  
    {
    	 SUB *ptr,*ptr2;
    	 ptr=subj;
     		if(head==NULL)
     		{
     			head=ptr;
     			head->next=NULL;
     		}
     		else
     		{
     			for(ptr2=head;ptr2;ptr2=ptr2->next)
    				if(ptr2->next==NULL)
     				{
     					ptr2->next=subj;
     					subj->next=NULL;
     					break;
     				}
     		}
    		return head;
    }
    
    
    void *insert()//插入课程信息 
    {
    	 SUB *ptr,*subj;     //定义结构体指针指向这个结构体SUB
    	 int size=sizeof(SUB);
    	 char ch,ch1;
    	 while(ch!='0')
    		{
    			  subj=(SUB *)malloc(size); //(分配类型 *)malloc(分配元素个数 *sizeof(分配类型))如果成功,则返回该空间首地址,该空间没有初始化,如果失败,则返回0
    			  ptr=subj;
    			  printf("输入要插入的课程信息:\n");
    			  printf("\n\t\t请输入课程编号:");scanf("%d",&subj->num);   
    			  printf("\n\t\t请输入课程名称:");scanf("%s",&subj->name);  
    			  printf("\n\t\t请输入课程性质:");scanf("%s",&subj->kind);  
    			  printf("\n\t\t请输入总学时:");scanf("%d",&subj->stime);
    			  printf("\n\t\t请输入授课学时:");scanf("%d",&subj->ttime);
    			  printf("\n\t\t请输入实践或上机学时:");scanf("%d",&subj->etime);
    			  printf("\n\t\t请输入学分:");scanf("%d",&subj->score);
    			  printf("\n\t\t请输入开课学期:");scanf("%d",&subj->term);
    			  myInsert(subj);
    			printf("\n添加完毕,新信息存入文件中\n");
    			printf("\n继续插入请按回车\n");
    			printf("\n结束添加课程按 0: [ ]\b\b");
    			ch1=getchar();                      //将回车键赋给CH1,否则subj->term输完后输入的回车键会赋给CH,因此用CH1填补。
    			ch=getchar();
    		}
    	 return head;
    }
    
    
    
    void *del()  //删除课程
    {
    	SUB *p1,*p2;
    	char ch,ch1;
    	int num;
    	while(ch!='0')
    	{
    		printf("输入想要删除的课程编号:[    ]\b\b\b\b\b");
    		scanf("%d",&num);
    		if(head->num==num)
    		{
    			p2=head;
    			head=head->next;
    			free(p2);
    		}
    		if(head==NULL)
    			return NULL;
    		p1=head;
    		p2=head->next;
    		while(p2)
    		{
    			if(p2->num==num)
    			{
    				p1->next=p2->next;
    				free(p2);
    			}
    			else 
    				p1=p2;
    			p2=p1->next;
    		}
    		printf("\n继续删除请按回车\n");
    		printf("\n结束删除课程按 0: [ ]\b\b");
    		ch1=getchar();                       //将回车键赋给CH1,否则num输完后再输入的回车键会赋给CH,因此用CH1填补。
    		ch=getchar();
    		printf("\n删除完毕,新信息存入文件中\n");
    		system("pause"); 
    	}
    	return head;
    	system("pause");
    }
    
    
    void choose()//选新课程--学生选课函数
    {
    	SUB *p,*q;
    	int a[5];
    	int num,total=0,i=0,j;  //total为总学分,i为num的数组单元
    	printf("输入要选修的课程的编号,编号之间以空格分开\n");
    	scanf("%d",&num);
    	printf("如果确认输入完要选修的课程的编号,请输入0: [ ]\b\b");
    	while(num!=0)
    	{
    		for(p=head;p;p=p->next)
    		if(p->num==num)
    		{
    			total=total+p->score;
    			a[i]=num; //数组a存num
    			i++;
    		}
    		scanf("%d",&num);
    	}
    	if(total<60)
    	{ 
    		printf("选修总学分为%d,未达到60,选修失败!\n",total);
    		system("pause");
    	}
    	else
    	{
    		
    		FILE *fp;    //声明fp是指针,用来指向FILE类型的对象,fp是指向文件结构体的指针变量
    		fp=fopen("3.txt","w"); 	  //fprintf(fp,"课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\n");
    		for(j=0;j<i;j++)
    		for(q=head;q;q=q->next)
    			if(q->num==a[j])
    			fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term);
    		fclose(fp);  //关闭
    		printf("\t\t\n*****选修成功!****\n");
    		printf("\n您选修的课程总学分为%d,课程分别为:\n",total);
    		printf("\n课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\n");
    		for(j=0;j<i;j++)
    		for(q=head;q;q=q->next)
    			if(q->num==a[j])
    				printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term);
    		printf("\n以上信息全部保存在'3.txt'中\n");
    	}
    	system("pause");   //暂停,没这个语句点开生成的.exe文件
    }
    
    
    void search()          //课程信息查询
    {
       int a,num;
       int t=1;
       char type[10],min[10];
       SUB *ptr;
        L1:system("cls");
       printf("\n\n\t\t**********请选择查询方式*************\n");
       printf("\n\t\t\t1---按课程名称查找\n");
       printf("\n\t\t\t2---按课程性质查找\n");
       printf("\n\t\t\t3---按学分查找\n");
       printf("\n\t\t\t4---退出查找\n");
       printf("\n\n\t\t**************************************\n");
       printf("\n\nChiose your number(1-4):[ ]\b\b");
       scanf("%d",&a);
       switch(a)
       {
    		case 1:printf("请输入要查找的课程的名称:");
    			scanf("%s",min);
    			printf("课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\n");
    			for(ptr=head;ptr;ptr=ptr->next)
    				if(strcmp(min,ptr->name)==0)
    				{
    				 printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);
    				 t=0;
    				}
    			if(t) 
    				printf("\t\n未找到!\n");
    			t=1;
    			system("pause");
    			goto L1;
    				
    	   case 2:printf("请输入要查找的课程的性质:");
    		   scanf("%s",type);
    		   printf("课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\n");
    		   for(ptr=head;ptr;ptr=ptr->next)
    			   if(strcmp(type,ptr->kind)==0)   //strcmp为比较字符串
    				{
    					 printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);
    					 t=0;
    				}
    			if(t) 
    				printf("\t\n未找到!\n");
    			t=1;
    			system("pause");
    			goto L1;     //直接跳转到L1执行下面的语句
      
    	  case 3:printf("输入要查找的课程的学分:");
    		   scanf("%d",&num);
    		   printf("课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\n");
    		   for(ptr=head;ptr;ptr=ptr->next)
    			   if(ptr->score==num)
    				{
    					 printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);
    					 t=0;
    				}
    			if(t) 
    				printf("\n\t未找到!\n");
    			t=1;
    			system("pause");  //暂停
    			goto L1;
    			
    		case 4:break;
    	}
    }
    
     
    void Mangers()         //管理员界面(登录)
    {
       int n,w=1,flag=0,i=3;
       char s[8];
       char password[7]="888";
       do
         {
            printf("\n\nEnter password:");
            scanf("%s",s);
            if(!strcmp(s,password))              //进行密码匹配验证
             {
                 flag=1;
               	break;
              }
           else
            {
              printf("\n\nError! You only have %d times! Enter again:\n",i-1);
              i--;
            } 
         }
    	while(i>0);
       if(!flag)
          {
          	printf("you have Enter 3 times!");       //输入密码超过了3次!!
            exit(0);                                //自动退出
          }
        do
          {
    		system("cls");
        	puts("\n\n\t\t*********************管理员菜单***********************\n\n");
            puts("\t\t\t\t1---浏览课程\n");
    		puts("\t\t\t\t2---查询课程\n");
            puts("\t\t\t\t3---添加课程\n");
            puts("\t\t\t\t4---删除课程\n");
    		puts("\t\t\t\t5---返回主菜单");
    		puts("\n\n\t\t******************************************************\n");
            printf("Chiose your number(1-5):[ ]\b\b");
            scanf("%d",&n);
           switch(n)
            {
         	  case 1:prin();break;
    		  case 2:search();break;
         	  case 3:insert();savefile();break;
         	  case 4:del();savefile();break;
    		  case 5:return;
    		  default:;
            } 
          }
          while(w==1);
    }
    
    
    void Students()    //学生菜单
    {
    	int n,w=1;
       do
        {
    		system("cls");   //清屏;清除上一个回车的内容
        	puts("\n\n\t\t*********************学生菜单***********************\n\n");
            puts("\t\t\t\t1---浏览所有课程\n");
    		puts("\t\t\t\t2---查询课程信息\n");
            puts("\t\t\t\t3---选择选修课程\n");
            puts("\t\t\t\t4---浏览我选修的课程\n");
            puts("\t\t\t\t5---删除错选课程\n");
    		puts("\t\t\t\t6---返回主菜单");
            puts("\n\n\t\t****************************************************\n");
            printf("Chiose your number(1-6):[ ]\b\b");
            scanf("%d",&n);
            switch(n)
            {
         	  case 1:prin();break;
    		  case 2:search();break;
         	  case 3:choose();break;
        	  case 4:prin1();break;
         	  case 5:del();savefile1();break;
    		  case 6:return;
    		  default:;
            } 
          }
          while(w==1);
    }
    int  main()
    {
    	int n,w=1;
    	do
        {
    		system("cls");
    		puts("\n\n\t\t*********************MENU***********************\n\n");
            puts("\t\t\t\t1.以管理员身份登录(password 1)\n");
            puts("\t\t\t\t2.以学生身份登录\n");
    		puts("\t\t\t\t3.退出");
       puts("\n\n\t\t************************************************\n");
            printf("Chiose your number(1-3):[ ]\b\b");
            scanf("%d",&n);
    		switch(n)
    		{
    		case 1:Mangers() ;break;  //case为语句1
    		case 2:Students();break;
    		case 3:w=0;break;
    		default:;   //语句n+1
    		}
        }
    
        while(w==1);
        return 0;
    }
    

    //首先,进入管理员和学生界面:
    在这里插入图片描述
    //然后,以管理员身份登录,登陆密码为888(这个可以在登陆程序中自己设置)
    在这里插入图片描述进入…
    在这里插入图片描述
    //登录到管理员界面后,选‘3’可以先添加课程:
    在这里插入图片描述
    //管理员添加课程:
    在这里插入图片描述选择‘1’可以浏览课程,选择‘4’可以在删除不想要的课程:

    在这里插入图片描述删除后浏览课程:
    在这里插入图片描述
    //返回主菜单后,进入学生菜单,可以浏览课程,决定自己选啥,可以查询课程,通过课程性质,学分,编号之类的。
    在这里插入图片描述
    //进行选课,当学分达到要求后,选课成功,并且数据会保存到文件夹3.txt中,可以在内存中找见。
    在这里插入图片描述
    //选课完后,可以浏览自己选的课程,如果不想要就可以删除
    在这里插入图片描述好了,如果有什么疑问可以私我,互相探讨。。。

    展开全文
  • 每个学生的信息包括:学号、姓名、性别、平时成绩、期末成绩。系统能够完成学生信息的查询、更新、插入、删除、排序功能
  • C++学生选修课程系统设计

    千次阅读 多人点赞 2020-07-24 17:55:51
    课程信息包括:课程代码课程名称,课程性质,总学分,学时,显示选课人信息等。 总体模块设计 运行截图 代码 using namespace std; void menu() //主菜单 { cout<<endl; cout<<setw(14)<<’ ...

    学生信息包括:学号,姓名,性别,年龄,班级,专业等信息。课程信息包括:课程代码,课程名称,课程性质,总学分,学时,显示选课人信息等。

    总体模块设计
    功能模块
    运行截图
    在这里插入图片描述

    代码

    using namespace std;
    void menu() //主菜单
    {
    cout<<endl;
    cout<<setw(14)<<’ ‘<<"欢迎使用学生选课系统 "<<endl;
    cout<<setw(10)<<’ '<<"* * * * * * * * * * * * * * * * \n";//输出提示性信息
    cout<<setw(12)<<’ ‘<<“请选择要进行的操作:\n”;//输出提示性信息
    cout<<setw(18)<<’ ‘<<" 1—信息录入 "<<endl;
    cout<<setw(18)<<’ ‘<<" 2—信息浏览 "<<endl;
    cout<<setw(18)<<’ ‘<<" 3—选择课程 "<<endl;
    cout<<setw(18)<<’ ‘<<" 4—删除信息 "<<endl;
    cout<<setw(18)<<’ ‘<<" 5—修改信息 "<<endl;
    cout<<setw(18)<<’ ‘<<" 6—退出程序 "<<endl;
    cout<<setw(10)<<’ '<<"
    * * * * * * * * * * * * * * * *\n";//输出提示性信息
    }
    class student //学生类
    {
    public:
    double xuehao; //学号
    char name[100]; //姓名
    char major[100]; //专业
    char coursename[100];//学生所选课程名
    void set() //学生信息录入,通过set()函数给学生类赋值
    {

    student stu; //定义类的对象stu
    cout<<endl;
    cout<<"请输入学生学号: ";
    cin>>stu.xuehao;
    cout<<"请输入学生姓名: ";
    cin>>stu.name;
    cout<<"请输入学生专业: ";
    cin>>stu.major;
    ofstream out("studentInfo.text",ios::app|ios::binary);//用于studentInfo.text的输出,并且文件以二进制方式操作和在文件尾部添加数据
    out.write((char *)(&stu),sizeof(stu));  //对二进制文件(studentInfo.text)进行写操作(起始地址,读取或者写入的字节数)
    out.close(); //关闭文件
    menu();//返回主菜单 
    

    }
    void checkstudent() //查询学生信息
    {
    student stu;//用于临时保存学生信息的变量
    cout<<“学生学号\t学生姓名\t所学专业”<<endl;
    ifstream is(“studentInfo.text”,ios::binary); //创建输入流对象is
    while(!is.peek())//判断文件
    {
    is.read((char *)(& stu),sizeof(stu)); //对二进制文件(学生.text)进行读操作
    cout<<""<<stu.xuehao<<"\t\t"<<stu.name<<"\t\t"<<stu.major<<"\t\t"<<endl;
    }
    is.close();
    menu();
    }

    void cancleStudent() //删除学生信息
    {
    string xueHaoNum,line,xuehao; //定义变量
    ifstream fin(“studentInfo.text.text”); //建立ifstream的对象fin与文件"studentInfo.text.text"相关联
    fstream outfile(“studentInfo.text.text”,ios::trunc|ios::out); //用于selectCourseResult.text文件的输出,打开一个文件进行写操作和使同名文件被删除
    cout<<endl;
    cout<<“请输入您要删除学生的学号: “;
    cin>>xueHaoNum;
    while(!fin.eof()) //文件不结束,执行循环体
    {
    getline(fin,line);
    istringstream stream(line); //串流输入
    xueHaoNum = line.substr(0,line.find(””,0));//复制子字符串
    if(xuehao != xueHaoNum)
    outfile<<line<<endl;//向outfile输出流中输出line
    }
    outfile.close();
    fin.close();
    fstream f(“studentInfo.text”,ios::trunc|ios::out); //打开一个文件进行写操作和使同名文件被删除
    ifstream outf(“studentInfo.text”); //用于selectCourseResult.text文件的输入
    f<<outf.rdbuf();//输出整个文件的内容
    outf.close();
    f.close();
    cout<<endl;
    menu();
    }

    void changestudent() //修改学生信息
    {
    student stu;
    int mark;
    cout<<endl;
    cout<<"请输入需要修改信息的学生学号 ";
    double xuehao;
    cin>>xuehao;
    ifstream is(“studentInfo.text”,ios::binary); //用于选课.text文件的输入
    for(int i=0;!is.eof();i++)
    {
    is.seekg(48*i); //对输入文件定位,第一个参数是偏移量,第二个参数是基地址
    is.read((char )(&stu),sizeof(stu)); //对二进制文件(学生.text)进行读操作
    if(stu.xuehao==xuehao)
    {
    cout<<"请输入要修改的学生姓名 ";
    cin>>stu.name;
    cout<<"请输入要修改的学生专业 ";
    cin>>stu.major;
    cout<<“修改完毕!”<<endl<<endl;
    mark=48
    i;
    menu();
    break;
    }
    }
    is.close();
    if(stu.xuehao!=xuehao)
    {
    cout<<“没有这个学生!”<<endl<<endl;
    menu();
    }
    else
    {
    ofstream os(“studentInfo.text”,ios::in|ios::binary); //用于选课.text的输出,并且文件进行读操作和二进制方式打开
    os.seekp(mark);//移动文件指针的标记
    os.write((char *)(&stu),sizeof(stu)); //对二进制文件(学生.text)进行写操作
    os.close();
    }
    }
    };

    class course //课程类
    {
    public:
    double coursenum; //课程编码
    char coursename[50];
    char coursetapy[50];
    double xuefen;
    double xueshi;
    char courseteacher[50];
    void set() //课程信息录入, 通过set()函数给课程类赋值
    {
    course cus; //作为临时的课程信息保存
    cout<<"请输入课程编码: ";
    cin>>cus.coursenum;
    cout<<"请输入课程名称: ";
    cin>>cus.coursename;
    cout<<"请输入课程类型: ";
    cin>>cus.coursetapy;
    cout<<"请输入课程学分: ";
    cin>>cus.xuefen;
    cout<<“请输入课程学时: “;
    cin>>cus.xueshi;
    cout<<“请输入主讲教师: “;
    cin>>cus.courseteacher;
    ofstream os(“courses.text”,ios::binary|ios::app);//将课程保存在“courses.txt”文件中
    os.write((char )(&cus),sizeof(cus)); //对二进制文件(课程.text)进行写操作
    os.close(); //文件(课程.text)的关闭
    menu();
    }
    void checkcourse() //浏览课程信息
    {
    cout<<endl;
    ifstream is(“courses.text”,ios::binary); //用于课程.text文件的输入
    cout<<“课程编码 课程名称 课程类型 课程学分 课程学时 主讲教师”<<endl;
    course cus;//临时保存课程信息
    while(!is.peek()) //检测文件结束
    {
    is.read((char
    )(&cus),sizeof(cus)); //对二进制文件(courses.text)进行读操作
    cout<<””<<cus.coursenum<<”\t “<<cus.coursename<<”\t “<<cus.coursetapy<<”\t “<<cus.xuefen<<”\t “<<cus.xueshi<<””<<cus.courseteacher<<endl; //setw()是控制输入的宽度
    }
    is.close();
    menu();
    }
    void canclecourse() //删除课程信息
    {
    string coursenum,line,course;
    ifstream fin(“courses.text”); //用于courses.text文件的输入
    fstream outfile(“courses.text”,ios::trunc|ios::out);// 打开一个文件进行写操作和使同名文件被删除
    cout<<endl;
    cout<<“请输入您要删除课程的编码: “;
    cin>>coursenum;
    while(!fin.eof()) //文件不结束,继续循环
    {
    getline(fin,line);
    istringstream stream(line); //串流输入
    coursenum = line.substr(0,line.find(””,0));
    if(course != coursenum)
    outfile<<line<<endl;
    }
    outfile.close();
    fin.close();
    fstream f(“courses.text”,ios::trunc|ios::out); //用于courses.text文件的输出,打开一个文件进行写操作和使同名文件被删除
    ifstream outf(“courses.text”); //用于学courses.text文件的输入
    f<<outf.rdbuf();//输出整个文件的内容
    outf.close();
    f.close();
    cout<<endl;
    menu();
    }
    void changecourse() //修改课程信息
    {
    course cus;
    int mark;//标记
    cout<<endl;
    cout<<"请输入要修改课程信息的编码 ";
    double coursenum;
    cin>>coursenum;
    ifstream is(“courses.text”,ios::binary); //用于课程.text文件的输入
    for(int i=0;!is.eof();i++)
    {
    is.seekg(28*i); //对输入文件定位,第一个参数是偏移量,第二个参数是基地址
    is.read((char )(& cus),sizeof(cus)); //对二进制文件(课程.text)进行读操作
    if(cus.coursenum==coursenum)
    {
    cout<<"请输入要修改的课程名称 ";
    cin>>cus.coursename;
    cout<<"请输入要修改的课程类型 ";
    cin>>cus.coursetapy;
    cout<<"请输入要修改的课程学分 ";
    cin>>cus.xuefen;
    cout<<"请输入要修改的课程学时 ";
    cin>>cus.xueshi;
    cout<<"请输入要修改的主讲教师 ";
    cin>>cus.courseteacher;
    cout<<“修改完毕!”<<endl<<endl;
    mark=28
    i;
    menu();
    break;
    }
    }
    is.close();
    if(cus.coursenum!=coursenum)
    {
    cout<<“没有这门课程!”<<endl<<endl;
    menu();
    }
    else
    {
    ofstream os(“courses.text”,ios::in|ios::binary); //用于课程.text的输出,并且文件进行读操作和二进制方式打开
    os.seekp(mark);//移动文件指针的标记
    os.write((char *)(& cus),sizeof(cus)); //对二进制文件(学生.text)进行写操作
    os.close();
    }
    }
    };
    void selectCoures()//选课函数
    {
    student stu;//用于保存将要选课的那名同学的信息
    int countCoures=0;//用来统计该学生选了多少门课程
    int countStudent=0;//用来统计学生的个数
    loop://循环结构
    cout<<endl<<"请输入你的学生学号: ";
    double m_xuehao,m_coursenum;//利用学号和课程号分别找出哪位同学选了哪门课
    cin>>m_xuehao;
    ifstream is(“studentInfo.text”,ios::binary);
    is.seekg(0,ios::beg);//从文件头开始,文件指针向前移动
    while(!is.peek())//判断文件结束
    {
    is.read((char *)(&stu),sizeof(stu)); //从"studentInfo.text"文件中一次读取学生的信息
    if(m_xuehao == stu.xuehao)
    {
    loob:
    countStudent++;
    cout<<“请输入学号为”<<m_xuehao<<"的学生想要选择的课程编码(1001-9999): ";
    cin>>m_coursenum;
    ifstream inCourse(“courses.text”,ios::binary); //用于从"courses.text"文件中找出该同学想选择的课程信息
    inCourse.seekg(0,ios::beg);从文件头开始,文件指针向前移动
    while(!inCourse.eof())//选课核心代码
    {
    course cus;//用于此同学将要选择的课程信息
    inCourse.read((char *)(&cus),sizeof(cus));// (char *)(&cus)起始地址,sizeof(cus)读取的字节数
    if(m_coursenum == cus.coursenum)
    {//若找到那门课程则选它
    countCoures++;
    strcpy(stu.coursename,cus.coursename);
    ofstream outStu(“selectCourseResult.text”,ios::binary|ios::app);//现将选课的同学信息放入选课结果的文件中
    outStu.write((char *)(&stu),sizeof(stu));//写入的字节数
    outStu.close();
    cout<<“学号为”<<m_xuehao<<“成功选了课程号为”<<m_coursenum<<“的课程!”<<endl;
    }
    if(countCoures>2)
    {
    cout<<“同学:你选择的课程已经超过”<<countCoures<<“门了!”<<endl;
    break;
    }
    }
    if(countCoures == 0)
    {
    cout<<“没有这门课程,还要继续选择其他课程吗y/n?”<<endl;
    char ch;
    cin>>ch;
    if((‘y’==ch)||('Y’ch))
    goto loob;
    else
    break;
    }
    inCourse.close();
    }
    }
    if(countStudent
    0)
    {
    cout<<“没有这个学生,是否重新输入y/n?”<<endl;
    char ch;
    cin>>ch;
    if((‘y’==ch)||(‘Y’==ch))
    goto loop;
    }
    is.close();
    menu();
    }

    void scanResult()//查询选课结果
    {
    student stu;//用于保存将要选课的那名同学的信息
    cout<<“学生学号\t学生姓名\t所学专业\t选课名称”<<endl;
    ifstream is(“selectCourseResult.text”,ios::binary);
    for(int i=0;!is.peek();i++)
    {
    is.read((char*)(&stu),sizeof(stu));//对二进制文件(selectCourseResult.text)进行读操作
    cout<<stu.xuehao<<"\t\t"<<stu.name<<"\t\t"<<stu.major<<"\t\t"<<stu.coursename<<endl;
    }
    is.close();
    menu();
    }

    void set() //信息录入菜单
    {
    cout<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌1. 录入学生信息﹌﹌﹌﹌﹌﹌"<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌2. 录入课程信息﹌﹌﹌﹌﹌﹌"<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌3. 返回前面菜单﹌﹌﹌﹌﹌﹌"<<endl<<endl;
    student stu;
    course cus;
    int choose;
    cout<<"请输入选项序号: ";
    cin>>choose;
    switch(choose)
    {
    case 1: stu.set();break; //录入学生信息函数
    case 2: cus.set();break; //录入课程信息函数
    case 3: menu();break;
    default: cout<<“没有这个选项,请重新输入,谢谢!”<<endl;
    set();
    break;
    }
    }

    void check() //查询信息
    {
    cout<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌1. 查询学生信息﹌﹌﹌﹌﹌﹌"<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌2. 查询课程信息﹌﹌﹌﹌﹌﹌"<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌3. 查询学生选课结果信息﹌﹌﹌﹌﹌﹌"<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌4. 返回主要菜单﹌﹌﹌﹌﹌﹌"<<endl<<endl;
    cout<<"请输入选项序号 ";
    int choose;
    cin>>choose;
    student stu;
    course cus;
    switch(choose)
    {

    case 1: stu.checkstudent();break;  //查询学生信息函数
    case 2: cus.checkcourse();break; //查询课程信息函数
    case 3: scanResult();break;  //查询学生选课结果信息
    case 4: menu();break;
    }
    

    }

    void cancle() //删除信息
    {
    cout<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌1. 删除学生信息﹌﹌﹌﹌﹌﹌"<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌2. 删除课程信息﹌﹌﹌﹌﹌﹌"<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌3. 返回主要菜单﹌﹌﹌﹌﹌﹌"<<endl<<endl;
    cout<<“请输入选项序号 “;
    student stu;
    course cus;
    int choose;
    cin>>choose;
    switch(choose)
    {
    case 1: stu.cancleStudent();break; //删除学生信息函数
    case 2: cus.canclecourse();break; //删除课程信息函数
    case 3: menu();break;
    default: cout<<“没有这个选项,请重新输入,谢谢!”<<endl;
    break;
    }
    }
    void change() //修改信息
    {
    cout<<endl;
    cout<<”﹌﹌﹌﹌﹌﹌1. 修改学生信息﹌﹌﹌﹌﹌﹌”<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌2. 修改课程信息﹌﹌﹌﹌﹌﹌"<<endl;
    cout<<"﹌﹌﹌﹌﹌﹌3. 返回主要菜单﹌﹌﹌﹌﹌﹌"<<endl<<endl;
    cout<<"请输入选项序号 ";
    student stu;
    course cus;
    int choose;
    cin>>choose;
    switch(choose)
    {
    case 1: stu.changestudent();break; //修改学生信息函数
    case 2: cus.changecourse();break; //修改课程信息函数
    case 3: cout<<endl;menu();break;
    default: cout<<“没有这个选项,请重新输入,谢谢!”<<endl;
    change();
    }
    }
    int main() //主函数
    {
    menu();
    do
    {
    cout<<endl<<"请输入所选择的菜单项序号: ";
    int choose;
    cin>>choose;
    switch(choose)
    {
    case 1: set();break; //信息录入
    case 2: check();break; //信息浏览
    case 3: selectCoures();break; //选择课程
    case 4: cancle();break;//删除信息
    case 5: change();break; //修改信息
    case 6: exit(1);
    }
    }while(1);
    return 0;
    }

    展开全文
  • 通过调查本地的学校,根据学校的具体情况设计学生选课信息管理系统。主要功能有: 1.学生管理:学生信息查询、插入、删除、修改等 2.课程信息:课程的编号、课程名、开课单位。 3.教师信息:教师信息的查询、插入、...
  • 数据库原理课程设计报告,包含设计的报告以及源代码,源代码的运行环境是Java,做的项目是学生选课管理系统,其中包含数据库设计的ER图,可以提供给学生提供简单的学习。
  • 学生选修管理系统

    2018-06-19 19:45:23
    C语言编写,系统以菜单方式工作实现课程信息录入功能(课程信息用文件保存)并可对课程进行增加、修改、删除、可以用多种方式查看。
  • 带界面的学生信息管理系统/学生选课系统,增删改查等功能俱全,包含教师端和学生端,学生可按照学分进行选课,教师可对学生的信息进行管理。
  • ·根据输入的学号信息,查询出学生基本信息、已选修课程门数、选修总学分。 ·显示课程信息表中的所有课程信息,供用户选课之用。 ·当用户选择某门课程时,除了检查该用户是否已经选择过该课程以外,还要检查...
  • 学生选修课程系统

    千次阅读 多人点赞 2019-04-11 16:16:56
    #include<stdio.h> #include<stdlib.h> #include<string.h>...//课程编号 char name[20];//课程名 char style[20];//课程性质 int all_time;//总学时 int teach_time;//...

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    typedef struct _Course
    {
    	int no;//课程编号
    	char name[20];//课程名
    	char style[20];//课程性质
    	int all_time;//总学时
    	int teach_time;//授课学时
    	int other_time;//实验或上机学时
    	float score;//学分
    }Course;//课程信息结构体
    
    typedef struct _Stu
    {
    	int num;//选课数量
    	int cou[20];//已选课程编号
    	float sum;//已选课程总学分
    }Stu;//学生选课记录
    
    void Print_Cour_Info(Course arr[],int n)//输出课程信息
    {
    	int i;
    	printf("%-10s%-15s%-10s%-10s","课程编号","课程名","性质","授课学时");
    	printf("%-10s%-10s%-10s\n","实验/上机","总学时","学分");
    	for(i=0;i<n;i++)//输出n个课程的信息
    	{
    		printf("%-10d%-15s%-10s%-10d",arr[i].no,arr[i].name,arr[i].style,arr[i].teach_time);
    		printf("%-10d%-10d%-10.2f\n",arr[i].other_time,arr[i].all_time,arr[i].score);
    	}
    }
    
    int Add_New_Cour_Info(Course arr[],int n)
    {
    	system("cls");
    	printf("请输入新增课程编号:");
    	scanf("%d",&arr[n].no);
    	printf("请输入课程名:");
    	scanf("%s",arr[n].name);
    	printf("请输入课程性质:");
    	scanf("%s",arr[n].style);
    	printf("请输入授课学时:");
    	scanf("%d",&arr[n].teach_time);
    	printf("请输入实验或上机学时:");
    	scanf("%d",&arr[n].other_time);
    	arr[n].all_time=arr[n].other_time+arr[n].teach_time;
    	printf("请输入该课程学分:");
    	fflush(stdin);
    	scanf("%f",&arr[n].score);
    	printf("录入成功!\n");
    	system("pause");
    	return n+1;
    }
    
    void Add_New_Stu_Info(Course arr[],int n,Stu* stu)
    {
    	int temp,i,j;
    	system("cls");
    	Print_Cour_Info(arr,n);//先打印所有课程信息
    	printf("请输入要选择的课程编号");
    	scanf("%d",&temp);
    	for(i=0;i<n;i++)
    	{
    		if(temp==arr[i].no)
    		{
    			break;
    		}
    	}
    	if(i==n)
    	{
    		printf("选课失败!\n");
    		system("pause");
    		return;
    	}
    	for(j=0;j<stu->num;j++)//遍历已选课程
    	{
    		if(temp==stu->cou[j])//判断是否已经选过
    		{
    			printf("该课程已选,不能重复选择!\n");
    			system("pause");
    			return;
    		}
    	}
    	
    	stu->cou[stu->num]=temp;
    	stu->sum += arr[i].score;
    	stu->num++;
    	printf("选课成功!\n");
    	system("pause");
    }
    
    void Search_Cour_Info(Course arr[],int n)
    {
    	int num,i;
    	system("cls");
    	printf("请输入要查询的课程编号:");
    	scanf("%d",&num);
    	for(i=0;i<n;i++)
    	{
    		if(num==arr[i].no)//如果课程编号一样
    		{
    			Print_Cour_Info(&arr[i],1);//输出该课程信息
    			break;
    		}
    	}
    	if(i==n)
    	{
    		printf("无该编号信息!\n");
    	}
    	system("pause");
    }
    
    void Search_Cour_Score(Course arr[],int n)
    {
    	int num,i,flag=0;
    	system("cls");
    	printf("请输入要查询的课程学分:");
    	scanf("%d",&num);
    	for(i=0;i<n;i++)
    	{
    		if(num==arr[i].score)
    		{
    			Print_Cour_Info(&arr[i],1);
    			flag=1;
    		}
    	}
    	if(0==flag)
    	{
    		printf("无课程为该学分!\n");
    	}
    	system("pause");
    }
    
    int Menu()
    {
    	int choice;//记录选择
    	system("cls");//清屏
    	printf("1:录入课程信息\n");
    	printf("2:录入选课信息\n");
    	printf("3:输出课程信息\n");
    	printf("4:查询课程信息\n");
    	printf("5:按学分查询课程\n");
    	printf("6:查看已选课程\n");
    	printf("0:退出程序\n");
    	printf("请输入选择:");
    	scanf("%d",&choice);
    	while(choice<0||choice>6)//避免数据输入不正确
    	{
    		printf("请重新选择:");//错误就重新输入
    		scanf("%d",&choice);
    	}
    	return choice;
    }
    
    void Save_Course_Info(Course stu[],int n)//保存信息到文件
    {
    	int i;
    	FILE* pFile;
    	pFile= fopen("cou_info.dat","w+");//打开文件
    	if(pFile==NULL)//打开失败则退出
    	{
    		return;
    	}
    	for(i=0;i<n;i++)//循环写入到文件
    	{
    		fwrite(&stu[i],1,sizeof(Course),pFile);
    	}
    	fclose(pFile);
    }
    
    int Read_Course_Info(Course stu[])//读取文件
    {
    	int i=0;
    	FILE* pFile;
    	pFile= fopen("cou_info.dat","r+");
    	if(pFile==NULL)
    	{
    		return 0;
    	}
    	while(fread(&stu[i++],1,sizeof(Course),pFile));//当文件不为空 一直读取
    	fclose(pFile);
    	if(i>=1)//把读取的回车去掉
    	{
    		return i-1;
    	}
    	return 0;
    }
    
    void Print_Stu_Info(Course arr[],int n,Stu* stu)//输出课程信息
    {
    	int i,j;
    	system("cls");
    	printf("已选课程总数%d:\n",stu->num);
    	for(i=0;i<stu->num;i++)//遍历已选课程
    	{
    		for(j=0;j<n;j++)//查询该课程信息并输出
    		{
    			if(stu->cou[i]==arr[j].no)
    			{
    				Print_Cour_Info(&arr[j],1);
    				break;
    			}
    		}
    	}
    
    	printf("已选总学分%.2f\n",stu->sum);
    	system("pause");
    
    }
    
    int main()
    {
    	Course cour[100];
    	int NUM=0;//记录课程数目
    	Stu stu;
    	stu.num=0;
    	stu.sum=0;
    	NUM=Read_Course_Info(cour);//读取文件信息
    	
    	int choice;
    	do
    	{
    		choice=Menu();
    		switch(choice)
    		{
    		case 1:
    			NUM=Add_New_Cour_Info(cour,NUM);//录入课程信息
    			break;
    		case 2:
    			Add_New_Stu_Info(cour,NUM,&stu);//录入选课信息
    			break;
    		case 3:
    			system("cls");
    			Print_Cour_Info(cour,NUM);//输出课程信息
    			system("pause");
    			break;
    		case 4:
    			Search_Cour_Info(cour,NUM);//查询课程信息
    			break;
    		case 5:
    			Search_Cour_Score(cour,NUM);//按学分查询课程
    			break;
    		case 6:
    			Print_Stu_Info(cour,NUM,&stu);//查看已选课程
    			break;
    		}
    	}while(choice!=0);
    
    	Save_Course_Info(cour,NUM);//保存文件信息
    
    	return 0;
    }
    
    展开全文
  • 学生选课管理系统.zip

    2019-09-22 22:42:24
    学生选课管理系统,完整版,导入即可使用,所有SQL server 语句和笔记都在里面,大学数据库期末作业写的。
  • C语言课设:学生选修课程系统设计

    千次阅读 2020-11-04 08:38:06
    学生选修课程系统设计 假定有 n 门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机 学时,学分,开课学期等信息,学生可按要求(如总学分不得少于 60)自由选课。试设计一选修课 程...

    学生选修课程系统设计

    假定有 n 门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机
    学时,学分,开课学期等信息,学生可按要求(如总学分不得少于 60)自由选课。试设计一选修课
    程系统,使之能提供以下功能:
    系统以菜单方式工作
    课程信息录入功能(课程信息用文件保存)--输入
    课程信息浏览功能--输出
    查询功能:--算法
    按学分查询
    按课程性质查询
    学生选修课程
    有一个清晰美观界面来调用各个功能,界面设计以用户为中心,操作方便、美观大方。
    要求设置有不同的操作权限密码。

    参考代码1

    权限密码功能有错

    #include <stdio.h>
    #include <malloc.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h> 
    #define SIZE_STU 10
    #define SIZE_COU 10
    #define SIZE_SEL 10
    //函数声明部分 
    void home(void);
    void stu_operate(void);
    void cou_operate(void);
    void statistic(void);
    void choose(void);
    void delete_sel(int);
    char menu1();
    char zhuce();
    char stuu();
    char teaa();
    void house();
    //--学生信息部分: 
    void input_stu(void);
    void search_stu(void);
    void search_stu_id(void);
    void search_stu_name(void);
    void show_stu(void);
    void edit_stu(void);
    void renew_stu(void); 
    void delete_stu(void);
    //--课程信息部分: 
    void input_cou(void);
    void search_cou(void);
    void search_cou_id(void);
    void search_cou_name(void);
    void show_cou(void);
    void edit_cou(void);
    void renew_cou(void); 
    void delete_cou(void);
     
    /*学生信息结构体*/
    struct student_info {
     char stu_ID[9];
     char stu_name[5];
     char sex[9];
     char age[9];
     char collage[9];
     char grade[9];
     char contact[9];
    }stu[SIZE_STU];
     
    /*课程信息结构体*/
    struct course_info {
     char course_ID[9];
     char course_name[9];
     char property[9];
     char period[9];
     char credit[9];
     char time[9];
     int people;
    }cou[SIZE_COU];
     
    /*选课记录结构体*/
    struct select {
     int s;//存放学生信息的数组下标 
     int c;//存放课程信息的数组下标 
    }sel[SIZE_SEL]; 
     
    //全局变量i,j,x分别是学生,课程,选课信息数组下标
    int i = -1;
    int j = -1;
    int x = -1;
    
     struct Code				//权限 
    {
    	char stu[10];
    	int tea; 
    };
    
    struct Code code[40];
    
    char count1=0;
    char count2=0;
    char one=1;
    char two=2;
    
    int main(void){
     //进入欢迎界面 
     menu1();
     if(one>1)
     {
     	one = 1;
     	system("cls"); 
     	house();
     	
     }
     else if(two>2)
     {
     	two=2;
     	system("cls"); 
     	home();
     }
     return 0;
    }
    
    char menu1()
    {
    
    	system("cls");
    	int num;
    	while(1)
    	{
    		system("cls");
    		printf("\t\t--------------------------\n\n");
    		printf("\t\t1.学生登陆\t2.管理员登陆\n\n");
    		printf("\t\t3.注册      4.退出系统\n\n");
    		printf("\t\t--------------------------\n\n");
    		scanf("%d",&num);
    		char c,d;
    		switch(num)
    		{
    			case 1:
    				stuu();
    				c=stuu();
    				if(c==0)
    				{
    					c=2;
    					one++;
    					return -1;
    				}
    			
    				break;
    			case 2:
    				teaa();
    				d=teaa();
    				if(d==0)
    				{
    					d=2;
    					two++;
    					return -1;
    				}
    			
    				break;
    			case 3:
    				zhuce();
    				break;
    			case 4:
    				exit(0);
    				break;
    		}	
    	}
    }
    
    char stuu()//学生登陆
    {
    	char num[32];
    	int i;
    	printf("请输入您的密码\n"); 
    	scanf("%s",num);
    	if(strlen(num)<=10)
    	{
    		for(i=0;i<40;i++)
    		{
    			if(strcmp(code[i].stu,num)==0)
    			{
    				printf("登陆成功\n"); 
    				_getch();
    				return 0; 
    			}
    		}
    	}
    	printf("输入错误,请重新输入\n"); 
    	return -1; 
    } 
    
    char teaa()//管理员登陆
    {
    	char m;
    	int cod = 123456;
    	for(m=0;m<40;m++)
    	{
    		code[m].tea=cod;	//设置唯一管理员密码 
    	}	 
    	int num;
    	int i;
    	printf("请输入您的密码\n"); 
    	scanf("%d",&num);	
    	for(i=0;i<40;i++)
    	{
    		if(code[i].tea==num)
    		{
    			printf("登陆成功\n"); 
    			_getch();
    			return 0; 
    		}
    	}
    	printf("输入错误,请重新输入\n"); 
    	return -1;
    } 
    
    char zhuce() //注册 
    {	
    	int i;
    	char num[32];
    	printf("请输入数字,不可超出10位\n");
    	scanf("%s",num);
    	if(strlen(num)<=10)
    	{
    		for(i=0;i<40;i++)
    		{
    			if(strcmp(code[i].stu,num)==0)
    			{
    				printf("数字已存在,请重新输入\n"); 
    				getch();
    				return -1; 
    			}
    		}
    		printf("注册成功\n");
    		strcpy(code[count2].stu,num);
    		count2++; 
    		_getch();
    		return -1; 
    	}
    	printf("输入错误,请重新输入\n"); 
    	_getch();	
    	return -1; 
    }
    
    //欢迎界面 
    void home(void) {
     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
     int h;
     printf("\n\n      请选择你要进行的操作:");
     printf("\n\n        1.学生操作");
     printf("\n        2.课程操作");
     printf("\n        3.开始选课");
     printf("\n        4.选课统计");
     printf("\n        5.退出系统");
     printf("\n              ");
     printf("\n      请输入:");
     scanf("%d",&h);
     system("cls");
     switch(h){
      case 1:
       stu_operate();
       break;
      case 2:
       cou_operate(); 
       break;
      case 3:
       choose();
       break;
      case 4:
       statistic();
       break;
      default:
       system("cls");
       printf("BYE!");
       break;
     }
    }
    void house(void) {
     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
     int h;
     printf("\n\n      请选择你要进行的操作:");
     printf("\n\n        1.学生操作");
     printf("\n        2.开始选课");
     printf("\n        3.选课统计");
     printf("\n        4.退出系统");
     printf("\n              ");
     printf("\n      请输入:");
     scanf("%d",&h);
     system("cls");
     switch(h){
      case 1:
       stu_operate();
       break;
       break;
      case 2:
       choose();
       break;
      case 3:
       statistic();
       break;
      default:
       system("cls");
       printf("BYE!");
       break;
     }
    }
    
    /*开始选课*/
    void choose(void){
     char stu_id[10],cou_id[10];
     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
     //输入选课学生信息 
     printf("\n\n     请输入选课人学号:");
     fflush(stdin);
     scanf("%s",stu_id);
     int h,flag = 0;
     for(h = 0;h <= i;h++){
      if(strcmp(stu[h].stu_ID,stu_id)==0){
       flag = 0;
       break;
      } else {
       flag = 1;
      }
     }
     if(flag||i==-1){
      printf("\n     不存在此学号\n");
      system("pause");
      system("cls");
      home();
     }
     //录入姓名信息 
     x++;
     sel[x].s = h; 
     //输入课程信息 
     printf("\n\n     请输入选修课程号:");
     fflush(stdin);
     scanf("%s",cou_id);
     flag = 0;
     for(h = 0;h <= j;h++){
      if(strcmp(cou[h].course_ID,cou_id)==0){
       flag = 0;
       break;
      } else {
       flag = 1;
      }
     }
     if(flag||j==-1){
      printf("\n     不存在此课程号\n");
      x--;
      system("pause");
      system("cls");
      home();
     }
     //录入课程信息
     sel[x].c = h;
     cou[h].people++; 
     printf("\n     录入成功!\n");
     system("pause");
     system("cls");
     home();
    }
    /*删除选课记录*/
    void delete_sel(int q){//删除第q+1条记录 
    /*注意!本函数没有将x减1,请在函数外手动减1(考虑外层函数循环的需要)*/
     int h;
     cou[sel[q].c].people--;
     for(h = q;q < x;h++){
      q++;
      sel[h].c = sel[q].c;
      sel[h].s = sel[q].s;
     }
      
    }
    //对学生记录进行操作
    void stu_operate(void) {
     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
     printf("\n\n     请选择你要对学生记录进行的操作:");
     printf("\n\n        1.添加");
     printf("\n        2.查询");
     printf("\n        3.显示");
     printf("\n        4.返回主页面");
     printf("\n              ");
     printf("\n      请输入:");
     int i;
     scanf("%d",&i);
     system("cls");
     switch(i){
      case 1://添加学生信息 
       input_stu();
       break;
      case 2://查询学生信息 
       search_stu(); 
       break;
      case 3://显示所有学生信息
       show_stu(); 
       break;
      case 4:
       home();
       break; 
     }
    }
    //对课程记录进行操作 
    void cou_operate(void) {
     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
     printf("\n\n     请选择你要对课程记录进行的操作:");
     printf("\n\n        1.添加");
     printf("\n        2.查询");
     printf("\n        3.显示");
     printf("\n        4.返回主页面");
     printf("\n              ");
     printf("\n      请输入:");
     int i;
     scanf("%d",&i);
     system("cls");
     switch(i){
      case 1:
       input_cou();
       break;
      case 2:
       search_cou();
       break;
      case 3:
       show_cou();
      case 4:
       home();
       break; 
     }
    }
    //选课信息统计记录
    void statistic(void){
     printf("\n-------------------------欢迎进入选课系统!----------------------"); 
     printf("\n\n      共有学生信息:%d 条",i+1); 
     printf("\n      共有课程信息:%d 条",j+1);
     if(x == -1){
      printf("\n      选课记录:0 条");
      printf("\n\n      "); 
      system("pause");
      system("cls");
      home();
     } else {
      printf("\n\n      选课记录 %d 条:",x+1);
      int m;
      for(m = 0;m <= x;m++){
       printf("\n      ================");
       printf("\n      第%d条",m+1);
       printf("\n      学生学号:%s",stu[sel[m].s].stu_ID);
       printf("\n      学生姓名:%s",stu[sel[m].s].stu_name);
       printf("\n      课程号:%s",cou[sel[m].c].course_ID);
       printf("\n      课程名:%s",cou[sel[m].c].course_name); 
      }
      printf("\n\n   "); 
      system("pause");
      system("cls");
      home();
     }
      
    }
     
     
    //--------------------------------------学生信息插入--------------------------------------
    void input_stu(void){
     char flag;
     FILE * fp;
     //--判断文件是否为空 
     fp = fopen("student.txt","r+");
     flag = fgetc(fp);
     if(flag==EOF){
      fprintf(fp,"学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
     }
     fclose(fp);
     //-- 
     fp = fopen("student.txt","a+");
     if(fp == NULL){
      printf("打开文件失败!");
      system("cls");
      stu_operate();
     }
     printf("学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
     while(1){
      i++;
      scanf("%s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);
      //--数据查重
      int h; 
      for(h = 0;h < i;h++){
       if(i == 0) break;//第一条数据不需要查重 
       if (strcmp(stu[h].stu_ID,stu[i].stu_ID)==0) {
        printf("该学号已存在,请重新输入!\n");
        scanf("\n%s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);
        h = -1;
       }
      }
      //-- 
      fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].stu_ID,stu[i].stu_name,stu[i].sex,stu[i].age,stu[i].collage,stu[i].grade,stu[i].contact);
      printf("\n录入成功,继续录入输入y,返回上一级请按任意键:");
      fflush(stdin); 
      scanf("%c",&flag); 
      fclose(fp);
      if(flag!='y'&&'Y') break;
      fp = fopen("student.txt","a");
     }
     renew_stu();
     system("cls");
     stu_operate();
    } 
    /*查询学生信息*/
    void search_stu(void){
     system("cls");
     printf("\n请选择查询方式:");
     printf("\n 1.学号查询");
     printf("\n 2.姓名查询");
     printf("\n请选择:");
     int h;
     scanf(" %d",&h);
     switch(h){
      case 1:
       search_stu_id();
       break;
      case 2:
       search_stu_name();
       break;
        
     } 
    }
    /*学号查询*/
    void search_stu_id(void){
     system("cls");
     char id[9];
     printf("\n输入学生的学号:");
     fflush(stdin); 
     scanf("%s",id);
     int h;
     for(h = 0;h <= i;h++){
      if(strcmp(stu[h].stu_ID,id)==0){
       system("cls");
       printf("查找成功!"); 
       printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
       printf("\n\t-----------------------------------------------------------------"); 
       printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
       system("pause");
       system("cls");
       stu_operate();
      }
     }
     system("cls");
     printf("没有此学号!\n");
     system("pause");
     system("cls");
     stu_operate();
    } 
    /*姓名查询*/
    void search_stu_name(void){
     system("cls");
     char name[9];
     printf("\n输入学生的姓名:");
     fflush(stdin); 
     scanf("%s",name);
     int h;
     for(h = 0;h <= i;h++){
      if(strcmp(stu[h].stu_name,name)==0){
       system("cls");
       printf("查找成功!"); 
       printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
       printf("\n\t---------------------------------------------------------"); 
       printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
       system("pause");
       system("cls");
       stu_operate();
      }
     }
     system("cls");
     printf("没有此姓名!");
     system("pause");
     system("cls");
     stu_operate();
    } 
    /*显示所有学生信息*/
    void show_stu(void){
     int h;
     if(i == -1){
      printf("\n还没有录入信息!\n");
      system("pause");
      system("cls");
      stu_operate();
     }
     system("cls");
     printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
     printf("\n\t---------------------------------------------------------"); 
     for(h = 0;h <= i;h++){
      printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
     }
     //
     fflush(stdin);
     printf("\n\t1.修改");
     printf("\n\t2.删除"); 
     printf("\n\t3.返回");
     printf("\n\n 选择要进行的操作:");
     int flag;
     fflush(stdin);
     scanf("%d",&flag);
     switch(flag){
      case 1:
       edit_stu();
       break; 
      case 2:
       delete_stu();
       break;
      default:
       system("cls");
       stu_operate();
       break;
        
     } 
    }
    /*编辑学生信息*/
    void edit_stu(void){
     printf("\n输入需要编辑的学生的学号:");
     char id[10];
     getchar();
     scanf("%s",id);
     int h;
     for(h = 0;h <= i;h++){
      if(strcmp(stu[h].stu_ID,id)==0){//找到需要编辑的行 
       system("cls");
       printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式");
       printf("\n\t---------------------------------------------------------"); 
       printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
       printf("\n这是修改前的数据,请依次输入修改值:\n\t");
       fflush(stdin);
       scanf("%s %s %s %s %s %s %s",&stu[h].stu_ID,&stu[h].stu_name,&stu[h].sex,&stu[h].age,&stu[h].collage,&stu[h].grade,&stu[h].contact);
       int k;
       for(k = 0;k <= i;k++){
        if(strcmp(stu[k].stu_ID,stu[h].stu_ID)==0){
         if(k==h){
          continue;
         } else {//学号不唯一 
          printf("\n此学号已存在!重新输入学号:");
          fflush(stdin);
          scanf("%s",&stu[h].stu_ID);
          k = -1;
         }
        }
       }
       /*将修改信息写入文件*/
       //思想:将原文件重新写入一遍
       renew_stu();
       system("cls");
       printf("修改成功!\n");
       system("pause"); 
       system("cls");
       stu_operate();
      }
     }
     printf("\n此学号不存在!\n");
     system("pause");
     system("cls");
     stu_operate();
    }
    /*删除学生信息*/
    void delete_stu(void){
     printf("\n输入需要编辑的学生的学号:");
     char id[10];
     getchar();
     scanf("%s",id);
     int h;
     for(h = 0;h <= i;h++){
      if(strcmp(stu[h].stu_ID,id)==0){//找到需要编辑的行 
       system("cls");
       //检查他/她是否选课了
       int a;
       for(a = 0;a <= x;a++){
        if(h==sel[a].s){//选课了则将对应课程记录减1,以及选课数组减1 
         delete_sel(a);
         a = -1;
         x--;
         continue;
        }
       } 
       //如果只有一条记录
       if(i==0){
        i = -1;
        renew_stu();
        printf("修改成功!\n");
        system("pause"); 
        system("cls");
        stu_operate();
       } 
        
       int k;
       for(k = h+1;k <= i;k++,h++){//将数组直接向前移动 
        strcpy(stu[h].stu_ID,stu[k].stu_ID); 
        strcpy(stu[h].stu_name,stu[k].stu_name); 
        strcpy(stu[h].sex,stu[k].sex); 
        strcpy(stu[h].grade,stu[k].grade); 
        strcpy(stu[h].contact,stu[k].contact); 
        strcpy(stu[h].collage,stu[k].collage); 
        strcpy(stu[h].age,stu[k].age); 
       }
       /*将修改信息写入文件*/
       //思想:将原文件重新写入一遍
       renew_stu();
       i--;
       system("cls");
       printf("修改成功!\n");
       system("pause"); 
       system("cls");
       stu_operate();
      }
     }
     printf("\n此学号不存在!\n");
     system("pause");
     system("cls");
     stu_operate();
    }
    //--------------------------------------课程信息插入--------------------------------------
    void input_cou(void){
     char flag;
     FILE * fp;
     //--判断文件是否为空 
     fp = fopen("course.txt","r+");
     flag = fgetc(fp);
     if(flag==EOF){
      fprintf(fp,"代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数\n");
     }
     fclose(fp);
     //-- 
     fp = fopen("course.txt","a+");
     if(fp == NULL){
      printf("打开文件失败!");
      system("cls");
      cou_operate();
     }
     printf("代码\t名称\t性质\t总学时\t学分\t开课学期\n");
     while(1){
      j++;
      scanf("%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
      //--数据查重
      int h; 
      for(h = 0;h < j;h++){
       if(j == 0) break;//第一条数据不需要查重 
       if (strcmp(cou[h].course_ID,cou[j].course_ID)==0) {
        printf("该课程号已存在,请重新输入!\n");
        scanf("\n%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);
        h = -1;
       }
      }
      //-- 
      fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[j].course_ID,cou[j].course_name,cou[j].property,cou[j].period,cou[j].credit,cou[j].time,cou[j].people);
      printf("\n录入成功,继续录入输入y,返回上一级请按任意键:");
      fflush(stdin); 
      scanf("%c",&flag); 
      fclose(fp);
      if(flag!='y'&&'Y') break;
      fp = fopen("course.txt","a");
     }
     renew_cou();
     system("cls");
     cou_operate();
    } 
    /*查询课程信息*/
    void search_cou(void){
     system("cls");
     printf("\n请选择查询方式:");
     printf("\n 1.课程号查询");
     printf("\n 2.课程名查询");
     printf("\n请选择:");
     int h;
     scanf(" %d",&h);
     switch(h){
      case 1:
       search_cou_id();
       break;
      case 2:
       search_cou_name();
       break;
        
     } 
    }
    /*课程号查询*/
    void search_cou_id(void){
     system("cls");
     char id[9];
     printf("\n输入课程号:");
     fflush(stdin); 
     scanf("%s",id);
     int h;
     for(h = 0;h <= j;h++){
      if(strcmp(cou[h].course_ID,id)==0){
       system("cls");
       printf("查找成功!"); 
       printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
       printf("\n\t-----------------------------------------------------------------"); 
       printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
       system("pause");
       system("cls");
       cou_operate();
      }
     }
     system("cls");
     printf("没有此课程号!\n");
     system("pause");
     system("cls");
     cou_operate();
    } 
    /*课程名查询*/
    void search_cou_name(void){
     system("cls");
     char name[9];
     printf("\n输入课程名:");
     fflush(stdin); 
     scanf("%s",name);
     int h;
     for(h = 0;h <= j;h++){
      if(strcmp(cou[h].course_name,name)==0){
       system("cls");
       printf("查找成功!"); 
       printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
       printf("\n\t---------------------------------------------------------"); 
       printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
       system("pause");
       system("cls");
       cou_operate();
      }
     }
     system("cls");
     printf("没有此课程名!");
     system("pause");
     system("cls");
     cou_operate();
    } 
    /*显示所有课程信息*/
    void show_cou(void){
     int h;
     if(j == -1){
      printf("\n还没有录入信息!\n");
      system("pause");
      system("cls");
      cou_operate();
     }
     system("cls");
     printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数");
     printf("\n\t-------------------------------------------------------------"); 
     for(h = 0;h <= j;h++){
      printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people);
     }
     //
     fflush(stdin);
     printf("\n\t1.修改");
     printf("\n\t2.删除"); 
     printf("\n\t3.返回");
     printf("\n\n 选择要进行的操作:");
     int flag;
     fflush(stdin);
     scanf("%d",&flag);
     switch(flag){
      case 1:
       edit_cou();
       break; 
      case 2:
       delete_cou();
       break;
      default:
       system("cls");
       cou_operate();
       break;
        
     } 
    }
    /*编辑课程信息*/
    void edit_cou(void){
     printf("\n输入需要编辑的课程号:");
     char id[10];
     getchar();
     scanf("%s",id);
     int h;
     for(h = 0;h <= j;h++){
      if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的行 
       system("cls");
       printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期");
       printf("\n\t-------------------------------------------------------------"); 
       printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time);
       printf("\n这是修改前的数据,请依次输入修改值:\n\t");
       fflush(stdin);
       scanf("%s %s %s %s %s %s",&cou[h].course_ID,&cou[h].course_name,&cou[h].property,&cou[h].period,&cou[h].credit,&cou[h].time);
       int k;
       for(k = 0;k <= j;k++){
        if(strcmp(cou[k].course_ID,cou[h].course_ID)==0){
         if(k==h){
          continue;
         } else {//课程号不唯一 
          printf("\n此课程号已存在,重新输入:");
          fflush(stdin);
          scanf("%s",&cou[h].course_ID);
          k = -1;
         }
        }
       }
       /*将修改信息写入文件*/
       //思想:将原文件重新写入一遍
       renew_cou();
       system("cls");
       printf("修改成功!\n");
       system("pause"); 
       system("cls");
       cou_operate();
      }
     }
     printf("\n此课程号不存在!\n");
     system("pause");
     system("cls");
     cou_operate();
    }
    /*删除课程信息*/
    void delete_cou(void){
     printf("\n输入需要编辑的课程号:");
     char id[10];
     getchar();
     scanf("%s",id);
     int h;
     for(h = 0;h <= j;h++){
      if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的行 
       system("cls");
       //如果只有一条记录
       if(j==0){
        j = -1;
        renew_cou();
        printf("修改成功!\n");
        system("pause"); 
        system("cls");
        cou_operate();
       }
       //查看是否有人选课
       if(cou[h].people!=0){//有人选课时
        int a;
        for(a = 0;a <= x;a++){
         if(sel[a].c == h){
          delete_sel(a);
          a = -1;
          x--;
          continue;
         }
        }
       }
       int k;
       for(k = h+1;k <= j;k++,h++){//将数组直接向前移动 
        strcpy(cou[h].course_ID,cou[k].course_ID); 
        strcpy(cou[h].course_name,cou[k].course_name); 
        strcpy(cou[h].property,cou[k].property); 
        strcpy(cou[h].period,cou[k].period); 
        strcpy(cou[h].credit,cou[k].credit); 
        strcpy(cou[h].time,cou[k].time); 
       }
       /*将修改信息写入文件*/
       //思想:将原文件重新写入一遍
       renew_cou();
       j--;
       system("cls");
       printf("修改成功!\n");
       system("pause"); 
       system("cls");
       cou_operate();
      }
     }
     printf("\n此课程号不存在!\n");
     system("pause");
     system("cls");
     cou_operate();
    }
     
    //--功能函数
    /*更新系统数据至文件*/
    void renew_stu(void){
     FILE * fp;
     fp = fopen("student.txt","w+");
     if(fp == NULL){
      printf("\n打开文件失败,无法保存至文件。\n");
      fclose(fp);
      return ;
     }
     fprintf(fp,"学号\t姓名\t性别\t年龄\t系别\t班级\t联系方式\n");
     if(i == -1){
      fclose(fp);
      return;
     }
     int h;
     for(h = 0;h <= i;h++){
      fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact);
     }
     fclose(fp);
      
    } 
    void renew_cou(void){
     FILE * fp;
     fp = fopen("course.txt","w+");
     if(fp == NULL){
      printf("\n打开文件失败,无法保存至文件。\n");
      fclose(fp);
      return ;
     }
     fprintf(fp,"代码\t名称\t性质\t总学时\t学分\t开课学期\t选修人数\n");
     if(j == -1){
      fclose(fp);
      return;
     }
     int h;
     for(h = 0;h <= j;h++){
      fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t\t%s\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people); }
     fclose(fp);
      
    }
    
    

    参考代码2

    权限密码有错,选课功能没有完善

    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<string.h>
    
    struct Student
    {
    	int num;		//课程编号 
    	char name[32];	//名称 
    	char nat[32];	//性质 
    	int time1;		//总学时 
    	int time2;		//授课学时 
    	int time3;		//实验学时 
    	int fen;		//学分 
    	int cho;		//选课人数 
    };
    struct Student wor[40];
    
    int count=0,i=0;				//全局变量,当读取时,i,count已有值,可再次进行录入功能时继续添加信息,且原有信息不被覆盖
    struct Code				//权限 
    {
    	char stu[10];
    	char tea[10];
    };
    
    struct Code code[40];
    
    char count1=0;
    char count2=0;
    char one=1;
    char two=2;
    
    char stuu()//学生登陆
    {
    	char num[32];
    	int i;
    	printf("请输入您的密码\n"); 
    	scanf("%s",num);
    	if(strlen(num)<=10)
    	{
    		for(i=0;i<40;i++)
    		{
    			if(strcmp(code[i].stu,num)==0)
    			{
    				printf("登陆成功\n"); 
    				_getch();
    				return 0; 
    			}
    		}
    	}
    	printf("输入错误,请重新输入\n"); 
    	return -1; 
    } 
    
    char teaa()//管理员登陆
    {
    	char num[32];
    	int i;
    	printf("请输入您的密码\n"); 
    	scanf("%s",num);
    	if(strlen(num)<=10)
    	{
    		for(i=0;i<40;i++)
    		{
    			if(strcmp(code[i].tea,num)==0)
    			{
    				printf("登陆成功\n"); 
    				_getch();
    				return 0; 
    			}
    		}
    	}
    	printf("输入错误,请重新输入\n"); 
    	return -1;
    } 
    
    char zhuce() //注册 
    {	
    	int i,j;
    	printf("管理员注册请按1,学生注册请按2!\n");
    	scanf("%d",&j);
    	if(j==1)
    	{
    		char num[32];
    		printf("请输入数字,不可超出10位\n");
    		scanf("%s",num);
    		if(strlen(num)<=10)
    		{
    			for(i=0;i<40;i++)
    			{
    				if(strcmp(code[i].tea,num)==0)
    				{
    					printf("数字已存在,请重新输入\n"); 
    					_getch();
    					return -1; 
    				}
    				printf("注册成功\n");
    				strcpy(code[count1].tea,num);
    				count1++; 
    				_getch();
    				return -1; 
    			}
    		}
    		printf("输入错误,请重新输入\n"); 
    		_getch();
    	 	return -1;
    	}
    	else if(j==2)
    	{
    		char num[32];
    		printf("请输入数字,不可超出10位\n");
    		scanf("%s",num);
    		if(strlen(num)<=10)
    		{
    			for(i=0;i<40;i++)
    			{
    				if(strcmp(code[i].stu,num)==0)
    				{
    					printf("数字已存在,请重新输入\n"); 
    					_getch();
    					return -1; 
    				}
    			}
    			printf("注册成功\n");
    			strcpy(code[count2].stu,num);
    			count2++; 
    			_getch();
    			return -1; 
    		}
    		printf("输入错误,请重新输入\n"); 
    		_getch();	
    		return -1; 
    	}
    	printf("输入错误,请重新输入\n"); 
    	_getch();
    	return -1; 	
    }
    char menu1()
    {
    
    	system("cls");
    	int num;
    	while(1)
    	{
    		system("cls");
    		printf("\t\t--------------------------\n\n");
    		printf("\t\t1.学生登陆\t2.管理员登陆\n\n");
    		printf("\t\t3.注册      4.退出系统\n\n");
    		printf("\t\t--------------------------\n\n");
    		scanf("%d",&num);
    		char c,d;
    		switch(num)
    		{
    			case 1:
    				stuu();
    				c=stuu();
    				if(c==0)
    				{
    					c=2;
    					one++;
    					return -1;
    				}
    			
    				break;
    			case 2:
    				teaa();
    				d=teaa();
    				if(d==0)
    				{
    					d=2;
    					two++;
    					return -1;
    				}
    			
    				break;
    			case 3:
    				zhuce();
    				break;
    			case 4:
    				exit(0);
    				break;
    		}	
    	}
    }
    
    void input()					
    {
    	for(;i<40;i++)
    	{
    		printf("\n");
    		printf("****************      数据录入      ***********\n");
    		printf("\n\n");
    		printf("请输入课程编号:");
    	    scanf("%d",&wor[i].num);
    		fflush(stdin);
    	    if(wor[i].num==0) break;          //当输入的课程编号为“0”时,录入结束
    		printf("请输入课程名称:");
    	    scanf("%s",&wor[i].name);
    		printf("请输入课程性质:");
    	    scanf("%s",&wor[i].nat);
    		printf("请输入总学时:");
    	    scanf("%d",&wor[i].time1);
    		printf("请输入授课学时:");
    	    scanf("%d",&wor[i].time2);
    		printf("请输入实验学时:");
    	    scanf("%d",&wor[i].time3);
    		printf("请输入课程学分:");
    	    scanf("%d",&wor[i].fen);
    	
    		count++;	    //记录录入信息的个数
    		system("cls");	//清屏
    	}
    }
    void brouse()//浏览课程 
    {
    	int i;
    	printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    	printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分 选课人数 \n");
    	printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    	for(i=0;i<count;i++)
    	{
    		printf(" %d    %s     %s    %d    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen,wor[i].cho);
    	    printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    	}
    	
    	
    	printf("请按任意键返回");
    	_getch();
    }
    void search()//信息查询
    {
    	void num();
    	void name();
    	int i;
    	printf("\n\n");
    	printf("请选择查询方式:\n");
    	printf("\n");
    	printf("┏━━━━━━━━━━━━━━━━━━━━━┓\n");
    	printf("┃  1.按课程学分查询     ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("┃  2.按课程性质查询     ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("┃  4.返回系统页面       ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("\n");
    	printf("请输入您的选择,小系为您服务:\n");
    	scanf("%d",&i);
    	system("cls");
    	switch(i)
    	{
            case 1: num();break;
    		case 2: name();break;
    		case 3:break;
    	}
    }
    void num()//学分查询
    {
    	int i,num;
    	printf("请输入所查询的课程学分:\n");
    	scanf("%d",&num);
    	for(i=0;i<count;i++)
    		if(wor[i].num==num)
    		{
    			printf("查询结果如下:\n");
    			printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    			printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分  \n");
    			printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			printf(" %d    %s     %s    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen);
    	  		printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    		printf("*********    很抱歉,没有查到      *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void name()//名称查询
    {
    	int i;
    	char name[10];
    	printf("请输入所查课程名称:\n");
    	scanf("%s",name);
    	for(i=0;i<count;i++)		
    		if(strcmp(wor[i].name,name)==0)
    		{
    			printf("查询结果如下:\n");
    			printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    			printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分  \n");
    			printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			printf(" %d    %s     %s    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen);
    	  		printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");	
    			break;
    		}
    	
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    		printf("********* 很抱歉,没有该课程的信息 *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    
    }
    
    char choice()	//选课 
    {
    	int i;
    	char name[10];
    	printf("请输入所选课程名称:\n");
    	scanf("%s",name);
    	for(i=0;i<count;i++)		
    		if(strcmp(wor[i].name,name)==0)
    		{
    			printf("*******************************************\n");
    			printf("*********      恭喜,选课成功     *********\n");
    			printf("*******************************************\n");
    			wor[i].cho++;
    			_getch();
    			return -1;
    		}
    	
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    		printf("********* 很抱歉,没有该课程的信息 *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    
    
    }
    
    
    void revise()//课程信息修改。
    {
    	void renum();
    	void re_name();
    	void renat();
    	void retime1();
    	void retime2();
    	void retime3();
    	void refen();
    	int j;
    	printf("选择修改内容:\n");
    	printf("┏━━━━━━━━━━━━━━━━━━━━━┓\n");
    	printf("┃  1.课程编号修改     ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("┃  2.课程名称修改     ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("┃  3.课程性质修改     ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("┃  4.总学时修改       ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("┃  5.授课学时修改     ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("┃  6.实验学时修改     ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("┃  7.学分修改         ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("┃  8.返回管理系统页面 ┃\n");
    	printf("┗━━━━━━━━━━━━━━━━━━━━━┛\n");
    	printf("请输入您的选择,小系为您服务:\n");
    	scanf("%d",&j);
    	system("cls");
    	switch(j)
    	{
    		case 1: renum();break;
            case 2: re_name();break;
    		case 3: renat();break;
    		case 4: retime1();break;
    		case 5: retime2();break;
    		case 6: retime3();break;
    		case 7: refen();break;
    		case 8:break;
    	}
    }
    
    void renum()//课程编号修改
    {
    	char name[32];
    	int i,t;
    	printf("请输入您要查询的课程名称:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(wor[i].name,name)==0)
    		{
    	        printf("本课程初始编号是:%d\n",wor[i].num);
    	        printf("修改后的之后的编号是:");
    			scanf("%d",&t);
    	        wor[i].num=t;
    			printf("****************************************************\n");
    	        printf("\n");
    		    printf("******       o(≧v≦)o~~好棒!!修改成功!!!     ******\n");
    			printf("\n");
    			printf("****************************************************\n");
    			printf("以下是修改之后的信息\n");
    			printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    			printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分  \n");
    			printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			printf(" %d    %s     %s    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen);
    	  		printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");	
    			break;
    		}
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    		printf("********* 很抱歉,没有该课程的信息 *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void re_name()//名称修改
    {
    	char name[32];
    	int i;
    	char t[32];
    	printf("请输入您要查询的课程名称:");
    	scanf("%s",name);
    	printf("\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(wor[i].name,name)==0)
    		{
    	        printf("本课程初始名称是:%d\n",wor[i].name);
    	        printf("修改后的之后的名称是:");
    			scanf("%s",t);
    	        strcpy(wor[i].name,t);
    			printf("****************************************************\n");
    	        printf("\n");
    		    printf("******       o(≧v≦)o~~好棒!!修改成功!!!     ******\n");
    			printf("\n");
    			printf("****************************************************\n");
    			printf("以下是修改之后的课程信息\n");
    			printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    			printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分  \n");
    			printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			printf(" %d    %s     %s    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen);
    	  		printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");	
    			break;
    		}
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    	    printf("********* 很抱歉,没有该课程的信息 *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void renat()//课程性质修改
    {
    	char name[32];
    	int i;
    	char nat[32];
    	printf("请输入您要查询的课程名称:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(wor[i].name,name)==0)
    		{
    	        printf("课程初始性质是:%d\n",wor[i].nat);
    	        printf("修改后的之后的性质是:");
    			scanf("%s",nat);
    	        strcpy(wor[i].nat,nat);
    			printf("****************************************************\n");
    	        printf("\n");
    		    printf("******       o(≧v≦)o~~好棒!!修改成功!!!     ******\n");
    			printf("\n");
    			printf("****************************************************\n");
    			printf("以下是修改之后的课程信息\n");
    			printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    			printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分  \n");
    			printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			printf(" %d    %s     %s    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen);
    	  		printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");	
    			break;
    		}
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    		printf("********* 很抱歉,没有该课程的信息 *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void retime1()//总学时修改
    {
    	int t,i;
    	char name[32];
    	printf("请输入您要查询的课程名称:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(wor[i].name,name)==0)
    		{
    	        printf("本课程初始总学时是:%d\n",wor[i].time1);
    	        printf("修改后的总学时是:");
    			scanf("%d",&t);
    	        wor[i].time1=t;
    			printf("****************************************************\n");
    	        printf("\n");
    		    printf("******       o(≧v≦)o~~好棒!!修改成功!!!     ******\n");
    			printf("\n");
    			printf("****************************************************\n");
    			printf("以下是修改之后的课程信息\n");
    			printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    			printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分  \n");
    			printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			printf(" %d    %s     %s    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen);
    	  		printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");	
    			break;
    		}
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    		printf("********* 很抱歉,没有该课程的信息 *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void retime2()//授课学时修改
    {
    	int time2;
    	char name[32];
    	int i;
    	printf("请输入您要修改的课程的名称:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(wor[i].name,name)==0)
    		{
    	        printf("本课程初始授课学时是:%s\n",wor[i].time2);
    	        printf("修改后的之后的授课学时是:");
    			scanf("%d",&time2);
    	        wor[i].time2=time2;
    			printf("****************************************************\n");
    	        printf("\n");
    		    printf("******       o(≧v≦)o~~好棒!!修改成功!!!     ******\n");
    			printf("\n");
    			printf("****************************************************\n");
    			printf("以下是修改之后的课程信息\n");
    			printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    			printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分  \n");
    			printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			printf(" %d    %s     %s    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen);
    	  		printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");	
    			break;
    		}
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    		printf("********* 很抱歉,没有该课程的信息 *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    
    }
    void retime3()//实验学时修改 
    {
        int  time3;
    	char name[32];
    	int i;
    	printf("请输入您要修改的课程的名称是:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(wor[i].name,name)==0)
    		{
    	        printf("本课程的初始实验学时是:%d\n",wor[i].time3);
    			printf("修改后的实验学时是:");
    			scanf("%d",&time3);
    			wor[i].time3=time3;		
    			printf("****************************************************\n");
    	        printf("\n");
    		    printf("******       o(≧v≦)o~~好棒!!修改成功!!!     ******\n");
    			printf("\n");
    			printf("****************************************************\n");
    			printf("以下是修改之后的课程信息\n");
    			printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    			printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分  \n");
    			printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			printf(" %d    %s     %s    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen);
    	  		printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    		printf("********* 很抱歉,没有该课程的信息 *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void refen()//课程学分修改 
    {
    	int fen;
    	char name[32];
    	int i;
    	printf("请输入您要修改的课程名称是:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(wor[i].name,name)==0)
    		{
    	        printf("本课程初始课程学分是:%s\n",wor[i].fen);
       	        printf("修改后的课程学分是:");
    			scanf("%d",&fen);
    	        wor[i].fen=fen;			
    			printf("****************************************************\n");
    	        printf("\n");
    		    printf("******       o(≧v≦)o~~好棒!!修改成功!!!     ******\n");
    			printf("\n");
    			printf("以下是修改之后的课程信息\n");
    			printf("****************************************************\n");
    			printf("┏━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┓\n");
    			printf(" 课程编号 课程名称 课程性质  总学时 授课学时 实验学时 学分  \n");
    			printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			printf(" %d    %s     %s    %d    %d    %d    %d\n",wor[i].num,wor[i].name,wor[i].nat,wor[i].time1,wor[i].time2,wor[i].time3,wor[i].fen);
    	  		printf("┗━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┃━━━━┛\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("*******************************************\n");
    		printf("********* 很抱歉,没有该课程的信息 *********\n");
    		printf("*******************************************\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    
    void dele()//课程删除 
    { 
    	
    	int i,j;
    	char del_name[10];
    	printf("请输入需要删除的课程名称:\n");
    	scanf("%s",del_name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	{
    		if((strcmp(wor[i].name,del_name)==0))
    		{
    			for(j=i;j<count;j++)
    			{
    				wor[j]=wor[j+1];
    			}
    			printf("****************************************************\n");
    	        printf("\n");
    		    printf("             o(≧v≦)o~~好棒!!删除成功!!!           \n");
    		    printf("      您可以返回菜单在浏览功能项中查看删除结果!!!   \n");
    			printf("\n");
    	        printf("****************************************************\n");			
    		    count--;
    		}
    	}
    	
    	printf("请按任意键返回");
    	_getch();
    }
    
    void save()//文件建立及保存                                                                                                        
    {
    	FILE * fp;
    	int i;	
    	if((fp=fopen("Stu_list","wb"))==NULL)
    	{
    		printf("不能打开文件\n");
    		return;
    	}
    	for(i=0;i<count;i++)
    	{
    		if(fwrite(&wor[i],sizeof(struct Student),1,fp)!=1)
    			printf("文件输出错误\n");
    	}	
    	fclose(fp);
    	printf("\n\n");
    	printf("***********************************************\n");
    	printf("\n");
    	printf("******    o(≧v≦)o~~好棒!!保存成功!!!   ******\n");
    	printf("\n");
    	printf("***********************************************\n");
    	printf("请按任意键返回");
    	_getch();
    }
    void read()//数据的读取
    {
    	FILE * fp;
    	fp=fopen("Stu_list","rb");
    	do
    	{
    		fread(&wor[i],sizeof(struct Student),1,fp);//地址  长度   条数  指针
    		count++;
    		i++;
    	}
    	while(!feof(fp));//判断不等于0
    	i--;
    	count--;
    	fclose(fp);
    	printf("\n\n");
    	printf("***********************************\n");
    	printf("\n");
    	printf("    o(≧v≦)o~~好棒!!读取成功!!!   \n");
    	printf("\n");
    	printf("***********************************\n");
    	printf("请按任意键返回");
    	_getch();
    }
    char quit()
    {
    	int q;
    	printf("***********************************\n");
    	printf("**********  确认退出吗?  **********\n");
    	printf("\n");
    	printf("*******       1,确定        *******\n");
        printf("*******       2,取消        *******\n");
    	printf("\n");
    	printf("***********************************\n");
    	printf("请输入您的选择,小系为您服务:\n");
    	scanf("%d",&q);
    	switch(q)
    	{
            case 1:exit(1);break;
    		case 2:break;
    	}
    }
    
    
     
    int main()
    {
    	int m;
    	for(m=0;m<40;m++)
    	{
    		wor[m].cho=0;
    	}
    	
    	int k;
    	menu1();
    	if(one>1) 
    	{
    		one=1;
    		system("cls"); 
    		while(1)
    		{
    			system("cls");
    			printf("\n");
    			printf("\t欢迎来到学生界面\n");
    			printf("\n");
    			printf("\t(1)   课程信息浏览                      \n");
    			printf("\t(2)   课程信息查询                      \n");
    			printf("\t(3)   课程信息读取                      \n");
    			printf("\t(4)   学生选课                      \n");
    		    printf("\t(5)   退出                              \n");
    			printf("\n\n");
    			printf("请输入您的选择,小系为您服务:\n");
        	    scanf("%d",&k);
    		    switch(k)
    			{
    			   case 1:system("cls");brouse();break;
    			   case 2:system("cls");search();break;
    			   case 3:system("cls");read();break;
    			   case 4:system("cls");choice();break;
    			   case 5:system("cls");quit();break;
    			}
    		}
    	}else if(two>2) 
    	{
    		two=2;
    		system("cls");
    		while(1)
    		{
    			system("cls");
    			printf("\n");
    			printf("\t欢迎来到管理者界面 \n");
    			printf("\n");
    		    printf("\t(1)   课程信息录入                      \n");
    			printf("\t(2)   课程信息浏览                      \n");
    			printf("\t(3)   课程信息查询                      \n");
    			printf("\t(4)   课程信息修改                      \n");
    			printf("\t(5)   课程信息删除                      \n");
    			printf("\t(6)   课程数据文件建立                  \n");
    			printf("\t(7)   课程信息读取                      \n");
    		    printf("\t(8)   退出                              \n");
    			printf("\n\n");
    			printf("请输入您的选择,小系为您服务:\n");
        	    scanf("%d",&k);
    		    switch(k)
    			{
    			   case 1:system("cls");input();break;
    			   case 2:system("cls");brouse();break;
    			   case 3:system("cls");search();break;
    		       case 4:system("cls");revise();break;
    			   case 5:system("cls");dele();break;
    			   case 6:system("cls");save();break;
    			   case 7:system("cls");read();break;
    			   case 8:system("cls");quit();break;
    			}
    		}
    	}
    	
    
    	return 0;
    }
    
    

    参考代码3

    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<string.h>
    
    struct Student
    {
    	int num;		//课程编号 
    	char name[32];	//名称 
    	char nat[32];	//性质 
    	int time1;		//总学时 
    	int time2;		//授课学时 
    	int time3;		//实验学时 
    	int fen;		//学分 
    };
    
    struct Student stu[40];
    int count=0,i=0;
    
    void input()					
    {
    	printf("\n\n");
    	printf("请输入课程编号:");scanf("%d",&stu[i].num);
    	printf("请输入课程名称:");scanf("%s",&stu[i].name);
    	printf("请输入课程性质:");scanf("%s",&stu[i].nat);
    	printf("请输入总学时:");scanf("%d",&stu[i].time1);
    	printf("请输入授课学时:");scanf("%d",&stu[i].time2);
    	printf("请输入实验学时:");scanf("%d",&stu[i].time3);
    	printf("请输入课程学分:");scanf("%d",&stu[i].fen);
    	count++;	    //记录录入信息的个数
    	system("cls");	//清屏
    	printf("-------------------------------------------\n\n");
    	printf("                  修改成功                 \n\n");
    	printf("-------------------------------------------\n\n");
    	printf("\n\n请按任意键返回");
    	_getch();	
    }
    void brouse()					//浏览课程 
    {
    	int i;
    	printf("\n");
    	printf("编号  名称   性质   总学时   授课学时   实验学时   学分\n");
    	printf("\n");
    	for(i=0;i<count;i++)
    	{
    		printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].nat,stu[i].time1,stu[i].time2,stu[i].time3,stu[i].fen);
    	    printf("\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void search()					//查询课程 
    {
    	void num();
    	void name();
    	int i;
    	printf("\n\n");
    	printf("  1.按课程学分查询     \n");
    	printf("  2.按课程性质查询     \n");
    	printf("  3.返回系统页面       \n");
    	printf("\n");
    	scanf("%d",&i);
    	system("cls");
    	switch(i)
    	{
            case 1: num();break;
    		case 2: name();break;
    		case 3:break;
    	}
    }
    void num()//学分查询
    {
    	int i,num;
    	printf("请输入所查询的课程学分:\n");
    	scanf("%d",&num);
    	for(i=0;i<count;i++)
    		if(stu[i].num==num)
    		{
    			printf("查询结果如下:\n\n");
    			printf("\n编号  名称   性质   总学时   授课学时   实验学时   学分\n\n");
    			printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\n\n",stu[i].num,stu[i].name,stu[i].nat,stu[i].time1,stu[i].time2,stu[i].time3,stu[i].fen);
    			break;
    		}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,没有查到              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void name()//名称查询
    {
    	int i;
    	char name[10];
    	printf("请输入所查课程名称:\n");
    	scanf("%s",name);
    	for(i=0;i<count;i++)		
    		if(strcmp(stu[i].name,name)==0)
    		{
    			printf("查询结果如下:\n\n");
    			printf("\n编号  名称   性质   总学时   授课学时   实验学时   学分\n\n");
    			printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\n\n",stu[i].num,stu[i].name,stu[i].nat,stu[i].time1,stu[i].time2,stu[i].time3,stu[i].fen);
    			break;
    		}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,没有查到              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    
    }
    
    void revise()//课程信息修改。
    {
    	void renum();
    	void re_name();
    	void renat();
    	void retime1();
    	void retime2();
    	void retime3();
    	void refen();
    	int j;
    
    	printf("  1.课程编号修改     \n");
    	printf("  2.课程名称修改     \n");
    	printf("  3.课程性质修改     \n");
    	printf("  4.总学时修改       \n");
    	printf("  5.授课学时修改     \n");
    	printf("  6.实验学时修改     \n");
    	printf("  7.学分修改         \n");
    	printf("  8.返回管理系统页面 \n");
    	scanf("%d",&j);
    	system("cls");
    	switch(j)
    	{
    		case 1: renum();break;
            case 2: re_name();break;
    		case 3: renat();break;
    		case 4: retime1();break;
    		case 5: retime2();break;
    		case 6: retime3();break;
    		case 7: refen();break;
    		case 8:break;
    	}
    }
    
    void renum()//课程编号修改
    {
    	char name[32];
    	int i,t;
    	printf("请输入您要查询的课程名称:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(stu[i].name,name)==0)
    		{
    	        printf("本课程初始编号是:%d\n",stu[i].num);
    	        printf("修改后的之后的编号是:");
    			scanf("%d",&t);
    	        stu[i].num=t;
    			printf("-------------------------------------------\n\n");
    			printf("                  修改成功                 \n\n");
    			printf("-------------------------------------------\n\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,没有查到              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void re_name()//名称修改
    {
    	char name[32];
    	int i;
    	char t[32];
    	printf("请输入您要查询的课程名称:");
    	scanf("%s",name);
    	printf("\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(stu[i].name,name)==0)
    		{
    	        printf("本课程初始名称是:%d\n",stu[i].name);
    	        printf("修改后的之后的名称是:");
    			scanf("%s",t);
    	        strcpy(stu[i].name,t);
    			printf("-------------------------------------------\n\n");
    			printf("                  修改成功                 \n\n");
    			printf("-------------------------------------------\n\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,没有查到              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void renat()//课程性质修改
    {
    	char name[32];
    	int i;
    	char nat[32];
    	printf("请输入您要查询的课程名称:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(stu[i].name,name)==0)
    		{
    	        printf("课程初始性质是:%d\n",stu[i].nat);
    	        printf("修改后的之后的性质是:");
    			scanf("%s",nat);
    	        strcpy(stu[i].nat,nat);
    			printf("-------------------------------------------\n\n");
    			printf("                  修改成功                 \n\n");
    			printf("-------------------------------------------\n\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,没有查到              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void retime1()//总学时修改
    {
    	int t,i;
    	char name[32];
    	printf("请输入您要查询的课程名称:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(stu[i].name,name)==0)
    		{
    	        printf("本课程初始总学时是:%d\n",stu[i].time1);
    	        printf("修改后的总学时是:");
    			scanf("%d",&t);
    	        stu[i].time1=t;
    			printf("-------------------------------------------\n\n");
    			printf("                  修改成功                 \n\n");
    			printf("-------------------------------------------\n\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,没有查到              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void retime2()//授课学时修改
    {
    	int time2;
    	char name[32];
    	int i;
    	printf("请输入您要修改的课程的名称:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(stu[i].name,name)==0)
    		{
    	        printf("本课程初始授课学时是:%s\n",stu[i].time2);
    	        printf("修改后的之后的授课学时是:");
    			scanf("%d",&time2);
    	        stu[i].time2=time2;
    			printf("-------------------------------------------\n\n");
    			printf("                  修改成功                 \n\n");
    			printf("-------------------------------------------\n\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,没有查到              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    
    }
    void retime3()//实验学时修改 
    {
        int  time3;
    	char name[32];
    	int i;
    	printf("请输入您要修改的课程的名称是:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(stu[i].name,name)==0)
    		{
    	        printf("本课程的初始实验学时是:%d\n",stu[i].time3);
    			printf("修改后的实验学时是:");
    			scanf("%d",&time3);
    			stu[i].time3=time3;		
    			printf("-------------------------------------------\n\n");
    			printf("                  修改成功                 \n\n");
    			printf("-------------------------------------------\n\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,没有查到              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    void refen()//课程学分修改 
    {
    	int fen;
    	char name[32];
    	int i;
    	printf("请输入您要修改的课程名称是:");
    	scanf("%s",name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	    if(strcmp(stu[i].name,name)==0)
    		{
    	        printf("本课程初始课程学分是:%s\n",stu[i].fen);
       	        printf("修改后的课程学分是:");
    			scanf("%d",&fen);
    	        stu[i].fen=fen;			
    			printf("-------------------------------------------\n\n");
    			printf("                  修改成功                 \n\n");
    			printf("-------------------------------------------\n\n");
    			break;
    		}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,没有查到              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	printf("请按任意键返回");
    	_getch();
    }
    
    void dele()							//删除课程 
    { 
    	
    	int i,j;
    	char del_name[10];
    	printf("请输入需要删除的课程名称:\n");
    	scanf("%s",del_name);
    	printf("\n\n");
    	for(i=0;i<count;i++)
    	{
    		if((strcmp(stu[i].name,del_name)==0))
    		{
    			for(j=i;j<count;j++)
    			{
    				stu[j]=stu[j+1];
    			}
    			printf("-------------------------------------------\n\n");
    			printf("                  删除成功                 \n\n");
    			printf("-------------------------------------------\n\n");			
    		    count--;
    		}
    	}
    	if(i>=count)
    	{
    		printf("-------------------------------------------\n\n");
    		printf("              很抱歉,删除失败              \n\n");
    		printf("-------------------------------------------\n\n");
    	}
    	
    	printf("请按任意键返回");
    	_getch();
    }
    
    void save()							//文件保存                                                                                                        
    {
    	FILE * fp;
    	int i;	
    	if((fp=fopen("Stu_list","wb"))==NULL)
    	{
    		printf("不能打开文件\n");
    		return;
    	}
    	for(i=0;i<count;i++)
    	{
    		if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
    			printf("文件输出错误\n");
    	}	
    	fclose(fp);
    	printf("\n\n");
    	printf("-------------------------------------------\n\n");
    	printf("                  保存成功                 \n\n");
    	printf("-------------------------------------------\n\n");
    	printf("请按任意键返回");
    	_getch();
    }
    void read()							//文件读取 
    {
    	FILE * fp;
    	fp=fopen("Stu","rb");
    	do
    	{
    		fread(&stu[i],sizeof(struct Student),1,fp);
    		count++;
    		i++;
    	}
    	while(!feof(fp));//判断不等于0
    	i--;
    	count--;
    	fclose(fp);
    	printf("\n\n");
    	printf("-------------------------------------------\n\n");
    	printf("                  读取成功                 \n\n");
    	printf("-------------------------------------------\n\n");
    	printf("请按任意键返回");
    	_getch();
    }
    void quit()
    {
    	int q;
    
    	printf("\n\t确认退出吗?\n\n");
    	printf("\t1,确定\n");
        printf("\t2,取消\n\n");
    	scanf("%d",&q);
    	switch(q)
    	{
            case 1:return;break;
    		case 2:break;
    	}
    }
    void main()
    {
    	int k;
    	while(1)
    	{
    		system("cls");
    		printf("\n");
    	    printf("1.增加课程              \n");
    		printf("2.浏览课程              \n");
    		printf("3.查询课程              \n");
    		printf("4.修改课程              \n");
    		printf("5.删除课程              \n");
    		printf("6.课程文件创建          \n");
    		printf("7.课程文件读取          \n");
    	    printf("8.退出选修课程系统      \n\n\n");
            scanf("%d",&k);
    	    switch(k)
    		{
    		   case 1:system("cls");input();break;
    		   case 2:system("cls");brouse();break;
    		   case 3:system("cls");search();break;
    	       case 4:system("cls");revise();break;
    		   case 5:system("cls");dele();break;
    		   case 6:system("cls");save();break;
    		   case 7:system("cls");read();break;
    		   case 8:system("cls");quit();break;
    		}
    	}
    }
    
    展开全文
  • 来实现学生选课管理系统的各种功能,主要能实现以下几个功能,不同的用户需要不同的登陆端来实现不同的功能,学生端要实现选课,退课,能看自己的课程表,能看自己的成绩表等功能,教师端要实现对自己学生的基本信息...
  • 视频演示请移步哔哩哔哩440757580。实现了学生查询成绩、选课,教师增删改成绩、管理员增删改学生教师课程等功能,设有登录界面等,交互性高,能给用户带来较好的体验。
  • 根据课程信息和学生信息完成对课程选修,需要专门的一个管理类来完成选修工作。 2、功能要求 (1)添加功能:程序能够任意添加课程学生记录,可提供选择界面供用户选择所要添加的类别,要求编号要唯一,如果...
  • 项目完整工程文件 详情可见博主项目博客
  • 《JAVA数据库课程设计学生选课管理系统的》由会员分享,可在线阅读,更多相关《JAVA数据库课程设计学生选课管理系统的(59页珍藏版)》请在人人文库网上搜索。1、一、课程设计目的通过这次的设计,主要是做出一个小型...
  • printf("输入选修课程信息:\n"); scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etime,&score,&term); while(num!=0){ p=(SUB *)malloc(size); p->num=num; strcpy(p->name,name); strcpy(p->...
  • 资源包含: 14页详细的课程设计报告书、powerDesigner生成数据库的概念、物理、逻辑模型工程文件、C++——Qt编写的可视化数据库管理系统、 数据库工程文件(需要自己附加进Sql sever)、完成题目要求的数据库查询...
  • java 学生选课管理系统代码

    热门讨论 2010-11-18 14:46:38
    java 学生选课管理系统 课程信息 学生选课
  • 学生选课管理系统

    热门讨论 2013-01-07 08:19:45
    选修课程管理 管理员可以进行添加新的选修课、删除选修课、修改选修课和查找选修课等操作 添加新的选修课 在选课之前,管理员可以添加新的选修课,让学生在选课期间进行选修 删除选修课 在选课之前,管理员...
  • C语言课程设计——学生成绩管理系统: struct student/*定义学生成绩结构体*/ { int num;/*学号*/ char name[15];/*姓名*/ double elec;/*选修课*/ double expe;/*实验课*/ double requ;/*必修课*/ double sum;...
  • 湖南人文科技学院计算机系 课程设计说明书 课程名称 : 软件工程导论 课程代码 题 目 : 学生选修课信息管理系统 年级/专业/班 : 09级计科2班 学生姓名 : 赵浩胡碧山文盼聂惠俊杨晨 学号 : 09408237 ;09408207 ; ...
  • 一、课程设计目的通过这次的设计,主要是做出一个小型的管理系统,来加强对JA V A所学知识的巩固和融会贯通,可以说是对一个学期所学知识的一个小结,加深对JA V A数据库的理解。二、需求分析功能需求分析:该系统...
  • 内容索引:JAVA源码,综合应用,选修课,管理系统 Java 选修课程管理系统,广东石油化工学院计算机07-1班 Logic 陈罗志原创程序,使用Eclipse+Mysql开发,代码中预设的Mysql数据库用户名为root,密码为admin,运行程序...
  • 大二时候的课设,JAVA链接MySQL实现的学生信息管理系统学生选课管理系统。使用SWing实现GUI设计,实现学生和管理员两种身份登录,教师身份由于时间问题没有完成。
  • 数据结构课程设计,用C语言编写的一个小程序,内附源码和文档
  • .PAGE..#include#include#includeint N1,N2;struct student{int num2;char name2[20];int nelenum[50]; //所选课程编号int nelen; //所选课程学分和struct student * next;};struct course{int n...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,045
精华内容 1,618
关键字:

学生选修课程管理系统代码