c语言课程设计报告---学生信息管理系统.pdf





《c语言课程设计报告---学生信息管理系统.pdf》由会员分享,可在线阅读,更多相关《c语言课程设计报告---学生信息管理系统.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、题目:学生信息管理系统一、需求分析任务要求:自学 C语言中有关链表及外部文件的内容,设计学生信息管理系统。具体要求如下:建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容;能够提供添加、删除和修改学生信息等功能;能将通讯录保存在文件中;能够按指定方式输出学生信息。系统功能需求分析:1、为存储学生信息,需定义一个结构体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型的指针,用于指向各结点;2、分别建立具有添加、删除、修改、查询等功能的子函数,完成相应功能,对程序实现模块化。这其中要用到对链表的删除、插入等知识。删除时用一结构体指针指向链表的第一
2、个结点,检查该节点的值是否等于输入的要删除的学号,若相等就删除,不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加。3、为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。4、为以表格的形式输出文件,宏定义格式化输出语句,指定输出学生信息。2 二、概要设计系统总体设计框架:对程序进行模块化,建立添加、修改、删除、查找和显示功能的子函数,各子函数中运用链表存储数据。从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。系统功能模块图:主菜单学生形象查询学生信息添加学生信息删除学生信息添加是否保存关闭文件3 三、详细设计主要功能模块的算法设
3、计思路如下:1、查询通讯录信息(void chakan())(1)为开辟一个新单元(2)输入查询关键字:(3)读取保存的文件数据输入ASCLL字符:(4)在链表中寻找相应结点;(5)调用输出函数,输出结点信息。2、添加信息函数(void add())(1)定义指向结构体变量的指针;(2)移动指针,找到插入结点;(3)在要插入的结点输入信息;(4)调用保存函数,打开文件,保存输入信息。3、删除信息函数(void del())(1)定义指向结构体变量的指针;(2)用指针检验链表中是否有记录,若没记录,返回主函数;(3)根据要修改的编号查找要删除的结点;(4)修改链表,删除对应结点。4、修改信息函数
4、(void xiugai())(1)定义指向结构体变量的指针;(2)读取保存的文件数据输入ASCLL字符:(3)用指针检验链表中是否有记录,若没记录,返回主函数;(4)根据要修改的编号查找对应结点;(5)修改信息;(6)打开文件,保存修改记录。5、保存信息函数(baocun())(1)定义指向结构体变量的指针;(2)用文件指针指向要读写的磁盘文件名,若没有则新建此文件名:(3)用指针检验链表中是否有记录,若没记录,返回主函数:(4)打开文件,保存记录:6、屏幕操作函数(void stubent187())(1)以一定格式输出所想要的图形:4 四、主要源程序代码定义变量:(对整个程序定义全局变量
5、)#include#include#define STUDENT ID /*所有 STUDENT 都用 ID 来代替*/typedef struct node /*定义结构体*/char ming50;/*名字*/char xing50;/*性别*/char nian50;/*年龄*/int xuehao;/*学号*/char xibie50;/*专业*/char sushe50;/*宿舍号*/char jia50;/*家庭地址*/struct node*next;ID;/*学生信息(变量名)*/ID*head=NULL;/*定义一个头指针*/FILE*zhi;/*定义一个文件指针*/主菜单界
6、面:(进入屏幕界面的形式)void stubent187()/*屏幕格式函数*/printf(*n);printf(*学生信息管理系统 *n);printf(*n);printf(*请选择:1:查看;2:添加;3:删除;*n);printf(*4:修改;0:退出系统 *n);printf(*n);printf(*n);printf(输入 04 数字ming,&t-xing,&t-nian,&t-xuehao,&t-xibie,&t-sushe,&t-jia);/*读取保存的文件数据输入 ASCLL字符:*/printf(%10s%10s%10s%10d%10s%10s%10sn,t-ming,
7、t-xing,t-nian,t-xuehao,t-xibie,t-sushe,t-jia);/*以这形式输出各个学生信息*/t-next=(ID*)malloc(sizeof(ID);t=t-next;添加学生信息记录:()void add()char i;/*添加*/ID*t1,*t2;t1=t2=NULL;loop:t1=(ID*)malloc(sizeof(ID);/*为 t1 开辟一个新单元*/printf(请输入姓名:);scanf(%s,&t1-ming);/*姓名*/printf(请输入性别:);scanf(%s,&t1-xing);/*性别*/printf(请输入年龄:);sc
8、anf(%s,&(t1-nian);/*年龄*/printf(请输入学号:);scanf(%d,&(t1-xuehao);/*学号*/printf(请输入系别:);scanf(%s,&(t1-xibie);/*系别*/printf(请输入宿舍号:);scanf(%s,&(t1-sushe);/*宿舍号*/printf(请输入家庭地址:);scanf(%s,&(t1-jia);/*家庭地址*/t1-next=NULL;if(head=NULL)/*如果头结点为空*/head=t1;/*t1指向头结点*/6 t2=t1;else t2=head;while(t2-next!=NULL)t2=t2-
9、next;/*没有成立则指向下个结点*/t2-next=t1;getchar();printf(是否继续添加(Y/N):n);scanf(%s,&i);/*输入 Y/N*/if(i=y|i=Y)clrscr();goto loop;/*清屏在 循环*/else printf(是否保存此次添加(Y/N)n);scanf(%s,&i);if(i=y|i=Y)/*是否要保存*/baocun();/*调用保存*/clrscr();/*清屏*/stubent187();/*调用屏幕函数*/printf(保存成功);else if(i=n|i=N)clrscr();/*清屏*/stubent187();/
10、*调用屏幕函数*/return;删除学生信息操作:(对以存的学生信息进行删除)void del()/*删除*/ID*A,*B;/*定义指针*/char t,i;int xuehao;/*定义整型变量与字符型变量*/A=B=NULL;if(zhi=fopen(,a+)=NULL)printf(没有此信息文件 n);else loop:printf(请输入要删除的学生学号:);scanf(%d,&xuehao);while(!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&A-ming,&A-xing,&A-nian,&A-xuehao,&A-
11、xibie,&A-sushe,&A-jia);/*读取保存的文件数据输7 入 ASCLL字符:*/if(A!=NULL&A-xuehao!=xuehao)A=A-next;else break;if(A-xuehao=xuehao)head=A-next;free(*A);printf(成功!n);printf(是否继续删除(Y/N);scanf(%s,&i);if(i=y|i=Y)clrscr();goto loop;if(i=n|i=N)printf(是否保存此次删除(Y/N)n);scanf(%s,&i);if(i=y|i=Y)baocun();else clrscr();stubent
12、187();else printf(无法找到此编号 n);修改学生信息操作:(对保存的学生信息进行修改)void xiugai()/*修改*/ID*t1,*t2;/*定义指针*/int i;char xuehao;/*定义整型变量与字符型变量*/t1=head;if(zhi=fopen(,a+)=NULL)printf(没有此信息文件 n);loop:printf(请输入要修改的学号:);scanf(%s,&xuehao);/*输入编号*/while(!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&t1-ming,&t1-xing,&t1
13、-nian,&t1-xuehao,&t1-xibie,&t1-sushe,&t1-jia);*读取保存的文件数据输入 ASCLL字符:*/8 if(t1!=NULL&t1-xuehao!=xuehao)t1=t1-next;else break;if(t1-xuehao=xuehao)fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t1-ming,t1-xing,t1-nian,t1-xuehao,t1-xibie,t1-sushe,t1-jia);printf(输入名字:);scanf(%s,&t1-ming);/*名字*/printf(输入性别:);sc
14、anf(%s,&(t1-xing);/*性别*/printf(输入年龄:);scanf(%s,&(t1-nian);/*年龄*/printf(输入学号:);scanf(%s,&t1-xuehao);/*学号*/printf(输入 系别:);scanf(%s,&(t1-xibie);/*系 别*/printf(输入专业:);scanf(%s,&(t1-sushe);/*宿舍号 */printf(输入家庭地址:);scanf(%s,&(t1-jia);/*家庭地址*/printf(成功!n);printf(是否继续修改(Y/N);scanf(%d,&i);if(i=y|i=Y)clrscr();g
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 学生 信息管理 系统

限制150内