C语言实习报告
了这一次 C 语言实习。
实习中,我们将按要求完成一个较为复杂的程序编写——学生学
籍管理程序。
实习基本内容和要求:
1、总体功能要求
(1)链表的建立:每个节点包括:学号、姓名、性别、语文、
数学、英语、总分;
(2)节点的插入:按学号的顺序插入;
(3)删除链表中的节点:按学号或者姓名;
(4)链表的输出:按学号排序、按总分排序。
p 指向的不是尾结点
真
假
输出 p 所指向的结点
P 指向下一结点
当 p 指的周文君
- 10 -
C 语言实习
性能的要求
1)各个功能分别用函数实现; 2)节点信息让用户通过键盘输入; 3)总分通过计算获得; 4)有简单的操作界面; 5)尽可能考虑程序的容错性、可操作性。
详细设计
程序代码
#include<stdio.h> #include<ctype.h> #include<string.h> #include<Malloc.h> #define NULL 0 #define LEN sizeof(struct student)
/*头文件*/ /*令 NULL 为 0,表示空地址*/ /*令 LEN 代表 struct student 类型数据的长 度,sizeof 是“求字节数运算符”*/
/*定义结构体类型*/ struct student
{
环境学院
地信 0912 周文君
- 11 -
long id; char name[20]; char sex[10]; int chinese; int maths; int english; int total; struct student *next; };
/*指向表头的指针*/ /*条件运用*/ /*开辟一个新单元*/ /*输入学生学号*/ /*输入学生姓名*/ /*输入学生性别*/ /*输入学生语文成绩*/ /*判断成绩是否超出范围*/
C 语言实习
C 语言实习报告
(用链表实现学生学籍管理)
姓名:周文君 班级:地信 0912 班 学号:0920209227 指导老师:史守正 实习内容:编写程序 实习地点:C1-学生机房 实习时间:2010/7/22 至 2010/7/26
环境学院
地信 0912 周文君
-1-
C 语言实习
绪言
C 语言使国内外广泛使用的一种计算机语言。C 语言功能丰富、
课程目标
(1) 掌握 C 语言中的基本数据输入、输出; (2) 熟练掌握 C 语言中的三种基本结构的使用; (3) 熟练使用 C 语言中的数组; (4) 熟练使用 C 语言中的函数; (5) 熟练使用 C 语言中的指针; (6) 熟练使用 C 语言中的结构体,尤其是链表。
系统概况
本系统就是运用 C 程序设计中的结构体、指针、函数(系统库函数、 自定义函数)、用指针处理链表、文件操作等知识编写的一个简单的方便查询和 管理学籍的应用系统。整个系统考虑到了系统的容错性和可操作性,严格遵守功
菜单的设计比较简洁,每一个执行命令都有相对应的编码,使用者根据需要 来选择,系统会自动执行相应操作,并且输出相关信息以供使用者参考。 主菜 单如下所示:1:创建学生信息记录
2:删除学生信息记录 3:插入学生信息记录 4:按学号将记录排序 5:按总份将记录排序 6:计算平均成绩 7:退出系统 8:输出须生信息记录
是
否 information->next=
head=p
Information->next=q NULL
p->next=informatio information->next=p (插到表尾之后)
n
n=n+1
环境学院
地信 0912 周文君
-8-
3) 学生信息删除模块
C 语言实习
链表是一个空表
真
假
p1=head
环境学院
地信 0912 周文君
-6-
C 语言实习
需求分析
总体功能要求
1)链表的建立。每个节点包括:学号、姓名、性别、语文、数学、英语、 总分。
2)节点的插入。按学号的顺序插入。 3)删除链表中的节点。按学号或者姓名; 4)链表的输出。按学号排序、按总分排序
功能模块图、流程图
功能模块图
插入学生记录
创建学生记录
返回头指针
5) 求算各科平均值模块:
p=head,是 p 指向第一个结点 P 指向的是尾结点
True
p 指向下一个结点 当 p 指的是表尾结束 输出 a 平均分
6) 学生信息输出
Fa lse s+=p->sum 求总分 a=(float)s/i 得到平均分 i 是记录数
p=head,使 p 指向第一结点
详细设计-----------------------8
程序代码-------------------------8 关键部分的注视和说明-------------17
设计心得总结-------------------19
环境学院
地信 0912 周文君
-4-
C 语言实习
实习目标
实习目的
(1) 巩固 C 语言所学基本课程; (2) 提高 C 语言编程的综合应用能力; (3) 学会 C 语言程序的编译、调试方法。 (4) 在编程的过程中提高自己各方面的能力,例如:自主思考,大胆实践,团 队合作等 (5) 要学会用正确心态且耐心的面对长篇的程序
2、性能的要求:
(1)各个功能分别用函数实现;
环境学院
地信 0912 周文君
-2-
C 语言实习
(2)节点信息让用户通过键盘输入 (3)总分通过计算获得; (4)有简单的操作界面; 尽可能考虑程序的容错性、可操作性。 教材和主要参考书目: (1)教材:《C 程序设计》,谭浩强编著,清华大学出版社 (2)主要参考书目: ①《C 程序设计教程》,谭浩强编著,清华大学出版社; ②《C 语言程序设计——习题与实验指导》,谭浩强编著,清华 大学出版社。实习过程: 我们将有 5 天的时间完成一个程序和一份实习报告。 1、 我们要根据题目的要求进行需求分析和资料整理;(1 天) 2、 我们利用资料、教材和寻求他人帮助完成详细设计;(注: 关键部分解释说明)(3 天) 3、 完成一份对自己程序详细描述与解释的报告。(1 天)
n=n+1
n 等于 1?
真
假
head=p1 (把 p1 所指向的 结点作为第一个
节点)
p2->next=p1 (把 p1 所指向的结 点连接到表尾)
p2=p1(p2 移到表尾) 再开辟一个新的结点,使 p1 指向它 再读入一个学生数据给 p1 所指结点
表尾结点的指针变量置
2) 插入学生信息
p=head,information=stud
{ struct student *head; struct student *p1,*p2; n=0; p1=p2=(struct student*)malloc(LEN); printf("\ninput student's id: "); scanf("%ld",&p1->id); printf("input student's name: "); scanf("%s",p1->name); printf("input student's sex(f or m): "); scanf("%s",p1->sex); printf("input chinese score: "); scanf("%d",&p1->chinese); while(p1->chinese>100||p1->chinese<0) {printf("error,input again\n"); printf("input chinese score: "); scanf("%d",&p1->chinese);} printf("input maths score: "); scanf("%d",&p1->maths); while(p1->maths>100||p1->maths<0) {printf("error,input again\n"); printf("input maths score: "); scanf("%d",&p1->maths);} printf("input english score: "); scanf("%d",&p1->english); while(p1->english>100||p1->english<0) {printf("error,input again\n"); printf("input english score: "); scanf("%d",&p1->english);}
q=p
待排序点值大,往后插,所以新表指针后
p=p->next
移
if(p==q)
True
False
t->next=p 待排序点的后继为 P
t->next=p (t=p+1)
h=t 新头结点为待排序点
q->next=t(q=t+1)
printf("Finish sorting\n"); (排序成功)