c语言课程设计学生信息管理系统

#include
#include
#include

struct student
{
int number;
char name[10];
int score[10];
int sum;
float average;
struct student *next;
};
typedef struct student STU;

char caidan(void);
void shuruScore(STU *head, int n);
void dayinScore(STU *head, int n);
void tongjiScore(STU *head, int n);
void paixuScore(STU *head, int n);
int chazhaoNum(STU *head, int num, int n);
void chazhaoScore(STU *head, int n);
void xiugaiScore(STU *head, const int n);
STU *xiugaiNode(STU *head, int nodeNum, const int n);
STU *SearchNode(STU *head, int nodeNum);


main()
{
char ch;
int n;
STU stu[40];

printf("请输入实际人数:");
scanf("%d", &n);
while (1)
{
ch = caidan();
switch (ch)
{
case'1':shuruScore(stu, n);
tongjiScore(stu, n);
break;
case'2':dayinScore(stu, n);
break;
case'3':chazhaoScore(stu, n);
break;
case'4':paixuScore(stu, n);
printf("\n排序结果:\n");
dayinScore(stu, n);
break;
case'5':xiugaiScore(stu, n);
tongjiScore(stu, n);
printf("\n 修改后信息: \n");
dayinScore(stu, n);
break;
case'0':printf("谢谢使用!!!"); exit(0) ;
break;
default:printf("输入出错!!!!!!!\n");
break;
}
}
}

char caidan(void)
{
char ch;
printf(" -----------------------------------\n");
printf(" 学生成绩表系统: \n");
printf(" -----------------------------------\n");
printf(" 1.成绩输入菜单 \n");
printf(" -----------------------------------\n");
printf(" 2.列表菜单 \n");
printf(" -----------------------------------\n");
printf(" 3.查找菜单 \n");
printf(" -----------------------------------\n");
printf(" 4.排序菜单 \n");
printf(" -----------------------------------\n");
printf(" 5.修改菜单 \n");
printf(" -----------------------------------\n");
printf(" 0.结束 \n");
printf(" -----------------------------------\n");
printf("请输入你的选择:");
scanf(" %c", &ch);
return ch;
}


void shuruScore(STU *head, int n)
{
int j;
STU *p;
printf("请输入学号 姓名 高数成绩 c语言成绩 英语成绩:\n");
for (p=head; p{
scanf("%d%s", &p->number,p->name);
for (j=0; j<3; j++)
{
scanf("%d", p->score+j);
}
}
}

void dayinScore(STU *head, int n)
{
STU *p;
int i;
printf(" 滨州学院成绩表: \n");
printf(" ---------------------------------------------------------------\n");
printf(" 学号\t 姓名\t 高数\t C语言\t 英语\t 总分\t 平均分\n");
printf(" ----------------------------------------------

-----------------\n");
for (p=head; p{
printf("\n %3d%8s", p->number, p->name);
for (i=0; i<3; i++)
{
printf("%7d", p->score[i]);
}
printf("%11d%9.2f\n", p->sum, p->average);
printf(" ---------------------------------------------------------------\n");
}
}


void tongjiScore(STU *head, int n)
{
STU *p;
int i;

for (p=head; p{
p->sum = 0;
for (i=0; i<3; i++)
{
p->sum = p->sum + p->score[i];
}
p->average = (float)p->sum / 3;
}
}


void paixuScore(STU *head, int n)
{
int i, j, k;
STU t;

for (i=0; i{
k = i;
for (j=i; j{
if ((head+j)->sum > (head+k)->sum)
{
k = j;
}
}
if (k != i)
{
t = *(head+k);
*(head+k) = *(head+i);
*(head+i) = t;
}
}
}


int chazhaoNum(STU *head, int num, int n)
{
int i;

for (i=0; i{
if ((head+i)->number == num) return i;
}
return -1;
}

void chazhaoScore(STU *head, int n)
{
int number, pos;

printf("请输入你要查找的学号:");
scanf("%d", &number);
pos = chazhaoNum(head, number, n);
if (pos== -1)
{
printf("\n没找到!!!!\n");
}
else
{
dayinScore(head+pos, 1);
}
}
void xiugaiScore(STU *head, const int n)
{
int i = 0, nodeNum;
char c;

do{
printf("请输入你想修改学生信息的学好:");
scanf("%d", &nodeNum);
head = xiugaiNode(head, nodeNum, n);
printf("是否需要继续修改(Y/N)?");
scanf(" %c",&c);
i++;
}while (c=='Y' || c=='y');
printf("%d new nodes have been modified!\n", i);
}
STU *xiugaiNode(STU *head, int nodeNum, const int n)
{
int j;
STU *newNode;

newNode = SearchNode(head, nodeNum);
if (newNode == NULL)
{
printf("没找到!!!!\n");
}
else
{
printf("请输入新的信息:\n");
printf("输入姓名:");
scanf("%s", newNode->name);
for (j=0; j<3; j++)
{
printf("Input score%d:", j+1);
scanf("%d", newNode->score+j);
}
}
return head;
}
STU *SearchNode(STU *head, int nodeNum)
{
STU *p = head;
int j = 1;

while (p != NULL)
{
if (p->number == nodeNum) return p;
p = p->next;
j++;
}
return NULL;
}

相关文档
最新文档