当前位置:编程学习 > C/C++ >>

C语言 学生成绩管理系统 求高手帮忙按要求做一个在线等!

int main(){ list *p;       while(1){printf("\n");printf("      ┏━━━━━━━━━━━━━━━━━┓\n");printf("      ┃            成绩管理系统          ┃\n");printf("      ┃┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┃\n");printf("      ┃            1. 添加成绩           ┃\n");printf("      ┃            2. 显示成绩           ┃\n");printf("      ┃            3. 插入成绩           ┃\n");printf("      ┃           4. 删除成绩           ┃\n");printf("      ┃            5. 保存退出           ┃\n");  printf("      ┃            0. 退出程序           ┃\n");printf("      ┗━━━━━━━━━━━━━━━━━┛\n");printf(" 请输入你的选择:\n");scanf("%d",&k);switch(k)  { case 1:   case 2:    case 3:   case 4:   case 5:    case 0: exit(0);   default: printf("选择错误,重新选择\n");}} }
请在这个的基础上做1.添加成绩 这个选项要可以输入学生的成绩 而且可以连续输入多个学生的信息学生信息包括:学号 姓名 语文分数 数学分数 英语分数  并且在后面要算出此学生的总分(语文+数学+英语)2. 显示成绩 这个不用做了 我直接读取e:\\cj.txt所有内容就行了3. 插入成绩 按学号插入 例如输入了学生1的信息和学生3的信息 需要插入学生2的信息(插入后要按学号排序哦)4. 删除成绩 这个删除  输入学号可以显示这个学生的所有信息 然后询问是否删除 y/n5. 保存成绩 把输入的学生学号 姓名 各科成绩 总分 输出到E:\\.CJ.TXT0. 退出程序 这个不用说明了……
求高手帮忙写一个 在线等 希望可以快速的完成我自己写的有一个 但是总感觉不是那么的好 求高人帮忙做一个我参考做好了 可以运行继续追加分数!
补充:基础代码在下面 是图片的形式
要求太混乱了 

1.添加成绩 这个选项要可以输入学生的成绩 
而且可以连续输入多个学生的信息
学生信息包括:学号 姓名 语文分数 数学分数 英语分数  要算出此学生的总分(语文+数学+英语)
2. 显示成绩 这个不用做了 我直接读取e:\\cj.txt所有内容就行了
3. 插入成绩 按学号插入 例如输入了学生1的信息和学生3的信息 需要插入学生2的信息(插入后要按学号排序哦)
4. 删除成绩 这个删除  输入学号可以显示这个学生的所有信息 然后询问是否删除 y/n
5. 保存成绩 把输入的学生学号 姓名 各科成绩 总分 输出到E:\\.CJ.TXT
0. 退出程序 这个不用说明了……


