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语言各自的用处以及横向比较