C语言程序设计课程设计报告
- 格式:doc
- 大小:1.24 MB
- 文档页数:30
成都航空职业技术学院
《C语言程序设计》
课程设计报告
设计题目:C程序综合设计
系别:航空电子工程系专业:应用电子技术班级:学号:
学生姓名:赵儇宇指导教师:
完成时间:年月日
目录
一、程序设计内容及要求 (1)
二、程序总体设计思路 (2)
1.课题一的总体设计思路 (2)
2.课题二的总体设计思路 (3)
三、程序各模块作用及详细设计 (3)
1.课题一的各模块作用及详细设计 (3)
2.课题二的各模块作用及详细设计 (13)
四、程序运行过程截图及分析 (16)
1.课题一程序运行过程截图及分析 (16)
2.课题二程序运行过程截图及分析 (20)
五、总结.................... . (22)
六、附录(完整程序)......... (22)
1.课题一完整程序 (22)
2.课题二完整程序 (27)
一、课程设计内容及要求
题目1用户登录程序。提示用户输入用户名和密码,判断是否是合法用户(假设合法的用户名是“abc”,密码是123456),如果合法,显示“welcom to use the software”,进入以下系统。否则要求重新输入,允许输入3次,若3次都错,显示“password error!you can not use the sorftware”.
一班有10名学生,一学期有5门课程,编写程序实现如下功能:
(1)录入每名学生的各科成绩
(2)求出每名学生的平均成绩和总分
(3)求每门课程的平均分、及格率、最高成绩和最低成绩
(4)输出总成绩前5名的学生学号、各科成绩和总分
(5)输出各科补考学生的学号和成绩
菜单格式如下:
==================菜单===============
1.成绩录入
2. 学生信息
3. 课程信息
4. 获奖与补考信息
0. 退出
=======================================
题目2小学生数学学习系统
面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7
分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显“PASS”,60以下“TRY AGAIN”。编程要求:人机界面良好,有正误判断、机会重现等实用性功能。
二、程序总体设计思路
1.课题一的总体设计思路:
整个程序由一个主程序和五个子程序构成。主程序功能为录入用户名和密码,并判断其正误和调用子程序(可用scanf、while、for、if、switch实现)。五个子程序分别是int MainMenu()(显示主菜单模块)、int Inputscore(int score[10][6])(录入学生成绩模块)、int Displayscore(int score[10][6])(统计每位同学的平均成绩与总分模块)、int Everykemu(int score[10][6])(统计每门课程的平均分、及格率、最高成绩和最低成绩模块)、int Maxmin(int score[10][6])(统计获奖与补考信息模块)。
在整个程序中,我用一个10行6列的二维数组(score[10][6])统计十位同学的学号与五科成绩,第一列储存十位同学的学号后五列储存他们的五科成绩。
子程序int MainMenu()用于显示主界面(可用printf实现)。
子程序int Inputscore(int score[10][6])用于录入每名学生的各科成绩(可用scanf、for实现)。
子程序int Displayscore(int score[10][6])中,我定义的int num1[10]、float num2[10]分别统计十位学生的总成绩与平均成绩(可用for实现)。
子程序int Everykemu(int score[10][6])中,我定义num[10]、jigelv[10]、ma[10]、mi[10]分别储存五科课程的平均分、及格率、最高成绩、最低成绩(可用for、if实现)。
子程序int Maxmin(int score[10][6])拥有两个功能:统计并输出总成绩前5名的学生学号、各科成绩的功能和总分和统计并输出各科补考学生的学号和成绩的功能(可用for、if实现)。
系统功能模块结构图:
2.课题二的总体设计思路:
整个程序使用while进行循环出题并解答,程序开始是用srand(time(NULL)随机产生两个50以内的正整数以及0或1,随后用if判断随机产生的两个数的和或差是否在0到50以及随机产生的数是0或1。用if函数将其转换为运算符,若产生的是0则为‘+’,若产生的是1则为‘-’。定义两个变量,一个储存正确答案,另一个则储存输入的答案。然后使用for、scanf控制循环、输入,在用if判断答案的正误与计算得分。
答题完成后,用switch显示得分所对应的称号。最后用while、scanf、if实现机会重现功能。
三、程序各模块作用及详细设计
1.课题一的程序各模块作用及详细设计
(1)开始部分:
#include
#include
#include
#include
int MainMenu(); //主菜单
int Inputscore(int score[10][6]); //录入学生成绩
int Displayscore(int score[10][6]); // 求每位同学的平均成绩与总分并显示
int Everykemu(int score[10][6]) ; //求每门课程的平均分、及格率、最高成绩和最低成绩int Maxmin(int score[10][6]); //获奖与补考信息
int main()
{
int score[10][6] ; //定义二维数组,存放学生某课程的成绩
int i=0;
int choose; //定义整型变量,存放主菜单选择序号
char str1[10],str2[10] ; //储存账号与密码
该部分是程序的开头,说明需调用的系统文件,stdio.h、stdlib.h、string.h、conio.h均是程序课顺利运算与比较必须的内容。而int MainMenu()、int Inputs core(int score[10][6])、int Displayscore(int score[10][6])、int Everyk emu(int score[10][6])、int Maxmi n(int score[10][6])均为定义的子程序,score[10][6]为定义的整数型的二维数组用于储存学号与五科成绩以及st r1[10]与str2[10]两字符型数组储存用户名与密码。i、choose为定义的整数型变量,i用于统计输错用户名或密码的次数。choose用于控制选择菜单并参与子程序的调用。
(2)用户名与密码判断模块
printf("请输入账户名和密码:\n");
while(1)
{
gets(str1); //输入账户名
gets(str2); //输入密码
if(strcmp(str1,"abc")!=0||strcmp(str2,"123456")!=0)