用c 写学生信息管理系统,怎样用c语言编写一个学生信息管理系统
来源:整理 编辑:黑码技术 2024-12-22 08:59:12
本文目录一览
1,怎样用c语言编写一个学生信息管理系统
不知道你要做这个用来干什么,如果是只是练习,你最好不要用C做,因为C更适合做系统级开发,像这种应用软件的开发最好还是使用JAVA,.NET等等,
2,C语言设计学生管理系统
http://wenwen.sogou.com/z/q705807766.htm
3,C语言编写一个学生信息管理系统求原代码谢谢
#include <iostream>
#include "conio.h"
#include "malloc.h"
#include "windows.h"
using namespace std;
typedef struct
class StuList
void Detele(int t)
}
bool Empty()
}
StuElem st1;
st1.stunum=0;
return st1;
}
void display()
void input(StuElem *pElem);
StuList Stul;
int main()
int num=0;
cout<<"请输入要获得成绩学生学号的信息"<<endl;
cin >>num;
sElem=Stul.GetItem(num);
cout<<sElem.name<<" "<<sElem.stunum<<" "<<sElem.score<<endl;
Sleep(2000);
Stul.display();
cout<<"请输入要删除成绩学生学号的信息"<<endl;
cin >>num;
Stul.Detele(num);
Sleep(2000);
Stul.display();
return 0;
}
void input(StuElem *pElem)

