1. 主要功能。
2. 题目分析。
3. 源程序。
4. 调用关系图。
5. 测试流程。
建立有序链表、输出链表数据、节点的有序插入、节点删除、节点数据查询、从文件中整批输入数据、将链表记录写入到文件中、链表逆序存放、删除同名记录、退出管理系统。
本题的主要知识点为链表,以及对文件的操作。
本题中的函数,大都在教材中有类似的例题,因此遇到的问题不太多;但在文件的操作方面则出现了一些问题,例如在第6项输入文件名时,不输入拓展名则会提示找不到文件,第7项时若不输入拓展名,则文件的格式不符合要求。
#include<>
#include<>
#include<>
#include<>
struct stud定义节点结构 */
char name[20];
float sorce;
struct stud *next;
typedef struct stud student;
student *insert(student *head,student *s)
student *p1,*p2;
if(head==null建立首节点 */
p2=p1=head;
while(strcmp(s->name,p1->name)>0&&p1->next!=null中间节点 */
if(strcmp(s->name,p1->name)<=0字符串比较,按姓名排序 */
elsereturn (head);
student *create()
student *p,*head=null;
float k;
printf("please input the student's name and score(if(n) exit):输入第一个数据 */
for循环输入数据 */
while(k<0)
p->sorce=k;
head=insert(head,p);
printf("please input the student's name and score(if(n) exit):");
return (head返回创建链表的首指针 */
void display(student *head)
student *p;
int n=0;
p=head;
if(head==null)
printf("the list is null.");
while(p!=null)
student *insert_a_record(student *head)
student *p;
p=(student *)malloc(sizeof(student));
printf("please input the student's name and score:");
scanf("%s%f",p->name,&p->sorce);
head=insert(head,p);
return(head);
student *delete(student *head,char *name)
student *p1,*p2;
if(head==null链表为空 */
p1=head;
while(strcmp(name,p1->name)!=0&&p1->next!=null循环查找待删除结点 */
if(strcmp(name,p1->name)==0)
else未找到待删除结点 */
printf("the student is not found.");
return(head);
student *delete_a_record(student *head)
char name[20],x;
printf("please input the student's name:");
scanf("%s",name);
printf("if you confirm,please input y,else exit:");
getchar();
scanf("%c",&x);
if(toupper(x)==y')
head=delete(head,name);
return(head);
student *query(student *head,char *name)
student *p;
p=head;
while(p!=null)
return null若找不到,返回空指针 */
student *query_a_record(student *head)
char na[20];
student *p;
printf("please input the student's name:");
scanf("%s",na);
p=query(head,na);
if(p!=null)
printf("name:%s\tscore:%f",p->name,p->sorce);
elseprintf("student %s is not found.",na);
student *addfromtext(student *head,char *filename)
file *fp;
int n,i;
student *p;
if((fp=fopen(filename,"r"))null)
fscanf(fp,"%d",&n);
for(i=0;i
fclose(fp);
return(head);
void writetotext(student *head,char *filename)
student *p;
file *fp;
if((fp=fopen(filename,"w"))null)
printf("can't open %s",filename);
p=head;
while(p!=null)
fclose(fp);
student *reverse(student *head)
student *p1,*p2,*p;
if(head==null)
return(head);
p1=head;
p=p1->next;
p1->next=null;
while(p->name!=null)
return (p1);
student *deletesame(student *head)
student *p2,*p1;
p1=head;
while(p1!=null删除相同姓名的第一条纪录 */
p2=p1;
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...