当前位置:首页 > 代码 > 正文

学生选课管理系统源代码(学生选修课程系统源代码)

admin 发布:2022-12-19 17:38 140


本篇文章给大家谈谈学生选课管理系统源代码,以及学生选修课程系统源代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

学生选课系统C语言程序

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

#includestdio.h

#includestdlib.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;kk11100;kk1++)

for(kk2=0;kk21200;kk2++)

for(kk3=0;kk31200;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;i20;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;i20;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(i1 || i7)

{

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语言学生选修课程系统设计的源代码!以及课程设计报告书!

这种东西到处都有, 抄一个就可以了, 我给你找了一个没有用户图形界面的, 可以自己用MFC进行包装

设计题目 学生成绩管理系统

已知技术参数和设计要求

现有学生成绩信息文件1(1.txt),内容如下

姓名 学号 语文 数学 英语

张明明 01 67 78 82

李成友 02 78 91 88

张辉灿 03 68 82 56

王露 04 56 45 77

陈东明 05 67 38 47

…. .. .. .. …

学生成绩信息文件2(2.txt),内容如下:

姓名 学号 语文 数学 英语

陈果 31 57 68 82

李华明 32 88 90 68

张明东 33 48 42 56

李明国 34 50 45 87

陈道亮 35 47 58 77

…. .. .. .. …

试编写一管理系统,要求如下:

1、 实现对两个文件数据进行合并,生成新文件3.txt

2、 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt

3、 对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)

4、 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)

5、 要求使用结构体,链或数组等实现上述要求.

采用多种方法且算法正确者,可适当加分.

设计内容与步骤 1、 结点结构的设计

2、 算法设计与分析

3、 程序设计、实现、调试

4、 课程设计说明书

#includeiostream.h

#includestring.h

#includefstream.h

class stu

{

char name[20];

double math,chinese,english,average,sum;

public:

stu()

{

}

stu(char n[20],double ma,double chin,double eng)

{

strcpy(name,n);

math=ma;

chinese=chin;

english=eng;

}

double getsum()

{

sum=chinese+english+math;

return sum;

}

double getaver()

{

average=getsum()/3;

return average;

}

friend void main();

};

void main()