4,编程如何用C语言编写一个学生成绩管理系统程序
我们才做了这个作业。。。#include <malloc.h>#include <stdio.h>#include <stdlib.h>#define LEN sizeof(struct scorenode)#define DEBUG#include <string.h>struct scorenodeint number;/*学号*/char name[8];/*姓名*/float cj1;/*成绩1*/float cj2;/*成绩2*/float cj3;/*成绩3 */struct scorenode *next;};typedef struct scorenode score;int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*//*==============================================================================================*/score *creat(void)/*函数creat,功能:创建链表,此函数带回一个指向链表头的指针*/score*head;score *p1,*p2,*p3,*max;int i,j;float fen; char t[10];n=0; p1=p2=p3=(score *)malloc(LEN);head=p3; /*申请一个新单元*/ printf("请输入学生资料,输0退出!\n");repeat1: printf("请输入学生学号(学号应大于0):");/*输入大于0的学号*/ scanf("%d",&p1->number); while(p1->number<0) getchar(); printf("输入错误,请重新输入学生学号:"); scanf("%d",&p1->number); } /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/if(p1->number==0) goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/else p3=head; if(n>0) for(i=0;i<n;i++) if(p1->number!=p3->number) p3=p3->next; else printf("学号重复,请重输!\n"); goto repeat1; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ } } } } printf("请输入学生姓名:"); scanf("%s",&p1->name); /*输入学生姓名*/ printf("请输入cj1(0~100):"); /*输入cj1,成绩应在0-100*/ scanf("%f",&p1->cj1); while(p1->cj1<0||p1->cj1>100) getchar();printf("输入错误,请重新输入cj1"); /*输入错误,重新输入成绩1*/ scanf("%f",&p1->cj1);} printf("请输入cj2(0~100):"); /*输入cj2,成绩应在0-100*/ scanf("%f",&p1->cj2); while(p1->cj2<0||p1->cj2>100)getchar();printf("输入错误,请重新输入cj2"); /*输入错误,重新输入cj2直到正确为止*/ scanf("%f",&p1->cj2);} printf("请输入cj3(0~100):");/*输入cj3,成绩应在0-100*/ scanf("%f",&p1->cj3); while(p1->cj3<0||p1->cj3>100)getchar();printf("输入错误,请重新输入cj3"); scanf("%f",&p1->cj3);} /*输入错误,重新输入cj3直到正确为止*/ head=NULL;while(p1->number!=0) n=n+1;if(n==1) head=p1;else p2->next=p1; p2=p1; p1=(score *)malloc(LEN); printf("请输入学生资料,输0退出!\n");repeat2:printf("请输入学生学号(学号应大于0):"); scanf("%d",&p1->number); /*输入学号,学号应大于0*/ while(p1->number<0) getchar(); printf("输入错误,请重新输入学生学号:"); scanf("%d",&p1->number); } /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/if(p1->number==0) goto end; /*当输入的学号为0时,转到末尾,结束创建链表*/elsep3=head;if(n>0) for(i=0;i<n;i++) if(p1->number!=p3->number) p3=p3->next; else printf("学号重复,请重输!\n"); goto repeat2; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ } } } }printf("请输入学生姓名:"); scanf("%s",&p1->name);/*输入学生姓名*/ printf("请输入cj1(0~100):"); scanf("%f",&p1->cj1);/*输入cj1,成绩应在0-100*/ while(p1->cj1<0||p1->cj1>100) getchar(); printf("输入错误,请重新输入cj1"); scanf("%f",&p1->cj1);}/*输入错误,重新输入cj1直到正确为止*/ printf("请输入cj2(0~100):"); scanf("%f",&p1->cj2);/*输入cj2,成绩应在0-100*/ while(p1->cj2<0||p1->cj2>100) getchar(); printf("输入错误,请重新输入cj2"); scanf("%f",&p1->cj2);} /*输入错误,重新输入cj2绩直到正确为止*/ printf("请输入cj3(0~100):"); scanf("%f",&p1->cj3);/*输入cj3,成绩应在0-100*/ while(p1->cj3<0||p1->cj3>100) getchar(); printf("输入错误,请重新输入cj3"); scanf("%f",&p1->cj3);} /*输入错误,重新输入cj3直到正确为止*/ }end: p1=head; p3=p1;for(i=1;i<n;i++) for(j=i+1;j<=n;j++) max=p1; p1=p1->next; if(max->number>p1->number) k=max->number; max->number=p1->number; p1->number=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/ strcpy(t,max->name); strcpy(max->name,p1->name); strcpy(p1->name,t); /*交换前后结点中的姓名,使之与学号相匹配*/ fen=max->cj1; max->cj1=p1->cj1; p1->cj1=fen; /*交换前后结点中的cj1,使之与学号相匹配*/ fen=max->cj2; max->cj2=p1->cj2; p1->cj2=fen; /*交换前后结点中的cj2,使之与学号相匹配*/ fen=max->cj3; max->cj3=p1->cj3; p1->cj3=fen; /*交换前后结点中的cj3,使之与学号相匹配*/ } } max=head;p1=head;/*重新使max,p指向链表头*/} p2->next=NULL;/*链表结尾*/ printf("输入的学生数为:%d个!\n",n); return(head);}score *add(score *head,score *stu)/*函数add,功能:追加学生资料,并且将所有学生资料按学号排序*/score *p0,*p1,*p2,*p3,*max; int i,j;float fen; char t[10];p3=stu=(score *)malloc(LEN);/*开辟一个新单元*/ printf("\n输入要增加的学生的资料!");repeat4: printf("请输入学生学号(学号应大于0):");scanf("%d",&stu->number); /*输入学号,学号应大于0*/ while(stu->number<0) getchar(); printf("输入错误,请重新输入学生学号:"); scanf("%d",&stu->number);} /*输入错误,重新输入学号*/ /******************************************************/ if(stu->number==0) goto end2;/*当输入的学号为0时,转到末尾,结束追加*/else p3=head;if(n>0) p3=p3->next; else printf("学号重复,请重输!\n"); goto repeat4; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ } } } } /******************************************************/ printf("输入学生姓名:"); scanf("%s",stu->name); /*输入学生姓名*/ printf("请输入cj1(0~100):"); scanf("%f",&stu->cj1); /*输入cj1,成绩应在0-100*/ while(stu->cj1<0||stu->cj1>100) printf("输入错误,请重新输入cj1"); scanf("%f",&stu->cj1);} /*输入错误,重新输入cj1直到正确为止*/ printf("请输入cj2(0~100):"); scanf("%f",&stu->cj2);/*输入cj2,成绩应在0-100*/ while(stu->cj2<0||stu->cj2>100)getchar(); printf("输入错误,请重新输入cj2"); scanf("%f",&stu->cj2);}/*输入错误,重新输入cj2直到正确为止*/ printf("请输入cj3(0~100):"); scanf("%f",&stu->cj3);/*输入cj3,成绩应在0-100*/ while(stu->cj3<0||stu->cj3>100) getchar(); printf("输入错误,请重新输入cj3"); scanf("%f",&stu->cj3);}/*输入错误,重新输入cj3直到正确为止*/p1=head;p0=stu;if(head==NULL)else/*原来链表不为空*/if(p1->next==NULL)/*找到原来链表的末尾*/ p1->next=p0; p0->next=NULL;/*将它与新开单元相连接*/} else while(p1->next!=NULL)/*还没找到末尾,继续找*/ p2=p1;p1=p1->next; } p1->next=p0; p0->next=NULL;}}n=n+1;p1=head;p0=stu;for(i=1;i<n;i++) for(j=i+1;j<=n;j++) max=p1; p1=p1->next; if(max->number>p1->number) k=max->number; max->number=p1->number; p1->number=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/ strcpy(t,max->name); strcpy(max->name,p1->name); strcpy(p1->name,t); /*交换前后结点中的姓名,使之与学号相匹配*/ fen=max->cj1; max->cj1=p1->cj1; p1->cj1=fen; /*交换前后结点中的cj1,使之与学号相匹配*/ fen=max->cj2; max->cj2=p1->cj2; p1->cj2=fen; /*交换前后结点中的cj2绩,使之与学号相匹配*/ fen=max->cj3; max->cj3=p1->cj3; p1->cj3=fen; /*交换前后结点中的cj3,使之与学号相匹配*/ } } max=head;p1=head;/*重新使max,p指向链表头*/} end2:printf("现在的学生数为:%d个!\n",n);return(head);}/*==============================================================================================*/score *search(score *head)/*函数search,功能:查询学生成绩*/score *p1,*p2;printf("输入要查询的学生的学号,");scanf("%d",&number);while(number!=0) if(head==NULL) printf("-----------------------------------------\n"); printf("|学号\t|姓名\t|cj1\t|cj2\t|cj3\t|\n"); printf("-----------------------------------------\n");/*打印表格域*/ p1=head; while(number!=p1->number&&p1->next!=NULL) if(number==p1->number) printf("-----------------------------------------\n");}/*打印表格域*/ else printf("%d不存在此学生!\n",number); printf("输入要查询的学生的学号,"); scanf("%d",&number);}printf("已经退出了!\n");return(head);}/*==============================================================================================*/score *del(score *head)/*函数del,功能:删除学生资料*/score *p1,*p2;int number;printf("输入要删除的学生的学号(输入0时退出):");scanf("%d",&number);getchar();while(number!=0)/*输入学号为0时退出*/if(head==NULL) printf("\n没有任何学生资料!\n"); return(head);}p1=head;while(number!=p1->number&&p1->next!=NULL) /*p1指向的不是所要找的首结点,并且后面还有结点*/ p2=p1;p1=p1->next;} /*p1后移一个结点*/if(number==p1->number) /*找到了*/ if(p1==head) head=p1->next; /*若p1指向的是首结点,把地二个结点地址赋予head*/ else p2->next=p1->next; /*否则将下一个结点地址 赋给前一结点地址*/ printf("已经删除:%d\n",number);n=n-1;}else printf("%d不存在此学生!\n",number);/*找不到该结点*/printf("输入要删除的学生的学号:");scanf("%d",&number);getchar();}#ifdef DEBUG printf("已经退出了!\n");#endifprintf("现在的学生数为:%d个!\n",n);return(head);} /*==============================================================================================*/score *statistics(score *head)/*函数statistics,功能:统计学生成绩*/float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;score *p;int x,y=0,i=0; p=head; printf("1个人总分和平均分\t2单科平均分\t3总分最高分\t4总分最低分\n"); scanf("%d",&x); getchar();switch(x)/*用switch语句实现功能选择*/case 1: if(head==NULL) else printf("---------------------------------------------------------\n"); printf("|学号\t|姓名\t|cj1\t|cj2\t|cj3\t|总分\t|平均分\t|\n"); printf("---------------------------------------------------------\n");/*打印表格域*/ while(p!=NULL) sum1=p->cj1+p->cj2+p->cj3; /*计算个人总分*/ ave1=sum1/3;/*计算个人平均分*/ printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->cj1,p->cj2,p->cj3,sum1,ave1); /*打印结果*/ printf("---------------------------------------------------------\n");/*打印表格域*/ p=p->next;} }return(head); break;case 2: if(head==NULL) while(p!=NULL) sum1=sum1+p->cj1; sum2=sum2+p->cj2; sum3=sum3+p->cj3;/*计算总分*/ y=y+1; ave1=sum1/y; ave2=sum2/y; ave3=sum3/y;/*计算平均分*/ p=p->next;/*使p指向下一个结点*/ } printf("cj1平均分是%.1f\n",ave1); printf("cj2平均分是%.1f\n",ave2); printf("cj3平均分是%.1f\n",ave3);/*打印结果*/ return(head); break;case 3: if(head==NULL) max=p->cj1+p->cj2+p->cj3; while(i<n) i=i+1; sum1=p->cj1+p->cj2+p->cj3; /*计算个人总分*/ if(max<sum1)max=sum1;p=p->next;} printf("总分最高分:%.1f",max); printf("\n"); return(head); break;case 4: if(head==NULL) while(p!=NULL) min=p->cj1+p->cj2+p->cj3; while(p!=NULL) if(min>sum2) min=sum2; p=p->next; } } printf("总分最低分:%.1f",min); printf("\n"); return(head); break;default :printf("输入错误,请重试!\n");}return(head);}/*==============================================================================================*/int save(score *p1) /*函数save,功能:保存学生的资料*/FILE *fp;char filepn[20];/*用来存放文件保存路径以及文件名*/printf("请输入文件路径及文件名:");scanf("%s",filepn);if((fp=fopen(filepn,"w+"))==NULL)printf("不能打开文件!\n");return 0;} fprintf(fp," 学生成绩管理系统 \n"); fprintf(fp,"-------------------------------------------------------\n");fprintf(fp,"| 学号\t| 姓名\t| cj1\t| cj2\t| cj3\t|\n"); fprintf(fp,"-------------------------------------------------------\n");/*打印表格域*/while(p1!=NULL)fprintf(fp,"%d\t%s\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->cj1,p1->cj2,p1->cj3);p1=p1->next;/*下移一个结点*/}fclose(fp);printf("文件已经保存!\n");return 0;}int menu()/*函数menu,功能:菜单选择界面*/int i,k;printf("\t\t\t\t学生成绩管理系统\n"); for(i=0;i<80;i++) printf("*");printf("\t\t1创建资料\t\t\t2查询成绩\t\t\n");printf("\t\t3删除资料\t\t\t4追加资料\t\t\n"); printf("\t\t5统计成绩\t\t\t6保存资料\t\t\n");/*菜单选择界面*/ for(i=0;i<80;i++) printf("*");printf("请选择您所要的操作(选择(0)退出):");scanf("%d",&k);/*选择操作*/ getchar();return (k);}/*==============================================================================================*/main() /*主函数main,功能:通过调用creat,search,del,add,print,ststistics,save,taxis等函数,实现学生成绩查询系统功能*/score *head=0,*stu=0;while(1)k=menu();switch(k)/*用switch语句实现功能选择*/case 1: head=creat();break;/*调用创建链表函数*/case 2: head=search(head);break;/*调用查询函数*/case 3: head=del(head); break;/*调用删除函数*/case 4: head=add(head,stu);break;/*调用追加函数*/case 5: statistics(head); break;/*调用统计函数*/case 6: save(head);break;/*调用保存函数*/case 0: exit(0);/*退出系统,返回主界面*/default: printf("输入错误,请重试!\n"); }}}
文章TAG:
用c 写学生信息管理系统 怎样用c语言编写一个学生信息管理系统