c语言课程设计报告---学生信息管理系统_第1页
c语言课程设计报告---学生信息管理系统_第2页
c语言课程设计报告---学生信息管理系统_第3页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WORD格式题目:学生信息管理系统一、需求分析任务要求:自学 C语言中有关链表及外部文件的内容,设计学生信息管理系统。具体要求如下: 建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等内容; 能够提供添加、删除和修改学生信息等功能; 能将通讯录保存在文件中; 能够按指定方式输出学生信息。系统功能需求分析: 1、为存储学生信息,需定义一个构造体类型,成员名字、性别、年龄、学号、系别、家庭信息等,并建立链表,定义该构造体类型的指针,用于指向各结点; 2 、分别建立具有添加、删除、修改、查询等功能的子函数,完成相应功能,对程序实现模块化。这其中要用到对链表的删除、插入等知识。删除时用

2、一构造体指针指向链表的第一个结点, 检查该节点的值是否等于输入的要删除的学号, 假设相等就删除,不相等那么后移指针,直至表尾。插入时也要先找到相应结点,再添加。 3、为实现存储功能,需用到文件的相关函数,翻开文件,将添加、修改或删除的信息存入磁盘中。 4、为以表格的形式输出文件,宏定义格式化输出语句,指定输出学专业资料整理WORD格式生信息。专业资料整理WORD格式二、概要设计系统总体设计框架:对程序进展模块化,建立添加、修改、删除、查找和显示功能的子函数,各子函数中运用链表存储数据。从主函数开场执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。系统功能模块图 :主菜单学学学学生生生生

