楼主要学学用百度和GOOGLE等搜索工具呀
学习要举一反三(很明显你也想到了双向链表是什么样的)
为什么要用双向链表?
因为这次课程设计的如果用单向链表的话,
有很多数据操作会很曲折
下面是我做的设计的头文件:
lajistu.h (laji for 垃圾因为觉得做得实在是很垃圾…… )
#ifndef lajistu_h
#define lajistu_h
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
typedef struct xy{int x;int y;}posxy;
/*以下两行为引入floating format以免TC编译器故作聪明不引入浮点数据类型*/
extern unsigned _floatconvert;
#pragma extref _floatconvert
/***********
以下是全局共用的
数据结构
没有用双向链表,因为教材里还学教到,设计时落入了这样的思维:没教到的不会考察吧,结果做了好大一部分才发觉用双向链表可以少好多麻烦
**************/
typedef struct student{
char id[30];
char name[30];
float *pScore;
struct student *next;
}stu;
extern int subjectAccount; /*成绩个数*/
extern long studentAccount; /*总人数*/
extern char (*subjectName)[30]; /*课程名称 怀疑这种存储方式会出问题*/
extern char curFileName[]; /*当前打开的文件名称*/
extern char *getStudentName(FILE*fp); /**/
extern char space[]; /**/
/********
以下是文件
操作函数memToFile
用的宏
*********/
#define TEXT 1
#define BINARY 2
void memToFile(char *mem2save,stu *head,int mode);
void myPrint(stu *,int);
void search(char *);
extern stu *fileToMem(char *file2mem);
int GetKey();
extern stu *dataHead;
extern stu *dataTail;
/* 以下是数据文件信息:
科目名称,总科目数,总人数的偏移量(由文件尾起)
注意:
使用时要加负号!!*/
#define offsetAccountStu (long)(sizeof(long))
#define offsetAccountSub (long)(sizeof(int)+offsetAccountStu)
#define offsetStringSub (long)(n*30*sizeof(char)+offsetAccountSub)
/*全局使用的子窗口位置,在drawWin定义*/
extern posxy suba,subb;
/*drawWin.c*/
#define ULEFT2 '\311'
#define UM2 '\315'
#define URIGHT2 '\273'
#define MM2 '\272'
#define DLEFT2 '\310'
#define DRIGHT2 '\274'
#define COR2 '\316'
#define COR2LRD '\313'
#define COR2LRU '\312'
#define COR2UDL '\271'
#define COR2UDR '\314'
#define TX 1
#define TY 0
#endif
PS:我的课程设计没用双向链表,不过得了“良以上的成绩”
[ 本帖最后由 iptton 于 2007-1-10 16:15 编辑 ] |