用C语言编一个简易学生成绩管理系统,只要求能输入学生姓名学号和3科成绩,显示这些信息,成绩排序,

作者&投稿:曲安 (若有异议请与网页底部的电邮联系)
用C语言编程实现简易的学生成绩管理系统.~

#include#include#include#include#include#define LEN sizeof(struct student)#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf
"#define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sumstruct student/*定义学生成绩结构体*/{ int num;/*学号*/ char name[15];/*姓名*/ double elec;/*选修课*/ double expe;/*实验课*/ double requ;/*必修课*/ double sum;/*总分*/};struct student stu[50];/*定义结构体数组*/void in();/*录入学生成绩信息*/void show();/*显示学生信息*/void order();/*按总分排序*/void del();/*删除学生成绩信息*/void modify();/*修改学生成绩信息*/void menu();/*主菜单*/void insert();/*插入学生信息*/void total();/*计算总人数*/void search();/*查找学生信息*/void main()/*主函数*/{ int n; menu(); scanf("%d",&n);/*输入选择功能的编号*/ while(n) { switch(n) { case 1: in();break; case 2: search();break; case 3: del();break; case 4: modify();break; case 5: insert();break; case 6: order();break; case 7: total();break; case 8: show();break; default:break; } getch(); menu();/*执行完功能再次显示菜单界面*/ scanf("%d",&n); }}void in()/*录入学生信息*/{ int i,m=0;/*m是记录的条数*/ char ch[2]; FILE *fp;/*定义文件指针*/ if((fp=fopen("data.txt","a+"))==NULL)/*打开指定文件*/ { printf("can not open
"); return; } while(!feof(fp)) { if(fread(&stu[m] ,LEN,1,fp)==1) m++;/*统计当前记录条数*/ } fclose(fp); if(m==0) printf("No record!
"); else { system("cls"); show();/*调用show函数,显示原有信息*/ } if((fp=fopen("data.txt","wb"))==NULL) { printf("can not open
"); return; } for(i=0;ii;j--) stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/ printf("now please input the new information.
"); printf("number:"); scanf("%d",&stu[i+1].num); for(k=0;k<m;k++) if(stu[k].num==stu[i+1].num) { printf("the number is existing,press any to continue!"); getch(); fclose(fp); return; } printf("name:"); scanf("%s",stu[i+1].name); printf("elective:"); scanf("%lf",&stu[i+1].elec); printf("experiment:"); scanf("%lf",&stu[i+1].expe); printf("required course:"); scanf("%lf",&stu[i+1].requ); stu[i+1].sum=stu[i+1].elec+stu[i+1].expe+stu[i+1].requ; if((fp=fopen("data.txt","wb"))==NULL) { printf("can not open
");return;} for(k=0;k<=m;k++) if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/ { printf("can not save!"); getch(); } fclose(fp); }void total(){ FILE *fp; int m=0; if((fp=fopen("data.txt","r+"))==NULL) { printf("can not open
");return;} while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++;/*统计记录个数即学生个数*/ if(m==0) {printf("no record!
");fclose(fp);return;} printf("the class are %d students!
",m);/*将统计的个数输出*/ fclose(fp); }

