数据结构课程设计(C语言),求高手帮忙,帮忙写下面题目的代码,有满意答案一定再加20分

学生成绩管理系统
[ 问题描述 ]
已知某学生成绩表中现有N位同学的成绩(要求各人数据不同),如:
学号 姓名 成绩
01101 李平 75
01202 王露 70
01205 张强 85
01118 曹雨 90
…… …… ……
现需要删除已转学的某位同学的成绩,同时添加某位同学的成绩(学号、姓名、课程、成绩自定),插入位置按姓名升序排列。
[ 基本要求 ]
(1)现有N位同学的数据要求从数据文件中读入,不用交互方式录入;
(2)拟删除同学的姓名及新添加同学的数据采用交互方式输入;
(3)删除及插入操作完毕,需将成绩表中的所有记录按姓名升序方式显示出来;
(4)将更新后的成绩表保存到另一个数据文件中;
(5)可以增加功能:如修改某位同学的成绩。

第1个回答  2010-12-22
我是初学者,写的代码不好,仅做参考。很多地方都没有达到要求。没怎么调试,可能会有bug,如果楼主修改不了,在下面回复就好。编了这个也不容易,没有其他更好答案,分就给我吧O(∩_∩)O~

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct Node
{
int iData;
Node *pNext;
}pNode;

void Message(int *M)
{
while(1)
{
printf("Please enter the number of person:/n"); //英文水平有限
scanf("%d", &M[0]);
printf("Please enter the number of who will be killed:/n");
scanf("%d", &M[1]);
if(M[0] < 2 || M[1] < 2)
printf("You entered the wrong number, please enter them again");
else
break;
}
srand((int) time(0));
M[2] = rand() % (M[0] - 1) + 1; //杀手位置随机产生
printf("**********************************************\n");
printf("A total of %d individuals\n",M[0]);
printf("Every %d locations to kill a person\n",M[1]);
printf("The killer is:%d \n", M[2]);
printf("**********************************************\n");
}
pNode *CreatChain(int *M)
{
int i = 0;
pNode *pHead,*pre, *cur;

pHead = (Node*)malloc(sizeof(Node));
if(M[2] != 1)
pHead->iData = 1;
else
pHead->iData = -1; //杀手的位置置-1
cur = pHead;
for (i = 2; i < M[0] + 1; i++) //创建循环链表
{
pre = (Node*)malloc(sizeof(Node));
if (i == M[2])
pre->iData = -1;
else
pre->iData = i;
pre->pNext = NULL;
cur->pNext = pre;
cur = pre;
}
cur->pNext = pHead;
return pHead;
}

void KillBegin(pNode *pHead, int *M)
{
int iNum = M[0]; //记录剩余人数
int iCount = 1; //每M个被杀
int i = 1;
pNode *pre, *cur;
pre = pHead;
cur = pHead->pNext;
while (iNum > 2)
{
iCount++; //因M>2,第一轮从2号开始判断(M = 1杀起来没意义)
if(iCount == M[1])
{
if(cur->iData == -1) //判断第M个是否是杀手
{
pre = pre->pNext;
cur = cur->pNext;
}
pre->pNext = cur->pNext;
cur->pNext = NULL;
printf("The %dth victim will be:%d \n", i, cur->iData);
i++;
free(cur); //杀掉第M个人
cur = pre->pNext;
iCount = 0;
iNum--;
}
else
{
pre = pre->pNext;
cur = cur->pNext;
}
}
printf("**********************************************\n");
if(pre->iData != -1)
printf("The hero is: %d\n", pre->iData); //输出英雄位置
else
printf("The hero is: %d\n", cur->iData);
free(pre);
free(cur);
}

int main()
{
int M[3] = ; //M[0]总人数,M[1]杀第几个人,M[2]杀手位置
pNode *pHead = NULL;
Message(M); //获得M信息
pHead = CreatChain(M); //创建信息循环链表

KillBegin(pHead, M); //开始杀人
return 0;
}本回答被提问者采纳

