C语言程序学生选课

C语言程序学生选课,第1张

根据自己的需要,自己看着修改一下 ^^

#include<stdioh>

#include<stdlibh>

int N1,N2,kk1,kk2,kk3;

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 Ms()

{

for(kk1=0;kk1<1100;kk1++)

for(kk2=0;kk2<1200;kk2++)

for(kk3=0;kk3<1200;kk3++);

}

void keyboardc()//录入课程子函数(从键盘录入)

{

struct couse p1,p2;

N1=0;

p1=p2=(struct couse)malloc(sizeof(struct couse));

printf("课程编号\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)

{

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 filec()//录入键盘子函数(从文件录入)

{

FILE fp;

char filepath[20];

struct couse p1,p2;

N1=0;

printf("输入要读入的文件路径:");

getchar();

gets(filepath);

if((fp=fopen(filepath,"r"))==NULL)

{

printf("找不到%s文件!\n",filepath);

exit(0);

}

p1=p2=(struct couse)malloc(sizeof(struct couse));

fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);

head1=NULL;

while(!feof(fp))

{

N1=N1+1;

if(N1==1)head1=p1;

else p2->next=p1;

p2=p1;

p1=(struct couse )malloc(sizeof(struct couse));

fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);

}

p2->next=NULL;

}

void inputc()//录入课程主函数

{

int i;

printf("\t\t\t录入课程信息\n");

printf("\n1从键盘录入\n");

printf("2从文件录入\n");

printf("3返回主菜单\n");

printf("请选择(1~3):\n");

scanf("%d",&i);

switch(i)

{

case(1):keyboardc();break;

case(2):filec();break;

case(3):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");

N1=N1-1;

}

else printf("无该编号的课程!\n");

end:;

}

void managementc()//课程管理主函数

{

struct couse incouse;

int i,num1;

printf("\t\t\t课程管理\n");

printf("1新增课程\n");

printf("2删除课程\n");

printf("3返回主菜单\n");

printf("请选择(1~3):\n");

scanf("%d",&i);

switch(i)

{

case(1):

{

incouse=(struct couse )malloc(sizeof(struct couse));

printf("课程编号\t课程名称\t学分\t课程人数上限\n");

scanf("%d%s%d%d",&incouse->num1,incouse->name1,&incouse->score,&incouse->Melepeo);

incouse->nelepeo=0;

insertc(incouse);

break;

}

case(2):

{

printf("请输入要删除课程的编号:\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("学生学号\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 files()//录入学生信息子函数(从文件录入)

{

int i=0;

FILE fp;

char filepath[20];

struct student p1,p2;

N2=0;

printf("输入要读入的文件路径:");

getchar();

gets(filepath);

if((fp=fopen(filepath,"r"))==NULL)

{

printf("找不到%s文件!\n",filepath);

exit(0);

}

p1=p2=(struct student)malloc(sizeof(struct student));

fread(p1,sizeof(struct student),1,fp);

head2=NULL;

while(!feof(fp))

{

i=0;

N2=N2+1;

if(N2==1)head2=p1;

else p2->next=p1;

p2=p1;

p1=(struct student )malloc(sizeof(struct student));

fread(p1,sizeof(struct student),1,fp);

}

p2->next=NULL;

}

void inputs()//录入学生信息主函数

{

int i;

printf("\t\t\t录入学生信息\n");

printf("\n1从键盘录入\n");

printf("2从文件录入\n");

printf("3返回主菜单\n");

printf("请选择(1~3):\n");

scanf("%d",&i);

switch(i)

{

case(1):keyboards();break;

case(2):files();break;

case(3):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");

N2=N2-1;

}

else printf("无该学号的学生!\n");

end:;

}

void managements()//学生信息管理主函数

{

struct student incouse;

int i,num2;

printf("\t\t\t学生信息管理\n");

printf("1新增学生信息\n");

printf("2删除学生信息\n");

printf("3返回主菜单\n");

printf("请选择(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("学生学号\t学生姓名\n");

scanf("%d%s",&incouse->num2,incouse->name2);

inserts(incouse);

break;

}

case(2):

{

printf("请输入要删除学生的学号:\n");

scanf("%d",&num2);

dels(num2);

break;

}

case(3):break;

}

}

void elect(struct student s)//选课

{

struct couse p;

int num1,i;

printf("请输入要选课的编号:\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("请输入你的学号:");

scanf("%d",&num2);

s=head2;

while(s->num2!=num2 && s->next!=NULL) s=s->next;

if(s->num2!=num2)

{

printf("不存在你的信息,请进入主菜单录入你的信息!\n");

goto end;

}

c=head1;

printf("你的可选课程编号:\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\n",c->num1);

j++;

}

c=c->next;

}

if(j==0)

{

printf("你已选完所有课程,无法再多选!\n");

goto end;

}

printf("选课(y/n):\n");

getchar();

e=getchar();

i=0;

while(e=='y')

{

elect(s);

printf("继续选课(y/n):\n");

getchar();

e=getchar();

}

end:;

}

void back(struct student p)//退课

{

struct couse p1;

int num1,i,j;

printf("请输入你要退掉的课程编号:\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");

}

void hcheak()//学生选课子函数(查询已选课程)

{

char c;

struct couse p0;

struct student p;

int num2,i,f=0;

printf("请输入学号:\n");

scanf("%d",&num2);

p=head2;

while(p->num2!=num2 && p!=NULL) p=p->next;

if(p==NULL)

{

printf("不存在你的信息,请回主菜单录入信息:\n");

goto end;

}

printf("已选课程编号:\n");

if(p->nelenum[0]==0)

{

printf("你还没选课!\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("总学分:%d\n",f);

printf("是否进行退课(y/n)");

getchar();

c=getchar();

while(c=='y')

{

back(p);

printf("继续退课(y/n)");

getchar();

c=getchar();

(p->nelen)--;

}

end:;

}

void elective()//学生选课主函数

{

int i;

printf("\t\t\t学生选课\n");

printf("1查询可选课程\n");

printf("2查询已选课程\n");

printf("3返回主菜单\n");

printf("请输入(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");

while(p!=NULL)

{

printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);

p=p->next;

}

}

void lists()//输出学生信息

{

struct student p;

p=head2;

printf("学生学号 学生姓名 已选课程数量\n");

while(p!=NULL)

{

printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen);

p=p->next;

}

}

void intoc()//存储课程信息

{

FILE fp;

struct couse p;

char filepath[30];

printf("输入课程信息要保存的文件路径:");

getchar();

gets(filepath);

if((fp=fopen(filepath,"w"))==NULL)

{

printf("\n保存失败!");

exit(0);

}

p=head1;

while(p!=NULL)

{

fprintf(fp,"%d %s %d %d %d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);

p=p->next;

}

fclose(fp);

printf("课程信息已保存在%s中!\n",filepath);

}

void intos()//存储学生信息

{

FILE fp;

struct student p;

char filepath[30];

printf("输入学生信息要保存的文件路径:");

getchar();

gets(filepath);

if((fp=fopen(filepath,"w"))==NULL)

{

printf("\n保存失败!");

exit(0);

}

p=head2;

while(p!=NULL)

{

fwrite(p,sizeof(struct student),1,fp);

p=p->next;

}

fclose(fp);

printf("学生信息已保存在%s中!\n",filepath);

}

void into()//存储信息

{

int i;

printf("1存储课程信息\n");

printf("2存储学生信息\n");

printf("3返回主菜单\n");

printf("请输入(1~3)\n");

scanf("%d",&i);

switch(i)

{

case(1):intoc();break;

case(2):intos();break;

case(3):break;

}

}

void store()//信息主函数

{

int i;

printf("\t\t系统信息查看及存储\n");

printf("1查看课程信息\n");

printf("2查看学生信息\n");

printf("3存储信息\n");

printf("4返回主菜单\n");

printf("请输入(1~4):\n");

scanf("%d",&i);

switch(i)

{

case(1):listc();break;

case(2):lists();break;

case(3):into();break;

case(4):break;

}

}

int main()//主函数

{

int i;

start:

printf("\n\t\t\t欢迎使用学生选课系统!\n");

printf("菜单:\n");

printf("1录入课程信息\n");

printf("2课程管理\n");

printf("3录入学生信息\n");

printf("4学生信息管理\n");

printf("5学生选课\n");

printf("6系统信息查看及存储\n");

printf("7退出系统\n");

printf("\n请输入菜单选项(1~7):\n");

scanf("%d",&i);

if(i<1 || i>7)

{

printf("输入错误,请重输:\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再见!\n");

}

}

return(0);

}

ython是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。

那Python是一种什么语言?

首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算机干活的CPU只认识机器指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。而不同的编程语言,干同一个活,编写的代码量,差距也很大。

怎么可能会有现成的代码给你,这个只能自己去写了。其实很简单,给你个思路:

1 建立选课配置文件,字段大致分为"课程ID、教师姓名、性别、院系、职称、课程名称、学分

"等等。这个用本地文件配置,方便管理员配置,用于主程序读取选课信息。

2 建立学员选课信息数据库(数据库或者本地文件存贮都可以),主要存贮每个学员的实际选课信息,提供主程序读取和修改。

3 创建系统主程序。其功能包括:

31 系统启动时读取选课配置文件(本地配置文件)

32 系统启动时读取每个学员的选课信息(数据库或者本地文件)

33 系统启动完成后,提供按学号查询,编辑学员选课信息,打印学员选课信息等等功能。

其实很简单。。。

以上就是关于C语言程序学生选课全部的内容,包括:C语言程序学生选课、如何使用Python选课系统开发程序、利用C++编写学生选课系统等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9423798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存