c语言课程管理系统(c语言课程管理系统代码)
本文目录一览:
c语言课程管理系统
#include stdio.h
#include stdlib.h
#include string.h
typedef struct subjects
{
int num;
char name[20];
char kind[10];
int stime;
int ttime;
int etime;
int score;
int term;
struct subjects *next;
}SUB;
SUB *create_form()
{
SUB *head,*tail,*p;
int num,stime,ttime;
int etime,score,term;
char name[20],kind[10];
int size=sizeof(SUB);
head=tail=NULL;
printf("输入选修课程信息:\n");
scanf("%d %s %s %d %d %d %d %d",num,name,kind,stime,ttime,etime,score,term);
while(num!=0){
p=(SUB *)malloc(size);
p-num=num;
strcpy(p-name,name);
strcpy(p-kind,kind);
p-stime=stime;
p-ttime=ttime;
p-etime=etime;
p-score=score;
p-term=term;
if(head==NULL)
head=p;
else
tail-next=p;
tail=p;
scanf("%d %s %s %d %d %d %d %d",num,name,kind,stime,ttime,etime,score,term);
}
tail-next=NULL;
return head;
}
void savefile(SUB *head)
{
SUB *p;
FILE *fp;
fp=fopen("subjects.txt","w");
fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期\n");
for(p=head;p;p=p-next)
fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p-num,p-name,p-kind,p-stime,p-ttime,p-etime,p-score,p-term);
fclose(fp);
}
void savefileadd(SUB *head)
{
SUB *p;
FILE *fp;
fp=fopen("subjectsadd.txt","w");
fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期\n");
for(p=head;p;p=p-next)
fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p-num,p-name,p-kind,p-stime,p-ttime,p-etime,p-score,p-term);
fclose(fp);
}
void savefiledel(SUB *head)
{
SUB *p;
FILE *fp;
fp=fopen("subjectsdel.txt","w");
fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期\n");
for(p=head;p;p=p-next)
fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p-num,p-name,p-kind,p-stime,p-ttime,p-etime,p-score,p-term);
fclose(fp);
}
void prin(SUB *head)
{
SUB *ptr;
if(head==NULL){
printf("没有此门课程记录!\n");
return;
}
printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n");
for(ptr=head;ptr;ptr=ptr-next)
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);
}
void search(SUB *head)
{
int a,num;
int t=1;
char type[10];
char ch='a',ch1;
SUB *ptr;
while(ch!=' '){
printf("若要按课程性质查找请输入1,若要按学分查找请输入2:\n");
scanf("%d",a);
switch(a){
case 1:printf("请输入要查找的课程的性质:\n");
scanf("%s",type);
printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n");
for(ptr=head;ptr;ptr=ptr-next)
if(strcmp(type,ptr-kind)==0){
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);
t=0;
}
if(t) printf("未找到!\n");
t=1;
break;
case 2:printf("输入要查找的课程的学分\n");
scanf("%d",num);
printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n");
for(ptr=head;ptr;ptr=ptr-next)
if(ptr-score==num){
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);
t=0;
}
if(t) printf("未找到!\n");
t=1;
}
printf("继续查找请按回车键,结束请按空格键:\n");
ch1=getchar(); //将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH,因此用CH1填补。
ch=getchar();
}
}
SUB *insert(SUB *head)
{
SUB *ptr,*ptr2,*subj;
int size=sizeof(SUB);
char ch='a',ch1;
while(ch!=' '){
subj=(SUB *)malloc(size);
ptr=subj;
printf("输入要插入的课程信息:\n");
scanf("%d%s%s%d%d%d%d%d",subj-num,subj-name,subj-kind,subj-stime,subj-ttime,subj-etime,subj-score,subj-term);
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;
}
}
printf("继续插入请按回车,结束请按空格:\n");
ch1=getchar(); //将回车键赋给CH1,否则subj-term输完后输入的回车键会赋给CH,因此用CH1填补。
ch=getchar();
}
return head;
}
SUB *del(SUB *head)
{
SUB *p1,*p2;
char ch='a',ch1;
int num;
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){
if(p2-num==num){
p1-next=p2-next;
free(p2);
}
else p1=p2;
p2=p1-next;
}
printf("继续删除请按回车,结束请按空格:\n");
ch1=getchar(); //将回车键赋给CH1,否则num输完后再输入的回车键会赋给CH,因此用CH1填补。
ch=getchar();
}
return head;
}
void choose(SUB *head)
{
SUB *p,*q;
int a[5];
int num,total=0,i=0,j;
printf("输入要选修的课程的编号,编号之间以空格分开,输完后以0结束\n");
scanf("%d",num);
while(num!=0){
for(p=head;p;p=p-next)
if(p-num==num){
total=total+p-score;
a[i]=num;
i++;
}
scanf("%d",num);
}
if(total60) printf("选修总学分未达到60,选修失败!\n");
else {
printf("选修成功!\n");
printf("您选修的课程为:\n");
for(j=0;ji;j++)
for(q=head;q;q=q-next)
if(q-num==a[j])
printf("%s ",q-name);
printf("\n");
printf("***********************************\n");
printf(" 作品 \n");
printf(" 作品 \n");
printf("***********************************\n");
}
}
void main()
{
SUB *head=create_form();
savefile(head);
prin(head);
search(head);
head=insert(head); //注意此处的必要性,函数insert的的返回值重新赋给head!
savefileadd(head);
printf("修改后的信息为:\n");
prin(head);
head=del(head); //注意此处的必要性,函数del的的返回值重新赋给head!
savefiledel(head);
printf("修改后的课程信息为:\n");
prin(head);
choose(head);
}
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");
}运行成功,请你下去后慢慢研究下这个程序,很简单的,祝你成功!~
求采纳为满意回答。
求用c语言编程课程管理系统
#include stdio.h
#define n 10
void main()
{
void f(int a[n],int m);
int i,m;
scanf("%d",m);
int a[n];
for(i=0;in;i++)
{
scanf("%d",a[i]);
}
f(a,m);
for(i=0;in;i++)
{
printf("%d ",a[i]);
}
}
void f(int a[n],int m)
{
int *p,i;
p=a;
for(i=n-1;i=0;i++)
{
*(p+i+m)=*(p+i);
}
for(i=n;in+m;i++)
{
*p++=*(p+i);
}
}
怎样做一个C语言课程信息管理系统
首先 要定义机构体
然后就是设计函数 也就是系统功能 录入 查询 删除 修改等
switch语句设计菜单
#include stdio.h
#include stdlib.h
#define NULL 0
typedef struct student
{
char clas[20];
char name[20];
char number[20];
int math;
int english;
int computer;
float sum;
float ave;
struct student *next;
}XSSJ;
void freerecord(XSSJ *p)
{
XSSJ *q;
while(p!=NULL)
{
q=p;
p=p-next;
free(q);
}
}
XSSJ *addrecord(XSSJ *p)
{
XSSJ head,*q;
head.next=p;
p=head;
while(p-next!=NULL)
p=p-next;
while(1)
{
char text[80];
q=(XSSJ *)malloc(sizeof(XSSJ));
if(q==NULL)
return(head.next);
q-next=NULL;
printf("\n请输入学生的班级、姓名、学号和数学、英语、计算机成绩:");
gets(text);
if(text[0]=='\0')
break;
sscanf(text,"%s%s%s%d%d%d",q-clas,q-name,q-number,q-math,q-english,q-computer);
p-next=q;
p=q;
}
return(head.next);
}
XSSJ *createrecord(XSSJ *p)
{
freerecord(p);
return(addrecord(NULL));
}
XSSJ *deleterecord(XSSJ *p)
{
char number[10];
XSSJ *q,head;
printf("\n请输入你要删除的学生学号:\n");
gets(number);
for(head.next=p,q=head;p!=NULL;p=p-next)
{
if(strcmp(p-number,number)!=0)
q=p;
else
{
q-next=p-next;
free(p);
printf("\n学号为%s的学生成绩已经删除。\n",number);
return(head.next);
}
}
printf("\n没有学号为%s的学生成绩。\n",number);
return(head.next);
}
void searchrecord(XSSJ *p)
{
char number[10];
printf("\n请输入你要查询的学生学号\n");
gets(number);
for(;p!=NULL;p=p-next)
{
if(strcmp(p-number,number)==0)
{
printf("\n班级%s\t姓名%s\t学号%s\t数学%d\t英语%d\t计算机%d\n",p-clas,p-name,p-number,p-math,p-english,p-computer);
}
}
printf("\n没有你要查询的成绩\n");
}
void displayrecord(XSSJ *p)
{
printf("\n班级\t姓名\t学号\t数学\t英语\t计算机\t\n");
for(;p!=NULL;p=p-next)
printf("\n%s\t%s\t%s\t%d\t%d\t%d\n",p-clas,p-name,p-number,p-math,p-english,p-computer);
printf("\n");
}
void displaymenu() //显示菜单
{
printf("\n\n______________菜单___________________\n");
printf("1:创建新纪录\t");
printf("2:添加新纪录\n");
printf("3:删除纪录 \t");
printf("4:查询纪录 \n");
printf("5:显示纪录 \t");
printf("0:退出系统 \n");
printf("\n请选择:");
}
int choiceitem(void)
{
int choice;
char line[80];
do
{
displaymenu();
gets(line);
choice=atoi(line);
}
while(choice0||choice6);
return(choice);
}
void main()
{
XSSJ *head=NULL;
int choice;
do
{
choice=choiceitem();
switch(choice)
{
case 1: head=createrecord(head);
break;
case 2: head=addrecord(head);
break;
case 3: head=deleterecord(head);
break;
case 4: searchrecord(head);
break;
case 5: displayrecord(head);
break;
}
}
while(choice!=0);
printf("\n\nEND!");
freerecord(head);
}
hhxy 11tx 06(这个是我的标 不是程序)
这个是我做的 没有名次排序的功能 我没有做出来呢 我也刚学这个 希望对你有帮助