C语言课程设计学生选课系统
c语言课程设计学生选课系统
c语言课程设计学生选课系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言设计学生选课系统。
具体目标如下:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识。
2.技能目标:学生能够运用C语言编写简单的程序,具备一定的编程能力,能够独立设计并实现学生选课系统的核心功能。
3.情感态度价值观目标:学生通过本课程的学习,能够培养对计算机编程的兴趣和热情,提高解决问题的能力,培养团队协作和自主学习的意识。
二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.C语言基础知识:包括基本语法、数据类型、运算符、控制结构等。
2.函数:包括函数的定义、声明、调用等。
3.数组和字符串:包括一维数组、多维数组、字符串的基本操作等。
4.指针:包括指针的基本概念、指针与数组、指针与函数等。
5.结构体和文件:包括结构体的定义和使用、文件的读写操作等。
6.学生选课系统的设计与实现:包括系统需求分析、系统设计、核心功能实现等。
三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构等知识,让学生掌握C语言的基础知识。
2.案例分析法:通过分析实际的学生选课系统的案例,让学生了解并掌握系统的设计与实现方法。
3.实验法:让学生通过动手编写程序,巩固所学知识,提高编程能力。
4.小组讨论法:分组让学生讨论并解决问题,培养团队协作和自主学习的意识。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材。
2.参考书:提供相关的C语言编程参考书籍,供学生自主学习。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高学生的学习兴趣。
4.实验设备:提供计算机实验室,让学生能够进行上机实验,提高编程能力。
五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估学生的学习态度和积极性。
c语言课程设计学生选课系统
c语言课程设计 学生选课系统一、课程目标知识目标:1. 学生能理解C语言在开发学生选课系统中的应用,掌握基本的数据结构(如结构体、数组、链表)和文件操作相关知识。
2. 学生能运用C语言实现学生选课系统的基本功能,如学生信息管理、课程信息管理、选课操作等。
3. 学生能理解并掌握C语言中的模块化编程思想,将学生选课系统分解为多个函数,提高代码的可读性和可维护性。
技能目标:1. 学生能运用C语言编写、调试和运行学生选课系统,具备一定的编程实践能力。
2. 学生能通过团队协作,共同完成一个完整的学生选课系统项目,提高沟通与协作能力。
3. 学生能运用所学知识,对现有学生选课系统进行优化和改进,提高系统性能。
情感态度价值观目标:1. 学生通过本课程的学习,培养对计算机编程的兴趣和热情,树立学习C语言的自信心。
2. 学生在团队协作中,学会尊重他人意见,培养合作精神和团队意识。
3. 学生能够认识到编程在解决实际问题中的价值,提高将所学知识应用于实际生活的意识。
课程性质:本课程为C语言编程实践课程,旨在让学生通过动手实践,掌握C 语言编程技能,并运用所学知识解决实际问题。
学生特点:学生已具备一定的C语言基础,具备基本编程能力,但缺乏实际项目经验。
教学要求:注重理论与实践相结合,强调编程实践,培养学生解决实际问题的能力。
通过团队协作,提高学生的沟通与协作能力。
在教学过程中,关注学生的个体差异,因材施教,使每位学生都能在原有基础上得到提高。
二、教学内容1. 数据结构基础:回顾结构体、数组、链表等基本数据结构,讲解其在学生选课系统中的应用。
相关教材章节:第3章 数据类型与表达式,第4章 控制结构,第5章 函数,第6章 数组与字符串,第7章 指针与结构体。
2. 文件操作:介绍文件读写、文件管理等基本操作,为学生选课系统提供数据持久化支持。
相关教材章节:第10章 文件操作。
3. 模块化编程:讲解模块化编程思想,引导学生将学生选课系统分解为多个函数,提高代码的可读性和可维护性。
C语言课程设计学生选修课程系统设计
学生选修课系统设计一、设计目的此刻时代是飞速发展的信息时代,在各行各业中离不开信息办理,这正是计算机被广泛应用于信息系统的环境。
计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息控制,不但提升了工作效率,并且大大的提升了其安全性。
特别对于复杂的信息管理,计算机能够充分发挥它的优胜性。
计算机进行信息管理与信息管理系统的开发亲近相关,系统的开发是系统管理的前提。
本系统就是为了管理勤学生选课信息而设计的。
数据办理手工操作,工作量大,犯错率高,犯错后不易改正,造成了时间上的浪费。
基于这个问题,我以为有必需建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,防备学生选课管理的随意性,提升信息办理的速度和正确性,能够及时、正确、有效的盘问和更正选课状况。
二、题目说明假定有 n 门课程,每门课程都有课程编号,课程名称,课程性质,总学时,讲课学时,实验或上机学时,学分,开课学期等信息,学生可按要求 ( 如总学分不得少于 60) 自由选课。
试设计一选修课程系统,使之能供给一下功能:(1)(2)(3)(4)(5)(6) [ 提示]系统以菜单方式工作;课程信息和学生信息的录入功能(课程信息有文件保存)---- 输入;课程信息阅读功能 ---- 输出;盘问功能 ( 最少一种盘问方式 )--- 算法;按学分盘问;某门课程学生选修状况 ( 可选项 ) 。
数据结构可用结构体,包含课程和选秀两个结构体,此中课程结构体包含课程编号、课程名称、课程性质、总学时、讲课学时、实验或上机学时、学分、开课学期。
选修结构体成员包含学号,课程编号,该结构体的建立主若是为了盘问某门课程学生选修状况 . 。
三、数据结构设计本系统的实现,所有采纳链表这类数据结构,用链表实现课程的查找、增添、删除、课程的选修、追加选修的课程,课程信息采纳结构体这类数据结构。
typedef struct subjects{int num;主模块管理员模学生模浏查添删浏查选浏删览询择览除览询加除所课选我错课课课课有程修选选课信课修的程程程程进当选课选择序号进行进入下一管理员身份登录 \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 2:Students();break;case 3:w=0;break;default:;}}while(w==1);return 0;}( 二) 管理员功能模块管理员的功能一共有四个功能:阅读,盘问,增添,删除课程,运用字符串办理函数办理密码的问题,用一个 switch 语句实现函数的调用:管理员登录i=3是否i>0输入密是否进行码匹对按随意键进入管理员[ 程序]void Mangers(){int n,w=1,flag=0,i=3;char s[8];char password[7]="1";do{printf("\n\nEnter password:");scanf("%s",s);if(!strcmp(s,password))学生登录deldeldel按 1-6 数字键进入各1、阅读所有课程2、盘问课程信息进入所选创建链输当选修课程信息(num,name,kind,st是Num!=0p=(SUB*)malloc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);否是Head==NULTail->nexHead=Scanf(num,name,kiTail->next=NU nd,&stime,&ttime,否创建完阅读所有SUB *ptr;head=NULL;readfile()是否Head==NULPrintf(NO输出课程信息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");}( 六) 盘问模块盘问模块主要用于管理员功能中的“盘问课程”和学生功能模块中的“盘问所有课程”,盘问模块共分为三个盘问方法:按课程名称查找,按课程性质查找和按学分查找switch 语句中,每一个case插入链表语句就是一中盘问方法:SUB *p1,*p2;p1=subj;课程信息查是否head==NUL按1-4 数字键进入head=p1;是否1、按课程名称查head->next=NULp2=head;p2;找是否p2->next==N进入所选[ 程序]p2->next=subj;eturn subj->next=NULLvoid search() ;C语言课程设计学生选修课程系统设计newSub=(SUB*)malloc(sizeof(SUB));printf( “选修成功!fscanf(fp,&newSub->num,newSub->na me,newSub->kind,&newSub->stime,&n printf("\n以上信息全ewSub->ttime,&newSub->etime,&newS 部保存在 '' 中\n")fclose(fp)删除选修保存文SUB系统进行检测所要保fprintf(fp,"*p1,*p2;插入课程课程编号课程名称课程性质SUB *ptr,*subj;实验总学时讲课学时printf(输入想要删除的课程编intsize=sizeof(SUB);p=head;p;p=p->ne进行编号查找并是否ch!=printf("\n连续删除请按回车fprintf(fp,"%5d%12s%9s%9输入(课程信息、课程编号、d%9d%11d%11d%7d\n",p->nu 课程名称、课程性质、总学m,p->name,p->kind,p->stimyInsert(subj);printf("\n\n连续插入请按回车printf(" 创立后的信\ C 语言课程设计报告息已放入''文件中ch1=getchar()Return;system("pause")洁了然的程序菜单。
学生选课系统C语言程序代码
#include<stdio.h>#include<stdlib.h>struct couse * head1;struct student * head2;struct couse//课程信息结构体{int num1;char name1[20];int score;int nelepeo;//课程已选人数int Melepeo;//课程人数上限struct couse * next;};struct student//学生信息结构体{int num2;char name2[20];int nelenum[50];//已选课程编号int nelen;//已选课程数量struct student * next;};void keyboardc()//录入课程子函数(从键盘录入){struct couse *p1,*p2;N1=0;p1=p2=(struct couse*)malloc(sizeof(struct couse)); printf("\n课程编号\t课程名称\t学分\t课程人数上限\n");scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1 ->Melepeo);p1->nelepeo=0;head1=NULL;while(p1->num1!=0&&p1->num1!='#'){N1=N1+1;if(N1==1)head1=p1;else p2->next=p1;p2=p1;p1=(struct couse * )malloc(sizeof(struct couse));scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1 ->Melepeo);p1->nelepeo=0;}p2->next=NULL;}void inputc()//录入课程主函数{int i;printf("\n录入课程信息\n");printf("\n1.从键盘录入\n"); printf("\n2.返回主菜单\n");printf("\n请选择编号(1~3):\n");scanf("%d",&i);switch(i){case(1):keyboardc();break;case(2):break;}}void insertc(struct couse *incouse)//课程信息增加子函数{struct couse *p0,*p1,*p2;p1=head1;p0=incouse;if(head1==NULL){head1=p0;p0->next=NULL;}else{while((p0->num1>p1->num1)&&(p1->next!=NULL)) {p2=p1;p1=p1->next;}if(p0->num1 <= p1->num1){if(head1==p1) head1=p0;else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N1=N1+1;}void delc(int num1)//课程信息删除子函数{struct couse *p1,*p2;if(head1==NULL){printf("\n没有课程,无法删除!\n"); goto end;}p1=head1;while(num1!=p1->num1 && p1->next!=NULL) {p2=p1;p1=p1->next;}if(num1==p1->num1){if(p1==head1) head1=p1->next;else p2->next=p1->next;printf("\n已删除该编号课程!\n");N1=N1-1;}else printf("\n无该编号的课程!\n");end:;}void managementc()//课程信息管理主函数{struct couse * incouse;int i,num1;printf("\n课程管理\n");printf("\n1.新增课程\n");printf("\n2.删除课程\n");printf("\n3.返回主菜单\n");printf("\n请选择编号(1~3):\n");scanf("%d",&i);switch(i){case(1):{incouse=(struct couse*)malloc(sizeof(struct couse));printf("\n课程编号\t课程名称\t学分\t课程人数上限\n");scanf("%d%s%d%d",&incouse->num1,incouse->name1,&inc ouse->score,&incouse->Melepeo);incouse->nelepeo=0;insertc(incouse);break;}case(2):{printf("\n请输入要删除课程的编号:\n"); scanf("%d",&num1);delc(num1);break;}case(3):break;}}void keyboards()//录入学生信息子函数(从键盘录入){int i;struct student *p1,*p2;N2=0;p1=p2=(struct student *)malloc(sizeof(struct student));printf("\n学生学号\t学生姓名\n");scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++) p1->nelenum[i]=0;head2=NULL;while(p1->num2!=0){N2=N2+1;if(N2==1)head2=p1;else p2->next=p1;p2=p1;p1=(struct student * )malloc(sizeof(struct student));scanf("%d%s",&p1->num2,p1->name2);p1->nelen=0;for(i=0;i<20;i++) p1->nelenum[i]=0;}p2->next=NULL;}void inputs()//录入学生信息主函数{int i;printf("\n录入学生信息\n");printf("\n1.从键盘录入\n");printf("\n2.返回主菜单\n");printf("\n请选择编号(1~2):\n");scanf("%d",&i);switch(i){case(1):keyboards();break;case(2):break;}}void inserts(struct student * incouse)//学生信息增加子函数{struct student *p0,*p1,*p2;p1=head2;p0=incouse;if(head2==NULL){head2=p0;p0->next=NULL;}else{while((p0->num2 > p1->num2) && (p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num2 <= p1->num2){if(head2==p1) head2=p0;else p2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}N2=N2+1;}void dels(int num2)//学生信息删除子函数{struct student *p1,*p2;if(head2==NULL){printf("\n没有该学生信息,无法删除!\n"); goto end;}p1=head2;while(num2!=p1->num2 && p1->next!=NULL){p2=p1;p1=p1->next;}if(num2==p1->num2){if(p1==head2) head2=p1->next;else p2->next=p1->next;printf("\n已删除该学生信息!\n");N2=N2-1;}else printf("\n无该学号的学生!\n");end:;}void managements()//学生信息管理主函数{struct student * incouse;int i,num2;printf("\n学生信息管理\n");printf("\n1.新增学生信息\n");printf("\n2.删除学生信息\n");printf("\n3.返回主菜单\n");printf("\n请选择编号(1~3):\n");scanf("%d",&i);switch(i){case(1):{incouse=(struct student*)malloc(sizeof(struct student));incouse->nelen=0;incouse->nelenum[0]=0;printf("\n学生学号\t学生姓名\n");scanf("%d%s",&incouse->num2,incouse->name2);inserts(incouse);break;}case(2):{printf("\n请输入要删除学生的学号:\n"); scanf("%d",&num2);dels(num2);break;}case(3):break;}}void elect(struct student * s)//学生选课子函数(进行选课){struct couse * p;int num1,i;printf("\n请输入要选课的编号:\n");scanf("%d",&num1);for(i=0;s->nelenum[i]!=0;i++);s->nelenum[i]=num1;(s->nelen)++;p=head1;while(p->num1!=num1) p=p->next;(p->nelepeo)++;}void cheak()//学生选课子函数(查询可选课程){char e;struct couse * c;struct student * s;int num2,i,j=0,t=0;printf("\n请输入你的学号:\n");scanf("%d",&num2);s=head2;while(s->num2!=num2 && s->next!=NULL) s=s->next; if(s->num2!=num2){printf("\n不存在你的信息,请进入主菜单录入你的信息!\n");goto end;}c=head1;printf("\n你的可选课程编号:\n");while(c!=NULL){for(t=0,i=0;s->nelenum[i]!=0;i++){if(c->num1==s->nelenum[i]) t=1;}if(t==0 && (c->nelepeo!=c->Melepeo)){printf("%d ",c->num1);j++;}c=c->next;}if(j==0){printf("\n你已选完所有课程,无法再多选!\n"); goto end;}printf("\n选课(y/n)?:\n");getchar();e=getchar();i=0;while(e=='y'){elect(s);printf("\n继续选课(y/n)?:\n");getchar();e=getchar();}end:;}void back(struct student * p)//退选课程{struct couse * p1;int num1,i,j;printf("\n请输入你要退掉的课程编号:\n");scanf("%d",&num1);p1=head1;while(p1->num1!=num1) p1=p1->next;for(i=0;p->nelenum[i]!=num1;i++);for(j=i;p->nelenum[j]!=0;j++)p->nelenum[j]=p->nelenum[j+1];p->nelenum[--j]=0;(p1->nelepeo)--;printf("\n退课成功!\n");}void hcheak()//学生选课子函数(查询已选课程){char c;struct couse * p0;struct student * p;int num2,i,f=0;printf("\n请输入学号:\n");scanf("%d",&num2);p=head2;while(p->num2!=num2 && p!=NULL) p=p->next;if(p==NULL){printf("\n不存在你的信息,请回主菜单录入信息:\n");goto end;}printf("\n已选课程编号:\n");if(p->nelenum[0]==0){printf("\n你还没选课!\n");goto end;}for(i=0;p->nelenum[i]!=0;i++){printf("%d\n",p->nelenum[i]);p0=head1;while(p0->num1!=p->nelenum[i]) p0=p0->next; f=f+p0->score;}printf("\n总学分:%d\n",f);printf("\n是否进行退课(y/n)?\n");getchar();c=getchar();while(c=='y'){back(p);printf("\n继续退课(y/n)?"); getchar();c=getchar();(p->nelen)--;}end:;}void elective()//学生选课主函数{int i;printf("\n学生选课\n");printf("\n1.查询可选课程\n");printf("\n2.查询已选课程\n");printf("\n3.返回主菜单\n");printf("\n请输入(1~3):\n");scanf("%d",&i);switch(i){case(1):cheak();break;case(2):hcheak();break;case(3):break;}}void listc()//查看课程信息{struct couse * p;p=head1;printf("\n课程编号课程名称学分课程已选人数课程人数上限\n");while(p!=NULL){printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->s core,p->nelepeo,p->Melepeo);p=p->next;}}void lists()//查看学生信息{struct student * p;p=head2;printf("\n学生学号学生姓名已选课程数量\n"); while(p!=NULL){printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen); p=p->next;}}void store()//系统信息查看主函数{int i;printf("\n系统信息查看\n");printf("\n1.查看课程信息\n");printf("\n2.查看学生信息\n");printf("\n3.返回主菜单\n");printf("\n请输入编号(1~3):\n");scanf("%d",&i);switch(i){case(1):listc();break;case(2):lists();break;case(3):break;}}int main()//主函数{system("color f0");int i;start:printf("\n******************************欢迎使用学生选课系统******************************\n");printf("\n 菜单 \n");printf("\n 1.录入课程信息 \n");printf("\n 2.课程信息管理 \n");printf("\n 3.录入学生信息 \n");printf("\n 4.学生信息管理 \n");printf("\n 5.进入选课程序 \n");printf("\n 6.系统信息查看 \n");printf("\n 7.退出选课系统 \n");printf("\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n"); printf("\n请输入菜单选项编号(1~7):\n");scanf("%d",&i);if(i<1 || i>7){printf("\n输入错误,请重输:\n");goto start;}switch(i){case(1):{system("cls");//清屏函数inputc();goto start;break;}case(2):{system("cls"); managementc(); goto start;break;}case(3):{system("cls"); inputs();goto start;break;}case(4):{system("cls"); managements(); goto start;break;}case(5):{system("cls");elective();goto start;break;}case(6):{system("cls");store();goto start;break;}case(7):{system("cls");printf("\n感谢使用本系统!再见!\n"); }}return(0);}。
C语言选课管理系统课程设计
C语言选课管理系统课程设计一、教学目标本课程旨在让学生掌握C语言选课管理系统的开发方法,培养其编程能力和问题解决能力。
具体目标如下:1.知识目标:学生能够理解C语言的基本语法、数据结构和常用算法;掌握面向对象编程思想。
2.技能目标:学生能够使用C语言进行程序设计,独立完成选课管理系统的开发;具备调试和优化程序的能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,使其认识到编程在实际应用中的重要性,提高其创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括C语言基础知识、数据结构、算法、面向对象编程和选课管理系统的设计与实现。
具体安排如下:1.C语言基础知识:介绍C语言的基本语法、变量、运算符、控制结构等。
2.数据结构:讲解数组、链表、栈、队列、树等基本数据结构及其应用。
3.算法:学习常用排序算法、查找算法、递归算法等,培养学生的算法思维。
4.面向对象编程:介绍类、对象、封装、继承、多态等基本概念,并学会使用面向对象的方法解决问题。
5.选课管理系统设计与实现:分析系统需求,设计系统架构,编写功能模块,完成系统集成。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:用于讲解基本概念、语法和算法,使学生掌握理论知识。
2.讨论法:学生针对案例进行分析,培养其问题解决能力和团队合作精神。
3.案例分析法:分析实际项目案例,使学生学会将理论知识应用于实际问题。
4.实验法:让学生动手编写代码,培养其编程能力和实践能力。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的教材,如《C程序设计原理与应用》、《C++ Primer》等。
2.参考书:提供相关领域的经典著作,如《算法导论》、《数据结构与算法分析》等。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高教学质量。
4.实验设备:保证学生有足够的实践机会,提高其编程能力和实践能力。
C++程序设计源代码 学生选课系统
I
目录
第一章 设计题目的内容、任务及具体要求 ..................................1 第二章 总体设计思路 ....................................................2
2.1 程序功能 ........................................................... 2 2.2 模块关系 ........................................................... 2 2.3 总体框图 ............................................................ 3 第三章 功能模块的具体设计 ..............................................4 3.1 主函数模块的设计 ................................................... 4 3.2 显示课程信息模块的设计 ............................................. 7 3.3 查询模块模块的设计 ................................................. 8 3.4 增加模块的设计 ..................................................... 9 3.5 删除模块模块的设计 ................................................ 13 3.6 修改模块模块的设计 ................................................ 14 3.7 选课模块的设计 .................................................... 15 3.8 显示选课情况模块的设计 ............................................. 17 第四章 功能模块的调试及测试 ...........................................18 4.1 登陆界面和主菜单界面的显示 ........................................ 18 4.2 查询所有课程信息的显示结果 ........................................ 19 4.3 查询单个课程信息的显示结果 ........................................ 19 4.4 添加课程信息的显示结果 ............................................ 20 4.5 删除和修改课程信息的显示结果 ...................................... 20 4.6 选课的显示结果 .................................................... 21 4.7 查询选课情况的显示结果 ............................................ 22 4.8 退出 .............................................................. 22 总结 ..................................................................23 致 谢 ................................................................24 参考资料:............................................................. 25 附程序清单............................................................. 26
C语言课程设计学生选课系统
C语言课程设计学生选课系统题目一、学生选课管理系统目录第一部分:课程设计名称、目的、要求 ..... 第二部分:程序总体设计思路 ................... 第三部分:程序功能划分、图示及流程图.. 第四部分:程序设计数据、运行结果......... 第五部分:程序的优缺点 .......................... 第六部分:心得体会................................. 第七部分:附录(源程序)....................... 第八部分:附录(参考文献) ...................第一部分:课程设计名称、目的、要求名称:学生选修课程系统设计目的:运用C语言提高解决实际问题的能力实验环境:Microsoft Visual C++ 6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
【功能】系统以菜单方式工作课程信息录入功能(课程信息用文件保存)--输入课程信息浏览功能--输出查询功能:(至少一种查询方式)--算法按学分查询按课程性质查询学生选修课程(可选项)第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体的设计思路如下:程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。
首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。
然后定义各种函数的功能包括查看,查询,删除等。
另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。
在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。
学生选课管理系统c课程设计
学生选课管理系统c 课程设计一、课程目标知识目标:1. 让学生理解学生选课管理系统的基本概念和功能,掌握系统设计的基本原理。
2. 使学生掌握数据库的基本操作,如查询、插入、删除和更新数据。
3. 帮助学生了解软件开发流程,熟悉系统设计、编码、测试等环节。
技能目标:1. 培养学生运用所学知识,独立设计并实现一个简单的学生选课管理系统。
2. 提高学生分析问题和解决问题的能力,学会运用数据库技术解决实际应用问题。
3. 培养学生的团队协作能力,学会在项目中进行有效沟通和分工合作。
情感态度价值观目标:1. 培养学生积极的学习态度,激发学生对计算机科学的兴趣和热情。
2. 培养学生的创新意识和实践能力,鼓励学生勇于尝试,敢于挑战。
3. 增强学生的责任心,让学生明白系统设计的重要性,关注用户需求,为用户带来更好的体验。
本课程针对高年级学生,课程性质为理论与实践相结合。
在教学过程中,注重培养学生的实际操作能力和解决问题的能力。
结合学生特点和教学要求,将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。
通过本课程的学习,使学生能够掌握学生选课管理系统设计的相关知识和技能,为今后从事软件开发和数据库管理等相关工作打下坚实基础。
二、教学内容1. 学生选课管理系统的基本概念与功能- 系统需求分析- 功能模块划分2. 数据库基础知识- 数据库设计原则- 数据表创建与维护- 数据查询、插入、删除和更新操作3. 系统设计- 系统架构设计- 界面设计- 数据库连接与操作4. 编程实现- 编程语言选择(如Java、Python等)- 系统功能编码- 代码调试与优化5. 系统测试与维护- 测试方法与策略- 常见问题分析与解决- 系统维护与升级6. 项目实践- 团队协作与分工- 项目进度管理- 系统部署与展示教学内容根据课程目标制定,涵盖学生选课管理系统设计的相关知识。
本课程采用教材相关章节,结合实际案例,保证教学内容的科学性和系统性。
课程信息管理系统c语言
课程信息管理系统c语言课程信息管理系统(C语言)一、引言课程信息管理系统是一种用来管理和组织课程信息的软件系统。
它能够对教学计划、课程表、学生选课等进行管理,帮助学校、教育机构或教师高效地管理课程信息。
本文将通过介绍课程信息管理系统的功能、特点和实施过程,详细阐述C语言在该系统中的应用。
二、功能介绍1. 学生管理:该系统能够记录学生的个人信息,如学号、姓名、班级等,并能进行学生选课管理,包括选课、退课等操作。
2. 课程管理:系统可以管理各门课程的信息,如课程编号、课程名称、学分等,并能进行课程安排,制定教学计划。
3. 教师管理:系统可以记录教师的基本信息,提供教师选课、授课安排等功能。
4. 成绩管理:系统能够记录学生的各科成绩,并提供成绩查询、统计等功能,方便学生和教师进行学业评估。
5. 课程评价:系统可以记录学生对课程的评价和反馈,帮助学校和教师改进教学质量。
三、特点和优势1. 数据集中管理:课程信息管理系统将学生、教师、课程等信息集中管理,方便快捷,减少重复工作。
2. 数据安全性高:系统采用数据库来存储和管理数据,确保数据的安全性和完整性。
3. 操作简便:系统界面友好,操作简单明了,即使对计算机操作不熟悉的教师和学生也能够轻松上手。
4. 信息共享:系统支持信息共享,学生、教师和管理者可以通过系统查询相关信息,提高工作效率。
5. 数据分析功能:系统能够对学生选课情况、成绩分布等进行统计和分析,为教学改革提供数据支持。
四、实施过程1. 需求分析:通过与学校、教师和学生的沟通,明确系统的需求和功能。
2. 系统设计:根据需求分析的结果,设计系统的数据库结构、界面和功能模块。
3. 编码实现:使用C语言编写相应的代码,实现系统的各个功能模块。
4. 测试调试:对系统进行功能测试和性能测试,确保系统的稳定性和可靠性。
5. 上线部署:将系统部署到服务器上,并进行相关的数据迁移和备份工作。
6. 培训和维护:对教师和学生进行系统培训,并进行后期的系统维护和更新。
C课程设计学生选课系统设计
目录1系统需求分析................................................................................................ 错误!未定义书签。
2总体设计........................................................................................................ 错误!未定义书签。
3具体设计........................................................................................................ 错误!未定义书签。
4界面设计与各功能模块实现........................................................................ 错误!未定义书签。
5 系统调试....................................................................................................... 错误!未定义书签。
6 实验心得体会............................................................................................... 错误!未定义书签。
7附: 源程序251系统需求分析(1)、本系统是针对高校学生的选修课程而设计, 通过本系统高校学生可以很方便地进行自由选课。
重要的问题描述是(功能规定): n门课程, 每门课程有课程编号, 课程名称, 课程性质, 总学时, 授课学时, 实验或上机学时, 学分, 开课学期等信息, 学生可按规定(如总学分不得少于60)自由选课。
c#课程设计学生选课系统设计
c#课程设计学生选课系统设计一、课程目标知识目标:1. 学生能掌握C#编程语言的基础知识,包括数据类型、控制结构、类与对象等;2. 学生能理解数据库的基本原理,掌握SQL语句的编写和数据库操作;3. 学生能了解学生选课系统的业务需求,掌握系统设计的基本方法和步骤。
技能目标:1. 学生能运用C#语言编写学生选课系统的功能模块,如登录、选课、退课等;2. 学生能通过数据库技术实现对学生选课信息的管理,包括数据存储、查询和更新;3. 学生能运用面向对象的设计思想,设计出结构清晰、易于维护的学生选课系统。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,提高信息素养;2. 学生在团队协作中,培养沟通与协作能力,增强团队意识;3. 学生在解决实际问题的过程中,培养勇于探索、积极创新的精神。
课程性质:本课程为实践性较强的课程,结合课本知识,以学生选课系统为案例,使学生掌握C#编程和数据库技术。
学生特点:学生具备一定的C#编程基础和数据库知识,对实际项目开发感兴趣,但可能缺乏项目实践经验。
教学要求:课程应注重理论与实践相结合,强调动手实践,引导学生通过自主学习和团队合作,完成学生选课系统的设计与实现。
同时,关注学生的情感态度价值观的培养,提高学生的综合素质。
二、教学内容1. C#编程基础:- 数据类型与变量- 控制结构(顺序、分支、循环)- 方法与数组- 类与对象- 继承与多态- 异常处理2. 数据库原理与应用:- 数据库基本概念- SQL语句(SELECT、INSERT、UPDATE、DELETE)- 数据库设计(实体关系、E-R图)- 数据库访问技术3. 学生选课系统设计:- 系统需求分析- 系统设计(模块划分、类设计)- 数据库设计(表结构设计、关系建立)- 界面设计(UI设计、用户体验)- 功能实现(登录、选课、退课、查询成绩等)4. 项目实践与团队协作:- 项目开发流程- 团队协作与沟通- 代码版本控制(如Git)- 项目测试与调试教学内容根据课程目标,结合教材章节,进行科学组织和系统安排。
c语言课程设计学生学籍管理系统
c语言课程设计学生学籍管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法,培养学生编写结构化程序的能力,使学生能够运用C语言实现简单的学生学籍管理系统。
通过本课程的学习,学生将能够:1.知识目标:–理解C语言的基本数据类型、运算符和表达式;–掌握函数的定义和调用,理解局部变量和全局变量的概念;–熟悉控制结构,如if语句、for循环和while循环;–了解数组、字符串和指针的基本使用方法。
2.技能目标:–能够使用C语言编写简单的程序,解决实际问题;–掌握基本的调试技巧,能够找出并修复程序中的错误;–具备阅读和理解他人代码的能力。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情,提高学生的自主学习能力;–培养学生团队协作的精神,增强学生的沟通能力;–培养学生解决问题的能力,提高学生的创新意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基本语法:数据类型、运算符、表达式、函数、局部变量和全局变量等;2.控制结构:if语句、for循环、while循环等;3.数据结构:数组、字符串、指针等;4.学生学籍管理系统的实现:学生信息的添加、删除、修改和查询等功能。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学:1.讲授法:通过讲解C语言的基本语法和概念,使学生掌握相关知识;2.案例分析法:通过分析实际案例,使学生理解并掌握C语言在学生学籍管理系统中的应用;3.实验法:让学生动手编写代码,实现学生学籍管理系统的功能,提高学生的实际操作能力。
四、教学资源本课程的教学资源包括:1.教材:《C语言程序设计》;2.参考书:《C语言 Primer》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络等。
以上教学资源将有助于实现本课程的教学目标,提高学生的学习效果。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
c学生选课管理系统课程设计
c 学生选课管理系统课程设计一、教学目标本课程旨在让学生了解和掌握学生选课管理系统的基本原理和实现方法。
通过本课程的学习,学生将能够:1.理解学生选课管理系统的需求和功能。
2.掌握学生选课管理系统的基本架构和模块设计。
3.学会使用相关技术和工具实现学生选课管理系统的各个功能。
4.培养学生的团队合作能力和问题解决能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.学生选课管理系统概述:介绍学生选课管理系统的定义、需求和功能。
2.系统设计:讲解学生选课管理系统的基本架构和模块设计。
3.技术实现:介绍实现学生选课管理系统各个功能所需要使用的技术和工具。
4.系统测试与优化:讲解如何对 student course selection managementsystem 进行测试和优化。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:讲解基本概念、原理和关键技术。
2.案例分析法:分析实际案例,让学生更好地理解学生选课管理系统的应用。
3.实验法:让学生通过动手实践,加深对课程内容的理解和掌握。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:为学生提供全面、系统的理论知识。
2.参考书:提供更多的背景知识和实际案例。
3.多媒体资料:通过视频、图片等形式,丰富学生的学习体验。
4.实验设备:为学生提供实践操作的机会,加深对课程内容的理解和掌握。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。
平时表现主要评估学生的课堂参与度和团队合作能力,占总评的30%。
作业主要包括课后练习和项目任务,占总评的40%。
考试为闭卷考试,评估学生对课程知识的掌握程度,占总评的30%。
六、教学安排本课程共32课时,安排在第8至第16周的每周二、四下午2:00-4:00进行。
教学地点为计算机实验室,以确保学生有足够的实践操作机会。
教学进度安排合理紧凑,确保在有限的时间内完成教学任务。
课程信息管理系统c语言
课程信息管理系统C语言1. 简介本文将详细探讨课程信息管理系统的设计与实现,使用C语言作为开发语言。
课程信息管理系统是一种用于管理学校或机构的课程信息的软件系统,通过该系统可以实现课程的增删改查、学生选课、教师管理等功能。
为了更好地组织和管理课程信息,该系统需要一套完整的数据结构和相应的算法来实现各项功能。
2. 功能需求基于C语言的课程信息管理系统应具备以下功能: 1. 学生管理:包括学生的基本信息、选课信息、成绩管理等。
2. 教师管理:包括教师的基本信息、授课课程、教学评价等。
3. 课程管理:包括课程的基本信息、选课限制、课程评价等。
4. 成绩管理:包括成绩录入、成绩查询、成绩统计分析等。
5. 选课管理:包括选课限制、选课时间、选课冲突等。
6. 系统设置:包括管理员账户管理、密码修改、系统日志等。
3. 系统设计3.1 数据结构设计课程信息管理系统需要设计合适的数据结构来存储和管理学生、教师、课程和成绩等信息。
下面是各个实体的数据结构设计示例:3.1.1 学生数据结构设计typedef struct Student {int id; // 学号char name[20]; // 姓名int gender; // 性别(0表示男,1表示女)char major[20]; // 专业struct Student* next; // 指向下一个学生结点的指针} Student;3.1.2 教师数据结构设计typedef struct Teacher {int id; // 工号char name[20]; // 姓名int gender; // 性别(0表示男,1表示女)char department[20]; // 部门struct Teacher* next; // 指向下一个教师结点的指针} Teacher;3.1.3 课程数据结构设计typedef struct Course {int id; // 课程号char name[20]; // 课程名称int credit; // 学分struct Course* next; // 指向下一个课程结点的指针} Course;3.1.4 成绩数据结构设计typedef struct Score {int studentId; // 学生学号int courseId; // 课程号float score; // 分数struct Score* next; // 指向下一个成绩结点的指针} Score;3.2 功能模块设计课程信息管理系统可以划分为以下功能模块: #### 3.2.1 学生管理模块学生管理模块负责学生信息的录入、修改和查询等功能。
C语言课程设计实践报告—学生选课管理系统[内附程序源代码](可编辑)
C语言大型作业实践报告计算机1001制作者:李菁华张兆丰秦恒加2011年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。
学生可按要求(如总学分不能少于20学分)选课。
课程信息维护,如录入、修改、删除等,课程信息用文件保存。
课程信息浏览?输出。
学生选课功能。
查询功能包括:按学分、课程性质、学生等查询。
统计功能。
统计各门课程的选修人数。
本系统要有通用性、界面美观、操作方便。
要考虑系统安全。
课程信息录入系统选修课程信息录入选修课程信息保存主程序目录选择总体设计思路(流程图):学生选课系统课程信息读入学生信息输入选课系统数据保存选修课数据维护系统添加修改删除以word格式输出密码系统密码验证系统权限限制系统密码对退出程序密码对选修课程信息查找按各种类型查找密码错3次以上具体算法流程设计思路(流程图):主程序目录选择1.学生选课系统;2.选修课程信息输出;3.选修课程信息查找;4.管理员选项;5.退出系统。
管理员选项密码验证系统读入系统时间,通过强制转换成unsigned long int型数据作为初始密码用户输入密码(若是管理员会拥有密码钥匙,得出现在的密码,该密码每分钟都会变化)密码正确进入管理员管理界面,密码不正确重新输入密码输入错误3次以上 12 3学生选课系统选修课程信息以word2003形式输出返回主菜单选修课程信息查找选修课程信息从文件内读入输入按什么查找1.课程编号;2.课程名;3.课程种类;4.总课时;5.教学课时;6实验课时;7.学分;8.开课学期;9.已选人数。
输入查找的关键字从文件内读入的课程信息与关键字逐一对比,完全匹配输出;查找完毕学生信息输入课程信息浏览不选少于这门20分选课系统课选课成功判断学分是否大于20分大于20分结束选课选课信息储存退出程序管理员模块管理员模块 3目录选择1.学生选课系统;2.选修课程信息管理系统;3.退出系统12 5学生选课系统二级目录选择1.新建选修课程信息;2.管理选修课程信息;3.统计每门课程选择人数;4.选修课程信息输出;5.回到主菜单。
c语言课程设计(学生信息管理系统)
c语言课程设计(学生信息管理系统)一、系统功能学生信息管理系统是一款基于C语言开发的数据管理程序,可实现对学生信息的增删改查等功能。
具体功能列表如下: a. 添加学生信息:可根据学生的基本信息,如学生学号、姓名、性别、地址、联系电话等,依次记录入系统; b. 删除学生信息:可根据学生学号、姓名等信息,从系统中删除不必要的学生信息; c. 修改学生信息:可根据已有的学生信息,修改学生某些属性内容,以更新系统中的数据; d. 查看学生信息:可根据学生学号、姓名等信息,查看指定学生的所有信息及多种查询功能; e. 数据保存功能:可将当前系统中的学生信息,保存成文件的形式; f. 备份/恢复功能:可对学生信息文件进行备份并对备份文件进行恢复; g. 查询统计功能:可根据学院代号、专业代号等信息,进行不同的查询统计; h. 排序功能:可根据学生学号、姓名等信息,对学生信息进行排序; i. 帮助功能:可提供详细的使用帮助文档,以帮助用户更好地使用系统;二、程序实现及结构1. 主程序:此程序用于控制整个系统的运行,可实现系统菜单显示、功能调用及功能切换等功能,可根据用户的操作需求,调用其他子程序实现各项功能。
2. 子程序:此程序是系统的主要部分,可实现学生信息的增删改查等功能,并可支持学生信息的备份,恢复,排序及查询统计等功能,用于实现主程序调用的功能。
3. 管理模块:此模块可实现对用户的登录及注册功能,可检测用户登录及注册的账号是否正确,以及是否有权限使用系统;4. 数据库模块:此模块可实现对学生信息的存储及调用,便于对各类学生信息进行更方便的管理。
此模块还可以负责系统的备份及恢复功能的实现。
5. 图形界面模块:此模块负责实现系统的图形化界面,使用户可以更加友好地操作系统,可以根据用户的需求,随时更改系统界面设置。
三、程序设计学生信息管理系统的设计主要有四个部分:1. 主程序:主程序的设计要求负责控制整个系统的运行,并根据用户的操作调用子程序实现各个功能。
学生选课管理系统c语言
学生选课管理系统简介学生选课管理系统是一种用于学生选课和管理课程的系统。
通过该系统,学生可以方便地选取自己感兴趣的课程,并进行课程的管理和查询,同时教务部门可以通过系统进行课程的发布、修改和管理。
功能需求学生选课管理系统需要具备以下功能:1.学生注册和登录功能:学生需要先注册账号,然后通过账号登录系统。
2.学生选课功能:学生通过系统浏览可选的课程列表,并选择自己感兴趣的课程进行选课。
3.课程查询功能:学生可以查询已选和未选课程的详细信息,包括课程名称、授课教师、上课时间等。
4.课程管理功能:教务部门可以通过系统添加、修改和删除课程信息,包括课程名称、授课教师、上课时间等。
5.学生管理功能:教务部门可以通过系统管理学生信息,包括学生姓名、学号、选课情况等。
6.成绩管理功能:教务部门可以通过系统录入学生的成绩,并提供学生成绩查询功能。
7.课程评价功能:学生可以对已修完的课程进行评价,包括评分和评论。
8.学分统计功能:系统可以根据学生的选课情况自动计算学分和学分绩点,并提供查询功能。
技术实现为了实现学生选课管理系统,可以使用C语言进行开发。
以下是一些技术实现的建议:1.数据存储:可以使用文件系统来存储学生、课程和成绩等信息。
可以使用文本文件或二进制文件存储数据,通过文件操作函数进行读写。
2.用户界面:可以使用命令行界面或图形界面来实现用户的交互。
使用C语言的终端输出函数可以实现简单的命令行界面,使用图形界面库可以实现更复杂的图形界面。
3.数据结构:可以使用结构体来表示学生、课程和成绩等信息,通过数组或链表等数据结构进行管理。
4.用户认证:可以使用用户名和密码进行用户的身份验证。
可以将用户信息保存在文件中,通过比对输入的用户名和密码来验证用户身份。
5.查询和排序:可以使用各种算法来实现课程查询和排序功能。
例如,可以使用线性搜索来查询课程信息,使用冒泡排序或快速排序来对课程进行排序。
系统流程以下是学生选课管理系统的基本流程:1.学生注册和登录:学生在系统中注册账号,并通过账号登录系统。
c程序设计学生选修课程系统
目录一、课程设计的题目和意义 (2)二、详细设计 (3)1、模块功能介绍 (3)2、程序流程图 (4)3、程序清单 (5)三、系统运行结果 (11)一、课程设计的题目和意义题目五:学生选修课程系统设计假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
试设计一选修课程系统,使之能提供以下功能:、系统以菜单方式工作1.2、课程信息录入功能(课程信息用文件保存)3、课程信息浏览功能4、课程信息查询功能查询方式按学分查询按课程性质查询5、学生选修课程 (可选项)通过课程设计的实践环节的教学,可以加深学生对课堂所学基础知识的掌握与理解,提高学生对所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。
“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。
二、详细设计1、模块功能介绍题目:学生选修课程系统设计:课程信息包括:课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等。
试设计一学生选课系统,使之能提供以下功能:选课信息录入功能(学生信息用文件保存)---输入选课信息浏览功能---输出查询功能---算法按学分查询按课程性质查询进入选课信息操作2、程序流程图学生选修课程系统设计课程信息录入查询、排序课程信息浏览课程信息的删除与修改统编学学按按计分时号性学质分查查询询3、程序清单#include<stdio.h>#include<stdlib.h>#include <string.h>struct course{int num;char name[20];char kind[10];int time;int ttime;int etime;int mark;int term;};struct student{int snum;int cnum;char cname[20];};/*课程信息录入*/void insert(){void main();FILE *fp;struct course c;int count;int i;if((fp=fopen(course.txt,a+))==NULL){printf(cannot open file\n);}printf(\请输入课程门数:\n);scanf(%d,&count);牰湩晴尨课程编号课程名称课程性质学分实验或上机学时授课学时总学时:\n); 开课学期for(i=0;i<count;i++){scanf(%d %s %s %d %d %d %d %d,&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark, &c.term);fprintf(fp,%d %s %s %d %d %d %d %d\n,c.num,,c.kind,c.time,c.ttime,c.etime,c.mark,c.term); }fclose(fp);main();}/*课程信息浏览*/void browser(){void main();FILE *fp;struct course c;int a;if((fp=fopen(course.txt,))==NULL){printf(\Cannot open course!\n);}牰湩晴尨课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:\n);for(;!feof(fp);){fscanf(fp,%d %s %s %d %d %d %d %d\n,&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.m ark,&c.term);printf(]_x0012_s%9s??ddd\n,c.num,,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}fclose(fp);printf(\1-返回主菜单;2-退出选课系统\n);scanf(%d,&a);if(a==1)main();elseexit(0);}/*课程信息查询*/void search(){void main();FILE *fp;struct course c;int score;char kind[10];int a;int b;printf(.按学分查询,2.按课程性质查询.\n);牰湩晴尨请选择查询方式,输入选项数字:);scanf(%d,&b);if(b==1){printf(\请输入您要查询的学分:\n);scanf(%d,&score);if((fp=fopen(course.txt,))==NULL){printf(\Cannot open course!\n);}牰湩晴尨课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:\n);for(;!feof(fp);){fscanf(fp,%d%s%s%d%d%d%d%d\n,&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark, &c.term);if(c.mark==score)printf(]_x0012_s%9s??ddd\n,c.num,,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}}else if(b==2){printf(\请输入您要查询的课程性质:\n);scanf(%s,&kind);if((fp=fopen(course.txt,))==NULL){printf(\Cannot open course!\n);}牰湩晴尨课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:\n);for(;!feof(fp);){fscanf(fp,%d%s%s%d%d%d%d%d\n,&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark, &c.term);if(strcmp(c.kind,kind)==0)printf(]_x0012_s%9s??ddd\n,c.num,,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);}}else{牰湩晴尨输入错误!);exit(1);}fclose(fp);printf(\1-返回主菜单;2-退出选课系统\n);scanf(%d,&a);if(a==1)main();else}/*统计选课情况*/void xuanke_information(){void main();int total=0;int a;FILE *fp;struct student s;if((fp=fopen(student.txt,))==NULL){printf(\Cannot open student!\n);}printf( 学号课程编号课程名称\n);for(;!feof(fp);){fscanf(fp,%d%d%s\n,&s.snum,&um,&ame);total++;printf(}?s\n,s.snum,um,ame);}printf(\选课学生总人数为:%d 人,total);fclose(fp);printf(\1-返回主菜单;2-退出选课系统\n);scanf(%d,&a);if(a==1)main();elseexit(0);}/*学生选修课程*/void xuan_ke(){void main();struct student s;struct course c;int a;printf(\请输入您的学号及您要选择的课程编号:);scanf(%d%d,&s.snum,&um);if((fp=fopen(course.txt,))==NULL){printf(\Cannot open course!\n);}for(;!feof(fp);){fscanf(fp,%d %s %s %d %d %d %d %d\n,&c.num,&,&c.kind,&c.time,&c.ttime,&c.etime,&c.m ark,&c.term);if(um==c.num)break;}fclose(fp);if((fp=fopen(student.txt,a+))==NULL){printf(\Cannot open student!\n);}fprintf(fp,%d %d %s\n,s.snum,um,);fclose(fp);printf(\1-返回主菜单;2-退出选课系统\n);scanf(%d,&a);if(a==1)main();elseexit(0);}*/主菜单/*void main(){int n,w=0;printf(***************************************************************************** ***\n);printf( 学生选课系统菜单\n);printf(***************************************************************************** ***\n);printf( 1-录入选课信息\n);printf( 2-浏览选课信息\n);printf( 3-查询选课信息\n);printf( 4-统计选课情况\n);printf( 5-进入选课操作\n);printf( 0-退出选课系统\n);printf(***************************************************************************** ***\n);printf( 请选择输入选项前数字:);scanf(%d,&n);do{if(n>5||n<0){printf(\输入错误!请重新输入!\n);scanf(%d,&n);}else w=1;}while(w==0);switch(n){case 1:insert();break;case 2:browser();break;case 3:search();break;case 4:xuanke_information();break;case 5:xuan_ke();break;case 0:exit(0);}return ;}4、系统运行结果主菜单功能选课信息录入选课信息查询选课学生统计进入选课操作。
C语言课程设计实现选课系统
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>typedef struct SUBJECT //临时保存课程信息{char c_name[10]; //名称char time[10]; //上课时间char didian[10]; //上课地点};typedef struct STUDENT //临时保存选课信息{int no; ///学号char s_name[10]; //名字char cla[10]; //班级char c_name[10]; //所选课程名称};#define SIZE_SUB sizeof(SUBJECT) //定义常量保存课程结构的大小#define SIZE_STU sizeof(STUDENT) //定义常量保存学生结构的大小void search_stu_no(); //按学号查询选课状态void insert_stu();//保存学生选课信息void search_stu_name();// 按名字查询选课状态void insert_sub();//录入课程信息void search_sub_name();//按课程名称查询void print_all_sub();//显示所有选修课程信息int main(){int i;for(;;){printf("\t\t*********************************\n");printf("\t\t************学生选课系统***********\n");printf("\t\t*********************************\n");printf("1.---------------增加选修课程:\n");printf("2.---------------显示所有选修课程:\n");printf("3.---------------按课程名称查询:\n");printf("4.---------------开始选课:\n");printf("5.---------------按学号查询选课记录:\n");printf("6.---------------按姓名查询选课记录:\n");printf("7.---------------退出系统:\n");printf("\n\n请选择功能:");scanf("%d",&i);switch(i){case 1:{system("cls");insert_sub();}break;case 2:{system("cls");print_all_sub();}break;case 3:{system("cls");search_sub_name();}break;case 4:{system("cls");insert_stu();}break;case 5:{system("cls");search_stu_no();}break;case 6:{system("cls");search_stu_name();}break;case 7:{return 0;}}}system("pause");return 0;}void search_stu_no() //按学号查询{FILE *fp;fp = fopen("student.txt","rb");STUDENT student[30];int no;printf("请输入需要查询的学号:");scanf("%d",&no);printf("学号\t\t姓名\t\t班级\t\t选课\n");for(int i = 0;fread(&student[i],SIZE_STU,1,fp)!= 0;i++){if(!feof(fp)){if(no == student[i].no){printf("%d \t\t%s \t\t %s\t %s\n",student[i].no,student[i].s_name,student[i].cla,student[i].c_name );}}else{printf("没有此学生的选课记录\n");}}fclose(fp);system("pause");system("cls");}void insert_stu(){STUDENT student;printf("请输入学号:");scanf("%d",&student.no);printf("请输入姓名:");scanf("%s",&student.s_name);printf("请输入班级:");scanf("%s",&student.cla);printf("请输入所选课程名称:");scanf("%s",&student.c_name);FILE *fp;fp = fopen("student.txt","ab");if(fp == NULL){printf("无法打开文件\n");}else{fwrite(&student,SIZE_STU,1,fp); //以二进制写入文件中fclose(fp);printf("选课成功:\n");system("pause"); //美化作用,是程序暂停system("cls"); // 实现清屏}}void search_stu_name(){FILE *fp;fp = fopen("student.txt","rb");STUDENT student[30];char name[10];printf("请输入需要查询的姓名:");scanf("%s",name);printf("学号\t\t姓名\t\t班级\t\t选课\n");for(int i = 0;fread(&student[i],SIZE_STU,1,fp)!= 0;i++){if(!strcmp(name,student[i].s_name)){printf("%d \t\t%s \t\t %s\t %s\n",student[i].no,student[i].s_name,student[i].cla,student[i].c_name );}else{printf("没有选课记录\n");}}fclose(fp);}void insert_sub(){SUBJECT subject;FILE *fp;fp = fopen("subject.txt","ab");printf("请输入课程名称:");scanf("%s",&subject.c_name);printf("请输入开课时间:");scanf("%s",&subject.time);printf("请输入上课地点:");scanf("%s",&subject.didian);if(fp == NULL){printf("无法打开文件\n");}else{fwrite(&subject,SIZE_SUB,1,fp); //以二进制写入文件中fclose(fp);printf("\n\n************课程已增加***********:\n");system("pause"); //美化作用,是程序暂停system("cls"); // 实现清屏}}void search_sub_name(){FILE *fp;fp = fopen("subject.txt","rb");SUBJECT subject[30];char name[10];printf("请输入需要查询的课程名称:");scanf("%s",name);printf("课程名称\t上课地点\t上课时间:\n");for(int i = 0;fread(&subject[i],SIZE_SUB,1,fp)!= 0;i++) //读取文件内所有信息{if(!feof(fp)) //判断文件指针是否到达文件末尾{if(!strcmp(name,subject[i].c_name)) //字符串比较,判断是否相等{printf("%s \t\t %s \t %s\n",subject[i].c_name,subject[i].didian,subject[i].time);}}else{printf("没有该课程信息\n");}}fclose(fp);system("pause");system("cls");}void print_all_sub() //显示所有课程信息{FILE *fp;fp = fopen("subject.txt","rb");SUBJECT subject[30];printf("课程名称\t上课地点\t上课时间:\n");for(int i = 0;fread(&subject[i],SIZE_SUB,1,fp)!= 0;i++) //如果没有到达文件末尾则始终读取{printf("%s \t\t %s \t %s\n",subject[i].c_name,subject[i].didian,subject[i].time);}fclose(fp);system("pause");system("cls");}。
c语言程序设计之学生选修课系统设计代码
c语言程序设计之学生选修课系统设计代码在学生选修课系统设计中,C语言程序设计是必不可少的一部分。
本文将详细介绍学生选修课系统的设计代码,包括学生信息管理、课程信息管理、选课与退课等功能。
一、学生信息管理在学生选修课系统中,首先需要实现学生信息的管理功能。
以下是学生信息管理的代码示例:#include <stdio.h>#include <stdlib.h>#include <string.h>struct Student {char id[20];char name[20];int age;};void addStudent(struct Student students[], int *count) {printf("请输入学号:");scanf("%s", students[*count].id);printf("请输入姓名:");scanf("%s", students[*count].name);printf("请输入年龄:");scanf("%d", &students[*count].age);(*count)++;printf("添加学生信息成功!\n");}void deleteStudent(struct Student students[], int *count) { char id[20];printf("请输入要删除的学生学号:");scanf("%s", id);for (int i = 0; i < *count; i++) {if (strcmp(students[i].id, id) == 0) {for (int j = i; j < *count - 1; j++) {strcpy(students[j].id, students[j+1].id);strcpy(students[j].name, students[j+1].name); students[j].age = students[j+1].age;}(*count)--;printf("删除学生信息成功!\n");return;}}printf("未找到对应学生信息!\n");}void displayStudents(struct Student students[], int count) {printf("学号\t姓名\t年龄\n");for (int i = 0; i < count; i++) {printf("%s\t%s\t%d\n", students[i].id, students[i].name, students[i].age);}}二、课程信息管理除了学生信息管理外,还需要实现课程信息的管理功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目一、学生选课管理系统目录第一部分:课程设计名称、目的、要求..... 第二部分:程序总体设计思路 ................... 第三部分:程序功能划分、图示及流程图.. 第四部分:程序设计数据、运行结果......... 第五部分:程序的优缺点 .......................... 第六部分:心得体会 ................................. 第七部分:附录(源程序)....................... 第八部分:附录(参考文献) ...................第一部分:课程设计名称、目的、要求名称:学生选修课程系统设计目的:运用C语言提高解决实际问题的能力实验环境:Microsoft Visual C++ 6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
【功能】系统以菜单方式工作课程信息录入功能(课程信息用文件保存)--输入课程信息浏览功能--输出查询功能:(至少一种查询方式)--算法按学分查询按课程性质查询学生选修课程(可选项)第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体的设计思路如下:程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。
首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。
然后定义各种函数的功能包括查看,查询,删除等。
另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。
在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。
通过函数的层层调用来实现程序的逻辑结构。
中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。
整个程序的设计思路到此结束。
第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。
这9个部分依次是:1.登录界面函数;void login()2.学生登录界面据函数:void stu_login()3.管理员登录界面函数:void man_login()4.退出界面函数:void bye_sys()5.课程选择函数:void c_select()6.课程浏览函数:void c_view()7.课程查询函数:void c_search()8.课程增加函数:void c_add()9.课程删除函数:void c_delete()10.菜单函数:void index()11.主函数部分;main()总体设计:系统功能模块图部分函数流程图:1、课程选择函数:2、课程查询函数3、课程增加函数4、课程删除函数第四部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。
【软件运用举例】1、程序开始界面如下:选择某个选项,如进行管理员登录,进行课程的增加进入管理员界面:2、再选择所要进行的操作,如进行课程增加,结果如下:下面可以进行继续增加课程或者退出:3、选择课程浏览,可以分页查看相应的课程信息:第一页:第二页:4、课程查询查找结果:4、管理员课程删除操作:删除后可以进行浏览,观察删除后的结果:可见删除后只有一条记录。
删除操作完成正确。
下面进行学生操作的使用方法:1、学生登陆界面:2、选择学生选课选项:3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。
第五部分:程序的优缺点【程序的优点】算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。
[算法上的优点]主要体现在以下三点:1.程序采用main主函数方式设计,程序的主体的功能大都由该功能完成。
程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。
2.程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。
3.插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。
[功能上的优点]主要体现在以下两点:1.简洁明了的程序菜单。
程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。
2.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。
程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。
【程序的缺点】主要表现在以下两点:1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。
需要改善。
2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。
第六部分:心得体会选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。
本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。
通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。
程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。
对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。
通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。
所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual C中调试的工具有很大的帮助。
总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。
第七部分:附录一、参考文献:1、李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社2、严蔚敏主编,数据结构(C语言),清华大学出版社3、崔单主编,C语言程序设计案例精粹,电子工业出版社4、谭浩强主编,程序设计(第三版),清华大学出版社二、源程序#include"stdio.h"#include"stdlib.h"#include"windows.h"#include"string.h"void index();//首页void login();void bye_sys();//退出界面void stu_login();//学生登录菜单void c_select();void c_view();//课程浏览void c_add();//增加课程void c_delete();void c_searchs();//学生查询函数void c_searchm();//管理员查询函数void c_viewm();//管理员浏览函数void c_views();//学生浏览函数struct course//定义课程结构体{int c_num;char c_name[20];int c_score;int c_nelepeo;//课程已选人数int c_melepeo;//课程人数上限};struct student{char s_number[10];char s_password[10];};struct manager{char m_name[10];char m_password[10];};void index()//首页{char input;printf("\n\n\t\t\t*****************************\n");printf("\t\t\t 湖南大学学生选课系统\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t*****************************\n\n\n");printf("\t\t\t**********设计者:刘晓斌******\n\n\n");input=getchar();system("cls");}void login()//登陆界面{void man_login();void bye_sys();int input;do{system("cls");printf("\n\n\n\t1.学生登录\n");printf("\t2.管理员登陆\n");printf("\t3.退出本系统\n");printf("\t请选择服务类别:");scanf("%d",&input);if (input!=1&&input!=2&&input!=3) //输入数不等于选项的时候打印画面{printf("\n\t输入出错!请重新选择~\n");printf("\n\t按任意键返回选择页面~\n\t");getchar();getchar();system("cls");}if(input==3)//如果输入3退出系统{bye_sys();}}while(input!=1&&input!=2&&input!=3);switch(input){case 1:stu_login();break;case 2:man_login();break;}}void bye_sys()//退出界面{exit(0);}void man_login(){void c_add();void c_delete();void c_view();int in;do{system("cls");printf("\n\n\t1.新增课程\n");printf("\t2.删除课程\n");printf("\t3.课程浏览\n");printf("\t4.课程查询\n");printf("\t5.退出\n");printf("\n\n\t请选择服务种类:");scanf("%d",&in);if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5){printf("\n\t没有这项服务\t按任意重新选择");getchar();getchar();}}while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5);switch(in){case 1:c_add();break;case 2:c_delete();break;case 3:c_viewm();break;case 4:c_searchm();break;case 5:login();break;}}void stu_login()//学生登录菜单{void c_select();void c_view();void c_searchs();void login();int input;do{system("cls");printf("\n\n\n\t--学生登陆--");printf("\n\n\t1.学生选课\n");printf("\t2.课程浏览\n");printf("\t3.课程查询\n");printf("\t4.退出\n");scanf("%d",&input);if(input!=1&&input!=2&&input!=3&&input!=4){printf("\n\t没有这项服务~\n");printf("\t按任意键重新选择");getchar();getchar();}}while(input!=1&&input!=2&&input!=3&&input!=4);switch(input){case 1:c_select();break;case 2:c_views();break;case 3:c_searchs();break;case 4:login();break;}}void c_select(){int n,in,i=0,j;int flag=0;FILE *fp;FILE *fp1;char input;struct course courses[10];if((fp=fopen("course.dat","rb"))==NULL) //判断是否存在课程{printf("\n\n\n\t课程不存在\n\n");printf("\t<按任意键返回管理菜单>\n\t");input=getchar();input=getchar();stu_login();//进入学生登陆菜单}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&courses[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);//文件读完后关闭}printf("\n\n\t\t请输入你要选课程的编号:");scanf("%d",&n);if((fp1=fopen("courseselect.dat","rb"))==NULL){fp1=fopen("courseselect.dat","wb");}else{fclose(fp1);fp1=fopen("courseselect.dat","ab");}for(j=0;j<i;j++)if(courses[j].c_num==n)flag++;if(flag==0){printf("\n\n\t\t不存在对应课程\n");printf("\n\n\t\t继续选课请按1,退出请按2:\n");scanf("%d",&in);switch(in){case 1:c_select();break;case 2:stu_login();break;default:printf("输入错误,将返回登录界面!\n");login();break;}}else{fwrite(&courses[j],sizeof(struct course),1,fp1);fclose(fp1);printf("\n\n\t\t选课成功\t请选择:");printf("\n\n\t\t1.继续选课");printf("\n\n\t\t2.退出,返回登录界面!");scanf("%d",&in);switch(in){case 1:c_select();break;case 2:stu_login();break;default:break;}}}void c_viewm()//课程浏览{void stu_login();void c_view() ;int inp,i=0,n=0;FILE *fp;char input;struct course courseview[10];if((fp=fopen("course.dat","rb"))==NULL) //判断是否存在课程{system("cls");printf("\n\n\n\t课程不存在\n\n");printf("\t<按任意键返回管理菜单>\n\t");getchar();getchar();stu_login();//进入学生登陆菜单}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&courseview[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);//文件读完后关闭do{system("cls");if(i==1){printf("\n\n\n\t\t\t没有记录!\n");getchar();getchar();man_login();}else{printf("\n\t------共有%d条记录-------",i-1);printf("\n\n\t课程编号:%d\n",courseview[n].c_num);printf("\n\n\t课程名字:%s\n",courseview[n].c_name);printf("\n\n\t课程学分:%d\n",courseview[n].c_score);printf("\n\n\t课程已选人数:%d\n",courseview[n].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",courseview[n].c_melepeo);printf("\n\n\t1.上一页\t2.下一页\t3.回目录");printf("\n请选择:");scanf ("%d",&inp);switch(inp){case 1:{if(n==0){printf("\n\t已到达首页\t按任意键返回");input=getchar();input=getchar();}else{n=n-1;}break;}case 2:{if(n==i-2){printf("\n\t已到达尾页\t按人意见返回");input=getchar();input=getchar();}else{n=n+1;}break;}case 3:{man_login();break;}default:{printf("\n\t操作错误\t按任意键返回");getchar();getchar();break;}}}}while(inp!=3);}}void c_views()//课程浏览{void stu_login();void c_view() ;int inp,i=0,n=0;FILE *fp;char input;struct course courseview[10];if((fp=fopen("course.dat","rb"))==NULL) //判断是否存在课程{system("cls");printf("\n\n\n\t课程不存在\n\n");printf("\t<按任意键返回管理菜单>\n\t");getchar();getchar();stu_login();//进入学生登陆菜单}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&courseview[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);//文件读完后关闭do{system("cls");if(i==1){printf("\n\n\n\t\t\t没有记录!\n");getchar();getchar();stu_login();}else{printf("\n\t------共有%d条记录-------",i-1);printf("\n\n\t课程编号:%d\n",courseview[n].c_num);printf("\n\n\t课程名字:%s\n",courseview[n].c_name);printf("\n\n\t课程学分:%d\n",courseview[n].c_score);printf("\n\n\t课程已选人数:%d\n",courseview[n].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",courseview[n].c_melepeo);printf("\n\n\t1.上一页\t2.下一页\t3.回目录");printf("\n请选择:");scanf ("%d",&inp);switch(inp){case 1:{if(n==0){printf("\n\t已到达首页\t按任意键返回");input=getchar();input=getchar();}else{n=n-1;}break;}case 2:{if(n==i-2){printf("\n\t已到达尾页\t按人意见返回");input=getchar();input=getchar();}else{n=n+1;}break;}case 3:{stu_login();break;}default:{printf("\n\t操作错误\t按任意键返回");getchar();getchar();break;}}}}while(inp!=3);}}void c_searchs(){void stu_login();void c_searchs();int id,i=0,j,inp,k;int flag=0;FILE *fp;struct course coursesear[10];if ((fp=fopen("course.dat","rb"))==NULL) //判断课程信息是否存在{system("cls");printf("\n\n\t课程不存在\t按任意键返回");getchar();getchar();stu_login();}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&coursesear[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}system("cls");printf("\n\n\t\t\t请输入你要查询的课程编号:");scanf("%d",&id);do//检查输入是否符合要求{for(j=0;j<i-1;j++){if(id==coursesear[j].c_num){flag++;k=j;}}if(flag==1){system("cls");printf("\n\n\t课程编号:%d\n",coursesear[k].c_num);printf("\n\n\t课程名字:%s\n",coursesear[k].c_name);printf("\n\n\t课程学分:%d\n",coursesear[k].c_score);printf("\n\n\t课程已选人数:%d\n",coursesear[k].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",coursesear[k].c_melepeo);getchar();getchar();printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case 1:c_searchs();case 2:stu_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}}}else{system("cls");printf("\n\n\t不存在对应记录\n");printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case 1:c_searchs();case 2:stu_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}}}}while(inp!=1);}void c_searchm(){void stu_login();void c_searchm();int id,i=0,j,inp,k;int flag=0;FILE *fp;struct course coursesear[10];if ((fp=fopen("course.dat","rb"))==NULL) //判断课程信息是否存在{system("cls");printf("\n\n\t课程不存在\t按任意键返回");getchar();getchar();stu_login();}else//存在的话循环读取文件中的信息直到文件指针到文件尾部{do{fread(&coursesear[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}system("cls");printf("\n\n\t\t\t请输入你要查询的课程编号:");scanf("%d",&id);do//检查输入是否符合要求{for(j=0;j<i-1;j++){if(id==coursesear[j].c_num){flag++;k=j;}}if(flag==1){system("cls");printf("\n\n\t课程编号:%d\n",coursesear[k].c_num);printf("\n\n\t课程名字:%s\n",coursesear[k].c_name);printf("\n\n\t课程学分:%d\n",coursesear[k].c_score);printf("\n\n\t课程已选人数:%d\n",coursesear[k].c_nelepeo);printf("\n\n\t课程人数上限:%d\n",coursesear[k].c_melepeo);getchar();getchar();printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case 1:c_searchm();case 2:man_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}}}else{system("cls");printf("\n\n\t不存在对应记录\n");printf("\n\n\t1.回目录继续查询\t2.退出查询系统\n");printf("请选择:");scanf("%d",&inp);switch(inp){case 1:c_searchm();case 2:man_login();default:{printf("\n\t没有这项服务\t请按任意键重新输入");getchar();getchar();}}}}while(inp!=1);}void c_add()//增加课程{void c_add();void man_login();int i=0,j,inp;FILE *fp;struct course course_new;struct course courses[10];system("cls");printf("\n\n\t\t请输入课程信息");printf("\n\n\t\t1.课程编号:");scanf("%d",&course_new.c_num);printf("\n\n\t\t2.课程名字:");scanf("%s",course_new.c_name);printf("\n\n\t\t3.课程学分:");scanf("%d",&course_new.c_score);printf("\n\n\t\t4.课程已选人数:");scanf("%d",&course_new.c_nelepeo);printf("\n\n\t\t5.课程人数上限:");scanf("%d",&course_new.c_melepeo);if((fp=fopen("course.dat","rb"))!=NULL){do{fread(&courses[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);for(j=0;j<=i-1;j++)if(course_new.c_num==courses[j].c_num){system("cls");printf("\n\n\t\t\t对不起,这个编号已经使用过\n\n\t\t按任意键返回管理菜单");getchar();getchar();man_login();break;}}if((fp=fopen("course.dat","rb"))==NULL){fp=fopen("course.dat","wb");}else{fclose(fp);fp=fopen("course.dat","ab");}fwrite(&course_new,sizeof(struct course),1,fp);fclose(fp);printf("\n\n\t\t信息输入完毕\t按任意键继续");getchar();getchar();do{system("cls");printf("\n\n\t\t1.继续输入");printf("\n\n\t\t2.返回管理菜单");printf("\n\n\t\t请选择");scanf("%d",&inp);if(inp!=1&&inp!=2){printf("输入不符合要求\t按任意键重新选择");getchar();getchar();}}while(inp!=1&&inp!=2);switch(inp){case 1:c_add();break;case 2:man_login();break;}}void c_delete()//查询后删除{FILE *fp;int i=0,j,n,k,flag=0;struct course courses[10];void c_delete();void man_login();printf("\n\n\t\t请输入你要删除的课程编号:");scanf("%d",&n);if((fp=fopen("course.dat","rb"))!=NULL){do{fread(&courses[i],sizeof(struct course),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}else{printf("\n\n\t\t不存在任何课程\t按任意键返回");getchar();getchar();man_login();}for(j=0;j<i-1;j++){if(courses[j].c_num==n){flag=1;fp=fopen("course.dat","wb");for(k=0;k<j;k++)fwrite(&courses[k],sizeof(struct course),1,fp);fclose(fp);fp=fopen("course.dat","ab");for(k=j+1;k<i-1;k++){fwrite(&courses[k],sizeof(struct course),1,fp);}printf("\n\n\t\t记录已删除!\t按任意键返回\n\t\t");getchar();getchar();man_login();fclose(fp);}}if(flag==0){printf("\n\n\t\t不存在对应的课程\t按任意键返回");getchar();getchar();man_login();}// printf("\n\n\t\t记录已删除!\t按任意键返回\n\t\t");}int main(){index();login();return 0;}。