求高手帮忙写一个 在线等 希望可以快速的完成我自己写的有一个 但是总感觉不是那么的好 求高人帮忙做一个我参考做好了 可以运行继续追加分数!
追问:代码截图
答案:写好了,但我是第一次写这个,可能有很多漏洞:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <malloc.h>
#include <windows.h>
typedef struct{
 int sci;
 char name[20];
 int chinese;
 int math;
 int english;
}Stu;
struct list{
 struct list * last;
 struct list * next;
 Stu student;
};
void add(struct list * one);   //添加
void ins(struct list * one);   //插入
void del(struct list * one);   //删除
void show(struct list * one);   //显示
void save(struct list * one);   //保存
struct list * is_be_sci(struct list * one,int sci); //检测是否存在该学号
struct list * endp(struct list * one);  //返回表的最后一项(即next为空)
struct list * init(struct list * one);  //初始化表
int main(void){
 struct list * p=0;
 p=init(p);
 while(1){
  int k;
  system("CLS");
  printf("\n");
  printf("      ┏━━━━━━━━━━━━━━━━━┓\n");
  printf("      ┃            成绩管理系统          ┃\n");
  printf("      ┃┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┃\n");
  printf("      ┃            1. 添加成绩           ┃\n");
  printf("      ┃            2. 显示成绩           ┃\n");
  printf("      ┃            3. 插入成绩           ┃\n");
  printf("      ┃           4. 删除成绩           ┃\n");
  printf("      ┃            5. 保存退出           ┃\n"); 
  printf("      ┃            0. 退出程序           ┃\n");
  printf("      ┗━━━━━━━━━━━━━━━━━┛\n");
  printf(" 请输入你的选择:\n");
  fflush(stdin);
  scanf("%d",&k);
  switch(k){
   case 1:add(p);break;
   case 2:show(p);break;
   case 3:ins(p);break;
   case 4:del(p);break;
   case 5:save(p);break;
   case 0: exit(0);break;
   default: printf("选择错误,重新选择\n");
  }
 }
}
struct list * is_be_sci(struct list * one,int sci){ //检测是否存在该学号
 struct list * end=endp(one);
 for(one=one->next;one!=(end->next);one=one->next)
  if(sci==one->student.sci)
   return one;
 return 0;
}
struct list * init(struct list * one){
 if(one==0){  //初始化表,表的首项不存储
  one=(struct list*)malloc(sizeof(struct list));
  one->last=one->next=0;
  one->student.chinese=one->student.english=
   one->student.math=one->student.sci=0;
  *(one->student.name)='\0';
 }
 return one;
}
struct list * endp(struct list * one){
 while(one->next)
  one=one->next;
 return one;
}
void add(struct list * one){
 struct list *last,*temp;
 int sci_te;
 system("CLS");
 printf("添加成绩\n可以连续输入,如果想退出,请输入'0'\n"
     "请依次输入:\n"
     "[学号] [学号姓名] [语文分数] [数学分数] [英语分数]\n");
 while(1){
  last=endp(one); //last指向one表中的最后一项
  temp=(struct list*)malloc(sizeof(struct list));
  last->next=temp;
  temp->last=last;
  temp->next=0;

  printf(":");
  scanf("%d",&sci_te);
  getchar();
  if((!(sci_te))||is_be_sci(one,sci_te)){
   //退出
   if(is_be_sci(one,sci_te)){
    printf("学号重复\n");
    getch();
   }
   temp->last->next=0;
   free(temp);
   break;
  }
  temp->student.sci=sci_te;
  scanf("%s %d %d %d",temp->student.name,
   &temp->student.chinese,&temp->student.math,&temp->student.english);
  getchar();//'\n'
 }
}
void show(struct list * one){  //显示
 struct list * end=endp(one);
 system("CLS");
 printf("录入的学生:\n"
     "[学号] [  学  号  姓  名  ]  [语文] [数学] [英语] [总分]\n");
 for(one=one->next;one!=(end->next);one=one->next){
  printf(" %-4d   %-18s    %-4d   %-4d   %-4d   %-4d \n",one->student.sci,one->student.name,
   one->student.chinese,one->student.math,one->student.english,
   one->student.chinese+one->student.math+one->student.english);
 }
 getch();
}

void ins(struct list * one){
 struct list * temp=(struct list*)malloc(sizeof(struct list));
 struct list * end=endp(one);
 system("CLS");
 show(one);
 printf("请依次输入插入的信息\n"
     "[学号] [学号姓名] [语文分数] [数学分数] [英语分数]\n:");
 scanf("%d %s %d %d %d",&temp->student.sci,temp->student.name,
   &temp->student.chinese,&temp->student.math,&temp->student.english);
 getchar();
 if(is_be_sci(one,temp->student.sci)){
   printf("学号重复\n",is_be_sci(one,temp->student.sci)->student.sci);
   getch();
   return;
 }
 for(one=one->next;one!=(end->next);one=one->next){
  if(one->student.sci > temp->student.sci){
   temp->last=one->last;
   temp->next=one;
   one->last->next=temp;
   one->last=temp;
   return;
  }
 }
 //最后
 temp->last=end;
 end->next=temp;
 temp->next=0;
}
void del(struct list * one){   //删除
 int sci;
 struct list * on=one;
 system("CLS");
 show(one);
 printf("删除哪位同学(学号):");
 scanf("%d",&sci);
 getchar();
 struct list *end=endp(one);
 for(one=one->next;one!=(end->next);one=one->next){
  if(one->student.sci==sci){
   if(one==endp(on)){
    one->last->next=0;
    free(one);
    return;
   }

上一个:什么是C语言和java语言详细说了 (闲者的不要乱发)
下一个:Matlab,visual foxpro,pascal和C语言各自的用处以及横向比较

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,