c语言课程设计成绩记录簿
C语言程序设计报告-学生成绩记录簿

2.2结构流程图
2.3功能
2.4性能
2.5输入输出项信息
3功能模块说明
3.1流程逻辑
3.2算法
4程序测试,运行结果及说明
5课程设计总结
6附录(参考文献,原代码解析,限制条件,程序测试)
6.1参考文献
6.2原代码解析
6.3限制条件
1.概述
1.1 题目
成绩记录簿
1.2程序描述
本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
(2)按学号查询
4.查询班级成绩
5.写入文本文件
6.读取文本文件
4课程设计总结
短短的俩周已经过去了,在此我将交出我一周的成果,我真是百感交错
1.原先写程序直接编,条理性太差。如果先做一个流程图就条理很多。
2.学会了将文件存入和读取,并学会在文件中加入信息和删除信息。
3.我在查找学生姓名时遇到困难,从课本上找到了一个函数strcmp,解决了问题
1.建立一个主界面
2.用switch语句进行分类讨论
3.分别进入录入,查询,删除,求平均值等子函数。
4.将子函数与主函数相连即可。
1.3程序性能
该程序可以建立学生的成绩记录。可以方便老师和同学方便的查阅成绩;
这个程序有录入和删除的功能;
还可以求出平均成绩,并排序
2课题分析
2.1程序系统的结构
2.2程序流程图
按平均值排序只要加一个排序函数即可。
C语言程序的设计报告-学生成绩记录簿

应用技术学院课程设计2011 ~ 2012学年第 2 学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级 11104301 学号 1110430115学生 xx设计时间 2012.06.25~2012.07.06指导教师 xxx提交日期 2012.07.06目录1. 概述1.1 题目1.2程序简述1.3程序性能2 课题分析2.1 程序系统的结构2.2 结构流程图2.3 功能2.4 性能2.5 输入输出项信息3 功能模块说明3.1 流程逻辑3.2 算法4 程序测试,运行结果及说明5课程设计总结6附录(参考文献,原代码解析,限制条件,程序测试)6.1参考文献6.2原代码解析6.3限制条件1.概述1.1 题目成绩记录簿1.2程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,求平均值等子函数。
4.将子函数与主函数相连即可。
1.3程序性能该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序2课题分析2.1程序系统的结构2.2程序流程图课程编号2.3功能成绩记录簿中记录以下数据:学号、、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分: 1~ 5之间的实型数。
添加成绩:需要输入学生的学号或、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
C语言程序设计报告学生成绩记录簿

C语言程序设计报告学生成绩记录簿Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】上海应用技术学院课程设计2011 ~ 2012学年第 2 学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级学号 15学生姓名 xx设计时间指导教师 xxx提交日期目录1. 概述题目程序简述程序性能2 课题分析程序系统的结构结构流程图功能性能输入输出项信息3 功能模块说明流程逻辑算法4 程序测试,运行结果及说明5课程设计总结6 .............. 附录(参考文献,原代码解析,限制条件,程序测试) 6.1 参考文献6.2 原代码解析限制条件1.概述题目成绩记录簿程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,求平均值等子函数。
4.将子函数与主函数相连即可。
程序性能该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序2课题分析程序系统的结构程序流程图课程编号功能号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分: 1~ 5之间的实型数。
添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。
C语言程序设计报告材料-学生成绩记录簿簿

应用技术学院课程设计2011 ~ 2012学年第 2 学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级 11104301 学号 1110430115学生 xx设计时间 2012.06.25~2012.07.06指导教师 xxx提交日期 2012.07.06目录1. 概述1.1 题目1.2程序简述1.3程序性能2 课题分析2.1程序系统的结构2.2 结构流程图2.3功能2.4 性能2.5 输入输出项信息3 功能模块说明3.1 流程逻辑3.2 算法4 程序测试,运行结果及说明5课程设计总结6 附录(参考文献,原代码解析,限制条件,程序测试)6.1参考文献6.2原代码解析6.3限制条件1.概述1.1 题目成绩记录簿1.2程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,求平均值等子函数。
4.将子函数与主函数相连即可。
1.3程序性能该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序2课题分析2.1程序系统的结构2.2程序流程图课程编号2.3功能成绩记录簿中记录以下数据:学号、、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分:1~ 5之间的实型数。
添加成绩:需要输入学生的学号或、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
C语言程序设计学生成绩记录簿

