C语言程序设计——学生信息管理系统

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言课程设计

姓名:徐宗博

学号:************

班级:061092

指导教师:曹老师

2011 年 6 月25 日

目录

第一章:实习内容

1.1实习内容简介 (2)

1.2程序代号说明 (3)

第二章:程序流程图

第三章:函数模块介绍

3.1读取文件、存储文件 (6)

3.2 管理系统模块 (8)

3.3 恢复区系统模块 (12)

3.4 功能展示 (12)

第四章:实习总结 (16)

第五章:实习体会 (17)

附录:

参考文献 (19)

源代码 (19)

第一章:实习内容

1.1实习内容简介

题目:学生通讯录管理系统

要求:1.可实现信息的添加、删除,可按学号、姓名查询;

2.学生信息必须包含学号、姓名、学院、专业、籍贯。地址、电话号码;

3.必须有注释。

日期:2011年6月20日至27日,共8个半天。

地点:信息楼301

指导老师:曹雪莲

完成情况:

1.程序可完成信息的添加,可按学号、姓名分别查询;

2.程序可按姓名、学号分别删除,并在删除前显示删除学生的全部信息;按姓名删除,

若出现同名情况,会依次出现系统提示是否删除,可选择删除或跳过;

3.在程序文件夹中有一“学生信息库”的txt文件,可查看学生系统里全部学生信息;

4.设置有一个恢复区系统,可输出、查询删除的信息,并在可同文件夹中“删除信息库”

的txt文件中查看删除信息;

总体结构如下:

1.2程序代号说明

此外,局部变量的含义比较固定:

第二章:程序流程图程序流程图:

本次实习我的思路就是,先从二进制文件中读取信息,形成链表,对链表进行基本操作,如输出、添加、删除、查找。程序结束时将链表保存在二进制文件和文本文件中。

管理系统流程图:

运行管理系统部分时,先从文件“information.xls”中读取数据(若无该文件则创建文件),构建链表;后续操作都是对于链表进行操作,如添加、查找、删除、输出等;离开该部分时则保存链表里的信息到已存在的“information.xls”,并以ASCII形式存储至“学生信息库.txt”,方便检查。

恢复区系统流程图:

恢复区系统思路与管理系统思路类似,连函数调用都是一样的,二进制文件名为“dinformation.xls”,文本文件名为“删除信息库.txt”。

具体函数模块功能将在第三章中具体介绍。

第三章:函数模块介绍

程序分为管理系统和恢复区系统两部分和读取文件、存储文件四部分,以下分别介绍。

3.1读取文件、存储文件

读取文件

该函数模块(程序名为creat)于管理系统或恢复区系统运行前运行,目的是读取二进制文件信息,构建链表;若无目标文件,则创建文件。返回值为头指针。

函数主体为:struct stu *p1,*p2;

struct stu *head;

while(fread(&(p1->inf),LEN,1,fp))//读取数据

{

n=n+1;//若读取数据成功节点数加一

if(n==1) head=p1;//给头结点赋值

else p2->next=p1;//加新的结构体

p2=p1;

p1=(struct stu *)malloc(LENS);

}

fclose(fp);

p2->next=NULL;//尾结点处指针置0

return(head);

存储文件

该函数模块分为两部分,以二进制形式存储链表信息(程序名为save)和以文本形式存储(程序名为txtsave)。二进制形式文件是为了读取文件,优点是快速;文本文件是为了方便检查,优点是明确可见。无返回值。

二进制形式存储程序为:

void save(struct stu *head,char filename[20])//存储链表信息

{

FILE *fp;

struct stu *p;

p=head;

fp=fopen(filename,"wb");//以二进制方式打开文件

while((p!=NULL)&&fwrite(&(p->inf),LEN,1,fp))//写入文件

{

p=p->next;

}

fclose(fp);

}

//其中head为链表头指针,filename为存储文件名,在主函数中已有定义。

存储在文本文件程序为:

void txtsave(struct stu *head,char filename[20])//以文本形式将链表输入文件

FILE *fp;

struct stu *p;

p=head;

fp=fopen(filename,"w");//以文本形式打开

while(p!=NULL)//链表不到尽头不停止

{

fprintf(fp,"%ld",(p->inf).num);//向文本文件中写入数据

fprintf(fp,"%10s",(p->inf).name);

fprintf(fp,"%10s",(p->inf).academy);

fprintf(fp,"%10s",(p->inf).majoy);

fprintf(fp,"%10s",(p->inf).province);

fprintf(fp,"%10s",(p->inf).address);

fprintf(fp,"%20s\n",(p->inf).phone);

p=p->next;

}

}

3.2管理系统模块

管理系统(名为system)主要有四个函数功能部分,分别为添加、删除、查找、输出,以下依次介绍:

添加

该模块函数名为add,无返回值,参数为链表头指针,功能为向已建立的链表中从键盘上输入信息。函数主体为:

struct stu *p1,*p2;//建立结构体指针

p2=head;

p1=(struct stu *)malloc(LENS);//输入信息

printf("\n学号(输入数值请小于32756):");scanf("%d",&((p1->inf).num));

printf("\n姓名:");scanf("%s",(p1->inf).name);

printf("\n学院:");scanf("%s",(p1->inf).academy);

printf("\n专业:");scanf("%s",(p1->inf).majoy);

printf("\n省份:");scanf("%s",(p1->inf).province);

printf("\n地址:");scanf("%s",(p1->inf).address);

printf("\n电话号码:");scanf("%s",(p1->inf).phone);

while((p2->next)!=NULL)//移动指针到链表尾

相关文档
最新文档