C语言课程设计_c语言课程设计
C语言课程设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言课程设计”。
#include #include int N1,N2,kk1,kk2,kk3;struct couse * head1,*head2,*emp1;struct student * head3,*head4,*emp2;struct couse//课程信息结构体 {
int num1;
char name1[20];
int score;
int nelepeo;//课程已选人数
int Melepeo;//课程人数上限
struct couse * next;};
int student();
//学生登陆 int teacher();
//教师登陆 struct student//学生信息结构体 {
int num2;
char name2[20];
int nelenum[50];//已选课程编号
int nelen;//已选课程数量
struct student * next;};
void Ms(){
for(kk1=0;kk1
for(kk2=0;kk2
for(kk3=0;kk3num1);printf(“n课程名称:”);scanf(“%s”,p1->name1);printf(“n学分:”);scanf(“%d”,&p1->score);printf(“n课程人数上限:”);scanf(“%d” ,&p1->Melepeo);printf(“ntttt输入成功!”);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));
printf(“n-----------------------------”);
printf(“n课程编号:(输入0结束)”);scanf(“%d”,&p1->num1);printf(“n课程名称:”);scanf(“%s”,p1->name1);printf(“n学分:”);scanf(“%d”,&p1->score);printf(“n课程人数上限:”);scanf(“%d” ,&p1->Melepeo);
p1->nelepeo=0;
printf(“ntttt输入成功!”);} p2->next=NULL;intoc();}
void filec()//录入键盘子函数(从文件录入){ void intoc();
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;
intoc();}
void inputc()//录入课程主函数 {
int i;
printf(“ttt录入课程信息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):system(“cls”);return;break;
//return
} }
void insertc(struct couse *incouse)//课程管理子函数(增加课程){ void intoc();
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 num1)
{
if(head1==p1)head1=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N1=N1+1;
intoc();}
void delc(int num1)//课程管理子函数(删除课程){ void intoc();
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:;
intoc();}
void managementc()//课程管理主函数 {
struct couse * incouse;
struct couse *p1;
int i,num1;
printf(“ttt课程管理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(“n课程编号:”);
fflush(stdin);
scanf(“%d”,&p1->num1);
printf(“n课程名称:”);
scanf(“%s”,p1->name1);
printf(“n学分:”);
scanf(“%d”,&p1->score);
printf(“n课程人数上限:”);
scanf(“%d” ,&p1->Melepeo);
printf(“ntttt输入成功!”);
incouse->nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf(“请输入要删除课程的编号:n”);
scanf(“%d”,&num1);
delc(num1);
break;
}
case(3):system(“cls”);return;break;
} }
void keyboards()//录入学生信息子函数(从键盘录入){
void intos();
int i;
struct student *p1,*p2;
N2=0;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf(“n学生学号:”);
scanf(“%d”,&p1->num2);
printf(“n学生姓名:”);
scanf(“%s”,p1->name2);
p1->nelen=0;
for(i=0;inelenum[i]=0;
head3=NULL;
while(p1->num2!=0)
{
N2=N2+1;
if(N2==1)head3=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(sizeof(struct student));
//return
printf(“n学生学号:(输入0结束!)”);
scanf(“%d”,&p1->num2);
printf(“n学生姓名:”);
scanf(“%s”,p1->name2);
p1->nelen=0;
for(i=0;inelenum[i]=0;
}
p2->next=NULL;
intos();return;} 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);
head3=NULL;
while(!feof(fp))
{
i=0;
N2=N2+1;
if(N2==1)head3=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(“nttt录入学生信息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):system(“cls”);return;break;
}
return 0;}
void inserts(struct student * incouse)//学生信息管理子函数(填加学生信息){ void intos();
struct student *p0,*p1,*p2;
p1=head3;
p0=incouse;
if(head3==NULL)
{
head3=p0;
p0->next=NULL;
}
else
{
while((p0->num2 > p1->num2)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num2 num2)
{
if(head3==p1)head3=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
//return
p1->next=p0;
p0->next=NULL;
}
}
N2=N2+1;
intos();}
void dels(int num2)//学生信息管理子函数(删除学生信息){ void intos();
struct student *p1,*p2;
if(head3==NULL)
{
printf(“n没有该学生信息,无法删除!n”);
goto end;
}
p1=head3;
while(num2!=p1->num2 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num2==p1->num2)
{
if(p1==head3)head3=p1->next;
else p2->next=p1->next;
printf(“已删除该学生信息!n”);
N2=N2-1;
}
else printf(“无该学号的学生!n”);
intos();
end:;}
void managements()//学生信息管理主函数 {
struct student * incouse;
int i,num2;
printf(“ttt学生信息管理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):system(“cls”);return;break;
//return
} }
void elect(struct student * s)//选课 {
void intos();
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)++;
intos();} void cheak()//学生选课子函数(查询可选课程){
char e;
struct couse * c;
struct student * s;
int num2,i,j=0,t=0;
printf(“请输入你的学号:”);
scanf(“%d”,&num2);
s=head3;
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(“%dn”,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')||(e=='Y'))
{
elect(s);
printf(“继续选课(y/n)?:n”);
getchar();
e=getchar();
}
end:;} void back(struct student * p)//退课 {
void intos();
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”);
intos();} void hcheak()//学生选课子函数(查询已选课程){
char c;
struct couse * p0;
struct student * p;
int num2,i,f=0;
printf(“请输入学号:n”);
scanf(“%d”,&num2);
p=head3;
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(“%dn”,p->nelenum[i]);
p0=head1;
while(p0->num1!=p->nelenum[i])p0=p0->next;
f=f+p0->score;
}
printf(“总学分:%dn”,f);
printf(“是否进行退课(y/n)?”);
getchar();
c=getchar();
while((c=='y')||(c=='Y'))
{
back(p);
printf(“继续退课(y/n)?”);
getchar();
c=getchar();
(p->nelen)--;
}
end:;} void elective()//学生选课主函数 {
int i;
printf(“ttt学生选课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): system(“cls”);return;break;
// return
} } void listc()//输出课程信息 {
struct couse * p;
p=head1;
printf(“课程编号
课程名称
学分
课程已选人数
课程人数上限n”);
while(p!=NULL)
{
printf(“%-8d%10s%6d%8d%12dn”,p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
} }
void lists()//输出学生信息 {
struct student * p;
p=head3;
printf(“学生学号
学生姓名
已选课程数量n”);
while(p!=NULL)
{
printf(“%-4d %10s %6dn”,p->num2,p->name2,p->nelen);
p=p->next;
} } void intoc()//存储课程信息 {
FILE * fp;
struct couse * p;
char filepath[30];
if((fp=fopen(“课程信息.dat”,“a+”))==NULL)
{
printf(“n保存失败!”);
exit(0);
}
p=head1;
while(p!=NULL)
{
fprintf(fp,“%d %s %d %d %dn”,p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
fclose(fp);
printf(“课程信息已保存成功!n”);} void intos()//存储学生信息 { int i;
FILE * fp;
struct student * p;
char filepath[30];
if((fp=fopen(“学生信息.dat”,“a+”))==NULL)
{
printf(“n保存失败!”);
exit(0);
}
p=head3;
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p->next;
}
fclose(fp);
printf(“学生信息已保存成功!n”);
printf(“ntttt选择菜单:”);
printf(“ntttt1.继续添加ntttt2.返回主菜单:”);
printf(“请选择:”);
scanf(“%d”,&i);
switch(i)
{
case 1:inputs();break;
case 2:teacher();break;
default:printf(“n输入有误!n”);} }
void store()//信息主函数 {
int i;
printf(“tt系统信息查看及存储n”);
printf(“1.查看课程信息n”);
printf(“2.查看学生信息n”);
printf(“3.返回主菜单n”);
printf(“请输入(1~3):n”);
scanf(“%d”,&i);
switch(i)
{
case(1):listc();break;
case(2):lists();break;
case(3):system(“cls”);return;break;
} }
int main()//主函数
//retuen
{
int i;
FILE *fp;
printf(“nttt欢迎使用学生选课系统!n”);
printf(“n请选择菜单:”);
printf(“ntttt1.教师登陆ntttt2.学生登陆n”);
printf(“请选择:”);
scanf(“%d”,&i);
switch(i)
{
case 1:teacher();break;
case 2:student();break;
default:printf(“输入有误!”);
} }
int student()
{
int i;
printf(“ntttt1.学生选课n”);
printf(“ntttt2.系统信息查看及存储n”);
printf(“ntttt3.退出系统n”);
printf(“请选择:”);
scanf(“%d”,&i);
switch(i)
{
case 1:
{
system(“cls”);
elective();
break;
}
case 2:
{
system(“cls”);
store();
break;
}
default:printf(“输入有误!”);
}
}
int teacher()
{
FILE *fp;
int i;
printf(“菜单:n”);
printf(“1.录入课程信息n”);
printf(“2.课程管理n”);
printf(“3.录入学生信息n”);
printf(“4.学生信息管理n”);
printf(“5.系统信息查看n”);
printf(“6.退出系统n”);
if((fp=fopen(“课程信息.dat”,“rb”))==NULL)
{
printf(“n打开系统文件失败!
n”);
//fp=fopen(“信息.dat”,“rb”));
// }
// if(feof(fp))
// {
printf(“n还未添加课程信息,请添加课程信息!n”);
inputc();
}
while(!feof(fp))
{
emp1=(struct couse*)malloc(sizeof(struct couse));
if(emp1==NULL)
{
printf(“n分配内存失败!n”);
return;
}
fread(emp1,sizeof(struct couse),1,fp);
if(feof(fp))break;
if(head1==NULL)
{
head1=emp1;
head2=emp1;
}
else{
head2->next=emp1;
head2=emp1;
}
head2->next=NULL;
}
fclose(fp);
fp==NULL;
if((fp=fopen(“学生信息.dat”,“rb”))==NULL)
printf(“n打开系统文件失败!n”);
//
//if(feof(fp)==1)
// {
printf(“还未添加学生信息,请添加学生信息!”);
inputs();
while(!feof(fp))
{
emp1=(struct student*)malloc(sizeof(struct student));
if(emp2==NULL)
{
printf(“n分配内存失败!n”);
return;
}
fread(emp2,sizeof(struct student),1,fp);
if(feof(fp))break;
if(head3==NULL)
{
head3=emp2;
head4=emp2;
}
else{
head4->next=emp2;
head4=emp2;
}
head4->next=NULL;
}
fclose(fp);
fp==NULL;
printf(“n请输入菜单选项(1~6):n”);
scanf(“%d”,&i);
switch(i)
{
case(1):
{
system(“cls”);
inputc();
break;
}
case(2):
{
system(“cls”);
managementc();
break;
}
case(3):
{
system(“cls”);
inputs();
break;
}
case(4):
{
system(“cls”);
managements();
break;
}
case(5):
{
system(“cls”);
store();
break;
}
case(6):
{
system(“cls”);
printf(“感谢使用本系统!nn再见!n”);
}
}
return 1;
}
- 11 前言让自己所学的知识应用于实际生活中,理论联系生活,学以致用,我们将更好服务于民。我们是新一代的年轻人,要想将来在社会上更好的立足,就必须让自己强大起来,努力的学习新......
汇编语言课程实验报告实验名称课程设计1 实验环境硬件平台:Intel Core i5-3210M 操作系统:DOSBox 0.74 in Windows 8.1 软件工具:Turbo C 2.0, Debug, MASM 实验内容将实验7中......
1,/*100-999内的水仙花数的个数*/ #include main() {int a,b,c,d,s,i=0;for(a=100;a{b=a/100;c=a%100/10;d=a%10;s=b*b*b+c*c*c+d*d*d;if(a==s)i++;}printf("%d",i);getch......
C语言课程设计总结报告学院:电气学院专业:电子信息科学与技术 学号: 姓名: 一目的:课程设计为我们提供了一个既动手又动脑,独立实践的机会,让我们将课本上的理论知识和实际有机的......
C语言课程设计飞机空战小游戏一、实验环境运行系统 WINDOWSXP 编程工具C++6.0 地点 程序设计与仿真实验室桌号19电脑IP地址221.12.10.218 二、实验目的和要求 实验目的:(1)使学......