我只有差不多的 你可以自己改一改  /* ************************************************************************
  * Filename: student_system.c
  * Description:
  * Version: 1.0
  * Created: 2016年03月30日 17时27分11秒
  * Revision: none
  * Compiler: gcc
  * Author: YOUR NAME (),
  * Company:
  * ************************************************************************/

  #include
  #include
  typedef struct stu
  {
  int num;
  char name[20];
  int score;
  struct stu *next;
  }STU;
  void link_add_end(STU **head,STU *p_new)
  {
  p_new->next = *head;
  *head = p_new;
  }
  void link_print(STU **head)
  {
  if(*head == NULL)
  {
  return;
  }
  STU *p_mov = *head;
  while(p_mov != NULL)
  {
  printf("num==%d score==%d name==%s
",p_mov->num,p_mov->score,p_mov->name);
  p_mov=p_mov->next;
  }
  }
  void link_find_num(STU **head,int num)
  {
  STU *p_mov = *head;
  while(p_mov != NULL)
  {
  if(p_mov->num == num)
  {
  printf("num==%d score==%d name==%s
",p_mov->num,p_mov->score,p_mov->name);
  }
  p_mov=p_mov->next;
  }

  }
  void link_find_name(STU **head,char name[])
  {
  STU *p_mov = *head;
  while(p_mov != NULL)
  {
  if(strcmp(p_mov->name,name)==0)
  {
  printf("num==%d score==%d name==%s
",p_mov->num,p_mov->score,p_mov->name);
  }
  p_mov=p_mov->next;
  }

  }
  void link_delete_num(STU **head,int num)
  {
  STU *p_mov = *head;
  STU *p_sav = p_mov;
  while(p_mov != NULL)
  {
  if(p_mov->num == num)
  {
  if(p_mov == *head)
  {
  *head = p_mov->next;
  free(p_mov);
  }else if(p_mov->next == NULL)
  {
  p_sav->next=NULL;
  free(p_mov);
  }else
  {
  p_sav->next=p_mov->next;
  free(p_mov);
  }
  }
  p_sav=p_mov;
  p_mov=p_mov->next;
  }
  }
  void add(STU **head)
  {
  STU *p_new;
  p_new = (STU *)malloc(sizeof(STU));

  printf("请输入 学号 分数 姓名
");
  printf("例如 1 99 张三
");

  scanf("%d %d %s",&p_new->num,&p_new->score,p_new->name);
  getchar();
  link_add_end(head,p_new);

  }
  void prin(STU **head)
  {
  link_print(head);
  }
  void find(STU **head)
  {
  int num;
  char name[20];
  char cmd[20];
  printf("1 find for num
");
  printf("2 find for name
");

  gets(cmd);
  if(strcmp("1",cmd) == 0)
  {
  printf("please input find for num");
  scanf("%d",&num);
  getchar();
  link_find_num(head,num);
  }else if(strcmp("2",cmd)==0)
  {
  printf("please input find for name
");
  gets(name);
  link_find_name(head,name);
  }else
  {
  printf("error!!");
  return;
  }
  }
  void delete(STU **head)
  {
  int num;
  printf("please input delete for num
");
  scanf("%d",&num);
  getchar();
  link_delete_num(head,num);
  }
  void help()
  {
  printf("************************
");
  printf("*add add link *
");
  printf("*prt print link *
");
  printf("*fid find link *
");
  printf("*del delete link *
");
  printf("*help print help *
");
  printf("************************
");
  }

  int main(int argc, char *argv[])
  {
  char cmd_key[20];
  STU *head=NULL;
  int i;
  typedef void (*FUN)(STU **);
  typedef struct cmd_fun
  {
  char key_cmd[20];
  FUN fun;
  }CMD;
  CMD cmd[]={{"add",add},
  {"prt",prin},
  {"fid",find},
  {"del",delete}};
  help();
  while(1)
  {
  gets(cmd_key);
  if(strcmp(cmd_key,"help")==0)
  {
  help();
  }
  for(i=0; i<4; i++)
  {
  if(strcmp(cmd[i].key_cmd,cmd_key)==0)
  {
  cmd[i].fun(&head);
  }
  }
  }

  return 0;
  }

/*代码已经做到简洁扼要,按照你的要求,只有简单的几个功能*/
/*已经测试过,正常执行。希望能帮助你*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NAME_LEN 10
#define ID_LEN 11
#define REC 5 /*记录条数*/
/* 学生结构体*/
typedef struct student
{
char id[ID_LEN];/*学号*/
char name[NAME_LEN];/*姓名*/
int score[3];/*三科成绩*/
} Stu;
/*成绩输入*/
void input(Stu s[],int n)
{
int i;
printf("请输入学号姓名分数1 分数2 分数3\n");
for(i=0;i<n;i++)
scanf("%s%s%d%d%d",s[i].id,s[i].name,
&s[i].score[0],&s[i].score[1],&s[i].score[2]);
}
/*成绩输出*/
void print(Stu s[],int n)
{
int i;
printf("学号 姓名 分数1 分数2 分数3\n");
for(i=0;i<n;i++)
printf("%s %s %d %d %d\n",s[i].id,s[i].name,
s[i].score[0],s[i].score[1],s[i].score[2]);
}
/*按成绩排序*/
void sort(Stu s[],int n,int no)
{
int i,j;
Stu temp;
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(s[i].score[no-1]<s[j].score[no-1])
{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
/*成绩按学号查询成绩*/
void search(Stu s[], int n,char *id)
{
int i;
for(i=0; i<n; i++)
if(strcmp(s[i].id,id)==0)
{
printf("%s %s %d %d %d\n",s[i].id,s[i].name,
s[i].score[0],s[i].score[1],s[i].score[2]);
return;
}
printf("没找到相应记录\n");
}
void main()
{
Stu stu[REC];
int no,menu;
char id[ID_LEN];
printf("****************学生成绩管理*****************\n\n");
printf("1.成绩输入\n");
printf("2.显示所有学生成绩\n");
printf("3.按成绩排序输出\n");
printf("4.按学号查询成绩\n");
printf("0.退出程序\n");
while(1)
{
printf("\n请输入菜单号:");
scanf("%d",&menu);
switch(menu)
{
case 1:
input(stu,REC);
break;
case 2:
print(stu,REC);
break;
case 3:
printf("输入要排序的分数号:");
scanf("%d",&no);
sort(stu,REC,no);
print(stu,REC);
break;
case 4:
printf("输入要查询的学号:");
scanf("%s",id);
search(stu,REC,id);
break;
case 0:
exit(0);
default:
printf("菜单号输入错误\n");
break;
}
}
}

这个虽然说写起来并不费脑子,但是太费时间了,直接给你推荐一本书,图书馆应当能找到;书后面有一个c++写的学生管理系统,功能还不错,大致根据你的需要修改一下,把没用的功能去掉就行了,如何

这个我以前写过,C语言的忘了,用C++编的就有,要不要?先让我找找,找到再发


怎么自学c语言,需要怎么学习?
学习中的困难莫过于一节一节的台阶,虽然台阶很陡,但只要一步一个脚印地踏,攀登一层一层的台阶,才能实现学习的最高理想。C语言学不会怎么办?我大一的时候也需要学C语言,C语言自学方法有很多,下面是我的建议。1.首先应该记住基础知识点,如数组,结构体,指针等相关内容,如果在编程过程中遇到...

小丽同学利用一根吸管制作一个简易密度计。
1、下端 下端配螺丝帽 2、不变 越长 3、ρ水sHg=ρ液ghs s是管的横截面积h = ρ水H\/ ρ液 4、增大配重,在不同密度的液体中浸没的高度差才大 用细管,同样的浸没体积变化才会有较大的高度变化,分度值才可以标的更小 ...

第一门编程语言学什么(编程第一语言是什么)
编程初学者先学课程如下:C语言对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。编程入门一般先学:C语言或者是Python。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的...

c语言软件哪个好用
就算用手机也能够完成C语言的编写以及编译,运行一些简单的小软件,还可以直接自己动手写软件,大量的教程帮助你快速了解知识。3、《C语言编译器IDE》在电脑上完成的操作在手机上一样也可以,看似小巧但其实功能非常全面,用户可以学习一些C语言的基础,了解一些进阶的层面,还能看各种大神的实操演练,每一...

学编程先学什么基础知识?
4、编程入门一般先学:C语言或者是Python。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。5、编程入门先学什么编程入门先学C语言或者python。如果你想在编程的道路上深耕的话,学好数学是充分必要条件,它决定了一个程序员未来的发展...

一个同学用均匀的木棒做了一个简易天平。
b,开始平衡,有m物*L左=M砝*L右 ,后面兑换,(M砝+m砝)*L左=m物*L右,随便代入就可以得到

我在家弄了一个简易实验室,做简单的化学实验怎么翻译呢?
I built a simple lab at home and do some chemical experiments.

c++自学需要多久?
一般学c语言要多少天???1、学习C语言要一个月左右时间。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。2、如果之前从未接触过编程语言,那么只要有兴趣,肯钻研,方法得当,入门也需要几个月。推荐入门书籍《C程序设计...

求一个简易的科学小发明,或小制作,要简易,不过也不要太没新意,谢谢_百 ...
先把香皂切碎后放在罐里,盛上适量的水后把杯子放在炉上加热,等香皂融化,将白纸裁成火柴盒大小,一张张涂透皂液,再取出阴干就成了香皂纸。3、自制热气球 1.首先我们用软纸裁出6~8个叶状的纸片。2.将它们对折并用胶水将它们的边粘在一起作成一个气球。3.用胶带将四根连线粘到气球底部。用...

c语言与java哪个难学?
从学习的角度来看,C语言和Java都有各自的特点和难点。但从整体上来说,C语言相对于Java更加基础和简单,Java则更为高级和具有更丰富的功能。C语言是一种面向过程的编程语言,其特点是高效、简洁和跨平台。C语言的主要应用领域是底层开发,例如操作系统、嵌入式系统等。C语言的学习难点主要在于其对底层...

太平区14720789579: 编程如何用C语言编写一个学生成绩管理系统程序 -
褒胖瑞帝: 我们才做了这个作业... #include <malloc.h> #include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct scorenode) #define DEBUG #include <string.h> struct scorenode { int number;/*学号*/ char name[8];/*姓名*/ float cj1;/*成绩1*/ ...

太平区14720789579: 怎么用c语言编写一个学生成绩管理系统啊?急…… -
褒胖瑞帝: C语言课程设计报告-------学生成绩简单管理程序 一、系统菜单的主要功能 (1)输入若干条记录 (2)显示所有记录 (3)按学号排序 (4)插入一条记录 (5)按姓名查找,删除一条记录 (6)查找并显示一条记录 (7)输出统计信息 (新增)...

太平区14720789579: 用C语言编写一个学生成绩管理系统. -
褒胖瑞帝: #include<stdio.h> #include<stdlib.h> #include<malloc.h> #define A 10 //线性表初始分配量 #define B 10 //线性表每次增量量 #define C 2 typedef struct { int no; //学号 char name[10]; //姓名 float score[3]; //三门课的成绩 }Student; typedef struct ...

太平区14720789579: 求一个学生成绩管理系统的C语言代码!!急!! -
褒胖瑞帝: #includestruct student { char num[10];char name[20];char sex[5];float grade[7];float v;float sum;}stu[50]; int k=0;void input(); void output(); void search(); void average(); void sort(); void save(); void main() { int a;do{printf("\n\n **************...

太平区14720789579: 如何用C语言编一个学生成绩管理系统 -
褒胖瑞帝: #include "stdio.h"#include "stdlib.h"#include "string.h"#define NULL 0 int shoudsave=0; struct student { char num[10]; char name[20]; char sex[4]; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime[10]; }; typedef struct node { ...

太平区14720789579: 求一个简单c语言学生成绩管理系统 -
褒胖瑞帝: #include<iostream>#include<string.h> using namespace std;#define N 5//考试的科目数#define M 10//全班的学生的数目 struct student { char name[20]; int score[N]; int all; float aver; }stu[M]; void Creat(student *stu) { int i,n,j; printf("请依次输入学...

太平区14720789579: 求用C语言中最简单的代码编写学生成绩管理系统 -
褒胖瑞帝: #include "View.h" //导入视图类 #include//导入标准IO库 int main(void) { View NewView; //显示类 NewView.SetSoftVersion("1.01"); //设置版本 int nState = 0; while(1) { switch(NewView.GetnActionState()) { case 0: return 0; } 这是我在很...

太平区14720789579: c语言编写学生成绩管理系统 -
褒胖瑞帝: #include <stdio.h> void main() { /*输入资料*/ int student[5][4],i; for (i=0; i<=4; i++); scanf("%d,%d,%d \n",student[i][0],student[i][1],student[i][2],student[i][3]) /*平均分*/ for (i=0; i<=4; i++); printf("%f",(float)((student[i][1]+student[i][2]+student[i][3]...

太平区14720789579: C语言设计简单的成绩管理系统 -
褒胖瑞帝: vc++ 6.0平台编译#include<stdio.h>#include<string.h>#define N 100 struct student { char name[N]; int math; int en; int ch; int av; }stu[N]; void main() { int i,j,k; char a; char n[N]; struct student *p; struct student temp; p=stu; for(i=0;i<101;i++,p++) { ...

太平区14720789579: 用C语言编辑学生成绩管理系统
褒胖瑞帝: #include <stdio.h>#define SWN 3 /* 课程数 */#define NAMELEN 20 /* 姓名最大字符数 */#define CODELEN 10 /* 学号最大字符数 */#define FNAMELEN 80 /* 文件名最大字符数 */#define BUFLEN 80 /* 缓冲区最大字符数 *//* 课程名称表 */char ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网