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

学生基本信息管理(数据结构用C语言描述)

(1) 学生的信息存放在文本文件中,每条学生记录有下列数据项:学号、姓名、性别、年龄。
(2) 试设计一个系统,完成对学生纪录的插入、删除和查找等操作。
(3) 设计合适的数据结构,尽量提高查找的时间效率。
(4) 分析所设计的系统中选用该数据结构的理由。

还要求用线性探查散列表构成
拜托啦
答案:/*头文件*/
#include <stdio.h>
#include<dos.h>
#include<stdlib.h>
/*其它说明*/
#include<string.h>
/*字符串函数*/
#include<mem.h>

/*内存操作函数*/
#include<ctype.h>
/*字符操作函数*/
#include<alloc.h>
/*动态地址分配函数*/
#define LEN sizeof(STUDENT)
typedef struct stu
/*定义结构体数组用于缓存数据*/
{char num[6];
char name[5];
int score[3];
int sum;
float average;
int order;
struct stu *next;
}STUDENT;

/*函数原型*/
STUDENT
*init();
/*初始化函数*/
int menu_select();
/*菜单函数*/
STUDENT *create();
/*创建链表*/
void print(STUDENT *head);
/* 显示全部记录*/
void search(STUDENT *head);
/*查找记录*/
STUDENT *delete(STUDENT *head);
/*删除记录*/
STUDENT *sort(STUDENT *head);
/*排序*/
STUDENT *insert(STUDENT *head,STUDENT *new);
/*插入记录*/
void save(STUDENT *head);
/*保存文件*/
STUDENT *load();

/*读文件*/

/*主函数界面*/
main()
{STUDENT *head,new;
head=init();

/*链表初始化,使head的值为NULL*/
for(;;)


/*循环无限次*/

{switch(menu_select())


{





case 1:head=create();break;

case 2:print(head);break;

case 3:search(head);break;

case 4:head=delete(head);break;

case 5:head=sort(head);break;

case 6:head=insert(head,&new);break;
/*&new表示返回地址*/

case 7:save(head);break;

case 8:head=load(); break;

case 9:exit(0);

/*如菜单返回值为9则程序结束*/

}

}
}

/*初始化函数*/
STUDENT *init()
{
return NULL;
/*返回空指针*/
}

/*菜单选择函数*/
menu_select()
{int n;
struct date d;
/*定义时间结构体*/
getdate(&d);

/*读取系统日期并把它放到结构体d中*/
printf("press any key to enter the menu......");
/*按任一键进入主菜单*/
getch();
/*从键盘读取一个字符,但不显示于屏幕*/
clrscr();
/*清屏*/
printf("********************************************************************************\n");
printf("\t\t



Welcome to\n");
printf("\n\t\t

The student score manage system\n");
printf("*************************************MENU***************************************\n");
printf("\t\t\t1. Enter the record\n");


/*输入学生成绩记录*/
printf("\t\t\t2. Print the record\n");


/*显示*/
printf("\t\t\t3. Search record on name\n");

/*寻找*/
printf("\t\t\t4. Delete a record\n");


/*删除*/
printf("\t\t\t5. Sort to make new a file\n");
/*排序*/
printf("\t\t\t6. Insert record to list\n");

/*插入*/
printf("\t\t\t7. Save the file\n");


/*保存*/
printf("\t\t\t8. Load the file\n");


/*读取*/
printf("\t\t\t9. Quit\n");




/*退出*/
printf("\n\t\t


Made by Hu Haihong.\n");
printf("********************************************************************************\n");
printf("\t\t\t\t%d\\%d\\%d\n",d.da_year,d.da_mon,d.da_day);
/*显示当前系统日期*/
do{

printf("\n\t\t\tEnter your choice(1~9):");

scanf("%d",&n);

}while(n<1||n>9);
/*如果选择项不在1~9之间则重输*/

return(n);


/*返回选择项,主函数根据该数调用相应的函数*/
}

/*输入函数*/
STUDENT *create()
{int i,s;
STUDENT *head=NULL,*p;
/* 定义函数.此函数带回一个指向链表头的指针*/
clrscr();
for(;;)

{p=(STUDENT *)malloc(LEN);
/*开辟一个新的单元*/

if(!p)
/*如果指针p为空*/

{printf("\nOut of memory.");

上一个:C语言遗传算法在求解TSP问题 毕业论文+源代码
下一个:C语言:输出500以内所有勾股数 用C语言程序表达!

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,