《C++语言程序设计》课程设计报告-学生信息查询系统
- 格式:doc
- 大小:279.00 KB
- 文档页数:17
一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。
对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
三、概要设计程序要有的功能:1。
输入记录2。
用指定格式显示全部记录3。
根据姓名查找记录4。
根据姓名删除记录5. 保存记录到文件6。
按序号显示记录7。
按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。
对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。
与及格成绩作比较,输出及格人数等相关信息。
流程图:四、详细设计源程序:#include ”stdio。
h”#include "stdlib.h”#include "string。
h”int shoudsave=0;/* */struct student{char num[10];/*学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;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\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%s\t%d\t%d\t%d\t %d\t %d\n",p—〉data。
学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
C语言课程设计:学生考勤系统1.引言本文档旨在设计一个基于C语言的学生考勤系统。
该系统可以帮助学校、学院或其他教育机构进行学生的考勤管理。
通过该系统,教师或管理员可以方便地记录学生的出勤情况,并生成相关报表进行统计分析。
2.系统概述学生考勤系统是一个基于C语言开发的控制台应用程序,主要包括学生信息管理、考勤记录管理和报表生成等模块。
通过该系统,用户可以实现对学生信息的增、删、改、查操作,并能记录学生的考勤情况,最后生成考勤报表。
3.系统功能3.1 学生信息管理学生信息管理模块主要用于对学生的基本信息进行管理,包括学生姓名、学号、性别、出生日期、班级等。
该模块提供以下功能:•添加学生信息:输入学生的基本信息,将学生添加到系统中。
•修改学生信息:根据学生的学号或姓名,修改学生的基本信息。
•删除学生信息:根据学生的学号或姓名,从系统中删除学生的信息。
•查询学生信息:根据学号、姓名或班级等条件,查询学生的基本信息。
3.2 考勤记录管理考勤记录管理模块用于记录学生的考勤情况,包括学生的出勤、迟到、旷课等。
该模块提供以下功能:•学生签到:根据学生的学号或姓名,进行学生的签到操作。
•学生迟到:根据学生的学号或姓名,记录学生迟到的时间和原因。
•学生旷课:根据学生的学号或姓名,记录学生旷课的时间和原因。
•考勤查询:根据学生的学号、姓名或日期,查询学生的考勤情况。
3.3 报表生成报表生成模块用于根据学生的考勤记录生成考勤报表,对学生的出勤情况进行统计分析。
该模块提供以下功能:•出勤统计报表:根据学期、学科等条件,生成学生的出勤统计报表。
•迟到统计报表:根据学期、班级等条件,生成学生的迟到统计报表。
•旷课统计报表:根据学期、班级等条件,生成学生的旷课统计报表。
4.技术实现本项目使用C语言进行开发,主要利用C语言的数据结构和文件操作等特性实现对学生信息的管理和考勤记录的存储。
具体技术实现包括以下几个方面:•结构体:使用C语言的结构体来定义学生的基本信息,方便进行管理和存取操作。
C语言程序设计实习报告学生信息管理系统C 语言课程设计题目:学生信息管理系统设计者:梁天江专业:机械设计制造及其自动化班级学号: 072084-31所属院系:机电学院指导教师:吴湘宁7月17日1.题目和要求:1.1问题提出与要求:学生成绩管理系统[要求]设计一个学生成绩管理系统,对在校某班学生几门课程的考试成绩进行统一管理。
每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。
(1)一个文件按以班为单位存储学生记录。
(2)将允许的操作分为六种A:插入一个新的学生记录(录入学生信息)B:修改学生记录C:删除一个学生记录D:登记成绩E:修改成绩F:浏览全班成绩(3)计算学生的总成绩(4)输出全班成绩表1.2需求分析.根据题目要求,由于学生信息是存放在文件中,因此应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.2.功能实现设计:2.1总体设计:分析系统:根据题目的需求分析,可将这个系统设计为六大模块(见下图):插入学生信息,修改,删除,登记,浏览,统计。
2.2详细设计:1、主函数主函数设计得比较简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块用菜单方式选择;其流程图如下:[程序]void main(){int a;do{printf("\t\t\t\t\n");printf("\t\t\t\t学生成绩管理系统\n");printf("\n");printf("\t\t\t作者:梁天江班级:072084-31 学号: 1004528\n"); printf("\t\t\t-------------------------------------------\n\n");printf("\t 1.插入新的学生记录\n");printf("\t 2.修改学生记录\n");printf("\t 3.删除学生记录\n");printf("\t 4.显示学生成绩和总分\n");printf("\t 5.浏览全班成绩\n");printf("\t 6.退出\n\n");。
功能:查询修改统计成绩。
#include <stdio.h>struct student /*成绩表的结构声明*/{int num;char name[15];char sex;float WuLi;float ShuXue;float YingYu;float KuaiJi;float totle;};/*定义6个学生的信息:*/#define STU_NUMBER 6 /*宏定义学生数为6*/struct student Stu[STU_NUMBER]={{101,"yuchen", 'F', 98,85,96,89,0},{102,"xiaotong", 'F', 99,91,90,93,0},{103,"likanglong",'M', 76,83,74,82,0},{104,"yinger", 'F', 88,76,89,77,0},{105,"fengjiao", 'F', 97,100,94,96,0},{106,"sunyao", 'M', 87,89,66,84,0} };int SelectMainMenu(); /*显示并选择主菜单。
返回:被选择的菜单项*//*所有的函数声明:*/void Show(); /*成绩查询模块*/void Modify(); /*成绩修改模块*/void Stat(); /*成绩统计模块*/void StatAve(float *AveWuLi,float *AveShuXue,float *AveYingYu,float *AveKuaiJi);/*统计平均分*/int FindStudent(int num); /*根据学号查找某一学生*/void SetAllTotle(); /*计算所有学生总分*/void SetTotle(int No); /*计算第No个学生总分*/void ShowAllStudent(); /*显示所有成绩*/void ShowTitle(); /*显示表头信息*/void ShowStudent(int No); /*显示第No个的学生信息*/void main(){int isend=0,password=0; /*程序结束标志量,0表示不结束,1表示结束*/SetAllTotle(); /*计算所有学生总分*/while(password!=666){printf("qing shu ru mi ma:\n");scanf("%d",&password);}{switch(SelectMainMenu()) /*显示并选择主菜单*/{case 1: /*成绩查询*/Show(); /*调用成绩查询函数*/break;case 2: /*成绩修改*/Modify(); /*调用成绩修改函数*/break;case 3: /*成绩统计*/Stat(); /*调用成绩统计函数*/break;case 4: /*退出系统*/printf("\nxie xie nin de shi yong,zai jian!\n\n");isend = 1; /*设置程序结束标志*/break;}if(isend) break; /*程序结束*/}}int SelectMainMenu() /*显示并选择主菜单。
C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。
3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。
提高编写程序解决实际问题的能力、调试程序的技术。
三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。
主程序:新建:输入记录(遇#号时停止输入)。
插入:在指定位置插入记录。
显示:列出所有记录。
查询:一、按学号查询;二、按名字排序。
删除:一、按学号删除;二、按名字删除;3、删除所有记录。
排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。
保留:保留为任意名字,系统自动加后缀名为.txt。
读取:读取程序目录下的后缀名为.txt的文件。
退出:退出程序。
五、各功能模块的具体实现,用图表表示。
输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。
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");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;elseq->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(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。
c语言课程设计学生成绩管理系统报告一、教学目标本课程旨在通过C语言编程实现一个学生成绩管理系统,让学生掌握C语言的基本语法、数据结构、函数、文件操作等知识,培养学生编写程序解决实际问题的能力。
具体目标如下:1.知识目标:(1)掌握C语言的基本语法和编程技巧;(2)了解数据结构的基本概念,学会使用数组、链表等数据结构;(3)熟悉函数的定义和调用,掌握函数的参数传递和返回值;(4)掌握文件操作,了解文件读写的原理和方法。
2.技能目标:(1)能够独立编写C语言程序,解决实际问题;(2)具备良好的编程习惯,代码结构清晰、可读性强;(3)掌握调试和优化程序的方法,提高程序的运行效率;(4)学会使用版本控制系统,如Git,进行代码管理和协作开发。
3.情感态度价值观目标:(1)培养学生的编程兴趣,激发学习C语言的积极性;(2)培养学生团队协作精神,提高沟通与协作能力;(3)培养学生的问题解决能力,培养创新意识和持续学习的态度;(4)培养学生具有良好的职业道德,遵守编程规范,尊重他人代码。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、文件操作等。
具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、表达式、控制语句等基本概念;2.数据结构:讲解数组、链表、栈和队列等数据结构的基本原理和应用;3.函数:讲解函数的定义、声明、调用,以及函数的参数传递和返回值;4.文件操作:介绍文件的概念、文件读写的方法和技巧。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、函数和文件操作等知识,使学生掌握课程的基本概念和编程技巧;2.案例分析法:分析实际编程案例,让学生学会将理论知识应用于实际问题解决;3.实验法:安排上机实验,让学生动手编写程序,培养实际编程能力;4.小组讨论法:学生进行小组讨论,培养团队协作和沟通能力。
C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
C语言大型作业实践报告计算机1001制作者:李菁华张兆丰秦恒加2011年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。
学生可按要求(如总学分不能少于20学分)选课。
课程信息维护,如录入、修改、删除等,课程信息用文件保存。
课程信息浏览?输出。
学生选课功能。
查询功能包括:按学分、课程性质、学生等查询。
统计功能。
统计各门课程的选修人数。
本系统要有通用性、界面美观、操作方便。
要考虑系统安全。
课程信息录入系统选修课程信息录入选修课程信息保存主程序目录选择总体设计思路(流程图):学生选课系统课程信息读入学生信息输入选课系统数据保存选修课数据维护系统添加修改删除以word格式输出密码系统密码验证系统权限限制系统密码对退出程序密码对选修课程信息查找按各种类型查找密码错3次以上具体算法流程设计思路(流程图):主程序目录选择1.学生选课系统;2.选修课程信息输出;3.选修课程信息查找;4.管理员选项;5.退出系统。
管理员选项密码验证系统读入系统时间,通过强制转换成unsigned long int型数据作为初始密码用户输入密码(若是管理员会拥有密码钥匙,得出现在的密码,该密码每分钟都会变化)密码正确进入管理员管理界面,密码不正确重新输入密码输入错误3次以上 12 3学生选课系统选修课程信息以word2003形式输出返回主菜单选修课程信息查找选修课程信息从文件内读入输入按什么查找1.课程编号;2.课程名;3.课程种类;4.总课时;5.教学课时;6实验课时;7.学分;8.开课学期;9.已选人数。
输入查找的关键字从文件内读入的课程信息与关键字逐一对比,完全匹配输出;查找完毕学生信息输入课程信息浏览不选少于这门20分选课系统课选课成功判断学分是否大于20分大于20分结束选课选课信息储存退出程序管理员模块管理员模块 3目录选择1.学生选课系统;2.选修课程信息管理系统;3.退出系统12 5学生选课系统二级目录选择1.新建选修课程信息;2.管理选修课程信息;3.统计每门课程选择人数;4.选修课程信息输出;5.回到主菜单。
《C语言程序设计》课程设计报告(2011— 2012学年第 1 学期)专业:计算机科学与技术班级:姓名学号:指导教师:成绩:计算机科学与技术系2011 年12月31日目录一、课程设计的目的与要求 (3)二、方案实现与调试 (3)2.1 掷骰子游戏 (3)2.2 汽车加油 (6)2.3 大优惠 (8)2.4 金币 (9)2.5小型通讯录设计 (12)三、课程设计分析与总结 (14)附录程序清单 (14)一、课程设计的目的与要求(含设计指标)(1)实验目的C语言是一种编程灵活,特色鲜明的程序设计语言。
C语言除了学习必须的基本知识,如概念,方法和语法规则之外,更重要的是进行实训,以提高学习者的动手和编程能力,这是学习语言的最终目的。
结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序设计任务书》,以在实训过程中给学生提供帮助。
达到如下目的:1.在课程结束之前,让学生进一步了解C程序设计语言的编程功能;2.让学生扎实掌握C程序设计语言的相关知识;3.通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。
(2)设计要求根据实验内容的要求自由选定题目。
编写程序要求遵循如下基本要求:●模块化程序设计●锯齿型书写格式●必须上机调试通过二、方案实现与调试2.1掷骰子游戏•2.1.1 题目内容的描述两人玩骰子,游戏规则如下:1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。
2) 将每人每次的分值累加计分3) 当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。
4) 结束条件:当双方都掷10次或经过5次后一方累计分数为另一方的两倍。
最后显示双方分数并判定优胜者。
•2.1.2输入数据类型、格式和内容限制和输出数据的说明输入数据类型:整型数格式:srand(time(0));输入数=rand()%6+1;内容限制:产生最多十次随机数输出数据说明:掷骰子的获胜者•2.1.3主要模块的算法描述2.1.4调试过程及实验结果出现的问题:每次循环产生的随机数相同。
《C++语言程序设计》课题设计报告课题名称:学生信息查询系统专业:电子信息工程班级:2班姓名:学号:指导老师:日期:2011-05-06仰恩大学计算机系一、课程序设计目的(根据情况写)(1)了解面向对象程序设计与结构化程序设计的内在差别;(2)了解类和对象的概念,学会对数据进行封装处理,灵活应用类的继承关系,学会用构造函数来进行对象的初始化工作,通过重载构造函数来对对象进行更为深入的数据初始化,用析构函数来清理和释放对象所占用的系统资源;(3)通过对象指针来访问对象,从而完成对对象数据的调用与返还;(4)利用动态内存分配在程序的运行中根据实际需要申请内存空间,使用结束后释放所占用的内存空间;(5)通过继承与派生来简化程序代码简化程序设计,有效利用已有的类模块资源。
(6)以学生信息管理为应用背景,用面向对象程序设计建立学生信息管理程序,实现创建班级、添加学生信息、修改学生信息、删除学生信息、打印学生信息、退出六个程序功能。
开发环境(1)系统环境:Windows XP,Windows 7(2)编程环境:Visual C++.NET,Visual C++ 6.x,Visual Studio 2005,Visual Studio 2010……….等。
二、实现过程(1)C++编程基础知识介绍数据类型:对数据类型定义是非常重要的,它可以为数据在内存中分配适合的存储区域、确定数据范围,并且可以规定数据所能进行的有效操作;1:对数据类型的分类有:2:常量和变量:变量(variable ):取值在程序的执行过程中可改变值的量;常量(constant ):取值在程序的执行过程中始终保持不变的量。
又分为文字常量(literal constant )常变量(也称为符号常量)C++程源程序文件1源程序文件2源程序文件3编译预处理命令 全局变量声明函数1函数n…函数首部 函数体 局部变量声明执行语句3:运算符和表达式:包括C++运算符、优先级和结合性;基本运算符及其表达式(即算术运算符及算符表达式;赋值运算符与赋值表达式;自增、自减运算;逻辑运算、逻辑表达式及其求值优化;位运算;逗号运算符与逗号表达式;sizeof( )运算符);语句(包括表达式语句;表达式; 空语句;复合语句{若干语句} 流程控制语句:用来控制或改变程序的执行方向);算术类型转换和赋值类型转换;求值次序与副作用等知识。
程序流程控制a:复合语句:将多个语句组合在一起,用一对花括号将这些语句组合在一起,称为复合语句(主要用到if、for、while、switch)分支流程If 语句If (条件表达式)语句1else语句2循环流程While语句While(条件表达式1){ 语句1;if(条件表达式2)break;语句2;}语句3;循环流程for语句for(初始化表达式;条件表达式;循环表达式){循环体语句}循环流程switch语句switch(条件表达式){case 1: 语句1;break;……case n: 语句1;break;}*【break语句使用:用在while,do…while,for和switch语句中,在循环语句中,break用来从最近的封闭循环体内跳出,在switch语句中,break用来跳出switch语句。
】b:函数的调用:调用一个函数就是暂时中断现有程序的运行,转去执行被调用函数,当被调用函数执行结束以后,再返回到中断处继续执行的过程,如下表:c:函数的嵌套:执行过程如下表:(2)程序的概要设计(流程图)1:总体(主函数):设计学生信息管理系统界面,定义程序功能选择的方式,用switch循环进行程序选择(即程序功能选择);通过构造函数的调用来实现不同函数功能,从而进行程序的使用。
2:主构造函数:包括创建班级【Addclass()】、添加学生信息【Addstud ()】、修改学生信息【Changestu()】、删除学生信息【Delstu】、打印学生信息【Disstu】五个构造函数。
a:创建班级【Addclass()】b:添加加学生信息【Addstu()】:d:修改学生信息【Changestu()】:c:删除学生信息【Delstu()】:f:打印学生信息【Dispstu()】(2)程序的详细设计a:创建班级void CClass::Addclass(char *ClassName,int *CStudent) {int n=0;int ClaccName;if(n!=10){cout<<"输入班级名称"<<endl;cin>>ClassName;clas=new Class(ClassName);n++;cout<<"添加成功"<<endl;return true;}else cout<<"班级数超额"<<endl;}b:添加学生信息void CClass:Addstu (){if(clas==NULL) 未创建班级……else 已创建班级{……定义数据类型cout<<"请输入学生的学号:";cin>>studno;while(clas->find(studno)!=-1) 查找该学号学生{ 存在该学号学生…………重新输入学号};…………完成数据定义if(clas->count< 50) 未超数{clas->student[clas->sum]=new CStudent(studno,idno,name,addr,tel); 开辟内存clas->student[clas->sum]->setMath(math);clas->student[clas->sum]->setEnglish(english); 完成数据添加存储this->clas->count++; 计数添加学生数}……else 超数情况…………}}c:修改学生信息void Cclass::Changestu (){if(cc==NULL) 未创建班级……else 已创建班级{…………数据定义cout<<"请输入要修改学生的学号:";cin>>studno;if(clas->find(studno)!=-1) 找到该学生{……打印该学生信息……输入修改信息cc->student[m]->setAddr(addr);cc->student[m]->setTel(tel);cc->student[m]->setMath(math);cc->student[m]->setEnglish(english);cc->student[m]->setAverage(math,english); 储存修改后数据}else 未找到该学生……}}d:删除学生信息void Cclass::Delstu (){if(this->clas==NULL) 班级未创建……else 班级已创建{int Studno;cout<<"请输入要删除学生的学号:";cin>>Studno;int i= clas>find(Studno);if(clas>find(Studno)==-1) 未找到该学生……else{for(int j=i; i< 50;i++){……student[i]后指针向前移动一位,且最后一位数组内容置空,学生数减1 }cout<<"学生删除成功!"<<endl;}}}e:打印学生信息void Cclass:: Dispstu(){if(cc==NULL) 未创建班级……else 已创建班级{cout<<"班级名称:"<<cc->getClassname()<<endl;for(int i=0; i<50;i++) for循环完成数据整体输出{if(class->student[i] != NULL) student数组不为空{………………打印学生信息}}}}(4)测试用例(针对每个功能设计测试方案,包括输入数据、输出数据)针对每个功能设计一组(最少一个)测试用例,用来验证程序的正确性。
1:创建班级2:添加学生信息3:删除学生信息删除123号学生数据:删除123号学生后所有数据:4:修改学生信息修改123号数据:修改123号学生后数据;5:打印学生信息三、课题总结1陈述遇到的问题及解决办法:a:问题:没办法对对象内数据进行获取及处理解决方法:构建一个get**()构造函数来获取对象内数据,用set**()构造函数来处理对象内数据,以便进行数据的输入及修改;b:问题:对类的指针数组使用比较生疏解决方法:深入了解面向对象数据与结构数据的区别,用->运算符来移动指针实现数据的存入与调用c:问题:在添加、修改、删除都要进行学生查找在程序中出现代码重复利用,代码复杂解决方法:构建构造函数find(studeno)来完成查找工作,这样只需在需要时调用构造函数,无需重复输入查找功能代码,从而大大简化代码2:有何收获a:熟悉掌握了类得创建及对象的处理调用;b.熟悉掌握了面向对象数据的添加,修改,删除,打印;c.纠正对break用法的错误理解,break只用在两个地方,一个是case,一个是循环的跳出,对于最后程序的退出应使用exit(0);d.熟悉循环在程序中的应用,在添加,修改,删除,打印以及界面的显示等都用到了循环。
e.学会应用面向对象构造函数的调用,以及主函数中用switch函数做多分支选择,先进行类得封装,再对具体对象进行处理及应用类与类之间的继承关系,充分利用面向对象数据处理优势大大简化程序代码;f.不足之处:没有对数据进行存盘处理,没有异常处理导致输入错误代码就会出现死循环,程序不能正常运行。
四、使用说明书1、用Microsoft Visual Studio 2005打开该程序文件;2、编译运行程序;3、根据页面提示及查询需要对应选择操作类型,进入子程序操作;五、教师评阅。