C语言程序设计学生信息管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计学生信
息管理系统
文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]
C语言课程设计
姓名:徐宗博
学号: ************
班级: 061092
指导教师:曹老师
2011 年 6 月 25 日
目录
第一章:实习内容
实习内容简介 (2)
程序代号说明 (3)
第二章:程序流程图
第三章:函数模块介绍
读取文件、存储文件 (6)
管理系统模块 (8)
恢复区系统模块 (12)
功能展示 (12)
第四章:实习总结 (16)
第五章:实习体会 (17)
附录:
参考文献 (19)
源代码 (19)
第一章:实习内容
实习内容简介
题目:学生通讯录管理系统
要求:1.可实现信息的添加、删除,可按学号、姓名查询;
2.学生信息必须包含学号、姓名、学院、专业、籍贯。地址、电话号码;
3.必须有注释。
日期:2011年6月20日至27日,共8个半天。
地点:信息楼301
指导老师:曹雪莲
完成情况:
1.程序可完成信息的添加,可按学号、姓名分别查询;
2.程序可按姓名、学号分别删除,并在删除前显示删除学生的全部信息;按姓名删
除,若出现同名情况,会依次出现系统提示是否删除,可选择删除或跳过;
3.在程序文件夹中有一“学生信息库”的txt文件,可查看学生系统里全部学生信
息;
4.设置有一个恢复区系统,可输出、查询删除的信息,并在可同文件夹中“删除信
息库”的txt文件中查看删除信息;
总体结构如下:
此外,局部变量的含义比较固定:
第二章:程序流程图
程序流程图:
本次实习我的思路就是,先从二进制文件中读取信息,形成链表,对链表进行基
本操作,如输出、添加、删除、查找。程序结束时将链表保存在二进制文件和文本文件中。
管理系统流程图:
运行管理系统部分时,先从文件“”中读取数据(若无该文件则创建文件),构建链表;后续操作都是对于链表进行操作,如添加、查找、删除、输出等;离开该部分时则保存链表里的信息到已存在的“”,并以ASCII形式存储至“学生信息库.txt”,方便检查。
恢复区系统流程图:
恢复区系统思路与管理系统思路类似,连函数调用都是一样的,二进制文件名为“”,文本文件名为“删除信息库.txt”。
具体函数模块功能将在第三章中具体介绍。
第三章:函数模块介绍
程序分为管理系统和恢复区系统两部分和读取文件、存储文件四部分,以下分别介绍。
读取文件、存储文件
读取文件
该函数模块(程序名为creat)于管理系统或恢复区系统运行前运行,目的是读取二进制文件信息,构建链表;若无目标文件,则创建文件。返回值为头指针。
函数主体为:struct stu *p1,*p2;
struct stu *head;
while(fread(&(p1->inf),LEN,1,fp))um);ame);
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;
}
}
管理系统模块
管理系统(名为system)主要有四个函数功能部分,分别为添加、删除、查找、输出,以下依次介绍:
添加
该模块函数名为add,无返回值,参数为链表头指针,功能为向已建立的链表中从键盘上输入信息。函数主体为:
struct stu *p1,*p2;um));
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)学号查找的函数主体为:
printf("请输入拟删除学生学号:\n");
long snum=0;
scanf("%ld",&snum);
struct stu *p1,*p2;
p1=head;
while(snum!=p1->&&p1->next!=NULL)姓名查找(包含同名情况):
int select=0,count=0;um);
printf("\n姓名 %s",(p->inf).name);
printf("\n学院 %s",(p->inf).academy);
printf("\n专业 %s",(p->inf).majoy);
printf("\n省份 %s",(p->inf).province);
printf("\n地址 %s",(p->inf).address);
printf("\n电话号码 %s\n",(p->inf).phone);
p=p->next;
}
恢复区系统模块
恢复区系统(其名为recover)是为了显示被删除信息而建立的,在函数运行之初便建立了恢复区链表,头指针设为rhead,与管理系统头指针head相区别。并且,rhead被设为全局变量,方便被函数调用。
恢复区系统主要有查找、输出功能,其功能模块基本调用管理系统的函数,所以不再赘述。而恢复区的输入函数,即管理区删除信息时将信息输入恢复区链表的函数,上文已提及,即deletinput,此为连接恢复区与管理系统的桥梁,只不过是单行的。函数为:
void deletinput(struct stu *p)序视图就是C语言的黑框,没有美观可言。
C++的视图好一些,我也想过用C++编译一个窗口,然后在程序中调用。但是C++还没学会,而且在调试程序的过程中遇到一些困难让我遗忘了这个想法,曾看程序看到凌晨两点,所以想法没有实践。