c语言的表达式求解,求助
Push(StackR,'$');InitStack(StackD);c=getc();while(c!='$'||GetTop(StackR)!='$'){ if(!In(c,OP)){Push(StackD,c);c=getchar();} \/*不是运算符则进栈*\/ else switch(Proceed(GetTop(StackR),c)){ case'<': \/*栈顶元素优先*\/ Push(StackR,c);c=getchar();break...

急!求个数据库课程的设计!!
1、选定实验题目,为某个单位或部门设计数据库应用系统,比如:学生成绩管理、机房上机管理、职工档案管理、商品库存管理、图书管理、工资管理等。2、根据选定的题目进行需求分析,重点分析数据需求和功能需求。3、概念结构设计:画出E-R图。4、逻辑结构设计:设计数据库和数据表的具体结构,指出各表的属性名称、数据类型;说...

...过程和答案 题目我已一字不漏的发在下面,好的有加分
(1)设规定时间为x天 则甲组单独完成这项工程所需时间为2x+4 天,乙组单独完成这项工程所需时间为 2*(2x+4) \/ 3 天 {1\/( 2x+4 ) + 1 \/ [2*(2x+4) \/ 3] } *24 =1 解得x=28 即规定时间为28天,因为24<28,所以甲,乙两组合可以在规定时间内完成。(2)先求甲、...

...题目为四人角色扮演,回答的详细,采纳为满意的答案,小弟在此谢过...
C:I couldn't aree more. I think we should tell John. He's my new friend.D: Ok,we can take much deliouse food with us. At least it can be enough for lunch.A: Ok, that's settled. See you.

想做程序员需要学什么(小程序开发一个多少钱啊)
3.日常工作写程序 一个软件开发一般流程是产品经理根据用户需求做一个项目出来,然后UI设计师做一些图片设计,前端开发编写页面,后台开发编写核心编程,然后介入一些大数据和人工智能,通过测试之类上线实施,后期还有运维进行相关维护。 程序员一般大多指的是前端和后台写代码程序的开发人员,除了编写代码,可能还需要通过接口和...

求一篇描写多人的作文,500字左右,望高手帮忙,满意答案,追加分!!!
“悄悄的我走了,正如我悄悄得来,我挥一挥衣袖,不带走一片云彩。”云彩可以不带走,梦想却难以放下。你,有着浑圆的身材,圆圆的镜片里,看到的是滚圆的眼睛,浑厚的嗓音,幽默的言语更是只属于你,别人无法复制的防伪标志。那时,你是我们最喜爱的老师。你在这座大城市里教书,是一份很稳定的工作...

超难迷宫题。高手进来帮忙啊!高分无限
黑白黑○黑 白黑白黑白 黑白黑白黑 白黑白黑白 黑白黑白黑 其中○表示没有点,空出来。那么,因为图中黑点旁边全是白点,白点旁边全是黑点,所以按照走的规则限制,我们必然是由黑点走向白点,由白点走向黑点,不能走向同色点。即行走路线是“……黑白黑白黑白……”相间的。由于行走路线是黑白相间,...

高手来帮帮忙啊,系统的问题啊!!!谢了!!!
0X000000该内存不能为read的解决方法 出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。一:先说说硬件:一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、...

求高考蒙题的方法。。
个人猜题原理:求同存异。例二:A.根号5 B.根号5\/2 C.根号3 D.2 不用看此题在AB中选。 答案是A 这都是很经典的方法,是揣测出题者意图后的发现。剧我的经验,数学10个选择题中能用上这方法的通常有3个以上。至于他们说“不会做蒙C”是没有禁得起推敲的依据的。你可以去统计下往届高考...

我今年上大学,有没有什么需要注意的地方?(满意有追加)
3. 如果老师不点明题目,也要问老师范围;4. 老师们水平不一定很高;5. 讲课不是和高中一样好懂。4.朋友篇:人缘太差?请不要抱怨你遇到的人都很坏,为什么那么多好人都不理你?首先要从自身找原因吧:塑造个人令人刮目相看的修养以及赢得最佳印象的十大诀窍(早到;不要过分固执;苦中求乐;做事立刻;语言;亦步亦...

相似回答