C语言程序设计课程设计报告

  • 格式:docx
  • 大小:17.12 KB
  • 文档页数:15

C语言程序设计课程设计实验报告

一、设计名称:学生成绩治理查询系统

实验项目性质:综合性

所涉及课程:C语言程序设计

打算学时:实验学时12

二、设计目的:

1. 通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;

2. 为后续各门运算机课程的学习打下坚实基础。

3. 明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。提高编写程序解决实际问题的能力、调试程序的技术。

三、设计环境(软件、硬件及条件)

1. 硬件:PC机

2. 软件:Turbo C++

四、设计说明:

程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间 的层次结构关系。

主程序:

新建:输入记录(遇#号时停止输入)。

插入:在指定位置插入记录。

显示:列出所有记录。

查询:

一、按学号查询;二、按名字排序。

删除:

一、按学号删除;

二、按名字删除;

3、删除所有记录。

排序:

一、按语文成绩排序;

二、按英语成绩排序;

3、按数学成绩排序。

保留:保留为任意名字,系统自动加后缀名为.txt。

读取:读取程序目录下的后缀名为.txt的文件。

退出:退出程序。

五、各功能模块的具体实现,用图表表示。

输入记录

显示

开始:输入学号

输入的学号是否为#

Y N

结束,返回主菜单 输入记录

循环输入

结束

开始

p=h

p!=NULL

输出学生信息;p=p->next

结束 按学号(姓名)查询信息

按学号(姓名)删除信息

读取文件

Y Head=NULL 输入要查询的学号(姓名)

是否找到该学生 Y N

输出该学生成绩 输出该学生不存在

是否重新查询 Y N

结束 回到主界面 继续运行

是否找到该学生

删除

返回 输出不能找到该学生 Y N Y Head=NULL

回到主界面 继续运行

能否找到文件

开辟新单元a1,a2; head=a1=a2=NULL;n=0;

读文件fp

!feof(fp)

n=n+1

N==1 找不到该文件 Y

Y N

N 输入文件名字(自动添加后缀名字.txt) 与要删除的学号(姓名)比较 输入要删除的学号(姓名) 与要查询的学号(姓名)比较

保留文件head=a1 a2->next=a1

a2=a1;开辟新单元a1;读取fp;

a2->next=NULL

返回

六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。

STUDENT *init(); /*初始化链表*/

STUDENT *create(); /*新建链表*/

STUDENT *del_no(STUDENT *h);/*按学号删除信息*/

STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/

void print(STUDENT *h); /*显示信息函数*/

void search_no(STUDENT *h); /*按学号搜索*/

void search_name(STUDENT *h); /*按姓名搜索*/

STUDENT *insert(STUDENT *h); /*插入信息函数*/

void sort(STUDENT *h);/* 排序函数*/

void save(STUDENT *h);/*保留数据到文件*/

void load(STUDENT *h); /*从文件读取数据*/

int menu_main(); /*菜单函数*/

void inputs(char *prompt,char *s,int count);/*输出信息*/

七、程序代码:

Enter records\n");

printf(" 2. Add records\n");

printf(" 3. List records\n");

printf(" 4. Search records\n");

printf(" 5. Delete records\n");

printf(" 6. Sort records\n"); head=a1=a2=NULL;n=0;

输入文件名字(自动添加后缀名字.txt)

保存完毕 printf(" 7. Save files\n"); printf(" 8. Load files\n");

printf(" 9. Quit\n\n");

printf("*****************************************\n");

do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/

scanf("%s",s); /*输入选择项*/

c=atoi(s); /*将输入的字符串转化为整型数*/

}while(c<1||c>9); /*选择项不在1~9之间重输*/

return c; /*返回选择项,主程序依照该数挪用相应的函数*/

}

Search records on number\n");

printf(" 2. Search records on name\n");

printf(" 3. Back\n\n");

printf("*****************************************\n");

do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/

scanf("%s",s); /*输入选择项*/

c=atoi(s); /*将输入的字符串转化为整型数*/

}while(c<1||c>3);

return c; /*返回选择项,主程序依照该数挪用相应的函数*/

}

Chinese\n");

printf(" 2. English\n");

printf(" 3. Math\n");

printf(" 4. Back\n\n");

printf("*****************************************\n"); do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/

scanf("%s",s); /*输入选择项*/

c=atoi(s); /*将输入的字符串转化为整型数*/

}while(c<1||c>4);

return c; /*返回选择项,主程序依照该数挪用相应的函数*/

}

Delete records on number\n");

printf(" 2. Delete records on name\n");

printf(" 3. Delete all records\n");

printf(" 4. Back\n\n");

printf("*****************************************\n");

do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/

scanf("%s",s); /*输入选择项*/

c=atoi(s); /*将输入的字符串转化为整型数*/

}while(c<1||c>4);

return c; /*返回选择项,主程序依照该数挪用相应的函数*/

}

.");/*提示*/

getch(); /*读入任意字符*/

}

.\n");

getch(); /*读入任意字符*/

if(p==h)

h=p->next; else

q->next=p->next;

free(p); /*释放*/

printf("\n%s had been deleted\n",s);

}

printf("\nPress any key to continue...");

getch(); /*读入任意字符*/

return h;

}

.\n");

getch();

if(p==h)

h=p->next;

else q->next=p->next;

free(p); /*释放*/

printf("\n%s had been deleted\n",s);

}

printf("\nPress any key to continue...");

getch(); /*读入任意字符*/

return h;

}

.");

getch(); /*读入任意字符*/

}