p坚持csma:求,用c语言编一个“学生成绩管理程序”的程序

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/19 18:58:20
程序具备菜单功能或详细的提示功能,具备学生信息打印、添加、删除、查询、排序功能。熟练掌握循环、函数、结构体的操作,程序中至少要有一个自定义结构体。总程序量不少于200行,输出数据要格式美观。程序要有详细的注释,并画出程序流程图及必要的说明文档,程序设计内容和文档内容要体现个性化设计思想。

struct SStudent
{
unsigned number;
char name[11];
int score1, score2, score3;
struct SStudent * link;
};
struct SStudent * CreateTable();/*?建空?表*/
void AppendToTable(struct SStudent * * stu);/*初始化?表,?入?表中?个?点的数据*/
void InsertToTable(struct SStudent * * stu);/*插入新?点*/
void DeleteFromTable(struct SStudent * * stu,int num);/*?除指定序号的?点*/
void PrintTable(struct SStudent * stu);/*屏幕?示?出?表所有?点*/
void Help();/*?示?助提示*/
void main()
{
struct SStudent * student;
unsigned number;
char keyValue;
student = CreateTable();
//clrscr();
Help();
printf("\n= ");
while((keyValue = getche()) != 'q' && keyValue != 'Q' && keyValue != 27)
{
puts("");
switch(keyValue)
{
case 'l': case 'L':
PrintTable(student); break;
case 'a': case 'A':
AppendToTable(&student); break;
case 'i': case 'I':
InsertToTable(&student); break;
case 'd': case 'D':
printf("Please input the number you want delete: ");
scanf("%d", &number);
DeleteFromTable(&student, number);
break;
case 'c': case 'C':
//clrscr();
break;
case 'h': case 'H':
Help(); break;
default: puts("Error command!");
}
printf("\n= ");
}
}
struct SStudent* InputStudent()
{
struct SStudent* p = (struct SStudent*)malloc(sizeof(struct SStudent));
if(p != NULL)
{
printf("input number:");
scanf("%d",& p->number);
printf("input name:");
scanf("%s",& p->name);
printf("input score1:");
scanf("%d",& p->score1);
printf("input score2:");
scanf("%d",& p->score2);
printf("input score3:");
scanf("%d",& p->score3);
p->link = NULL;
}
return p;
}

struct SStudent * CreateTable()
{
/*?建空?表*/
return NULL;
//return InputStudent();
}

void AppendToTable(struct SStudent * * stu)
{
/*初始化?表,?入?表中?个?点的数据*/
struct SStudent * * q = stu;
while((*q) != NULL)
{
q = &(*q)->link;
}
(*q) = InputStudent();
}
void InsertToTable(struct SStudent * * stu)
{
/*插入新?点*/
struct SStudent* q = InputStudent();
if(q != NULL)
{
if((*stu) != NULL)
{
q->link = (*stu);
}
(*stu) = q;
}
}
void DeleteFromTable(struct SStudent * * stu,int num)
{
/*?除指定序号的?点*/
struct SStudent** p = stu,*q = *p;
/* p zhi xiang shan chu jie dian */
/* q zhi xiang shan chu jie dian de qian yi jie dian */

while((*p) != NULL && (*p)->number != num)
{
q = *p;
p = &(*p)->link;
}
if((*p) == NULL)
{
puts("No Find");
return;
}
q->link = (*p)->link;
free(p);

}
void PrintTable(struct SStudent * stu)
{
/*屏幕?示?出?表所有?点*/
struct SStudent * p = stu;
printf("*********************************************************************\n");
while(p != NULL)
{
printf("number = %d\tname = %s\tscore1 = %d\tscore2 = %d\tscore3 = %d\n",
p->number,p->name,p->score1,p->score2,p->score3);
p = p->link;
}
printf("*********************************************************************\n");
}
void Help()
{ puts(" *********************************************");
puts(" * Student System Command Help *");
puts(" *********************************************");
puts(" * L = List all records *");
puts(" * A = Append records *");
puts(" * I = Insert records *");
puts(" * H = Show this help message *");
puts(" * C = Clear screen *");
puts(" * Q = Quit System *");
puts(" *********************************************");
puts(" * Copyright (C) 1999.09.09 By Kcliu *");
puts(" *********************************************");
}