{

cout"请选择您需要的操作!"endl;

cout"操作:"endl;

cout"(0)数据录入"endl;

cout"(1)增加人员"endl;

cout"(2)删除人员"endl;

cout"(3)修改数据"endl;

cout"查询:"endl;

cout"(4)按总成绩查询"endl;

cout"(5)按姓名查询"endl;

cout"(6)输出所有学生的数据"endl;

cout"成绩名词"endl;

cout"(7)按总分查询排名"endl;

cout"(8)按语文查询排名"endl;

cout"(9)按数学查询排名"endl;

cout"(y)按英语查询排名"endl;

cout"选择相关操作请输入相对的括号里的阿拉伯数字!"endl;

char p;char w;

stu *s[50];

ofstream *file[50];

int i=0;

int j=0;

bool flag2=0;

do

{

cinp;

if((p='0'p='10'))

flag2=1;

else

cout"指令错误!请重新输入:"endl;

}while(flag2==0);

do{

switch(p)

{

case '0':

{

char c;

char name[20];double math,chinese,english;

do{

cout"请输入姓名"endl;

cinname;

cout"请输入数学成绩:"endl;

cinmath;

cout"请输入语文成绩:"endl;

cinchinese;

cout"请输入外语成绩:"endl;

cinenglish;

file[j]=new ofstream("d:\\document",ios::ate);

*file[j]"姓名"name"数学成绩"math"语文成绩"chinese"外语成绩"englishendl;

j++;

s[i]=new stu(name, math, chinese, english);

i++;

cout"数据录入成功,想继续录入吗(y/n)"endl;

cinc;

flag2=0;

do

{

if(c!='y'c!='n')

{

cout"指令错误!请重新输入!"endl;

cinc;

}

else

flag2=1;

}while(flag2==0);

}while(c=='y');

break;

}

case '4':

{

double t;char c;

do

{

int flag1=0;

cout"请输入你要查询学生的总成绩"endl;

cint;

for(int q=0;qi;q++)

{

if(s[q]-getsum()==t)

{

flag1=1;

cout"您要查询的学生是:"(*s[q]).nameendl;

}

}

if(flag1==0)

cout"对不起!您要查询的学生不存在!"endl;

cout"您想继续查询吗?(y/n)"endl;

cinc;

if(c!='y'c!='n')

{

cout"指令错误!请重新输入!"endl;

cinc;

}

}

while(c=='y');

break;

}

case '5':

{

char n[20];int j=0;char c;

do{

int flag=0;

cout"请输入你要查询的学生姓名"endl;

cinn;

for(int j=0;ji;j++)

{

if(strcmp(n,(*s[j]).name)==0)

{

flag=1;

cout"您要查询的学生是:"(*s[j]).nameendl;

cout(*s[j]).name"的总成绩成绩是"(*s[j]).getsum()endl"平均成绩是:"(*s[j]).getaver()endl;

}

}

if(flag==0)

cout"对不起!您要查询的学生不存在!"endl;

cout"您想继续查询吗?(y/n)"endl;

cinc;

if(c!='y'c!='n')

{

cout"指令错误!请重新输入!"endl;

cinc;

}

}

while(c=='y');

break;

}

case '1':

{

char name[20];double math,chinese,english;

char c;

do

{

cout"请输入您要增加的学生的姓名:"endl;

cinname;

cout"请输入数学成绩:"endl;

cinmath;

cout"请输入语文成绩:"endl;

cinchinese;

cout"请输入外语成绩:"endl;

cinenglish;

file[j]=new ofstream("d:\\document",ios::ate);

*file[j]"姓名"name"数学成绩"math"语文成绩"chinese"外语成绩"englishendl;

j++;

s[i]=new stu(name, math, chinese, english);

i++;

cout"数据录入成功,想继续录入吗(y/n)"endl;

cinc;

if(c!='y'c!='n')

{

cout"指令错误!请重新输入!"endl;

cinc;

}

}while(c=='y');

break;

}

case '2':

{

char name[20];bool flag3=0;char c;

do{

cout"请输入您要删除的学生姓名:"endl;

cinname;

for(int h=0;hi;h++)

{

if(strcmp(name,s[h]-name)==0)

{

flag3=1;

i--;

do{

s[h]=s[h+1];

h++;

}while(h=i);

}

}

if(flag3==0)

cout"您要求删除的对象本来就不存在!请检查输入的正确性!";

cout"要继续删除吗?(y/n)"endl;

cinc;

if(c!='y'c!='n')

{

cout"指令错误!请重新输入!"endl;

cinc;

}

}while(c=='y');

break;

}

case '3':

{

char name[20];double mat,chin,eng;flag2=0;

char c;

do

{

cout"请输入您要修改的学生的姓名:"endl;

cinname;

for(int h=0;hi;h++)

{

if(strcmp(name,s[h]-name)==0)

{

flag2=1;

cout"请输入新的数学成绩:"endl;

cinmat;

cout"请输入新的语文成绩:"endl;

cinchin;

cout"请输入新的外语成绩:"endl;

cineng;

s[h]-chinese=chin;

s[h]-math=mat;

s[h]-english=eng;

cout"数据修改成功!";

}

}

if(flag2==0)

{

cout"您要修改的学生本来就不存在!请检查重新输入!"endl;

}

cout"想继续修改吗(y/n)"endl;

cinc;

if(c!='y'c!='n')

{

cout"指令错误!请重新输入!"endl;

cinc;

}

}while(c=='y');

break;

}

case '6':

{

cout"本系统所有学生数据如下:"endl;

if(i==0)

cout"管理系统中没有录入数据或者数据已经被删除!"endl;

for(int k=0;ki;k++)

{

coutk+1" ""姓名:"" "s[k]-name

"语文:"" "s[k]-chinese"数学:"" "s[k]-math

"外语:"" "s[k]-english"总分:"" "(*s[k]).getsum()

"平均分:"" "(*s[k]).getaver()endl;

}

break;

}

case '7':

{

int t;stu b;

cout"本系统所以学生排名如下:"endl;

for(int x=0;xi-1;x++)

{

t=x;

for(int y=x+1;yi;y++)

{

if((s[t]-getsum())(s[y]-getsum()))

t=y;

if(t!=x)

{

b=*s[x];

*s[x]=*s[t];

*s[t]=b;

}

}

}

if(i==0)

cout"管理系统中没有录入数据或者数据已经被删除!";

for(int k=0;ki;k++)

{

coutk+1" ""姓名:"" "s[k]-name

"语文:"" "s[k]-chinese"数学:"" "s[k]-math

"外语:"" "s[k]-english"总分:"" "s[k]-getsum()

"平均分:"" "s[k]-getaver()endl;

}

break;

}

case '8':

{

int t;stu b;

cout"本系统所以学生语文排名如下:"endl;

for(int x=0;xi-1;x++)

{

t=x;

for(int y=x+1;yi;y++)

{

if((s[t]-chinese)(s[y]-chinese))

t=y;

if(t!=x)

{

b=*s[t];

*s[t]=*s[x];

*s[x]=b;

}

}

}

if(i==0)

cout"管理系统中没有录入数据或者数据已经被删除!";

for(int k=0;ki;k++)

{

coutk+1" ""姓名:"" "s[k]-name

"语文:"" "s[k]-chinese"数学:"" "s[k]-math

"外语:"" "s[k]-english"总分:"" "s[k]-getsum()

"平均分:"" "s[k]-getaver()endl;

}

break;

}

case '9':

{

int t;stu b;

cout"本系统所以学生数学排名如下:"endl;

for(int x=0;xi-1;x++)

{

t=x;

for(int y=x+1;yi;y++)

{

if((s[t]-math)(s[y]-math))

t=y;

if(t!=x)

{

b=*s[t];

*s[t]=*s[x];

*s[x]=b;

}

}

}

if(i==0)

cout"管理系统中没有录入数据或者数据已经被删除!";

for(int k=0;ki;k++)

{

coutk+1" ""姓名:"" "s[k]-name

"语文:"" "s[k]-chinese"数学:"" "s[k]-math

"外语:"" "s[k]-english"总分:"" "s[k]-getsum()

"平均分:"" "s[k]-getaver()endl;

}

break;

}

case 'y':

{

int t;stu b;

cout"本系统所以学生英语排名如下:"endl;

for(int x=0;xi-1;x++)

{

t=x;

for(int y=x+1;yi;y++)

{

if((s[t]-english)(s[y]-english))

t=y;

if(t!=x)

{

b=*s[t];

*s[t]=*s[x];

*s[x]=b;

}

}

}

if(i==0)

cout"管理系统中没有录入数据或者数据已经被删除!";

for(int k=0;ki;k++)

{

coutk+1" ""姓名:"" "s[k]-name

"语文:"" "s[k]-chinese"数学:"" "s[k]-math

"外语:"" "s[k]-english"总分:"" "s[k]-getsum()

"平均分:"" "s[k]-getaver()endl;

}

}

break;

}

cout"您想继续进行其他操作吗?(y/n)"endl;

bool flag4=0;

do

{

cinw;

if(w!='y'w!='n')

cout"指令错误!请重新输入!"endl;

else

flag4=1;

}while(flag4==0);

if(w=='y')

cout"请输入操作代码(0 录入/4 按总分查询/5 按姓名查询/1 增加人员/2 删除人员/3 修改数据/6 显示所有成员数据/7 按总分排名/8 按语文排名/9按数学排名/y按英语排名)"endl;

cinp;

}while(w=='y');

for(int x=0;xi;x++)

{

delete s[x];

cout"delete all members!"endl;

}

}