课程实验报告
本程序是非数值计算型算法设计,我设计出了学生成绩记录簿系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个成绩记录簿系统也初步实现了学生成绩信息的显示、输入、删除、查找等必要的功能。
1.建立一个主界面
2.用switch语句进行分类讨论
3.分别进入录入,查询,删除,等子函数。
4.将子函数与主函数相连即可。
该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;
还可以求出平均成绩,并排序
成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分
添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示;
查询(班级或个人)成绩:
查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。
实
验
界
面
截
图2、添加
3、查询
4、查询成绩
5、写文本
6、读取
算
主程序提供一个界面,允许用户选择。
使用switch语句,用时直接输入数字即可。
增加函数,功能是插入学生成绩。
使用一个无穷循环,直到录入”n”时结束。
删除函数,功能是删除,分为两步,先找后删。
找,用strcmp函数来。
成绩记录薄的C语言设计程序

#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 100typedef struct{char num[100];//char name[100];int grade;}Student;Student stu[MAX];int n;main(){void Input();void Display();void Readfile();void Find();void Modify();void Save();void Dis();int choose;do{printf("1输入学生信息并存档\n");printf("2读取学生信息并显示\n");printf("3按学号或姓名查询成绩\n");printf("4修改(删除)指定姓名或学号的学生的成绩并可存盘\n"); printf("5显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息\n");printf("退出(其他数字)\n");scanf("%d",&choose);if(choose==1) {Input();Save();}else if(choose ==2) {Readfile();Display();}else if(choose ==3) {Readfile();Find(1);}else if(choose==4) {Readfile();Find(0);}else if(choose==5) {Readfile();Dis();}}while(1);}void Dis(){int i;printf("60分以下的:\n");for(i=0;i<n;i++){if(stu[i].grade<60)printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}printf("60~79分的:\n");for(i=0;i<n;i++){if(stu[i].grade<80&&stu[i].grade>=60) printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}printf("80~89分的:\n");for(i=0;i<n;i++){if(stu[i].grade<90&&stu[i].grade>=80) printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}printf("90分的:\n");for(i=0;i<n;i++){if(stu[i].grade>=90)printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}}void Modify(int t){int choose;int i;printf("1.删除\n");printf("other.修改\n");scanf("%d",&choose);if(choose==1){for(i=t;i<n-1;i++){stu[i]=stu[i+1];}n--;}else{printf("请重新输入该学生的信息:\n");scanf("%s %s %d",stu[t].num,stu[t].name,stu[t].grade);}Save();}void Find(int p){int i;int choose,t;char ans[100];do{printf("1.按学号查找\n");printf("2.按姓名查找\n");printf("返回主菜单(其他数字)\n");scanf("%d",&choose);if(choose==1||choose==2){scanf("%s",ans);t=-1;if(choose==1){for(i=0;i<n;i++)if(strcmp(ans,stu[i].num)==0) {t=i;break;}}else{for(i=0;i<n;i++)if(strcmp(ans,stu[i].name)==0) {t=i;break;}}if(t==-1) printf("不存在该学生信息\n");else{if(p==1)printf("%s %s %d\n",stu[t].num,stu[t].name,stu[t].grade);elseModify(t);}}else return;}while(1);}void Display(){int i;printf("学号姓名成绩:\n");for(i=0;i<n;i++){printf("%s %s %d\n",stu[i].num ,stu[i].name ,stu[i].grade);}}void Readfile(){FILE *fp;if((fp=fopen("student.dat","r"))==NULL) return ;n=0;while(!feof(fp)){fscanf(fp,"%s%s%d",stu[n].num,stu[n].name,&stu[n].grade);n++;}fclose(fp);}void Input(){n=0;do{printf("请输入第%d个学生信息,输入exit结束输入(输入格式:学号姓名成绩)\n",n+1);scanf("%s",stu[n].num);if(strcmp(stu[n].num,"exit")==0) break;scanf("%s%d",stu[n].name,&stu[n].grade);n++;}while(1);}void Save(){int i;FILE* fp;if((fp=fopen("student.dat","a"))==NULL)fp=fopen("student.dat","w");for(i=0;i<n;i++){fprintf(fp,"%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}fclose(fp);}。
C语言程序设计学生成绩记录簿

