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(); /*读入任意字符*/
}