分享
 
 
 

学生档案管理系统设计分析

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

大致分为以下几个摸块:

系统一运行,显示菜单的同时,

并打开文件,若文件存在(打开文件成功),则输入模块无效(文件指针pfile!= NULL),并立即关闭文件;

若文件不存在(打开文件不成功),则输入模块有效(pfile = NULL)。

**********************************************************************************************

【信息输入模块(int input( ) ): 】

(返回1—成功;返回0—失败)

主要让用户输入学生的档案信息(姓名,年龄,班级,性别,家庭住址,电话,学号);

若pfile = NULL,则做以下工作:

1,让用户输入学生总数;

2,系统根据学生总数创建一个结构数组;

3,依次输入各数据域,并读入结构数组;

4,建立文件,并写文件;

5,关闭文件;

若pfile = NULL,则不执行此模块,并显示出错信息,按任意键返回菜单;

【信息输出模块(int output( ) ): 】

(返回1—成功;返回0—失败)

主要让用户输出已做改动的档案信息;

若pfile != NULL,则做以下工作:

利用数组存储数据;

利用表头的形式显示信息;

若pfile = NULL , 则不执行此模块,并显示出错信息,按任意键返回菜单;

***********************************************************************************************

【信息修改模块(int modify(int number[]) ): 】

(返回1—成功;返回0—失败)(number为学号)

主要让用户修改学生的档案信息;(&M)

若pfile != NULL,则做以下工作:

1,输入用户想修改的学生记录的学生学号;

2,查找此学生记录,若存在就继续;如不存在则显示出错信息;

3,显示此学生信息;

4,提示用户修改信息(每字段提示一下);

5,修改完毕,返回菜单。

若pfile = NULL , 则不执行此模块,并显示出错信息,按任意贱返回菜单;

【信息添加模块(int add( ) ): 】

(返回1—成功;返回0—失败)

主要让用户增加不在数据库中的某个学生信息;(&A)

若pfile != NULL,则做以下工作:

1,显示输入信息界面;

2,以学号为关键字查找此学生信息,如存在,则显示出错信息;否则继续。

3,若输入完毕,则退出此模块并返回至菜单界面。

若pfile = NULL , 则不执行此模块,并显示出错信息,按任意键返回菜单;

【信息删除模块(int delete(int number[]) ): 】

(返回1—成功;返回0—失败)(number为学号)

主要让用户删除已不在校的学生信息;(&D)

若pfile != NULL,则做以下工作:

1,要求用户输入想删除的学生记录的学号;

2,以学号为关键字查找此记录,若存在则显示信息并释放节点;不存在,则显示出错信息;

3,退出模块并返回至菜单界面。

若pfile = NULL , 则不执行此模块,并显示出错信息,按任意键返回菜单;

【信息查找模块(int find(int number[]) ): 】

(返回1—成功;返回0—失败)(number为学号)

主要让用户查找某个特定的学生信息;(&F)

本模块在删除和修改中要用到,所以宜设为外部函数;

若pfile != NULL,则做以下工作:

1,要求用户输入要查找的学生学号;

2,以学号为关键字查找信息;

3,如存在,则显示此信息并返回至菜单界面;若不存在则显示出错信息。

若pfile = NULL , 则不执行此模块,并显示出错信息,按任意键返回菜单;

**********************************************************************************************

【信息存盘模块(int save(char string[]) ): 】

(返回1—成功;返回0—失败)(string为文件名)

主要让用户保存档案信息,以便下次读取;

【信息读盘模块(int read(char string[]) ): 】

(返回1—成功;返回0—失败)(string为文件名)

主要让用户读取已保存的档案信息;

**********************************************************************************************

【数据存储结构:】

对于单个学生采取一个结构:

struct STUDENT

{

char name[20];

int number[8];

char sex; //f&m

int age;

int class;

int phcde[7];

char address[30];

};

对于全班的所有同学(最多30人)采取链式存储结构。

为了采取这种存储结构,在学生的结构中要再加一个next指针指向节点。

为了节省存储空间,采取动态申请的方法( malloc() )。

除此之外,还有各种其他的数据:

循环变量: register int i,j....

【预计难点:】

1, 文件的存储是个关键。

当以"r"为打开方式时,只读;若文件不存在,则返回空指针。

当以"w"为打开方式时,只写;若文件不存在,则生成文件。

当以"a"为打开方式时,追加;此时要求文件一定存在,若不存在,则失败。

r+,w+,a+类似;rb,wb,ab也相似,只不过是以二进制方式!

结合以上,可以通过返回指针是否为空来判断文件是否打开成功!

【文件的存取<read,write>基本算法:】

void Data_Save(struct record *p) /*记录文件的存取*/

{

int j;

fp = fopen( "tele_rec.txt " , "w" ); /*以可写方式打开记录文件*/

while( p != NULL ) /*若未到队尾,徨将记录存储到文件中*/

{

fwrite(p, sizeof(struct record), 1, fp);

p = p->next;

}

fclose( fp ); /*关闭指定的文件*/

}

struct event * Data_Load() /*从记录文件中读取记录*/

{

long k;

struct record *p, *q;11

p = event_head.next;

fp = fopen("tele_rec.txt", "r+t"); /*以读方式打开记录文件*/

if ( fp != NULL )

{

while( !feof(fp)) /*依次读取记录并执行入队操作*/

{

fread(q, sizeof( struct record ), 1, fp);

p->next = q; /*这里p为尾指针,q为指向新节点的指针*/

p = q;

}

p->next = NULL;

event_end = p;

}

else

{

fp = fopen("tele_rec.txt","w"); /*若文件不存在,创建指定文件名的新文件*/

event_head.next = NULL;

event_end = event_head.next;

}

}

其实,文件操作有很多函数,除fopen,fclose外,还有fwrite,fread,fprintf,fscanf,

rewend,ftell,fseek,ferror,fputc,fgetc等;

2, 其次,输入的界面也是个问题。

如果用表头,则要注意回车和制表符的控制。

如果用一行行的提示,就显得有点老套。

结合以上,还是采取表头的输入比较好点。

****从这个问题中也就要求在今后的的实践中多注意UI的设计,尽量设计出一个比较通用的界面。

3, 删除或添加记录时,移动记录也是个关键:

由于数据是以结构数组存储的,所以每变动一条记录,就需移动之后的所有记录,时间是个问题!

5,进入系统之前下载(读取)文件;退出系统之前保存文件。

6,菜单要显示,特别是功能键要加上大小写的处理。

7,要注意函数的设计,每个函数功能要单一,函数最好被控制在50行之内!(学以致用嘛!^_^)

【制作目的:】

1,弄清楚函数返回值以及参数传递的问题。

2,指针是另一个方面!

3,弄懂读盘和存盘的基本形式(即文件的基本操作)

4,熟悉各种常用函数的运用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有