课程实验报告实验题目描述本程序是非数值计算型算法设计,我设计出了学生成绩记录簿系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。
我设计的这个成绩记录簿系统也初步实现了学生成绩信息的显示、输入、删除、查找等必要的功能。
1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,等子函数。
4.将子函数与主函数相连即可。
该程序可以建立学生的成绩记录。
可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成的总学分。
查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。
拓展功能:a) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示;b) 每次修改的数据写入文件实验界面截图2、添加3、查询4、查询成绩5、写文本6、读取算法主程序提供一个界面,允许用户选择。
使用switch语句,用时直接输入数字即可。
增加函数,功能是插入学生成绩。
使用一个无穷循环,直到录入”n”时结束。
删除函数,功能是删除,分为两步,先找后删。
找,用strcmp函数来。
C语言课程设计实验报告成绩记录簿

.C语言课程设计报告题目:成绩记录簿学生姓名:学生学号:所在班级:任课教师:2012年6月19日目录1.设计目的2.设计思路3.总体设计4.详细设计5.设计体会6附录(所写是运行程序的图片)一、设计目的要求:编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。
、二、设计思路1.设计好算法,用流程图或者用自己简单的想法,并记好记录。
2.分别做好主函数,和需要用到的各个函数,参考我们的教材一点点的综合在一起。
慢慢的从中学到技巧。
3.将已学过的代码和学过的函数拼接起来,做好调试和改正。
4.从新检查一遍,将没用的函数或者多余的步骤简化,提高运行速度。
5.完成系统总结报告以及使用说明书。
三、总体设计四、详细设计#include "stdio.h"#include "stdlib.h"#include "string.h"int shoudsave=0; //struct student{char num[20];//学号char name[20];int cgrade;char neartime[10];//最近更新时间};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf("*************************************************************** *****************");printf("\t1输入学生资料\t\t\t\t\t2查询学生资料\n");printf("\t3修改学生资料\t\t\t\t\t4显示学生资料\n");printf("\t5统计学生成绩\t\t\t\t\t6保存学生资料\n");printf("\t7获取帮助信息\t\t\t\t\t0退出系统\n");printf("*************************************************************** *****************\n");}void printstart(){printf("-----------------------------------------------------------------------\n");}void Wrong(){printf("\n=====>提示:输入错误!\n");}void Nofind(){printf("\n=====>提示:没有找到该学生!\n");void printc() // 本函数用于输出中文{printf(" 学号\t 姓名C语言成绩\n");}void printe(Node *p)//本函数用于输出英文{printf("%-12s%s\t%d\t \n",p->data.num,p->,p->data.cgrade);}Node* Locate(Link l,char findmess[],char nameornum[]) //该函数用于定位连表中符合要求的接点,并返回该指针{Node *r;if(strcmp(nameornum,"num")==0) //按学号查询{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0)return r;r=r->next;}}else if(strcmp(nameornum,"name")==0) //按姓名查询{r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0)return r;r=r->next;}}return 0;}void Add(Link l) //增加学生{Node *p,*r,*s;char num[10];r=l;s=l->next;while(r->next!=NULL)r=r->next; //将指针置于最末尾while(1)printf("请你输入学号(以'0'返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0)break;while(s){if(strcmp(s->data.num,num)==0){printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);printstart();printc();printe(s);printstart();printf("\n");return;}s=s->next;}p=(Node *)malloc(sizeof(Node));strcpy(p->data.num,num);printf("请你输入姓名:");scanf("%s",p->);getchar();printf("请你输入c语言成绩:");scanf("%d",&p->data.cgrade);//信息输入已经完成p->next=NULL;r->next=p;r=p;shoudsave=1;}}void Qur(Link l) //查询学生{int sel;char findmess[20];Node *p;if(!l->next){printf("\n=====>提示:没有资料可以查询!\n");return;}printf("\n=====>1按学号查找\n=====>2按姓名查找\n"); scanf("%d",&sel);if(sel==1)//学号{printf("请你输入要查找的学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("\t\t\t\t查找结果\n");printstart();printc();printe(p);printstart();}elseNofind();}else if(sel==2) //姓名{printf("请你输入要查找的姓名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){printf("\t\t\t\t查找结果\n");printstart();printc();printe(p);printstart();}elseNofind();}elseWrong();}void Modify(Link l){Node *p;char findmess[20];if(!l->next){printf("\n=====>提示:没有资料可以修改!\n");return;}printf("请你输入要修改的学生学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("请你输入新学号(原来是%s):",p->data.num);scanf("%s",p->data.num);printf("请你输入新姓名(原来是%s):",p->);scanf("%s",p->);printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade); scanf("%d",&p->data.cgrade);printf("\n=====>提示:资料修改成功!\n");shoudsave=1;}elseNofind();}void Disp(Link l){int count=0;Node *p;p=l->next;if(!p){printf("\n=====>提示:没有资料可以显示!\n");return;}printf("\t\t\t\t显示结果\n");printstart();printc();printf("\n");while(p){printe(p);p=p->next;}printstart();printf("\n");void Tongji(Link l){Node *pc = l; //用于指向分数最高的接点Node *r=l->next;if(!r){printf("\n=====>提示:没有资料可以统计!\n");return ;}while(r!=NULL){if(r->data.cgrade>=pc->data.cgrade)pc=r;r=r->next;}printf("------------------------------统计结果--------------------------------\n"); printf("c语言最高者:\t%s %d分\n",pc->,pc->data.cgrade); printstart();}void Save(Link l){FILE* fp;Node *p;int flag=1,count=0;fp=fopen("c:\\student","wb");if(fp==NULL){printf("\n=====>提示:重新打开文件时发生错误!\n");exit(1);}p=l->next;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next;count++;}else{flag=0;break;}if(flag){printf("\n=====>提示:文件保存成功.(有%d条记录已经保存.)\n",count); shoudsave=0;}fclose(fp);}void main(){Link l;//连表FILE *fp; //文件指针int sel;char ch;char jian;int count=0;Node *p,*r;printf("\t\t\t\t学生成绩记录簿\n\t\t\t\t-------计算机信息管理,张志坚(201140130207),李权(201140130106),刘进祎(201140130226),褚璐(201140130114)\n");l=(Node*)malloc(sizeof(Node));l->next=NULL;r=l;fp=fopen("C:\\student","rb");if(fp==NULL){printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n");scanf("%c",&jian);if(jian=='y'||jian=='Y')fp=fopen("C:\\student","wb");elseexit(0);}printf("\n=====>提示:文件已经打开,正在导入记录......\n");while(!feof(fp)){p=(Node*)malloc(sizeof(Node));if(fread(p,sizeof(Node),1,fp)) //将文件的内容放入接点中{p->next=NULL;r->next=p;r=p; //将该接点挂入连中count++;}}fclose(fp); //关闭文件printf("\n=====>提示:记录导入完毕,共导入%d条记录.\n",count);while(1){menu();printf("请你选择操作:");scanf("%d",&sel);if(sel==0){if(shoudsave==1){ getchar();printf("\n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?\n");scanf("%c",&ch);if(ch=='y'||ch=='Y')Save(l);}printf("\n=====>提示:你已经退出系统,再见!\n");break;}switch(sel){case 1:Add(l);break; //增加学生case 2:Qur(l);break;//查询学生case 3:Modify(l);break;//修改学生case 4:Disp(l);break;//显示学生case 5:Tongji(l);break;//统计学生case 6:Save(l);break;//保存学生case 7:printf("\t\t\t==========帮助信息==========\n");break;default: Wrong();getchar();break;}}}五、设计体会通过这次的课程设计,增加了我对学习C语言和往后要学习C++的兴趣,虽然还不是真正的明白所有的C语言的子函数和里面的一些逻辑顺序,但我从C语言这门课程开始,已经发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的运行也有一个大体的了解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
合肥学院计算机科学与技术系课程设计报告2012~2013学年第二学期课程面向过程综合设计课程设计名称C语言成绩簿学生姓名学号专业班级指导教师2013年6月第一章需求分析1.1 任务要求:编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息(可选项)。
1.2任务问题:如何运用我们已学的c语言知识完成要求?如何制作相应界面?switch的应用该如何实现?如何完成相应的数组或链表的实现与应用?怎样进行相应的文件的读写?1.3任务的解决步骤:步骤:1.建立一个主界面。
2.用switch语句进行分类讨论。
3.分别进入录入,查询,修改,学生分数段统计等子函数。
4.将子函数与主函数相连即可。
第二章算法设计1、设计思想2.1 程序结构(流程图)2.2 重要的数据结构2.3主要算法思想(文字描述)本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、修改等。
我设计的这个通讯录系统也初步实现了人员信息的显示、修改、查找、等必要的功能,并通过子函数与主函数相连来完成相应的功能。
2.设计表示int Student_Insert( ); (添加学生成绩)void edit( ); (修改)void Student_Search( );(查找)void WriteFile( ); (写入文件)void ReadFile( ); (读取文件)void Student_Select( );(分数段选择)void PrintMark( );(打印学生分数)void NameChange( );(按姓名修改)void NumberChange( );(按学号修改)3.实现注释除了没有用链表进行实验的缺点外,基本可以实现任务要求,界面简洁,程序简单,易操作。
4.算法设计中一些新的想法:本程序主要包含了结构体与动态变量的相关知识;其中也多次用到了循环和判断结构;本程序还可以通过子函数实现删除,排序等操作。
用链表,指针也可以实现相应的任务要求。
第三章用户手册3.1使用说明主程序提供一个界面,允许用户选择。
使用switch语句,用时直接输入数字即可。
增加函数,功能是插入学生成绩。
使用一个无穷循环,直到录入”n”时结束。
修改函数,功能是修改,分为两步,先插入学生成绩后才能进行修改。
修改用strcmp 函数来做。
如果找到记录i值,反之记为-1;修改可以从i项开始将数组的后一项的新的数值赋值给前一项。
前一项自动被替换。
这样完成修改。
查询函数与之类似,用strcmp函数将修改变为输出即可;求各分数段的学生的相应成绩数据时,引用if-else语句可进行有效筛选。
退出函数什么都不写,即可。
所有修改,添加程序都可以用姓名,学号两种方式实现,可以实际情况实现。
输入的数据应按照固定的格式和顺序“姓名-学号-成绩”,否则会出现错误,无法输出。
注:输入项:char name[10] 定义学生名称为字符型long number 定义学号为长整型int score 定义学生成绩为整形输出项:int m1,m2,m3,score,xf; 定义整型3.2限制条件1.开始写程序时未使用链表,程序冗杂。
长度较大,不灵活。
2.我的程序无法在文件中修改,必须在开始时修改,文件存取不灵活。
3.一个学生的各项数据必须按顺序输入,否则会出现错误。
4.学号必须都是数字,且是十位,不能有0。
5.读取的数据必须存在,不能读取空数据。
第四章、调试及测试1.开始2.添加3.修改4.查学生成绩5.写入文本文件6.读取学生成绩7.筛选各成绩段学生对设计和编码的回顾讨论和分析:短短的俩周已经过去了,在此我将交出我一周的成果,我真是百感交错。
我有许多的原来不懂的问题在编写本程序得到解决,同时本次程序编写也暴露了我的许多的问题。
如:1.原先写程序直接编,条理性太差。
如果先做一个流程图就条理很多;2.学会了将文件存入和读取,并学会在文件中加入信息和修改信息;3.我在查找学生姓名时遇到困难,从课本上找到了一个函数strcmp,解决了问题困难;4.我在定义学生的学号时首先用整型%d。
发现输出与录入不同。
改用长整型%ld仍然不行,但是字符型%s却可以做到;5.我发现多次使用结构体,子函数可以有效的缩短程序长度,方便实用。
!第五章小结与过去相比,我认为这短短的两周的编程时光给我的感悟更为强烈。
在此,首先我要感谢老师,是老师把我带进了这一门,俗话说的好“万丈高楼平地起”,所以说,基础很重要。
而老师讲课认真,讲也很透彻,使我们能较好的理解这门课,可以跟紧课堂进度,是我们有机会能打下结实良好的基础。
而且老师在平时也鼓励我们多提问,在我们遇到问题时,富有耐心地为我们解答。
在此再次感谢老师对我们不辞操劳的讲解!谢谢!一开始,当我第一眼看到这课程设计的时候,我感到十分的“痛苦”,老实说,在还未进行编程之前,我就感到这与我们之前的编程完全不一样,与这次相比,以前的上机实验就像是小孩子玩得,一点技术含量也没有。
以前的那些实验只要看看书,花上一二个小时,基本就可以完成了,而且以前的小程序最多也不过二三十行,不像这次要百来行。
从中可见它的难度,从而联想到那些专业编程员,我更深刻感到自己的不足。
由于之前从未进行过如此大的编程,所以一开始根本没头绪,后来只好用死办法,像写作文一样,首先先在纸上列出大致的提纲,然后再一个个慢慢延伸展开,最后再输入计算机,用它来运行。
可惜不运行还好,一运行只见一片的红色错误提示。
有些错误很简单,很好改,是由于自己的粗枝大叶引起的,比如:有些字符未定义,漏了一个“;”等。
但也有些高深莫测的问题,例如:当我添加时是添加了三个同学的成绩,但当我查询全班成绩时,却只有两位同学的成绩。
后来在百思不得其解之下,我只好向周围同学寻求帮助,最终在大家的帮助之下才解决的,诸如此类的问题还不少!有的已经解决,但有些还未,可惜时间不够,也只能如此。
经过这两周的课程设计,我发现我懂得了很多,它使我在编程时更仔细了,也使我学会了向周围人求教,培养了我自我学习,独立思考。
并且,使我更体会到了和高中的不一样,一切靠自觉,没有人会跟在你后面一直催你,告诉你该怎样怎样。
同时,我也更加了解到自己的不足,基础严重不扎实。
虽然这门课快结束了,但我会努力在假期中把自己的基础补好,期待在下次的课程设计时能够得心应手!第六章参考文献:[1]黄明等编著《C语言课程设计》北京:电子工业出版社[2]郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社[3] 宁正元《数据结构(c语言)》南京:东南大学出版社。
2000年6月第1版[4] 严蔚敏等《数据结构(c语言版)》北京:清华大学出版社,1997年4月第1版[5] 谭浩强编著《C程序设计题解与上机指导(第3版) 》北京:清华大学出版社[6] 谭浩强编著《C程序设计(第3版) 》北京:清华大学出版社(附录)原代码解析:#include "stdio.h"#include <stdlib.h>#include <string.h>#define MAX 1000struct Student{char Name[100];char Number[100];int LessonCount;int LessonMark;};struct Student S[MAX];int StudentCount = 0;void PrintInterface();int Student_Insert();void edit();void Student_Search();void WriteFile();void ReadFile();void Student_Select();void PrintMark();void NameChange();void NumberChange();int main(){int n;printf("欢迎进入学生成绩簿!");{PrintInterface();scanf("%d", &n);}}void PrintInterface(){int n;while (1){printf("\n -------------------------- ");printf("\n| 1、添加|\n");printf("\n| 2、修改|\n");printf("\n| 3、查学生成绩|\n");printf("\n| 4、写入文本文件|\n");printf("\n| 5、读取文本文件|\n");printf("\n| 6、筛选各分数段学生|\n");printf("\n| 0、退出|\n");printf("\n -------------------------- ");printf("\n选择操作:");scanf("%d",&n);switch(n){case 1:if (Student_Insert())printf("\n添加成功...回车继续\n");elseprintf("\n添加失败...回车继续\n");break;case 2:edit();break;case 3:Student_Search();break;case 4:WriteFile();break;case 5:ReadFile();break;case 6:Student_Select();break;case 0:exit(1);break;default:printf("无此功能,请重新选择,按回车确定\n");}}}int Student_Insert(){int i,n;printf("\n请输入所添加的学生人数:");scanf("%d", &n);if (StudentCount + n >= MAX)return 0;for (i = StudentCount; i < StudentCount + n; i++){printf("\n\t第%d个学生:\n", i - StudentCount + 1);printf("\n\t学生学号:");scanf("%s", &S[i].Number);if(strlen(S[i].Number)!=10){printf("输入错误,请重新输入");return 0;}printf("\n\t学生姓名:");scanf("%s", S[i].Name);printf("\n\t\tc课程成绩:");scanf("%d", &S[i].LessonMark);if(S[i].LessonMark<0 || S[i].LessonMark>100){printf("输入错误,请重新输入!");return 0;}}StudentCount += n ;return 1;}void edit(){int way=0;printf("请选择修改的方式:/n"); printf("1.按姓名修改"/n);printf("2.按学号修改"/n);scanf("%d",&way);switch(way){case 1:NameChange();break;case 2:NumberChange();break;default:printf("");break;}}void Student_Search(){int x;char y[100];char a[100];int i;printf("\n输入所查学生信息(1.姓名 2.学号)选择:");scanf("%d", &x);if ((x == 1 )||( x == 2) ){if (x == 1){printf("\n姓名:");getchar();gets(a);for (i = 0; i < StudentCount; i++){if (0==strcmp(S[i].Name,a)){printf("\n学号:%s\t姓名:%s\n", S[i].Number, S[i].Name);printf("c课程成绩\t\n");printf("-----------------------------------------------------\n");printf("%d",S[i].LessonMark);printf("\n\n");}}else{printf("\n学号:");getchar();gets(y);for (i = 0; i < StudentCount; i++){if (strcmp(S[i].Number,y)==0){printf("\n学号:%s\t姓名:%s\n", S[i].Number, S[i].Name);printf("c课程成绩\t\n");printf("-----------------------------------------------------\n");printf("%d",S[i].LessonMark);printf("\n\n");break;}}}printf("查找完毕...回车继续\n");getchar();}{printf("选择错误...回车继续\n");getchar();return;}}void WriteFile(){FILE *fp;int i;char a[100];printf("\n请输入写入的文件地址:\n\n地址输入格式:例如d:\\\\Student.txt:");scanf("%s",&a);printf("\n写入中......\n");if (fp = fopen(a,"w")){fprintf(fp,"%d\n",StudentCount);for (i = 0; i < StudentCount; i++){fprintf(fp,"%s\t%s\t%d\n",S[i].Number,S[i].Name,S[i].LessonMark);printf("\n写入完成...回车继续\n");fclose(fp);}else{printf("\n写入失败...回车继续\n");}getchar();}void ReadFile(){FILE *fp;int i;char a[100];printf("\n请输入读取的文件地址:\n\n地址输入格式:例如d:\\\\student.txt:");scanf("%s",&a);printf("\n读取中......\n");if (fp = fopen(a,"r+")){fscanf(fp,"%d",&StudentCount);for (i = 0; !feof(fp); i++)fscanf(fp,"%s%s%d",&S[i].Number, &S[i].Name,&S[i].LessonMark);}PrintMark();printf("\n读取成功...回车继续\n");fclose(fp);}else{printf("\n读取失败...回车继续\n");}getchar();}void Student_Select(){int j;for(j=0;j<StudentCount;j++){if(S[j].LessonMark>=100)printf("错误信息");if(S[j].LessonMark>=90){printf("90分以上的学生成绩信息:");printf("%s\t%s\t%d\n",S[j].Number, S[j].Name,S[j].LessonMark);}else if((S[j].LessonMark<90)||(S[j].LessonMark>=80)){printf("80分~89分的学生成绩信息:");printf("%s\t%s\t%d\n",S[j].Number,S[j].Name,S[j].LessonMark);}else if((S[j].LessonMark<80)||(S[j].LessonMark>=70)){printf("70分~79分的学生成绩信息:");printf("%s\t%s\t%d\n",S[j].Number, S[j].Name,S[j].LessonMark);}else if((S[j].LessonMark<70)||(S[j].LessonMark>=60)){printf("60分~69分的学生成绩信息:");printf("%s\t%s\t%d\n",S[j].Number, S[j].Name,S[j].LessonMark);}else{printf("60分以下的学生成绩信息:");printf("%s\t%s\t%d\n",S[j].Number, S[j].Name,S[j].LessonMark);}}}void PrintMark(){int i;for(i=0;i<StudentCount; i++){printf("%s\t%s\t%d\n",S[i].Number, S[i].Name,S[i].LessonMark);}}void NameChange(){char name[60];int i=0,j=0;printf("请输入要修改的学生姓名:");scanf("%s",&name);for(i=0;i<StudentCount;i++){if(strcmp(name,S[i].Name)==0){j=i;break;}printf("\t姓名\t学号\t成绩\n");printf("%s\t%s\t%d\n",S[i].Name,S[i].Number,S[i].LessonMark);printf("请重新输入该学生信息");printf("姓名:");scanf("%s",&S[j].Name);printf("学号:");scanf("%s",&S[j].Number);printf("成绩:");scanf("%d",&S[j].LessonMark);printf("修改完毕");}void NumberChange(){char id[60];int i=0,j=0;printf("请输入要修改的学生学号");scanf("%s",&id);for(i=0;i<StudentCount;i++){if(strcmp(id,S[i].Number)==0)j=i;}break;}printf("姓名\t学号\tc语言分数\t\n");printf("%s\t%s\t%d\n", S[i].Name,S[i].Number,S[i].LessonMark);printf("请重新输入该学生信息");printf("姓名:");scanf("%s",&S[j].Name);printf("学号:");scanf("%s",&S[j].Number);printf("成绩:");scanf("%d",&S[j].LessonMark);printf("修改完毕");}。