学生选课管理系统c语言程序.docx
- 文档编号:2477596
- 上传时间:2022-10-30
- 格式:DOCX
- 页数:27
- 大小:24.58KB
学生选课管理系统c语言程序.docx
《学生选课管理系统c语言程序.docx》由会员分享,可在线阅读,更多相关《学生选课管理系统c语言程序.docx(27页珍藏版)》请在冰豆网上搜索。
学生选课管理系统c语言程序
#include〈stdio.h〉
#include〈stdlib。
h>
#include〈string。
h〉
intN1,N2;
structcouse*head1;
structstudent*head2;
structcouse//课程信息结构体
{
intnum1;//课程编号
charname1[20];//课程名称
chartype[20];//课程性质
inthour;//总学时
intteach;//上课学时
intexp;//实验上机学时
intcredit;//学分
intsemester;//开课学期
intnelepeo;//课程已选人数
intMelepeo;//课程上限
structcouse*next;
};
structstudent//学生信息结构体
{
intnum2;//学号
charname2[20];//姓名
intnelenum[50];//已选课程编号
charnelename[10][20];//已选名称
intnelen;//已选课程数量
intscore;//总学分
intgainscore;//已获得的学分
structstudent*next;
};
voidmanger();
voidstudent();
voidmanagementc();
voidmanagements();
voidmanage();
voidmain();
voidintoc()//存储课程信息
{
FILE*fp;
structcouse*p;
charfilepath[30];
printf("\t\t\t*****************************\n");
printf("\n\t\t\t\t欢迎使用此系统!
\n");
printf("\t\t\t*****************************\n");
printf(”输入路径:
”);
getchar();
gets(filepath);
if((fp=fopen(filepath,”w”))==NULL)
{
printf("无法储存!
”);
exit(0);
}
p=head1;
while(p!
=NULL)
{
fprintf(fp,”%d%s%s%d%d%d%d%d%d%d\n”,p-〉num1,p—〉name1,p—〉type,p->hour,p-〉teach,p-〉exp,p—〉credit,p—〉semester,p->nelepeo,p->Melepeo);
p=p->next;
}
fclose(fp);
printf(”已储存入%s文件!
\n”,filepath);
}
voidkeyboardc()//录入课程子函数(从键盘录入)
{
structcouse*p1,*p2;
N1=0;
p1=p2=(structcouse*)malloc(sizeof(structcouse));
printf("\t\t\t*****************************\n");
printf("\n\t\t\t\t欢迎使用此系统!
\n");
printf(”\t\t\t*****************************\n");
printf(”编号\\名称\\性质\\总学时\\上课学时\\实验上机学时\\学分\\开课学期\\已选人数\\课程上限\n”);
scanf("%d%s%s%d%d%d%d%d%d%d",&p1-〉num1,p1->name1,&p1—〉type,&p1->hour,&p1->teach,&p1—>exp,&p1-〉credit,&p1->semester,&p1—>nelepeo,&p1—>Melepeo);
head1=NULL;
while(p1-〉num1!
=0)
{
N1=N1+1;
if(N1==1)head1=p1;
elsep2->next=p1;//对这段语句有疑问
p2=p1;
p1=(structcouse*)malloc(sizeof(structcouse));
scanf("%d%s%s%d%d%d%d%d%d%d",&p1—〉num1,p1—>name1,p1—〉type,&p1->hour,&p1-〉teach,&p1—〉exp,&p1-〉credit,&p1-〉semester,&p1—>nelepeo,&p1—〉Melepeo);
}
p2-〉next=NULL;
}
voidfilec()//录入键盘子函数(从文件录入)
{
FILE*fp;
charfilepath[20];
structcouse*p1,*p2;
N1=0;
printf(”\t\t\t*****************************\n”);
printf(”\n\t\t\t\t欢迎使用此系统!
\n");
printf(”\t\t\t*****************************\n”);
printf(”输入要读入的文件路径:
");
getchar();
gets(filepath);
if((fp=fopen(filepath,”rb”))==NULL)
{
printf("找不到%s文件!
\n",filepath);
exit(0);
}
p1=p2=(structcouse*)malloc(sizeof(structcouse));
fscanf(fp,"%d%s%s%d%d%d%d%d%d%d”,&p1->num1,p1—〉name1,p1—〉type,&p1—〉hour,&p1—〉teach,&p1->exp,&p1-〉credit,&p1—>semester,&p1—〉nelepeo,&p1->Melepeo);
head1=NULL;
while(!
feof(fp))
{
N1=N1+1;
if(N1==1)head1=p1;
elsep2-〉next=p1;
p2=p1;
p1=(structcouse*)malloc(sizeof(structcouse));
fscanf(fp,"%d%s%s%d%d%d%d%d%d%d",&p1-〉num1,p1-〉name1,p1—>type,&p1->hour,&p1->teach,&p1->exp,&p1—>credit,&p1—>semester,&p1->nelepeo,&p1—〉Melepeo);
}
p2-〉next=NULL;
}
voidinputc()//录入课程主函数
{
inti;
printf(”\t\t\t*****************************\n");
printf("\n\t\t\t\t欢迎使用此系统!
\n”);
printf("\t\t\t*****************************\n");
printf(”\t\t\t录入课程信息\n”);
printf(”\n\t\t\t1.从键盘录入\n”);
printf(”\t\t\t2.从文件录入\n”);
printf("\t\t\t3。
返回上一菜单\n”);
printf(”请选择(1~3):
”);
scanf("%d”,&i);
switch(i)
{
case
(1):
system("cls");keyboardc();system("cls”);inputc();break;
case
(2):
system("cls");filec();system(”cls”);inputc();break;
case(3):
system("cls");managementc();break;
}
}
voidinsertc(intnum2)//课程管理子函数(修改课程)
{
structcouse*p1,*p2;
if(head1==NULL)
{
printf(”\n\t\t\t没有课程,无法修改!
\n”);
gotoend;
}
p1=head1;
while(num2!
=p1-〉num1&&p1—>next!
=NULL)
{
p2=p1;
p1=p1->next;
}
if(num2==p1—〉num1)
{
printf(”\t\t\t请重新输入数据进行修改\n");
printf("课程编号\\课程名称\\课程性质\\总学时\\上课学时\\实验上机学时\\学分\\开课学期\\课程已选人数\\课程上限\n”);
scanf(”%d%s%s%d%d%d%d%d%d%d%d",&p1-〉num1,p1—〉name1,p1-〉type,&p1-〉hour,&p1—>teach,&p1—〉exp,&p1—〉credit,&p1->semester,&p1-〉nelepeo,&p1->Melepeo);
printf(”\t\t\t已修改该课程\n");
}
elseprintf(”\t\t\t无该编号的课程!
\n”);
end:
;
}
voiddelc(intnum1)//课程管理子函数(删除课程)
{
structcouse*p1,*p2;
if(head1==NULL)
{
printf(”\n\t\t\t没有课程,无法删除!
\n");
gotoend;
}
p1=head1;
while(num1!
=p1—〉num1&&p1—〉next!
=NULL)
{
p2=p1;
p1=p1-〉next;
}
if(num1==p1->num1)
{
if(p1==head1)head1=p1—〉next;
elsep2—〉next=p1->next;
printf("已删除该编号课程!
\n");
N1=N1-1;
}
elseprintf(”无该编号的课程!
\n”);
end:
;
}
voidmanagementc()//课程管理主函数
{
inti,num1,num2=1;
printf("\t\t\t*****************************\n");
printf(”\n\t\t\t\t欢迎使用此系统!
\n”);
printf(”\t\t\t*****************************\n");
printf(”\t\t\t课程管理\n”);
printf(”\t\t\t1。
添加课程\n”);
printf(”\t\t\t2。
修改课程\n");
printf("\t\t\t3.删除课程\n");
printf(”\t\t\t4.存储课程信息\n”);
printf(”\t\t\t5。
返回上一菜单\n");
printf("请选择(1~5):
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 选课 管理 系统 语言 程序