3、形信信信象息息息查添删添询加除加是否保存关闭文件专业资料整理WORD格式2专业资料整理WORD格式三、详细设计主要功能模块的算法设计思路如下:1、查询通讯录信息 void chakan()( 1为开辟一个新单元( 2输入查询关键字:( 3读取保存的文件数据输入 ASCLL字符:( 4在链表中寻找相应结点;( 5调用输出函数,输出结点信息。2、添加信息函数 void add()( 1定义指向构造体变量的指针;( 2移动指针,找到插入结点;( 3在要插入的结点输入信息;( 4调用保存函数,翻开文件,保存输入信息。3、删除信息函数 void del()( 1定义指向构造体变量的指针;( 2用指针检验

4、链表中是否有记录,假设没记录,返回主函数;( 3根据要修改的编号查找要删除的结点;( 4修改链表,删除对应结点。4、修改信息函数 void xiugai()( 1定义指向构造体变量的指针;( 2读取保存的文件数据输入 ASCLL字符:( 3用指针检验链表中是否有记录,假设没记录,返回主函数;( 4根据要修改的编号查找对应结点;( 5修改信息;( 6翻开文件,保存修改记录。5、保存信息函数baocun()1定义指向构造体变量的指针;2用文件指针指向要读写的磁盘文件名,假设没有那么新建此文件名:3用指针检验链表中是否有记录,假设没记录,返回主函数:4翻开文件,保存记录:6、屏幕操作函数 void

5、stubent187()1以一定格式输出所想要的图形:专业资料整理WORD格式3专业资料整理WORD格式四、主要源程序代码定义变量:对整个程序定义全局变量#include stdio.h#include conio.h#define STUDENT ID/* 所有 STUDENT 都用 ID 来代替 */typedef struct node/* 定义构造体 */char ming50;/* 名字 */char xing50;/* 性别 */char nian50;/* 年龄 */intxuehao;/* 学号 */char xibie50;/* 专业 */char sushe50;/* 宿舍

6、号 */char jia50;/* 家庭地址 */struct node *next;ID;/* 学生信息变量名 */ID *head=NULL;/* 定义一个头指针 */FILE *zhi;/* 定义一个文件指针 */主菜单界面:进入屏幕界面的形式void stubent187()/* 屏幕格式函数 */printf(*n);printf(*学生信息管理系统*n);printf(*n);printf(*请选择: 1:查看 ; 2:添加 ; 3:删除 ;*n);printf(*4:修改 ; 0:退出系统*n);printf(*n);printf(*n); printf( 输入 04 数字 mi

7、ng,&t-xing,&t-nian,&t-xuehao,&t-xibie,&t-sushe,&t-jia); /* 读取保存的文件数据输入 ASCLL字符: */printf(%10s%10s%10s%10d%10s%10s%10sn,t-ming,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 *)

8、malloc(sizeof(ID);/* 为 t1 开辟一个新单元 */printf( 请输入* :);scanf(%s,&t1-ming);/* * */printf( 请输入性别 :);scanf(%s,&t1-xing);/* 性别*/printf( 请输入年龄 :);scanf(%s,&(t1-nian);/* 年龄 */printf( 请输入学号 :);scanf(%d,&(t1-xuehao);/*学号*/printf( 请输入系别 :);scanf(%s,&(t1-xibie);/* 系别 */printf( 请输入宿舍号 :);scanf(%s,&(t1-sushe); /*

9、宿舍号 */ printf( 请输入家庭地址 :);scanf(%s,&(t1-jia); /* 家庭地址 */ t1-next=NULL;if (head=NULL)/* 如果头结点为空 */head=t1;/*t1 指向头结点 */t2=t1;else t2=head;while (t2-next!=NULL) t2=t2-next;/* 没有成立那么指向下个结点 */ t2-next=t1; getchar();printf( 是否继续添加 (Y/N):n);专业资料整理WORD格式5专业资料整理WORD格式scanf(%s,&i);/* 输入 Y/N*/if(i=y|i=Y)clrsc

10、r(); goto loop;/*清屏在 循环 */elseprintf( 是否保存此次添加 (Y/N)n);scanf(%s,&i);if(i=y|i=Y)/* 是否要保存 */baocun();/* 调用保存 */clrscr();/* 清屏 */stubent187();/*调用屏幕函数 */printf( 保存成功 );elseif(i=n|i=N)clrscr();/* 清屏 */stubent187();/* 调用屏幕函数 */return ;删除学生信息操作:对以存的学生信息进展删除void del()/* 删除 */ID *A,*B;/* 定义指针 */char t,i;int

11、 xuehao;/* 定义整型变量与字符型变量*/A=B=NULL;if(zhi=fopen(yihu1.txt,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-xibie,&A-sushe,&A-jia); /* 读取保存的文件数据输入ASCLL字符: */if(A!=NULL & A

12、-xuehao!=xuehao)A=A-next;else break;if (A-xuehao=xuehao)head=A-next; free(*A);专业资料整理WORD格式6专业资料整理WORD格式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();elseclrscr();stubent187();elseprintf( 无法找到此编号 n)

13、;修改学生信息操作: 对保存的学生信息进展修改void xiugai()/* 修改 */ID *t1,*t2;/* 定义指针 */int i;char xuehao;/* 定义整型变量与字符型变量*/t1=head;if(zhi=fopen(yihu1.txt,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-nian,&t1-

14、xuehao,&t1-xibie,&t1-sushe,&t1-jia); * 读取保存的文件数据输入ASCLL字符: */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( 输入性别 :);s

15、canf(%s,&(t1-xing);/* 性别 */printf( 输入年龄 :);scanf(%s,&(t1-nian);/* 年龄 */printf( 输入学号 :);scanf(%s,&t1-xuehao);/* 学号 */专业资料整理WORD格式7专业资料整理WORD格式printf(输 入 系 别 :);scanf(%s,&(t1-xibie);/*系 别 */printf( 输 入 专业 :);scanf(%s,&(t1-sushe);/*宿 舍号*/printf( 输入家庭地址 :);scanf(%s,&(t1-jia);/*家庭地址 */printf( 成功 !n);prin

16、tf( 是否继续修改 (Y/N);scanf(%d,&i);if(i=y|i=Y)clrscr(); goto loop;if(i=n|i=N)printf( 是否保存此次修改 (Y/N)n);scanf(%c,&i);if(i=y|i=Y)baocun();elseclrscr();/* 清屏 */stubent187();/* 调用屏幕函数 */elseprintf( 没有此编号 n);return;保存添加,删除,修改学生的信息:操作过后是否保存 baocun()/* 保存 */ID *t=head;/* 定义指针 */zhi=fopen(yihu1.txt,a+);/*( 读写 yih

17、u.txt 文本 )*/while (t!=NULL)fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t-ming,t-xing,t-nian,t-xuehao,t-xibie,t-sushe,t-jia);/* 以 zhi 为文件指针保存 */ t=t-next;fclose(zhi); /* 关闭此文件 */ printf( 成功! n);return ;主菜单操作:选择所需要的操作main()/* 主函数 */int i;/* 定义整形变量 i*/stubent187();/* 调用屏幕函数 */专业资料整理WORD格式8专业资料整理WORD格式whi

18、le(1)scanf(%d,&i);/* 输入要执行的操作 */switch(i)case 1:chakan();break;/* 调用查看函数 */case 2:add();break;/* 调用添加函数 */case 3:del();break;/* 调用删除函数 */case 4:xiugai();break;/* 调用修改函数 */case 0:exit(0);/* 完毕 */default:printf( 输入错误,请在此输入 n);continue;/* 输入不是 04 的,那么返回 */源函数代码:void chakan()/* 查看 */ID *t;t=head;t=(ID *

19、)malloc(sizeof(ID); /* 为 t 开辟一个新单元 */ if(zhi=fopen(yihu1.txt,rb)=NULL) printf( 没有此文件 n);elseprintf(%10s%10s%10s%10s%10s%10s%10sn,ming,xing,nian,xuehao,eng,sushe,jia);/* 输出一个屏幕格式 */while (!feof(zhi)fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&t-ming,&t-xing,&t-nian,&t-xuehao,&t-xibie,&t-sushe,&t-jia); /

20、* 读取保存的文件数据输入 ASCLL字符: */printf(%10s%10s%10s%10d%10s%10s%10sn,t-ming,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;/* 添加 */专业资料整理WORD格式9专业资料整理WORD格式ID *t1,*t2;t1=t2=NULL;loop:t1=(ID *)malloc(sizeof(ID);/* 为 t1 开辟一个新单元 */printf

21、( 请输入* :);scanf(%s,&t1-ming);/* */printf( 请输入性别 :);scanf(%s,&t1-xing);/* 性别*/printf( 请输入年龄 :);scanf(%s,&(t1-nian);/* 年龄 */printf( 请输入学号 :);scanf(%d,&(t1-xuehao);/*学号*/printf( 请输入系别 :);scanf(%s,&(t1-xibie);/* 系别 */printf( 请输入宿舍号 :);scanf(%s,&(t1-sushe); /* 宿舍号 */ printf( 请输入家庭地址 :);scanf(%s,&(t1-jia)

22、; /* 家庭地址 */ t1-next=NULL;if (head=NULL)/* 如果头结点为空 */head=t1;/*t1 指向头结点 */t2=t1;else t2=head;while (t2-next!=NULL) t2=t2-next;/* 没有成立那么指向下个结点*/t2-next=t1; getchar();printf( 是否继续添加 (Y/N):n);scanf(%s,&i);/* 输入 Y/N*/if(i=y|i=Y)clrscr(); goto loop;/*清屏在 循环 */elseprintf( 是否保存此次添加 (Y/N)n);scanf(%s,&i);if(

23、i=y|i=Y)/* 是否要保存 */baocun();/* 调用保存 */clrscr();/* 清屏 */stubent187();/*调用屏幕函数 */printf( 保存成功 );elseif(i=n|i=N)clrscr();/* 清屏 */stubent187();/* 调用屏幕函数 */return ;void del()/* 删除 */ID *A,*B;/* 定义指针 */char t,i;int xuehao;/* 定义整型变量与字符型变量*/专业资料整理WORD格式10专业资料整理WORD格式A=B=NULL;if(zhi=fopen(yihu1.txt,a+)=NULL)

24、 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-xibie,&A-sushe,&A-jia); /* 读取保存的文件数据输入ASCLL字符: */if(A!=NULL & A-xuehao!=xuehao)A=A-next;else break;if (A-xuehao=xuehao)head=A-next;

25、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();elseclrscr();stubent187();elseprintf( 无法找到此编号 n);void xiugai()/* 修改 */ID *t1,*t2;/* 定义指针 */int i;char xuehao;/* 定义整型变量与字符型变量*/t1=head;if(zhi=f

26、open(yihu1.txt,a+)=NULL) printf(没有此信息文件 n);loop:printf( 请输入要修改的学号:);scanf(%s,&xuehao);/* 输入编号*/while (!feof(zhi)专业资料整理WORD格式11专业资料整理WORD格式fscanf(zhi,%10s%10s%10s%10d%10s%10s%10sn,&t1-ming,&t1-xing,&t1-nian,&t1-xuehao,&t1-xibie,&t1-sushe,&t1-jia); * 读取保存的文件数据输入ASCLL字符: */if(t1!=NULL & t1-xuehao!=xueh

27、ao)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( 输入性别 :);scanf(%s,&(t1-xing);/* 性别 */printf( 输入年龄 :);scanf(%s,&(t1-nian);/* 年龄 */printf( 输入学号 :);sca

28、nf(%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(); goto loop;if(i=n|i=N)printf( 是否保存此次修改 (Y/N)n);scanf(%c,&i);if(i=

29、y|i=Y)baocun();elseclrscr();/* 清屏 */stubent187();/* 调用屏幕函数 */elseprintf( 没有此编号 n);return;baocun()/* 保存 */ID *t=head;/* 定义指针 */zhi=fopen(yihu1.txt,a+);/*( 读写 yihu.txt 文本 )*/while (t!=NULL)fprintf(zhi,%10s%10s%10s%10d%10s%10s%10sn,t-ming,t-xing,t-nian,t-xuehao,t-xibie,t-sushe,t-jia);/* 以 zhi 为文件指针保存 */专业资料整理WORD格式12专业资料整理WORD格式t=t-next;fclose(zhi)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论