⑴ 用数据结构(c语言版)编写的学生选课系统
根据自己的需要,自己看着修改一下 ^^
#include<stdio.h>
#include<stdlib.h>
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);
}
⑵ C语言课程设计《学生选课系统》的设计与实现
/* Note:Your choice is C IDE */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 100
struct student
{
char num[10];
char name[10];
char tel[11];
};
/* 以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分 */
void myprint();
void mycreate();
void mydisplay();
void mysearch();
/* sch_num与sch_name函数被mysearch调用 */
void sch_num(FILE *fp);
void sch_name(FILE *fp);
void mymodify();
void myadd();
void mydelete();
/* del_num与del_name函数被mydelete调用 */
void del_num(FILE *fp);
void del_name(FILE *fp);
void mysort();
/* sort_num与sort_name函数被mysort调用 */
void sort_num();
void sort_name();
void main()
{
char choose,yes_no;
do
{
myprint(); /* 显示主菜单 */
printf(" ");
choose=getch();
switch(choose)
{
case '1': mycreate(); break; /* 创建 */
case '2': mydisplay(); break; /* 显示 */
case '3': mysearch(); break; /* 查询 */
case '4': mymodify(); break; /* 修改 */
case '5': myadd(); break; /* 添加 */
case '6': mydelete(); break; /* 删除 */
case '7': mysort(); break; /* 排序 */
case '0': break;
default:printf("\n %c为非法选项!\n",choose);
}
if(choose=='0')
break;
printf("\n 要继续选择吗(Y/N)?\n");
do
{
yes_no=getch();
}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}while(yes_no!='Y'||yes_no!='y');
}
void myprint() /* 显示菜单界面 */
{
printf("\n\n\n\n\n\n\n\n");
printf(" |----------------------------|\n");
printf(" | 请输入选项编号(0-7): |\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(" | 0--退出 |\n");
printf(" |----------------------------|\n");
}
/* 定义创建信息管理系统的函数 */
void mycreate()
{
int i=1;
struct student temp;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("\n 请输入第1个记录:\n");
printf(" 学号(用#结束输入):");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(temp.name);
printf(" 电话号码(用#结束输入):");
gets(temp.tel);
while(temp.num[0]!='#'&&temp.name[0]!='#'&&temp.tel[0]!='#')
{
fprintf(fp,"%23s%15s%15s\n",temp.num,temp.name,temp.tel);
i++;
printf("\n 请输入第%d个记录:\n",i);
printf(" 学号(用#结束输入):");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(temp.name);
printf(" 电话号码(用#结束输入):");
gets(temp.tel);
}
fclose(fp);
}
/* 定义显示信息管理系统的函数 */
void mydisplay()
{
int n=0;
struct student temp;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
// clrscr();
printf(" 学号 姓名 电话号码\n");
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
n++;
}
if(n==0)
printf("\n 文件中无记录!\n");
else
printf("\n 文件中共有%d个记录!\n",n);
fclose(fp);
}
/* 定义查询信息管理系统的函数 */
void mysearch()
{
char c;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("\n 按学号查询(h),还是按姓名查询(m)?");
c=getch();
if(c=='h'||c=='H')
sch_num(fp); /* 按学号查询 */
if(c=='m'||c=='M')
sch_name(fp); /* 按姓名查询 */
else
printf("\n 非法字符!\n");
fclose(fp);
}
/* 定义按学号查询信息管理系统的函数 */
void sch_num(FILE *fp)
{
int flag=0,n=0;
char tempnum[10];
struct student temp;
printf("\n 请输入要查询记录的学号:");
gets(tempnum);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempnum,temp.num)==0)
{
if(flag==0)
printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;
}
n++;
}
if(n==0)
printf("\n 文件中无记录!\n");
else
if(flag==0)
printf("\n 文件中无此人!\n");
}
/* 定义按姓名查询信息管理系统的函数 */
void sch_name(FILE *fp)
{
int flag=0,n=0;
char tempname[10];
struct student temp;
printf("\n 请输入要查询记录的姓名:");
gets(tempname);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempname,temp.name)==0)
{
if(flag==0)
printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;
}
n++;
}
if(n==0)
printf("\n 文件中无记录!\n");
else
if(flag==0)
printf("\n 文件中无此人!\n");
}
/* 定义修改信息管理系统的函数 */
void mymodify()
{
char c;
int n=0;
struct student *find,temp,record[100],*p; /* 最多100个记录 */
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
if(n==0)
{
printf("\n 文件中无记录!\n");
return;
}
printf("\n 请输入要修改记录的学号:");
gets(temp.num);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)
{
find=p; /* find记住修改记录的位置 */
break;
}
if(p==record+n)
{
printf("\n 无此人!\n");
return;
}
do
{
printf("\n 请输入正确的学号:");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 请输入正确的姓名:");
gets(temp.name);
printf(" 请输入正确的电话号码:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if((strcmp(temp.num,p->num)==0)&&(p!=find))
{
printf("\n 学号重复,要重新输入吗(Y/N)?");
do
{
c=getch();
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;
}
if(p==record+n)
{
*find=temp; /* find指向需要修改记录的位置 */
break;
}
}while(c=='Y'||c=='y');
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}
/* 定义添加信息管理系统的函数 */
void myadd()
{
char c;
int n=0;
struct student temp,record[N],*p;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
do
{
printf("\n 请输入新记录的学号:");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 请输入新记录的姓名:");
gets(temp.name);
printf(" 请输入新记录的电话号码:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)
{
printf("\n 学号重复,要重新输入吗(Y/N)?");
do
{
c=getch();
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;
}
if(p==record+n)
{
*p=temp;
break;
}
}while(c=='Y'||c=='y');
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n+1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}
/* 定义删除信息管理系统的函数 */
void mydelete()
{
char c;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("\n 按学号删除(h),还是按姓名删除(m)?");
c=getch();
if(c=='h'||c=='H')
del_num(fp); /* 按学号删除 */
if(c=='m'||c=='M')
del_name(fp); /* 按姓名删 */
else
printf("\n 非法字符!\n");
fclose(fp);
}
/* 定义按学号删除信息管理系统的函数 */
void del_num(FILE *fp)
{
int n=0;
char tempnum[10];
struct student record[N],*p,*k;
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
printf("\n 请输入要删除记录的学号:");
gets(tempnum);
for(k=record;k<record+n;k++)
if(strcmp(tempnum,k->num)==0)
break; /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1);
else
printf("\n 无此人!\n");
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
}
/* 定义按姓名删除信息管理系统的函数 */
void del_name(FILE *fp)
{
int n=0;
char tempname[10];
struct student record[N],*p,*k;
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
printf("\n 请输入要删除记录的姓名:");
gets(tempname);
for(k=record;k<record+n;k++)
if(strcmp(tempname,k->name)==0)
break; /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1);
else
printf("\n 无此人!\n");
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
}
/* 定义排序信息管理系统的函数 */
void mysort()
{
char c;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
fclose(fp);
printf("\n 按学号排序(h),还是按姓名排序(m)?");
c=getch();
if(c=='h'||c=='H')
sort_num(); /* 按学号排序 */
if(c=='m'||c=='M')
sort_name(); /* 按姓名排序 */
else
printf("\n 非法字符!\n");
}
/* 定义按学号排序信息管理系统的函数 */
void sort_num()
{
int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
printf("\n 按升序(s),还是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按学号的升序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
if(c=='j'||c=='J') /* 按学号的降序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
{
printf("\n 非法字符!\n");
return;
}
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n;p++)
{
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
printf("%23s%15s%15s\n",p->num,p->name,p->tel);
}
fclose(fp);
}
/* 定义按姓名排序信息管理系统的函数 */
void sort_name()
{
int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
printf("\n 按升序(s),还是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按姓名的升序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
if(c=='j'||c=='J') /* 按姓名的降序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
{
printf("\n 非法字符!\n");
return;
}
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}
⑶ C语言学生选修课系统
//7《学生选修课程系统》设计任务
//(1)输入功能:输入30名学生学号、班级、姓名、选修课名称。
//(2)设置要求:每个学生至少选修3科,总选修科目至少设置15科。
//(3)查询功能:按学号、姓名、选修课显示各选修课上课时间和地点。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
typedef struct subjects
{
int num;
char na[10];
char teacher[20];
char wtime[10];
char ttime[10];
int score;
struct subjects *next;
}SUB;
SUB *create_form()
{
SUB *head,*tail,*p;
int num,score;
char na[10],teacher[20],wtime[10],ttime[10];
head=tail=NULL;
printf(" 输入选课程信息,以6个0结束:\n");
printf(" 课程代码 课名 任教老师 上课星期 上课时间 学分\n");
scanf("%d%10s%14s%10s%8s%6d",&num,&na,&teacher,&wtime,&ttime,&score);
while(num!=0)
{
p=(SUB*)malloc(sizeof(SUB));
p->num;
strcpy(p->na,na);
strcpy(p->teacher,teacher);
strcpy(p->wtime,wtime);
strcpy(p->ttime,ttime);
p->score=score;
if(head==NULL)
head=p;
else
tail->next=p;
tail=p;
scanf("%d%s%s%s%s%d",&num,&na,&teacher,&wtime,&ttime,&score);
}
tail->next=NULL;
return head;
}
void savefile(SUB*head)
{
SUB *p;
FILE *fp;
fp=fopen("subjects.txt","w");
fprintf(fp,"欢迎进入东华理工大学2008-2009学年选修课系统(4-13)\n");
fprintf(fp,"课程代码 课名 任教老师 上课星期 上课时间 学分\n");
for(p=head;p;p->next)
fprintf(fp,"%6d%10s%14s%10s%8s%6d",p->num,p->na,p->teacher,p->wtime,p->ttime,p->score);
fclose(fp);
}
void prin(SUB *head)
{
SUB *p;
if (head==NULL)
{
printf("没有选修课程记录!\n");
return;
}
printf("欢迎进入东华理工大学2008-2009学年选修课系统(4-13)\n");
printf("课程代码 课名 任教老师 上课星期 上课时间 学分\n");
for(p=head;p;p->next)
printf("%6d%10s%16s%12s%12s%d",p->num,p->na,p->teacher,p->wtime,p->ttime,p->score);
}
SUB *inset(SUB *head)
{
SUB *ptr,*ptr2,*subj;
char ch, ch1;
printf("是否进行插入课程,如果需要插入请按回车建,不进行按空格结束!\n");
ch=getchar();
while(ch!=' '){
subj=(SUB*)malloc(sizeof(SUB));
ptr=subj;
printf(" 输入要插入的课程信息:\n");
scanf("%d%s%s%s%s%d",subj->num,subj->na,subj->teacher,subj->wtime,subj->ttime,subj->score);
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;
}
ch='a';
}
printf("继续请按回车建,结束请按空格:\n");
ch1=getchar();
ch=getchar();
}
return head;
}
SUB *del(SUB *head)
{
SUB*p1,*p2;
char ch,ch1;
int num;
printf("是否进行课程删除,要删除请按回车键,不进行请按空格:\n");
ch=getchar();
while(ch!=' ')
{
printf("输入要删除的课程代码:\n");
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!=NULL){
if(p2->num==num){
p1->next=p2->next;
free(p2);
}
else
p1=p2;
p2=p1->next;
}
printf("继续删除请按回车键,结束请按空格:\n");
ch1=getchar();
ch=getchar();
}
return head;
}
typedef struct student
{
int number;
int classes;
char chinesename[16];
char title [5][12];
struct student *other;
}STU;
void scanf_form(SUB *head)
{
int i,count,number,classes;
char ch,title[3][12],chinesename[16];
scanf("%d%d%16s",&number,&classes,&chinesename);
for(i=0;i<5;i++)
{
scanf("%s",&title[i]);
count++;
if(count==3)
{
ch=getchar();
if(ch!=' ')
{title[3][12]='0';
title[4][12]='0';
i=5;
ch='a';
}
}
if(count==4)
{
ch=getchar();
if(ch!=' ')
{title[4][12]='0';
i=5;
ch='a';
}
}
for(i=0;i<5;i++)
{
if(strcmp(title[i][12],head->na)!=0 && title[i][12]!='0')
{ printf("你输入的课程名不正确,请从新输入:\n");
scanf_form();
}
}
}
}
STU *study_form(SUB*head)
{
STU *hand,*tall,*q;
int i;
char ch,ch1;
hand=tall=NULL;
printf("输入你个人信息,及选修的课名,以4个0结束:\n");
printf("注:每个学生至少选修3门课,大于3门时按回车键继续,空格结束:\n");
scanf_form();
while(number!=0)
{
q=(STU*)malloc(sizeof(STU));
q->number=number;
q->classes=classes;
strcpy(p->chinesename,chinesename);
for(i=0;i<5;i++)
strcpy(p->title[i],title[i][12]);
if(hand=NULL)
hand=q;
else
tall->other=q;
tall=q;
scanf_form();
for(i=0;i<5;i++)
{
if(strcmp(title[i][12],head->na)!=0&&titli[i][12]!='0')
{ printf("你输入的课程名不正确,请从新输入:\n");
scanf_form();
}
}
tall->other=NULL;
return hand;
}
}
void savefiles(STU*hand)
{
STU *q;
FILE *fq;
fq=fopen("studennt.txt","w");
fprintf(fq, "学生选课信息表:\n");
for(q=hand;q;q=q->other)
fprintf(fq,"%16d%10d%16s%16s%16s%16s%16s%16s",q->number,q->classes,q->chinesename,q->title[0],q->title[1],q->title[2],q->title[3],q->title[4]);
fclose(fq);
}
void prins(STU*hand)
{
STU *q;
if(head==NULL)
{
printf("没有学生选课信息记录!\n");
return;
}
printf("学生选课信息一览表:\n");
printf("学号 班级 姓名 课名 :\n");
for(q=hand;q;q->number)
printf("%16d%10d%16s%16s%16s%16s%16s%16s",q->number,q->classes,q->chinesename,q->title[0],q->title[1],q->title[2],q->title[3],q->title[4]);
}
STU *intserts(SUB*head,STU *hand)
{
STU *prt,*prt2,*stuj;
int i;
char ch,ch1;
printf("是否要进行插入学生选课信息,如果需要请按回车建,结束请按0:\n");
ch=getchar();
while(ch!=' ')
{
stuj=(STU*)malloc(sizeof(STU));
prt=stuj;
printf("输入要插入的学生选课信息:\n");
scanf_form();
if(hand==NULL)
{hand=prt;
hand->other=NULL;
}
else
{for(prt2=hand;prt2;prt2=prt2->other)
if(prt2->other==NULL)
{prt2->other=stuj;
stuj->other=NULL;
break;
}
ch='a';
}
printf("继续插入请按回车建,结束请按空格:\n");
ch1=getchar();
ch=getchar();
}
return hand;
}
STU *dells(STU *hand)
{
STU *q1,*q2;
char ch,ch1;
int number;
printf("是否进行学生选课信息删除,要删除请按回车建,不进行请按空格:\n");
ch=getchar();
while(ch!=' ')
{
printf("输入要删除的学号:\n");
scanf("%d",&number);
if(hand->number==number)
{
q2=hand;
hand=hand->other;
free(q2);
}
if(hand=NULL)
return NULL;
q1=hand;
q2=hand->other;
while(q2)
{if(q2->number==number)
{q1->other=q2->other;
free(q2);
}
else
q1=q2;
q2=q1->other;
}
printf("继续删除请按回车建,结束请按空格:\n");
ch1=getchar();
ch1=getchar();
}
return hand;
}
void search(STU*hand)
{
int a,number;
int t=1;
char type[10],ch,ch1;
STU *prt;
printf("是否进入查询,按回车键进入,空格结束:\n");
ch=getchar();
while(ch!=' ')
{
printf("请输入要查询的学号:\n");
for(prt=hand;prt;prt=prt->other)
{
if(number=prt->number)
{printf("%16d%10d%16s%16s%16s%16s%16s%16s",prt->number,prt->classes,prt->chinesename,prt->title[0],prt->title[1],prt->title[2],prt->title[3],prt->title[4]);
t=0;
}
if(t!=0)
printf("未找到!\n");
t=1;
}
printf("继续查找请按回车键,结束请按空格键:\n");
ch1=getchar();
ch=getchar();
}
}
void main()
{
SUB *head=create_form() ;
savefile(head);
prin(head);
head= inset(head);
head= del(head);
STU *hand=study_form(head);
savefiles(hand);
prins(hand);
hand=intserts(head,hand);
hand=dells(hand);
search(hand);
}
⑷ 学生选课系统C语言程序
根据自己的需要,自己看着修改一下 ^^
#include<stdio.h>
#include<stdlib.h>
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);
}
⑸ 很急很急,C语言的学生选课系统的题目
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define szSTR 256
#define szNAME 10
#define szGROUP 5 /*每个小组最多允许5名组员,包括组长*/
#define fileAssignments "c:\\0.txt"
#define fileProjects "c:\\1.txt"
#define cntTYPE 4
/*课程*/
char Types[cntTYPE][11] = {"数据结构类", "趣味类", "管理类", "自选类"};
struct TAssignment {
int number; /*课程编号*/
int level; /*难度系数*/
int type; /*类别*/
char title[szSTR];
char requirements[szSTR]; /*技术要求*/
char features[szSTR]; /*技术特点*/
};
time_t Date_Input(char * msg)
{
struct tm t; memset(&t, 0, sizeof(t));
printf("请输入%s日期,格式为年/月/日:", msg);
scanf("%d/%d/%d", &(t.tm_year), &(t.tm_mon), &(t.tm_mday));
t.tm_year -= 1900;
t.tm_mon --;
return mktime(&t);
}
void Date_Print(time_t t)
{
struct tm * ft = localtime(&t);
printf("%04d/%02d/%02d", ft->tm_year + 1900, ft->tm_mon + 1, ft->tm_mday);
}
void Number_Input(char * msg, int * x)
{
for(;;) {
printf("请输入%s,以回车结束:", msg);
scanf("%d", x);
if(*x < 0) *x = -*x;
if(*x) break;
printf("错误的输入,请重新输入。晌笑\n");
}
}
void String_Input(char * msg, char * str)
{
printf("请输入%s,以回车结束:", msg);
fflush(stdin);
fgets(str, szSTR, stdin);
}
int Type_Input(void)
{
int t = 0, i = 0;
for(;;) {
printf("请输入课程类别:");
for(i = 0; i < cntTYPE; i++) printf("%d - %s\t"销谨耐, i, Types[i]);
printf("\b\n");
t = getch() - '0';
if(t >= 0 && t <= cntTYPE) break;
printf("错误的输入\亏春n");
}
return t;
}
fpos_t ASSG_Query(int number)
{
FILE * f = 0; fpos_t p = 0;
struct TAssignment a;
if(number < 1) return 0;
f = fopen(fileAssignments, "rb");
if(!f) {
fprintf(stderr, "课程文件无法打开\n");
return 0;
}
while(!feof(f)) {
fgetpos(f, &p);
fread(&a, sizeof(a), 1, f);
if(a.number == number) {
fclose(f);
return p + 1;
}
}
fclose(f);
return 0;
}
void ASSG_Append(void)
{
FILE * f = 0; fpos_t p = 0;
struct TAssignment a;
memset(&a, 0, sizeof(a));
Number_Input("课程编号", &(a.number ));
p = ASSG_Query(a.number );
if(p) {
fprintf(stderr, "该课程已存在。\n");
return ;
}
Number_Input("难度系数", &(a.level));
String_Input("课程名称", a.title );
a.type = Type_Input();
String_Input("技术要求", a.requirements);
String_Input("技术特点", a.features);
f = fopen(fileAssignments, "ab");
if(!f) {
fprintf(stderr, "课程文件无法打开\n");
return ;
}
fwrite(&a, sizeof(a), 1, f);
fclose(f);
}
void ASSG_Delete(void)
{
fpos_t p = 0; FILE * f = 0;
struct TAssignment a;
Number_Input("课程编号", &(a.number ));
p = ASSG_Query(a.number );
if(p == 0) {
fprintf(stderr, "该课程不存在。\n");
return ;
}
p--;
f = fopen(fileAssignments, "rb+");
if(!f) {
fprintf(stderr, "课程文件无法打开!\n");
return ;
}
fsetpos(f, &p);
memset(&a, 0, sizeof(a));
fwrite(&a, sizeof(a), 1, f);
fclose(f);
printf("删除成功!\n");
}
void PrintLine(void)
{
int i = 0; for(i=0; i<79; i++) putchar('-');
putchar('\n');
}
void ASSG_Report(void)
{
FILE * f = 0; struct TAssignment a; int r = 0;
f = fopen(fileAssignments, "rb");
if(!f) {
fprintf(stderr, "目前数据库中没有课程。\n");
return ;
}
printf("\n课程数据库\n");
while(!feof(f)) {
r = fread(&a, sizeof(a), 1, f);
if(r < 1) break;
if(a.number == 0) continue;
PrintLine();
printf("【编号】%d\t【类别】%s\t【难度系数】%d\t【课程】%s【技术要求】%s【技术特点】%s",
a.number , Types[a.type ], a.level ,
a.title , a.requirements , a.features );
}
fclose(f);
printf("\n\n");
}
void ASSG_Brief(int number)
{
struct TAssignment a; FILE * f = 0;
fpos_t p = ASSG_Query(number);
if(!p) {
printf("【尚未选题】\n");
return ;
}
p--;
f = fopen(fileAssignments, "rb");
fsetpos(f, &p);
fread(&a, sizeof(a), 1, f);
fclose(f);
printf("【课程编号】%d【类别】%s【难度系数】%d\t【课程】%s",
a.number , Types[a.type ], a.level ,a.title );
}
int ASSG_Choose(void)
{
int number = 0; fpos_t p = 0;
Number_Input("课程编号", &number);
p = ASSG_Query(number);
return p?number:0;
}
void ASSG_Menu(void)
{
int cmd = 0;
for(;;) {
printf("*****课程管理*****\n0-查看\t1-新增\t2-删除课程\t任意键返回\n");
cmd = getch() - '0';
switch(cmd) {
case 0: ASSG_Report(); break;
case 1: ASSG_Append(); break;
case 2: ASSG_Delete(); break;
default: return ;
}
}
}
/*课程信息*/
struct TProject {
int group_number; /*组号*/
char members[szGROUP][szNAME]; /*小组成员,编号0为组长*/
int assignment; /*选题*/
time_t date_open; /*开题日期*/
time_t date_close; /*结题日期*/
char teacher[szNAME];/*指导教师*/
int process; /*进度0~100%*/
char jobs[szSTR]; /*分工*/
int score; /*评分*/
};
void PROJ_Report(void)
{
struct TProject p; int r = 0;
FILE * f = fopen(fileProjects, "rb");
if(!f) {
fprintf(stderr, "目前没有开放课程信息。\n");
return;
}
printf("*****课程及小组信息*****\n");
while(!feof(f)) {
r = fread(&p, sizeof(p), 1, f);
if(r < 1) break;
if(p.group_number ==0) continue;
PrintLine();
printf("【组号】%d\t【指导教师】%s【组长】%s\n",
p.group_number , p.teacher , p.members[0]);
printf("【组员】%s %s %s %s\n", p.members[1], p.members[2], p.members[3], p.members[4]);
printf("【分工】%s", p.jobs );
ASSG_Brief(p.assignment );
if(p.assignment ) {
printf("【开题日期】"); Date_Print(p.date_open);
printf("【结题日期】"); Date_Print(p.date_close);
printf("【进度】%d%%【评分】%d\n", p.process, p.score );
}
}
fclose(f);
PrintLine();
}
fpos_t PROJ_Query(int number)
{
struct TProject p; fpos_t q = 0; int r = 0;
FILE * f = fopen(fileProjects, "rb");
if(!f) return 0;
while(!feof(f)) {
fgetpos(f, &q);
r = fread(&p, sizeof(p), 1, f);
if(r < 1) break;
if(p.group_number == number) {
fclose(f);
return q+1;
}
}
fclose(f);
return 0;
}
void PROJ_Append(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0; int i = 0;
memset(&p, 0, sizeof(p));
Number_Input("课程小组编号", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q) {
fprintf(stderr, "该小组已经存在。\n");
return ;
}
printf("请录入组员信息,第一个组员是组长:");
for(i = 0; i< 5; i++) scanf("%s", p.members [i]);
printf("请输入指导教师姓名:"); scanf("%s", p.teacher );
String_Input("分工信息", p.jobs );
f = fopen(fileProjects, "ab");
fwrite(&p, sizeof(p), 1, f);
fclose(f);
printf("课程小组已创建,可以从菜单进行选题。\n");
}
void PROJ_Delete(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0;
memset(&p, 0, sizeof(p));
Number_Input("课程小组编号", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q == 0) {
fprintf(stderr, "没有关于该小组的信息。\n");
return ;
}
q--;
f = fopen(fileProjects, "rb+");
fsetpos(f, &q);
memset(&p, 0, sizeof(p));
fwrite(&p, sizeof(p), 1, f);
fclose(f);
printf("该小组信息已删除!\n");
}
int PROJ_Invalid(int assignment)
{
struct TProject p; int sum = 0; int r = 0;
FILE * f = fopen(fileProjects, "rb");
if(!f) return 1;
while(!feof(f)) {
r = fread(&p, sizeof(p), 1, f);
if(r < 1) break;
if(p.group_number == 0) continue;
if(p.assignment == assignment) sum++;
}
fclose(f);
return sum<5?0:1;
}
void PROJ_Select(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0; time_t t = 0;
memset(&p, 0, sizeof(p));
Number_Input("课程小组编号", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q == 0) {
fprintf(stderr, "没有关于该小组的信息。\n");
return ;
}
q--;
f = fopen(fileProjects, "rb");
fsetpos(f, &q);
memset(&p, 0, sizeof(p));
fread(&p, sizeof(p), 1, f);
fclose(f);
p.assignment = ASSG_Choose();
if(p.assignment==0) {
fprintf(stderr, "错误的课程编号。请在题库中查证后重新选题\n");
return ;
}
if(PROJ_Invalid(p.assignment)) {
fprintf(stderr, "已经有5个小组选择了该课程,请重新选题\n");
return ;
}
p.date_open = Date_Input("开题");
p.date_close= Date_Input("结题");
if(p.date_open > p.date_close) {
t = p.date_close ;
p.date_close = p.date_open;
p.date_open = t;
}
p.process = 0;
f = fopen(fileProjects, "rb+");
fsetpos(f, &q);
fwrite(&p, sizeof(p), 1, f);
fclose(f);
}
void PROJ_Progress(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0;
memset(&p, 0, sizeof(p));
Number_Input("课程小组编号", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q == 0) {
fprintf(stderr, "没有关于该小组的信息。\n");
return ;
}
q--;
f = fopen(fileProjects, "rb");
if(!f) {
fprintf(stderr, "数据库无记录!\n");
return ;
}
fsetpos(f, &q);
memset(&p, 0, sizeof(p));
fread(&p, sizeof(p), 1, f);
fclose(f);
if(p.assignment < 1) {
fprintf(stderr, "尚未选题,请选题后再补登进度\n");
return ;
}
Number_Input("进度(0~100)", &(p.process ));
if(p.process <0 || p.process > 100) {
fprintf(stderr, "错误的进度\n");
return ;
}
f = fopen(fileProjects, "rb+");
fsetpos(f, &q);
fwrite(&p, sizeof(p), 1, f);
fclose(f);
printf("进度已经登记完成!\n");
}
void PROJ_Evaluate(void)
{
struct TProject p; fpos_t q = 0; FILE * f = 0;
memset(&p, 0, sizeof(p));
Number_Input("课程小组编号", &(p.group_number));
q = PROJ_Query(p.group_number );
if(q == 0) {
fprintf(stderr, "没有关于该小组的信息。\n");
return ;
}
q--;
f = fopen(fileProjects, "rb");
fsetpos(f, &q);
memset(&p, 0, sizeof(p));
fread(&p, sizeof(p), 1, f);
fclose(f);
if(p.assignment < 1) {
fprintf(stderr, "尚未选题,请选题后再进行评分\n");
return ;
}
Number_Input("评分(0~100)", &(p.score ));
if(p.score <0 || p.score > 100) {
fprintf(stderr, "错误的评分\n");
return ;
}
f = fopen(fileProjects, "rb+");
fsetpos(f, &q);
fwrite(&p, sizeof(p), 1, f);
fclose(f);
printf("成绩已经评定完成!\n");
}
void PROJ_Menu(void)
{
int cmd = 0;
for(;;) {
printf("*****课程管理*****\n0-查看\t1-新增\t2-删除\t3-选题\t4-登记进度\t5-打分\t任意键返回\n");
cmd = getch() - '0';
switch(cmd) {
case 0: PROJ_Report(); break;
case 1: PROJ_Append(); break;
case 2: PROJ_Delete(); break;
case 3: PROJ_Select(); break;
case 4: PROJ_Progress(); break;
case 5: PROJ_Evaluate(); break;
default: return ;
}
}
}
int main(void)
{
int cmd = 0;
for(;;) {
printf("*****欢迎使用学生选课管理软件*****\n0-课程信息\n1-学生选课\n其他任意键退出\n");
cmd = getch() - '0';
switch(cmd) {
case 0: ASSG_Menu(); break;
case 1: PROJ_Menu(); break;
default: return 0;
}
}
return 0;
}
⑹ C语言 学生选修课程系统设计
#include<stdio.h>
#include<string.h>
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
int i;
struct student
{ char name[20];
char sex[10];
int age,num;
struct sco
{ int phy;
int maths;
int english;
int computer;
int vc;
}score;
}stu[1000];
void scan()
{ int u,xe;
i=0;
for(u=0;u<1000;u++)
{ strcpy(stu[u].name,"/并基0");
strcpy(stu[u].sex,"/0");
stu[u].num=0;
stu[u].age=0;
stu[u].score.phy=0;
stu[u].score.maths=0;
stu[u].score.english=0;
stu[u].score.computer=0;
stu[u].score.vc=0;
}
printf("依次输入你要输入的信亮蔽碰息,先是名字,然后学号,性别,年龄,成绩(5科),此系统最多科存1000名学生信息,剩余1000\n");
do
{ printf("输入学生名字\n");
scanf("%s",&stu[i].name);
printf("输入学生学号\n");
scanf("%d",&stu[i].num);
printf("输入学生性别\n");
while(scanf("%s",&stu[i].sex)&&strcmp(stu[i].sex,"boy")!=0&&strcmp(stu[i].sex,"girl")!=0)
printf("输入错误,请再输入");
printf("输入学生年龄\n");
scanf("%d",&stu[i].age);
printf("输入学生成绩(5科)\n"敬谈);
printf("物理:");
scanf("%d",&stu[i].score.phy);
printf("数学:");
scanf("%d",&stu[i].score.maths);
printf("电脑:");
scanf("%d",&stu[i].score.computer);
printf("英语:");
scanf("%d",&stu[i].score.english);
printf("VC:");
scanf("%d",&stu[i].score.vc);
printf("剩余%d\n",999-i);
printf("0继续输入下一个学生信息\n1回到菜单\n");
i++;
if(i>=1000){printf("系统存储空间已满,无法继续增加,抱歉!");break;}
while(scanf("%d",&xe)&&xe!=0&&xe!=1)
printf("输入错误,请再输入");
if(xe==0)printf("请继续输入\n");
}while(xe!=1);
}
void watch1()
{ if(i==0)printf("请先输入学生信息\n");
while(i!=0)
{ int i2,j2,all[100],averge[100],g,a,za;
char change3[10];
for(i2=0;i2<i;i2++)
{ all[i2]=stu[i2].score.phy+stu[i2].score.computer+stu[i2].score.english+stu[i2].score.maths+stu[i2].score.vc;
averge[i2]=all[i2]/5;
}
for(i2=1;i2<i;i2++)
{ for(j2=1;j2<i;j2++)
{ if(all[j2-1]<all[j2])
{ a=stu[j2-1].age;stu[j2-1].age=stu[j2].age;stu[j2].age=a;
a=stu[j2-1].score.computer;stu[j2-1].score.computer=stu[j2].score.computer;stu[j2].score.computer=a;
a=stu[j2-1].score.english;stu[j2-1].score.english=stu[j2].score.english;stu[j2].score.english=a;
a=stu[j2-1].score.maths;stu[j2-1].score.maths=stu[j2].score.maths;stu[j2].score.maths=a;
a=stu[j2-1].score.phy;stu[j2-1].score.phy=stu[j2].score.phy;stu[j2].score.phy=a;
a=stu[j2-1].score.vc;stu[j2-1].score.vc=stu[j2].score.vc;stu[j2].score.vc=a;
a=all[j2-1];all[j2-1]=all[j2];all[j2]=a;
a=stu[j2-1].num;stu[j2-1].num=stu[j2].num;stu[j2].num=a;
a=averge[j2-1];averge[j2-1]=averge[j2];averge[j2]=a;
strcpy(change3,stu[j2-1].name);
strcpy(stu[j2-1].name,stu[j2].name);
strcpy(stu[j2].name,change3);
strcpy(change3,stu[j2-1].sex);
strcpy(stu[j2-1].sex,stu[j2].sex);
strcpy(stu[j2].sex,change3);
}
}
}
printf("学号 姓名 性别 年龄 物理 数学 英语 电脑 VC 总分 平均分 名次\n");
for(g=0;g<i;g++)
printf("%-6d%-10s%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d\n",stu[g].num,stu[g].name,stu[g].sex,stu[g].age,stu[g].score.phy,stu[g].score.maths,stu[g].score.english,stu[g].score.computer,stu[g].score.vc,all[g],averge[g],g+1);
printf("输入0返回菜单");
while(scanf("%d",&za)&&za!=0)
printf("输入错误,请再输入");
if(za==0)break;
}
}
void watch2()
{ if(i==0)printf("请先输入学生信息\n");
while(i!=0)
{ int max[5],min[5],j,g,i2,all[100],averge[100],za,j2,a,yy[5][2];char change3[20];
for(i2=0;i2<i;i2++)
{ all[i2]=stu[i2].score.phy+stu[i2].score.computer+stu[i2].score.english+stu[i2].score.maths+stu[i2].score.vc;
averge[i2]=all[i2]/5;
}
for(i2=0;i2<i;i2++)
{ for(j2=1;j2<i;j2++)
{ if(all[j2-1]<all[j2])
{ a=stu[j2-1].age;stu[j2-1].age=stu[j2].age;stu[j2].age=a;
a=stu[j2-1].score.computer;stu[j2-1].score.computer=stu[j2].score.computer;stu[j2].score.computer=a;
a=stu[j2-1].score.english;stu[j2-1].score.english=stu[j2].score.english;stu[j2].score.english=a;
a=stu[j2-1].score.maths;stu[j2-1].score.maths=stu[j2].score.maths;stu[j2].score.maths=a;
a=stu[j2-1].score.phy;stu[j2-1].score.phy=stu[j2].score.phy;stu[j2].score.phy=a;
a=stu[j2-1].score.vc;stu[j2-1].score.vc=stu[j2].score.vc;stu[j2].score.vc=a;
a=all[j2-1];all[j2-1]=all[j2];all[j2]=a;
a=stu[j2-1].num;stu[j2-1].num=stu[j2].num;stu[j2].num=a;
a=averge[j2-1];averge[j2-1]=averge[j2];averge[j2]=a;
strcpy(change3,stu[j2-1].name);
strcpy(stu[j2-1].name,stu[j2].name);
strcpy(stu[j2].name,change3);
strcpy(change3,stu[j2-1].sex);
strcpy(stu[j2-1].sex,stu[j2].sex);
strcpy(stu[j2].sex,change3);
}
}
}
printf("学号 姓名 性别 年龄 物理 数学 英语 电脑 VC 总分 平均分 名次\n");
for(i2=0;i2<i;i2++)
{ all[i2]=stu[i2].score.phy+stu[i2].score.computer+stu[i2].score.english+stu[i2].score.maths+stu[i2].score.vc;
averge[i2]=all[i2]/5;
}
for(g=0;g<i;g++)
printf("%-6d%-10s%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d%-5d\n",stu[g].num,stu[g].name,stu[g].sex,stu[g].age,stu[g].score.phy,stu[g].score.maths,stu[g].score.english,stu[g].score.computer,stu[g].score.vc,all[g],averge[g],g+1);
max[0]=0;min[0]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.phy>=max[0])
{ max[0]=stu[j].score.phy;yy[0][0]=j;}
if(stu[j].score.phy<=min[0])
{ min[0]=stu[j].score.phy;yy[0][1]=j;}
}
max[3]=0;min[3]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.computer>=max[3])
{ max[3]=stu[j].score.computer;yy[3][0]=j;}
if(stu[j].score.computer<=min[3])
{ min[3]=stu[j].score.computer;yy[3][1]=j;}
}
max[2]=0;min[2]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.english>=max[2])
{ max[2]=stu[j].score.english;yy[2][0]=j;}
if(stu[j].score.english<=min[2])
{ min[2]=stu[j].score.english;yy[2][1]=j;}
}
max[1]=0;min[1]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.maths>=max[1])
{ max[1]=stu[j].score.maths;yy[1][0]=j;}
if(stu[j].score.maths<=min[1])
{ min[1]=stu[j].score.maths;yy[1][1]=j;}
}
max[4]=0;min[4]=100;
for(j=0;j<i;j++)
{
if(stu[j].score.vc>=max[4])
{ max[4]=stu[j].score.vc;yy[4][0]=j;}
if(stu[j].score.vc<=min[4])
{ min[4]=stu[j].score.vc;yy[4][1]=j;}
}
printf("物理最高分:%d %s最低分:%d %s\n数学最高分:%d %s最低分%d %s\n英语最高分:%d %s最低分:%d %s\n电脑最高分:%d %s最低分:%d %s\nV C最高分:%d %s最低分:%d %s\n",max[0],stu[yy[0][0]].name,min[0],stu[yy[0][1]].name,max[1],stu[yy[1][0]].name,min[1],stu[yy[1][1]].name,max[2],stu[yy[2][0]].name,min[2],stu[yy[2][1]].name,max[3],stu[yy[3][0]].name,min[3],stu[yy[3][1]].name,max[4],stu[yy[4][0]].name,min[4],stu[yy[4][1]].name);
printf("输入0返回菜单");
while(scanf("%d",&za)&&za!=0)
printf("输入错误,请再输入");
if(za==0)break;
}
}
void fine()
{ if(i==0)printf("请先输入学生信息\n");
while(i!=0)
{ printf("用学号查找请输入0,用姓名查找请输入1\n");
int i1,j1,num1,te=0,tc=0;char name1[20];
scanf("%d",&i1);
if(i1!=0&&i1!=1)
printf("输入错误\n");
else if(i1==0)
{ printf("请输入学生学号");
scanf("%d",&num1);
for(j1=0;j1<i;j1++)
if(num1==stu[j1].num)
{ printf("学号:%d姓名:%s性别:%s年龄:%d物理:%d数学:%d英语:%d电脑:%dVC:%d总分%d\n",stu[j1].num,stu[j1].name,stu[j1].sex,stu[j1].age,stu[j1].score.phy,stu[j1].score.maths,stu[j1].score.english,stu[j1].score.computer,stu[j1].score.vc,stu[j1].score.vc+stu[j1].score.computer+stu[j1].score.english+stu[j1].score.maths+stu[j1].score.phy);
te=1;
}
if(te!=1) printf("无此学生信息\n");
}
else if(i1==1)
{ printf("请输入学生姓名");
scanf("%s",&name1);
for(j1=0;j1<i;j1++)
if(strcmp(name1,stu[j1].name)==0)
{ printf("学号:%d姓名:%s性别:%s年龄:%d物理:%d数学:%d英语:%d电脑:%dVC:%d总分%d\n",stu[j1].num,stu[j1].name,stu[j1].sex,stu[j1].age,stu[j1].score.phy,stu[j1].score.maths,stu[j1].score.english,stu[j1].score.computer,stu[j1].score.vc,stu[j1].score.vc+stu[j1].score.computer+stu[j1].score.english+stu[j1].score.maths+stu[j1].score.phy);
tc=1;
}
if(tc!=1) printf("无此学生信息\n");
}
printf("继续查找请输入1,回菜单请输入0");
int qq;
while(scanf("%d",&qq)&&qq!=0&&qq!=1)
printf("输入错误,请再输入");
if(qq==1)continue;
if(qq==0)break;
}
}
void became()
{ if(i==0)printf("请先输入学生信息\n");
while(i!=0)
{ printf("请输入要修改的学生学号\n");
int num2,j3;
scanf("%d",&num2);
for(j3=0;j3<=i;j3++)
if(num2==stu[j3].num)
{ strcpy(stu[j3].name,"/0");
printf("重新输入该学生所有数据,依次为学号、姓名、性别、年龄、物理、数学、英语、电脑、VC。\n");
printf("输入学生名字\n");
scanf("%s",&stu[j3].name);
printf("输入学生学号\n");
scanf("%d",&stu[j3].num);
printf("输入学生性别\n");
while(scanf("%s",&stu[j3].sex)&&strcmp(stu[j3].sex,"boy")!=0&&strcmp(stu[j3].sex,"girl")!=0)
printf("输入错误,请再输入");
printf("输入学生年龄\n");
scanf("%d",&stu[j3].age);
printf("输入学生成绩(5科)\n");
printf("物理:");
scanf("%d",&stu[j3].score.phy);
printf("数学:");
scanf("%d",&stu[j3].score.maths);
printf("电脑:");
scanf("%d",&stu[j3].score.computer);
printf("英语:");
scanf("%d",&stu[j3].score.english);
printf("VC:");
scanf("%d",&stu[j3].score.vc);
printf("修改成功");
}
else("未找到该学号学生请确定输入无误\n");
int za;
printf("输入0返回菜单,输入1继续查找");
while(scanf("%d",&za)&&za!=0&&za!=1)
printf("输入错误,请再输入");
if(za==0)break;
if(za==1)continue;
}
}
void out()
{ if(i==0)printf("请先输入学生信息\n");
while(i!=0)
{ printf("请输入要删除的学生的学号\n");
int num3,j4,i3,za;
scanf("%d",&num3);
for(j4=0;j4<=i;j4++)
if(num3==stu[j4].num)
{ for(i3=j4;i3<i;i3++)
{ stu[i3].num=stu[i3+1].num;
stu[i3].age=stu[i3+1].age;
strcpy(stu[i3].name,stu[i3+1].name);
strcpy(stu[i3].sex,stu[i3+1].sex);
stu[i3].score.computer=stu[i3+1].score.computer;
stu[i3].score.english=stu[i3+1].score.english;
stu[i3].score.maths=stu[i3+1].score.maths;
stu[i3].score.phy=stu[i3+1].score.phy;
stu[i3].score.vc=stu[i3+1].score.vc;
}
i--;
printf("修改成功\n");
}
else printf("未找到该学号学生请确定输入无误\n");
printf("输入0返回菜单,输入1继续修改");
while(scanf("%d",&za)&&za!=0&&za!=1)
printf("输入错误,请再输入");
if(za==0)break;
if(za==1)continue;
}
}
void into()
{ for(;;)
{ if(i>1000){printf("系统存储空间已满,无法继续增加,抱歉!\n");break;}
printf("输入要增加学生信息,依次为学号、姓名、性别、年龄、物理、数学、英语、电脑、VC。\n");
i++;
printf("输入学生名字\n");
scanf("%s",&stu[i-1].name);
printf("输入学生学号\n");
scanf("%d",&stu[i-1].num);
printf("输入学生性别\n");
while(scanf("%s",&stu[i-1].sex)&&strcmp(stu[i-1].sex,"boy")!=0&&strcmp(stu[i-1].sex,"girl")!=0)
printf("输入错误,请再输入");
printf("输入学生年龄\n");
scanf("%d",&stu[i-1].age);
printf("输入学生成绩(5科)\n");
printf("物理:");
scanf("%d",&stu[i-1].score.phy);
printf("数学:");
scanf("%d",&stu[i-1].score.maths);
printf("电脑:");
scanf("%d",&stu[i-1].score.computer);
printf("英语:");
scanf("%d",&stu[i-1].score.english);
printf("VC:");
scanf("%d",&stu[i-1].score.vc);
printf("输入成功,剩余%d",1000-i);
if(i>=1000){printf("系统存储空间已满,无法继续增加,抱歉!\n");break;}
int za;
printf("输入0返回菜单,输入1继续增加");
while(scanf("%d",&za)&&za!=0&&za!=1)
printf("输入错误,请再输入");
if(za==0)break;
if(za==1)continue;
}
}
void main()
{ int a,wu=0;
FILE *fp;
fp=fopen("out.txt","rb+");
if(feof(fp)!=0)i=0;
while(feof(fp)==0)
{ fread(&i,sizeof(int),1,fp);
for(int m=0;m<i;m++)
fread(&stu[m],sizeof(struct student),1,fp);
}
fclose(fp);
do
{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");
printf("**********************************************\n");
printf("请输入选择项目序号:");
while(scanf("%d",&a)&&a!=0&&a!=1&&a!=2&&a!=3&&a!=4&&a!=5&&a!=6&&a!=7&&a!=8)
printf("输入错误,请再输入");
if(a==1)
{scan();}
if(a==2)
{watch1();}
if(a==3)
{watch2();}
if(a==4)
{fine();}
if(a==5)
{became();}
if(a==6)
{out();}
if(a==7)
{into();}
if(a==8)
{ FILE *fp;
fp=fopen("out.txt","rb+");
fwrite(&i,sizeof(int),1,fp);
for(int m=0;m<i;m++)
fwrite(&stu[m],sizeof(struct student),1,fp);
fclose(fp);
break;
}
}while(8);
}
⑺ 很诚恳求c语言——学生选修课程设计(最好有详解)如果好我还增加悬赏!
兴哥最帅。。多给点分呗
⑻ 求做个C语言 学生选课系统的设计与实现 ,收费的也可以
vc++学生信息管理系统(论文+程序)
摘要
随着现代科学的发展,计算机的应用几乎进入了生活中的每一个领域。计算机技术察缺在信息管理上也得到了越来越深入而广泛的应用,信息管理系统的实施在技术上已逐步成熟。
学生信息管理系统是学校等教育单位不可缺少的部分,利用计算机对学生信息进行管理,具有传统手工管理无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生信息管理的效率,也是科学化、正规化的管理,与世界接轨的重要条件。
本系统以Visual C++6.0作为开发工具,Access存储学生信息,应用MFC进行ODBC编程,实现学生信息的管理。本系统界面友好,操作方便,支持海量数据,维护方便,是功能比较完备的信息管理系统。
关键字:VC++6.0,数据库,Access,ODBC。
目 录
前言……………………………………………………………………………………4
1.系统概述 ……………………………………………………………………………5
1.1 系统需求………………………………………………………………………5
1.2 可行性分析……………………………………………………………………5
1.3 系统简介………………………………………………………………………5
1.3.1项目规划 …………………………………………………………………5
1.3.2系统模型 …………………………………………………………………6
2. 系统开发环境……………………………………………………………………7
2.1 VC++概述……………………………………………………………………7
2.2 Visual C++进行数据库开发的优势…………………………………………7
2.3 Visual C++提供的数据库访问技术 …………………………………………8
2.4 MFC ODBC 数据库访问技术介绍 …………………………………………8
3.数据库设计 ……………………………………………………………………… 10
3.1登陆用户表 ……………………………………………………………………10
3.2学生信息表 ……………………………………………………………………10
3.3成绩表设计 ……………………………………………败滚辩………………………11
4. 详细设计…………………………………………………………………………12
4.1连接数据库…备源…………………………………………………………………12
4.2动态设置数据源………………………………………………………………12
4.3使用Tab Control控件…………………………………………………………12
4.4模块详细设计…………………………………………………………………13
4.4.1登陆…………………………………………………………………………13
4.4.2学生信息管理………………………………………………………………13
4.4.3添加记录……………………………………………………………………15
4.4.4 用户管理…………………………………………………………………15
4.4.5成绩管理……………………………………………………………………16
5. 总结…………………………………………………………………………………21
致谢……………………………………………………………………………………22
参考文献………………………………………………………………………………23
另外,虚机团上产品团购,超级便宜
⑼ c语言学生选修课程管理系统
#include <stdio.h>
#include <stdlib.h>
#include <string.h>struct student
{
char name[60];
char ID[7];
int score;
};int dq(struct student st[]);
void xianshi();
void bc(struct student st[]);
void add();
void select();
void zz();
void chazhao();
void xhcz();
void xmcz();
void del();
void xmsc();
void xhsc();
void tj();
void px();
void bjg();
void xg();
void xhxg();
void xmxg();
void bca();
void fh();
struct student st[300]; //这个数组用来保存所有的学生信息 和文件里面的一致
int Number=0; //记录总的学生人数 也就是数组/文件里面的学生人数
void main()
{
int choose=0;
FILE *fp=NULL;
char yesorno;
if((fp=fopen("C://student.dat","rb"))==NULL)
{
printf("\n=========>提示:文件不存在,是否要创建一个?(y/n)\n");
scanf("%c",&yesorno);
if(yesorno=='y'||yesorno=='Y')
{
//这里仅为了建立文件
fp=fopen("C://student.dat","wb");
fclose(fp);
}
else
exit(0);
}
else
{
Number=dq(st); //要是文件只能够已经有数据 将数据初始化到数组中
}
system("cls");
while(true)
{
xianshi();
printf("\t\t====>请选择:");
scanf("%d",&choose);
system("cls");
switch(choose)
{
case 0: exit(0);
//退出
break;
case 1: add();
fh();//增加学生成绩
break;
case 2: select();
fh();//查看学生成绩
break;
case 3: chazhao();
fh();// 查找
break;
case 4: del();
fh();//删除
break;
case 5: tj();
fh();//统计
break;
case 6: px();
fh();//排序
break;
case 7: bjg();
fh();//输出不及格
break;
case 8: xg();
fh();//修改
break;
case 9:zz();
fh();//作者
break;
case 10:bca();
fh();//保存
break;
default:
break;
}
fflush(stdin);
getchar();
system("cls");
}
}
void bca()
{
printf("\t=====程序在运行时已自动保存.....\n");
}
void fh()
{
printf("\t===>按Enter键返回主菜单\n");
}
void xg() //修改学生信息
{
int way=0;
printf("请选择修改查找方式\n");
printf("1 按姓名查找修改\n");
printf("2 按学号查找修改\n");
scanf("%d",&way);
switch(way)
{
case 1: xmxg();
break;
case 2: xhxg();
break;
default: printf("输入有误,结束!\n");
break;
}
}
//按姓名修改
void xmxg()
{
FILE *fp=NULL;
char name[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生姓名:");
scanf("%s",name);
for (i=0;i<Number;i++)
{
if (strcmp(name,st[i].name))
{
changeIndex=i; //保存要修改的人的下标
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("学号:");
scanf("%s",st[changeIndex].ID);
printf("成绩:");
scanf("%d",&st[changeIndex].score); //信息修改后重新更新文件里面的数据 以保持数据一致性
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
void xhxg()//按学号修改
{
FILE *fp=NULL;
char id[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生学号:");
scanf("%s",id);
for (i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID))
{
changeIndex=i; //保存要修改的人的下标
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("学号:");
scanf("%s",st[changeIndex].ID);
printf("成绩:");
scanf("%d",&st[changeIndex].score);
//信息修改后重新更新文件里面的数据 以保持数据一致性
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("\t=======>修改成功\n");
}void bjg() //输出不及格人数
{
int i=0;
printf("以下是不及格:\n");
printf("\t姓名\t学号\t成绩\n");
for (i=0;i<Number;i++)
{
if (st[i].score<60)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void px()//排序
{
struct student temp;
int wantNUmber=0;
int i=0;
int j=0;
for(i=0;i<Number-1;i++)
{
for(j=i;j<Number-1;j++)
{
if(st[j].score>st[j+1].score)
{
temp=st[j];
st[j]=st[j+1];
st[j+1]=temp;
}
}
}
printf("你想输出前几名的成绩:");
scanf("%d",&wantNUmber);
if (wantNUmber>Number)
{
wantNUmber=Number;
} printf("\t姓名\t学号\t成绩\n");
for(i=0;i<wantNUmber;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
void tj()//统计
{
int i=0;
double sum=0.0;
for(i=0;i<Number;i++)
{
sum+=st[i].score;
}
printf("全班总分为:%f\n",sum);
printf("平均分为:%f\n",sum/Number);
}
void del()//删除
{
int n=0;
printf("1 按姓名删除\n");
printf("2 按学号删除\n");
scanf("%d",&n);
switch(n)
{
case 1: xmsc();
break;
case 2: xhsc();
break;
}
}
void xmsc()//按姓名删除
{
FILE *fp=NULL;
char name[60];
int i=0;
int j=0;
printf("请输入要删除的学生姓名:");
scanf("%s",name);
for(i=0;i<Number;i++)
{
if (strcmp(name,st[i].name)==0) //如果查找到就删除
{
for (j=i;j<Number-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
} //将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("删除成功;\n");
}
void xhsc()//按学号删除
{
FILE *fp=NULL;
char id[60];
int i=0;
int j=0;
printf("请输入要删除的学生学号:");
scanf("%s",id);
for(i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID)==0) //如果查找到就删除
{
for (j=i;j<Number-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
}
//将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("删除成功;\n");
}
void chazhao()//查找学生
{
int n=0;
printf("1 按姓名查找\n");
printf("2 按学号查找\n");
scanf("%d",&n);
switch(n)
{
case 1: xmcz();
break;
case 2: xhcz();
break;
default: printf("输入有误,结束!\n");
break;
}
}
void xhcz()//按学号查找
{
char id[7];
int i=0;
printf("请输入要查找学生学号:");
scanf("%s",id);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for (i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void xmcz()//按姓名查找
{
char name[7];
int i=0;
printf("请输入要查找学生姓名:");
scanf("%s",name);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for (i=0;i<Number;i++)
{
if (strcmp(name,st[i].name)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void zz()
{
printf("\t**********************************************************\n\n");
printf("\t^^^^^^^^^^ 武汉工程大学邮电与信息工程学院 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 07网络与安全管理2班 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^ 易樊制作 ^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 禁止CTRL+C 谢谢合作 ^^^^^^^^^\n\n");
printf("\t^^^^^^^^^^ QQ:895115828\n\n");
printf("\t**********************************************************\n\n");
}
void select()//查看学生
{
int i=0;
printf("以下是全部学生成绩\n");
printf("\t姓名\t学号\t成绩\n");
for(i=0;i<Number;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
void add()//增加学生
{
int numberTemp=0;
int i=0;
struct student temp; //临时保存信息
printf("请输入要增加学生成绩个数:");
scanf("%d",&numberTemp);
for(i=0;i<numberTemp;i++)
{
printf("输入第%d个同学信息\n",i+1);
printf("姓名:");
scanf("%s",temp.name);
printf("学号:");
scanf("%s",temp.ID);
printf("成绩:");
scanf("%d",&temp.score);
st[Number++]=temp; //将刚添加的写入到数组
bc(&temp); //将刚添加的写入到文件 }
printf("添加成功\n");
}
void bc(struct student *st)
{
FILE *fp=NULL;
fp=fopen("C://student.dat","ab+");
fwrite(st,sizeof(struct student),1,fp);
fclose(fp);
}
int dq(struct student st[])
{
FILE *fp=NULL;
int i=0;
fp=fopen("C://student.dat","rb");
while(fread(&st[i],sizeof(struct student),1,fp))
i++;
fclose(fp);
return i;
}
void xianshi()
{
printf("\t*****************************************************************\n");
printf("\t* *\n");
printf("\t* 学生成绩管理系统 *\n");
printf("\t* *\n");
printf("\t* [1] 增加学生成绩 [2] 查看学生成绩 *\n");
printf("\t* [3] 查找学生成绩 [4] 删除学生成绩 *\n");
printf("\t* [5] 统计(总成绩和平均分) [6] 输出前N名学生成绩 *\n");
printf("\t* [7] 输出不及格人数 [8] 修改学生信息 *\n");
printf("\t* [9] 关于作者 [10] 保存数据 *\n");
printf("\t* [0] 退出系统 *\n");
printf("\t*****************************************************************\n");
}运行成功,请你下去后慢慢研究下这个程序,很简单的,祝你成功!~
求采纳为满意回答。
⑽ 学生选修课程系统设计 一个C语言程序
按着上面给喊谨出的数据
通过输入函数将相应数据录入到并渗配结构体中再将其保存到文件即可(录入模块)
显示和查询时可以通过循环读取文件
将数据读取到对应的结构体中然后进行相应操作即可
在main函数中可以设计一个菜单进行循环操作
如果代码不想自己写的话绝指
我可以有偿代劳