c语言学生选修课程管理系统

#include stdio.h

#include stdlib.h

#include string.hstruct 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;iNumber;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;iNumber;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;iNumber;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;iNumber;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;iNumber;i++)

{

if (st[i].score60)

{

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;iNumber-1;i++)

{

for(j=i;jNumber-1;j++)

{

if(st[j].scorest[j+1].score)

{

temp=st[j];

st[j]=st[j+1];

st[j+1]=temp;

}

}

}

printf("你想输出前几名的成绩:");

scanf("%d",wantNUmber);

if (wantNUmberNumber)

{

wantNUmber=Number;

} printf("\t姓名\t学号\t成绩\n");

for(i=0;iwantNUmber;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;iNumber;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;iNumber;i++)

{

if (strcmp(name,st[i].name)==0) //如果查找到就删除

{

for (j=i;jNumber-1;j++)

{

st[j]=st[j+1];

}

Number--;

}

} //将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了

fp=fopen("C://student.dat","wb");

for (i=0;iNumber;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;iNumber;i++)

{

if (strcmp(id,st[i].ID)==0) //如果查找到就删除

{

for (j=i;jNumber-1;j++)

{

st[j]=st[j+1];

}

Number--;

}

}

//将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了

fp=fopen("C://student.dat","wb");

for (i=0;iNumber;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;iNumber;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;iNumber;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;iNumber;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;inumberTemp;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");

}运行成功,请你下去后慢慢研究下这个程序,很简单的,祝你成功!~

求采纳为满意回答。

关于学生选课管理系统源代码和学生选修课程系统源代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/15758.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载