1、 高级语言课程设计 题目: 学生信息记录簿 学 院 班 级 姓 名 学 号 成 绩 指导老师 年 月 日 目录 一、 目的 二、 题目要求 三、 系统设计 四、 程序代码和运行结果 五、 编程中遇到的困难及解决方法 六、 心得体会 七、 参考文献 一一、目的目的 1.进一步掌握和利用 C 语言进行程序设计的能力 2.进一步了解和运用文件和链表的思想和方法 3.初步掌握开发一个小型实用系统的基本方法 4.学会调试一个较长程序的基本方法 5.掌握书写程序设计开发文档的能力 二、二、题目要求题目要求 编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能: (1) 创建信息链表并以
2、磁盘文件保存; (2) 读取磁盘文件并显示输出所有学生的籍贯信息; (3) 按学号或姓名查询其籍贯; (4) 按籍贯查询并输出该籍贯的所有学生; (5) 能添加、删除和修改学生的籍贯信息; (6) 显示输出唐山籍和非唐山籍学生的信息并可分别存盘。 三三、系统设计系统设计 1. 设计原始资料设计原始资料 (1)链表基础知识 (2)文件处理基础知识 2. 数据结构数据结构 struct Student char num21; /学生学号 char name256;/学生姓名 char address562;/学生籍贯 struct Student *next; ; 声明一个结构体类型 Studen
3、t 3.模块设计模块设计 (1)creat 函数:添加需要录入的学生信息 (2)name_surch 函数:根据姓名查找学生 (3)num_surch 函数:根据学号查找学生 (4)NativePlace_surch 函数:按籍贯查找学生 (5)modification_shiyan 函数:修改学生信息 (6)showSzechwan_No 函数分别显示唐山和非唐山籍学生并非别存盘 (7)print_save 函数:保存文件信息 (8)fileout 函数:显示文件信息 2 程序流程图程序流程图 四、四、程序代码和运行结果程序代码和运行结果 程序代码程序代码 #include #include
4、 #include #define LEN sizeof(struct Student) struct Student char num21; char name256; char address562; struct Student *next; ; int n;/n 为全局变量,本文件模块中各函数均可使用它 struct Student *creat()/定义函数。此函数返回一个指向链表头的指针 struct Student *head; struct Student *p1,*p2; n=0; p1=p2=(struct Student *)malloc(LEN); printf(“请依
5、次输入学生的信息,输入学号为零时退出。n“); printf(“学号t 姓名t 地址n“); scanf(“%s%s%s“,p1-num,p1-name,p1-address); head=NULL; while(p1-num0!=0)/当学号是 0 时,退出 n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(struct Student *)malloc(LEN);/开辟动态存储区,把起始地址付给 p1 printf(“学号t 姓名t 地址n“); scanf(“%s%s%s“,p1-num,p1-name,p1-address); p2
6、-next=NULL; system(“cls“); return(head); void print_save(struct Student head) FILE *fp; struct Student *p; fp=fopen(“D:stduent.txt“,“wb+“);/打开文件 if(fp=NULL) printf(“文件无法打开n“); exit(0); printf(“n 现在,有 %d 条记录,分别是:n“,n); p= if( puts(p-num); printf(“n 姓名:“); puts(p-name); printf(“n 地址:“); puts(p-address); fseek(fp,0,2); if(fwrite(p,sizeof(struct Student),1,fp)!=1) printf(“文件无法写入n“); p=p-nex