C语言程序设计实验报告怎么写?
通过本试验初步培养计算机逻辑解题能力。熟练掌握赋值语句和if语句的应用;掌握switch多路分支语句和if嵌套语句的使用
实验原理和设计方案:
1、函数头的选则,while循环语句,switch(case)语句,条件表达式,if else条件语句,自增运算符,设置复杂变量,输出随机操作数。
2、变量要有分数变量和等级变量,要有选择算法题数的变量和计算正确与否的变量,要有随机输出的两个操作数变量和自己按运算符号输入结果的变量,最后还有判断是否要进行的变量字符。中间结果有选择运算符的switch()和分数等级的switch()和错题对题的自增和选择运算符计算的自增。
3、问题的分析方法:先考虑设置整形变量和字符变量,考虑到要不断循环计算,选择用while语句来循环。在循环体中,将前面的输出提示运算符,和自行选择运算符、答案及输出随机操作数完成。再用switch语句对选择的运算符进行判断,并用变量进行自增运算,计算出错题于对题个数和选择了那种运算符号。在循环体最后用if else语句来判断是否继续执行还是跳出循环。最后根据自增计算的结果和公式进行分数计算,并用switch语句来是想等级的制定。
五、 课程设计小结心得体会
1设计思想
1)、设定一个一维数组,可先按员工序号设定每位员工的工资
2)、利用While语句和Prinft语句完成用户菜单的设计
功能为:第1项 设为员工编号和工资数据
第2项 设为修改员工工资数据
第3项 设为查询员工工资数据
第4项 设为结束系统
3)、当用户选择1、2项时,需输入员工编号,所以需要设计编号校正功能,如果出错可输出“The error employe number”
4)、当选择2时,进行工资数据的修改,并将新数据存回该员工的工资数组中
5)、利用for循环中判断语句,将用户工资数与数组中的工资数进行比较,如相同则输出,将计数器加1,如此下去,直到把整个数组遍历一遍
6)、判断计数器是否为0, 是0表示找不到相符的工资,如果不为0,则输出共查出几比相符的工资
以上当然里面也涉及了“函数的模块化”理念,可以避免但需要重复打印头文件时重复编写打印信头的语句。像这样的程序是多见的,这样不但降低了程序还发效率,而且耗时浪费资源“共用体”的使用简化了程序的“复杂”性,正如(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.h"
#include"string.h"
#define MAX 10
typedef struct student{
char name[MAX]
int num[MAX]
char sex[MAX]
int chinese
int mathematic
int english
int computer
struct student *next
}stu
stu *head
void print()
{
system("cls")
printf("\t\t\tScore Manage System\n")
printf("<1>Enter Record\t")
printf("<2>Display\t")
printf("<3>Insert\t")
printf("<4>Quest\t")
printf("<5>Update\t")
printf("<6>Save\t")
printf("<7>Fresh\t")
printf("<8>Chinese Average\t")
printf("<9>Math Average\t")
printf("<10>English Average\t")
printf("<11>Computer Average\t")
printf("<12>Quit\t\n")
}
void cin(stu *p1)
{ printf("Enter name:\n")
scanf("%s",&p1->name)
printf("Enter num:\n")
scanf("%d",&p1->num)
printf("Enter sex:\n")
scanf("%s",&p1->sex)
printf("Enter score:\n")
printf("Enter chinese:\n")
scanf("%d",&p1->chinese)
printf("Enter math:\n")
scanf("%d",&p1->mathematic)
printf("Enter English:\n")
scanf("%d",&p1->english)
printf("Enter Computer:\n")
scanf("%d",&p1->computer)
}
stu *cindata()
{ stu *p1,*p2
int i=1
char ch
p1=(stu *)malloc(sizeof(stu))
head=p1
while(i)
{
cin(p1)
printf("Do you Want to Continue?yes or no")
ch=getchar()
ch=getchar()
if(ch=='n'||ch=='N')
{ i=0
p1->next=NULL
}
else
{ p2=p1
p1=(stu *)malloc(sizeof(stu))
p2->next=p1
}
}
return(p1->next)
}
stu *lookdata(stu *p1)
{
while(p1!=NULL)
{ printf("Num:%d\t",p1->num)
printf("Name:%s\t",p1->name)
printf("Sex:%s\t",p1->sex)
printf("\n")
printf("Chinese:%d\t",p1->chinese)
printf("Math:%d\t",p1->mathematic)
printf("English:%d\t",p1->english)
printf("Computer:%d\t",p1->computer)
printf("\n")
p1=p1->next
}
return p1
}
void insert()
{ stu *p1,*p3,*p2
char ch
p1=head
p3=(stu *)malloc(sizeof(stu))
p3->next=NULL
if(head==NULL){ head=p3return}
cin(p3)
while(p1!=NULL&&(p1->num<p3->num))
{ p2=p1p1=p1->next}
if(p2==head) {p3->next=headhead=p3return}
p3->next=p1
p2->next=p3
}
find(stu *p2)
{ char name[20]
int b=0
printf("Enter the name of the student you want to find:")
scanf("%s",name)
while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf("The data you want has be found\n")
printf(" Name:%s\t",p2->name)
printf("Num:%d\t",p2->num)
printf("sex%s\t",p2->sex)
printf("\n")
printf("Chinese:%d\t",p2->chinese)
printf("Math:%d\t",p2->mathematic)
printf("English:%d\t",p2->english)
printf("Computer:%d\t",p2->computer)
printf("\n")
b=1
}
else if(b==0)
printf("sorry not find data!")
p2=p2->next
}
if(b==1)
{
print()
printf("Find one\n")}
else
{print()
printf("Not find\n")
}
}
void caverage()
{ stu *p1
int i
float max=0.0,min=200.0
float sum=0.0,aver=0
p1=head
if(p1==NULL)
printf("not data!")
else
{for(i=0p1!=NULLi++,p1=p1->next)
sum+=p1->chinese
aver=sum/i
p1=head
for(i=0p1!=NULLi++,p1=p1->next)
{if(max<p1->chinese)
max=p1->chinese
}
p1=head
for(i=0p1!=NULLi++,p1=p1->next)
if(min>p1->chinese)
min=p1->chinese
}
printf("Chinese Average:%f",aver)
printf("Chinese Max:%f",max)
printf("Chinese Min:%f",min)
}
void maverage()
{ stu *p1
int i
float max=0.0,min=200.0
float sum=0.0,aver=0
p1=head
if(p1==NULL)
printf("not data!")
else
{for(i=0p1!=NULLi++,p1=p1->next)
sum+=p1->mathematic
aver=sum/i
p1=head
for(i=0p1!=NULLi++,p1=p1->next)
{if(max<p1->mathematic)
max=p1->mathematic
}
p1=head
for(i=0p1!=NULLi++,p1=p1->next)
if(min>p1->mathematic)
min=p1->mathematic
}
printf("Mathe Average:%f",aver)
printf("Mathe Max:%f",max)
printf("Mathe Min:%f",min)
}
void eaverage()
{ stu *p1
int i
float max=0.0,min=200.0
float sum=0.0,aver=0
p1=head
if(p1==NULL)
printf("not data!")
else
{for(i=0p1!=NULLi++,p1=p1->next)
sum+=p1->english
aver=sum/i
p1=head
for(i=0p1!=NULLi++,p1=p1->next)
{if(max<p1->english)
max=p1->english
}
p1=head
for(i=0p1!=NULLi++,p1=p1->next)
if(min>p1->english)
min=p1->english
}
printf("English Average:%f",aver)
printf("English Max:%f",max)
printf("English Min:%f",min)
}
void comaverage()
{ stu *p1
int i
float max=0.0,min=200.0
float sum=0.0,aver=0
p1=head
if(p1==NULL)
printf("not data!")
else
{for(i=0p1!=NULLi++,p1=p1->next)
sum+=p1->computer
aver=sum/i
p1=head
for(i=0p1!=NULLi++,p1=p1->next)
{if(max<p1->computer)
max=p1->computer
}
p1=head
for(i=0p1!=NULLi++,p1=p1->next)
if(min>p1->computer)
min=p1->computer
}
printf("Computer Average:%f",aver)
printf("Computer Max:%f",max)
printf("Computer Min:%f",min)
}
update(stu *p2)
{
char name[10]
int b=0
printf("Enter The Name")
scanf("%s",name)
while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf("Find you data\n")
scanf("Name:%s",p2->name)
scanf("Num:%s",p2->num)
scanf("Sex:%s",p2->sex)
scanf("Chinese:%d",p2->chinese)
scanf("Math:%d",p2->mathematic)
scanf("english:%d",p2->english)
scanf("Computer:%d",p2->computer)
printf("Success!")
b=1}
else if(b==0)
printf("Sorry not Find data!")
p2=p2->next}
if(b==0)
{print()
printf("Sorry not Find data!")
}
else
{
print()
printf("Finish!")
}
}
save(stu *p2)
{
FILE *fp
char file[10]
printf("Enter file name")
scanf("%s",file)
fp=fopen(file,"w")
while(p2!=NULL)
{
fprintf(fp,"%s",p2->name)
fprintf(fp,"%s",p2->num)
fprintf(fp,"%s",p2->sex)
fprintf(fp,"%d",p2->chinese)
fprintf(fp,"%d",p2->mathematic)
fprintf(fp,"%d",p2->english)
fprintf(fp,"%d",p2->computer)
p2=p2->next
}
fclose(fp)
}
char password[7]="123456"
void main()
{ int choice
stu *p2
char s[8]
int flag=0,i
int n=3
do{ printf("Enter password:\n")
scanf("%s",s)
if(!strcmp(s,password))
{ printf("PASS\n\n\n")
flag=1
break
}
else{
printf("Error Enter again:\n")
n--
}
}
while(n>0)
if(!flag)
{printf("you have Enter 3 times!")
exit(0)
}
printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n")
printf("\t\tWelcom to the Mis\n")
printf("Author:-----\tClass:------\tNum:------\n")
printf("Adress:HG\n")
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n")
printf("\t\tEnter OP:\n")
printf("\n\n\n\n")
printf("==============\t\t==============\n")
printf("==============\t\t==============\n")
printf("\t\tEnter the MIS yes or no\n")
scanf("%d",&choice)
if(choice=='n'||choice=='N')
exit(1)
print()
while(1)
{
printf("Enter choice:")
scanf("%d",&i)
if(i<1||i>13)
{
printf("Enter num from 1 to 13:\n")
exit(1)
}
switch(i)
{case 1:
p2=cindata()
break
case 2:
p2=lookdata(head)
break
case 3:
insert()
break
case 4:
find(head)
break
case 5:
update(head)
break
case 6:
save(head)
break
case 7:
print()
break
case 8:
caverage()
break
case 9:
maverage()
break
case 10:
eaverage()
break
case 11:
comaverage()
break
case 12:
case 13:
exit(1)
break
}
scanf("%d",&i)
}
}
程序中出现的问题及解决方法
问题一、学生初始信息模块:
其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。
解决办法及步骤:
1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。
2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错
3、输出用于循环检查语句中的学生信息,发现乱码
4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。
问题二、查询模块:
可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。当正确输入查找信息时,系统却不能够得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
解决办法及步骤:
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息以及学生的语文、数学、英语和计算机的成绩。
2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。
问题三、插入模块:
可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。当我们输入插入信息时,系统却提示插入不进数据。
解决办法及步骤:
1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入插入信息看能否插入进去得到所要插入的学生信息以及学生的语文、数学、英语和计算机的成绩。
2、检查当我们在输入插入信息时,看是否我们输入的插入信息有
课程设计报告[注意:文件名的格式为:
学号_中文姓名_版本_时间.doc
不符合文件名要求的实验报告为不合格报告!
如:学号为200800800999的李一同学上交的第一版的文件名为:
200800800999_姓名_1_20100719.doc
注意:
(1)连字符是下划线
(2)日期的格式为YYYYMMDD
(3)上传的文件必须是Word2003版的,不可以是其他类型或Word其他版本的文件。文件后缀名不可以是“.doc.doc”
本文中所有批注内容,在课程设计报告上交时必须删除!!!]
专 业:
班 级:班
学 号:
姓 名:
版本号:
时 间:2010-xx-xx
目 录
1 概述 2
1.1 目的 2
1.2 计划 2
2 课程设计过程及结果 2
2.1 编程环境及工具 2
2.2 排序与简单分析 2
2.3 综合设计 2
2.3.1 功能实现 2
2.3.2 程序异常处理 2
2.3.3 特色功能 2
3 课程设计总结 2
3.1 课程设计计划执行情况 2
3.2 我理解的C++ 3
3.3 改进设想 3
附录 关键代码 3
原创声明:本课程设计报告及相应的软件程序的全部内容均为本人独立完成,如有抄袭,愿承担相应后果。[完全独立完成(参考API及与同学讨论是可以的,需要自己一点一点录入并调试代码、编写报告)的同学,仅声明此一句即可。删除下面的非原创说明。
本文中所有批注内容,在课程设计报告上交时必须删除!!!]
非原创说明:[非独立完成的同学,上传上面的原创声明,并详细描述自己所做部分和拷贝同学部分。
本文中所有批注内容,在课程设计报告上交时必须删除!!!]
本课程设计本人完成的内容包括:
1、
2、
3、
拷贝同学的内容包括:
1、
2、
3、
本人独立完成部分约占总工作量的百分比为:___________
声明人:_______________________
学 号:_______________________
概述
目的
计划
课程设计过程及结果
编程环境及工具
排序与简单分析
综合设计
功能实现
文件读入
数据录入
信息显示
……[可自行扩展标题,以将实验报告材料组织得有条理为目标
本文中所有批注内容,在课程设计报告上交时需删除!!!]
程序异常处理
特色功能
课程设计总结
课程设计计划执行情况
我理解的C++
改进设想
附录 关键代码
int primeNum(int p)
{
int i, q
if (p <0)
return 0
q = (int) sqrt(p)
for (i = 2i <qi++)
if ((p % i) == 0)
return 0
return 1
}
package MyShape
public class Test {
public static void main(String[] args) {
Circle c = new Circle(2,4,3)
c.printItMyWay()
}
}
abstract class Shape{
public abstract float getCir()
public abstract float getArea()
}
class Point extends Shape implements Printable{
public int x
public int y
public Point(int x, int y){
this.x= x
this.y=y
}
public Point (){
}
@Override
public float getCir() {
// TODO Auto-generated method stub
return 0
}
@Override
public float getArea() {
// TODO Auto-generated method stub
return 0
}
public int getX() {
return x
}
public void setX(int x) {
this.x = x
}
public int getY() {
return y
}
public void setY(int y) {
this.y = y
}
@Override
public void printItMyWay() {
System.out.println(" Point ("+x+","+y+")")
System.out.println(" Point Area:"+this.getArea())
System.out.println(" Point Circle:"+this.getCir())
}
}
class Circle extends Point implements Printable{
public float r
public Circle(){
}
public Circle(float r,int x, int y ){
if(r>0){
this.r =r
this.x =x
this.y=y
}
}
public float getR() {
return r
}
public void setR(float r) {
this.r = r
}
@Override
public float getArea() {
return (float) (r*r*3.14/2)
}
@Override
public float getCir() {
return (float) (3.14*r*2)
}
@Override
public void printItMyWay() {
System.out.println(" Circle ("+x+","+y+")")
System.out.println(" Circle R:"+r)
System.out.println(" Circle Area:"+this.getArea())
System.out.println(" Circle Circle:"+this.getCir())
}
}
interface Printable {
public void printItMyWay()
}