计算机程序设计基础的实验报告怎么写

计算机程序设计基础的实验报告怎么写,第1张

1

实验要求

:

1.

实验前按实验报告格式要求,写出预实验报告,注意留出记录结果的空间。

2.

认真实验

,

注意记录

3.

撰写实验报告

.

按时上交

.

实验报告格式:

实验

*

***** ***** *****

一、

实验目的

照抄实验指导的内容。

二、

实验步骤和内容

包括:

1

.实验题目要求。

2

.源程序清单

3

.预期结果

3

.上机执行或调试结果:包括原始数据、相应的运行结果和必要的说明

三、

实验体会

调试中遇到的问题及解决办法;若最终未完成调试,要试着分析原因;调试程

序的心得与体会;其他算法的存在与实践;对课程及实验的建议等。

/*学生信息管理系统C语言源代码student.c*/

#include <stdio.h> /*包含输入/输出头文件*/

#include <string.h> /*包含字符串处理头文件*/

#include <stdlib.h>

#define MAXSIZE 100 /*能够处理的学生总人数,可以随意修改*/

typedef struct {/*用于存放生日信息的结构体*/

int year

int month

int day

}Date

typedef struct Stud{/*用于存放学生信息的结构体*/

char Num[12]/*学号*/

char Name[10] /*姓名*/

char Sex[2] /*性别*/

Date Birthday /*出生日期*/

float English, DataStructure, CPlusPlus /*三门课成绩*/

float Sum, Average /*总成绩、平均成绩*/

}Student

char CurFile[40] /*存放当前正在 *** 作的磁盘文件的文件名*/

int IsOpen=0 /*当前是否有磁盘文件被打开标志*/

int found=0 /*在查找学生信息时是否找到标志*/

Student stud[MAXSIZE] /*用于存放读入内存中的所有学生信息的全局数组*/

int Index=0 /*存放实际学生人数的全局变量*/

/*各自定义函数原型声明*/

void Create() /*新建学生信息文件*/

void Open() /*打开学生信息文件,并读取学生信息到全局数组stud中*/

void Display()/*显示学生信息*/

void Search() /*查询学生信息*/

int SearchNum(char* Num) /*按学号查询学生信息*/

int SearchName(char* Name)/*按姓名查询学生信息*/

void Append() /*添加学生信息*/

void Modify() /*修改学生信息*/

void Delete() /*删除学生信息*/

void Total() /*统计所有学生某一科目总成绩*/

void Sort() /*学生信息排序*/

void Backup() /*备份学生信息*/

void menu() /*系统功能菜单*/

{

int choice/*用于保存用户对功能菜单的选择结果*/

for( )

{ /*显示系统功能菜单*/

printf("\n****************************************************\n")

printf("*************** 学生信息管理系统 *******************\n")

printf("****************************************************\n")

printf("************ 1.新建学生信息文件 *****************\n")

printf("************ 2.打开学生信息文件 *****************\n")

printf("************ 3.显示学生信息 *****************\n")

printf("************ 4.查询学生信息 *****************\n")

printf("************ 5.添加学生信息 *****************\n")

printf("************ 6.修改学生信息 *****************\n")

printf("************ 7.删除学生信息 *****************\n")

printf("************ 8.统计学生信息 *****************\n")

printf("************ 9.学生信息排序 *****************\n")

printf("************ 10.备份学生信息 *****************\n")

printf("************ 0.退出系统 *****************\n")

printf("****************************************************\n")

printf("请选择要执行的 *** 作(0~8):_")

scanf("%d", &choice)

switch(choice){

case 1: Create()break

case 2: Open()break

case 3: Display()break

case 4: Search()break

case 5: Append()break

case 6: Modify()break

case 7: Delete()break

case 8: Total()break

case 9: Sort()break

case 10: Backup()break

case 0: return

default: printf("选择错误!请重新选择。\n")

}/*switch结束*/

}/*for结束*/

}

void ReOrEx()/*在用户执行完一项系统功能后,可以选择:是继续运行系统,还是退出系统*/

{

int n

printf("\n****************************************************\n")

printf("*************** 1. 返回上级菜单 **************\n")

printf("*************** 0. 退出系统 **************\n")

printf("****************************************************\n")

printf(" 请选择(1/0)?_")

scanf("%d",&n)

if(n==0)

{

printf("\n****************************************************\n")

printf("************* 谢谢使用本系统! ***************\n")

printf("****************************************************\n")

exit(1)

}

}

void main()

{

printf("****************************************************\n")

printf("********* 欢迎使用学生信息管理系统! *********\n")

printf("****************************************************\n")

system("pause")

menu()/*系统功能以菜单的形式提供给用户*/

printf("\n****************************************************\n")

printf("************* 谢谢使用本系统! ***************\n")

printf("****************************************************\n")

}/*main函数结束*/

/*各自定义函数实现代码*/

int New(char* FileName)//创建磁盘文件

{

FILE *fp

if((fp=fopen(FileName,"w"))==NULL)

{

return 0

}

else

{

fclose(fp)

Index=0

return 1

}

}

void Create()/*新建学生信息文件*/

{

char FileName[40]

printf("请输入新建文件的名称:")

scanf("%s",&FileName)

if(strcmp(FileName,"studentbackup"))

{

strcat(FileName,".dat")

if(!New(FileName))

printf("%s文件创建失败!\n",FileName)

else

{

strcpy(CurFile,FileName)

printf("%s文件创建成功!\n",FileName)

}

}

else

{

printf("%s是备份文件,禁止创建与此文件同名的文件!\n",FileName)

}

ReOrEx()

}

void Open()/*打开学生信息文件*/

{

char FileName[40]

printf("请输入要打开的数据文件的名称:")

scanf("%s",&FileName)

if(strcmp(FileName,"studentbackup"))

{

strcat(FileName,".dat")

if(IsOpen==0)

{

FILE *fp

if((fp=fopen(FileName,"rb"))==NULL)

{

printf("%s文件打开失败!\n",FileName)

}

else

{

IsOpen=1

Index=0

while(!feof(fp))

{

fread(&stud[Index],sizeof(struct Stud),1,fp)

Index++

}

Index--

printf("学生总人数为:%d\n",Index)

fclose(fp)

printf("%s文件打开成功!\n",FileName)

strcpy(CurFile,FileName)

}

}

else

printf("%s文件已经打开!\n",FileName)

}

else

printf("%s是备份文件,禁止打开此文件!\n",FileName)

ReOrEx()

}

void Display()/*显示全部学生信息*/

{

int i

if(!strcmp(CurFile,""))

{

printf("当前并未打开或新建文件,无法显示!\n")

}

else

{

printf("\n 显示所有学生成绩信息\n\n")

printf("%--12s%--11s%--5s%--14s%--12s%--15s%--12s%--12s%--12s\n","Num","Name","Sex","Birthday",

"English","DataStructure","CPlusPlus","Sum","Average")

for(i=0i<Indexi++)

{

printf("%--12s%--11s%--5s%4d/%2d/%2d%10.2f%15.2f%12.2f%12.2f%12.2f\n\n",stud[i].Num,

stud[i].Name,stud[i].Sex,stud[i].Birthday.year,stud[i].Birthday.month,

stud[i].Birthday.day,stud[i].English,stud[i].DataStructure,stud[i].CPlusPlus,

stud[i].Sum,stud[i].Average)

}

}

ReOrEx()

}

int SearchNum(char* Num)/*按学号查询学生信息*/

{

int i

for(i=0i<Indexi++)

{

if(!strcmp(stud[i].Num,Num))

{

printf("对应此学号的学生信息存在!\n")

found=1

return i

}

}

printf("没有此学生的信息!\n")

found=0

return 0

}

int SearchName(char* Name)/*按姓名查询学生信息*/

{

int i

for(i=0i<Indexi++)

{

if(!strcmp(stud[i].Name,Name))

{

printf("对应此学号的学生信息存在!\n")

found=1

return i

}

}

printf("没有此学生的信息!\n")

found=0

return 0

}

void Search()/*查询学生信息*/

{

int n

int i

char Num[12]

char Name[10]

if(!strcmp(CurFile,""))

{

printf("当前并未打开或新建文件,无法查询!\n")

}

else

{

printf("\n 查询某一学生信息\n")

printf("****************************************************\n")

printf("*************** 1. 按学号查询 *************\n")

printf("*************** 2. 按姓名查询 *************\n")

printf("****************************************************\n")

printf(" 请选择(1/2)?_")

scanf("%d",&n)

if(n==1)

{

printf("请输入学生学号:\n")

scanf("%s",Num)

i=SearchNum(Num)

}

else if(n==2)

{

printf("请输入学生姓名:\n")

scanf("%s",&Name)

i=SearchName(Name)

}

printf("该学生的具体信息为:\n\n")

printf("%--12s%--11s%--5s%--14s%--12s%--15s%--12s%--12s%--12s\n","Num","Name","Sex","Birthday",

"English","DataStructure","CPlusPlus","Sum","Average")

printf("%--12s%--11s%--5s%4d/%2d/%2d%10.2f%15.2f%12.2f%12.2f%12.2f\n\n",stud[i].Num,

stud[i].Name,stud[i].Sex,stud[i].Birthday.year,stud[i].Birthday.month,

stud[i].Birthday.day,stud[i].English,stud[i].DataStructure,stud[i].CPlusPlus,

stud[i].Sum,stud[i].Average)

}

ReOrEx()

}

void AddData()/*添加一条学生信息*/

{

char Num[12]

char Name[10]

char Sex[2]

int Year,Month,Day

float English,DataStructure,CPP

int location

if(Index>=MAXSIZE)

{

printf("错误! 学生信息已满,不能添加!\n")

}

else

{ printf("执行添加学生信息 *** 作!\n")

printf("\n请输入学生学号:")

scanf("%s",Num)

location=SearchNum(Num)

if (!found)

{

printf("可以进行添加 *** 作!\n")

printf("\n请输入学生姓名:")

scanf("%s",Name)

printf("\n请输入学生性别:")

scanf("%s",&Sex)

printf("\n请输入学生出生年份:")

scanf("%d",&Year)

printf("\n请输入学生出生月份:")

scanf("%d",&Month)

printf("\n请输入学生出生日:")

scanf("%d",&Day)

printf("\n请输入学生英语成绩:")

scanf("%f",&English)

printf("\n请输入学生数据结构成绩:")

scanf("%f",&DataStructure)

printf("\n请输入学生C++成绩:")

scanf("%f",&CPP)

printf("\n")

strcpy(stud[Index].Num,Num)

strcpy(stud[Index].Name,Name)

strcpy(stud[Index].Sex,Sex)

stud[Index].Birthday.year=Year

stud[Index].Birthday.month=Month

stud[Index].Birthday.day=Day

stud[Index].English=English

stud[Index].DataStructure=DataStructure

stud[Index].CPlusPlus=CPP

stud[Index].Sum=English+DataStructure+CPP

stud[Index].Average=stud[Index].Sum/3

Index++

printf("插入一条学生信息 *** 作成功!\n")

}

else printf("不能进行添加学生信息 *** 作!\n")

}

}

void Save(char* FileName)/*学生信息存盘*/

{

FILE *fp

int i

if((fp=fopen(FileName,"wb"))==NULL)

{

printf("文件打开失败!")

return

}

for(i=0i<Indexi++)

{

fwrite(&stud[i],sizeof(struct Stud),1,fp)

}

fclose(fp)

}

void Append()/*添加学生信息*/

{

if(!strcmp(CurFile,""))

{

printf("当前并未打开或新建文件,无法添加!\n")

}

else

{

AddData()

Save(CurFile)

}

ReOrEx()

}

void ModifyData()/*修改一条学生信息*/

{

char Num[12]

char Name[10]

char Sex[2]

float English,DataStructure,CPP

int Year,Month,Day

int location

printf("\n执行修改学生信息 *** 作!\n\n")

printf("请输入将要修改的学生的学号:")

scanf("%s",Num)

location=SearchNum(Num)

if (found)

{

printf("可以进行修改学生信息 *** 作!\n")

printf("\n请输入学生姓名:")

scanf("%s",Name)

printf("\n请输入学生性别:")

scanf("%s",&Sex)

printf("\n请输入学生出生年份:")

scanf("%d",&Year)

printf("\n请输入学生出生月份:")

scanf("%d",&Month)

printf("\n请输入学生出生日:")

scanf("%d",&Day)

printf("\n请输入学生英语成绩:")

scanf("%f",&English)

printf("\n请输入学生数据结构成绩:")

scanf("%f",&DataStructure)

printf("\n请输入学生C++成绩:")

scanf("%f",&CPP)

printf("\n")

strcpy(stud[location].Num,Num)

strcpy(stud[location].Name,Name)

strcpy(stud[location].Sex,Sex)

stud[location].Birthday.year=Year

stud[location].Birthday.month=Month

stud[location].Birthday.day=Day

stud[location].English=English

stud[location].DataStructure=DataStructure

stud[location].CPlusPlus=CPP

stud[location].Sum=English+DataStructure+CPP

stud[location].Average=stud[Index].Sum/3

printf("执行修改学生信息 *** 作成功!\n")

}

else printf("不能进行修改学生信息 *** 作!\n")

}

void Modify()/*修改学生信息*/

{

if(!strcmp(CurFile,""))

{

printf("当前并未打开或新建文件,无法修改!\n")

}

else

{

ModifyData()

Save(CurFile)

}

ReOrEx()

}

int DeleteData()/*删除一条学生信息*/

{

char Num[12]

int location,i

printf("\n 执行删除学生信息 *** 作!\n\n")

printf("警告!学生信息一旦删除,将不可恢复。请小心使用该 *** 作!\n\n")

printf("请输入将要删除的学生的学号:\n")

scanf("%s",Num)

location=SearchNum(Num)

if(found)

{

if(location!=MAXSIZE)

{

for(i=locationi<MAXSIZEi++)

{

strcpy(stud[i].Num,stud[i+1].Num)

strcpy(stud[i].Name,stud[i+1].Name)

strcpy(stud[i].Sex,stud[i+1].Sex)

stud[i].Birthday.year=stud[i+1].Birthday.year

stud[i].Birthday.month=stud[i+1].Birthday.month

stud[i].Birthday.day=stud[i+1].Birthday.day

stud[i].English=stud[i+1].English

stud[i].DataStructure=stud[i+1].DataStructure

stud[i].CPlusPlus=stud[i+1].CPlusPlus

stud[i].Sum=stud[i+1].Sum

stud[i].Average=stud[i+1].Average

}

}

Index--

return 1

}

return 0

}

void Delete()/*删除学生信息*/

{

if(!strcmp(CurFile,""))

{

printf("当前并未打开或新建文件,无法删除!\n")

}

else

{

if(DeleteData())

{

Save(CurFile)

printf("删除一条学生信息 *** 作成功!\n")

}

else

{

printf("不能进行删除 *** 作!\n")

printf("删除一条学生信息 *** 作失败!\n")

}

}

ReOrEx()

}

float GetOneCourseSum(int n)/*计算所有学生某一科目的总成绩*/

{

float N=0

int i

switch(n){

case 1://计算英语总成绩

{

for(i=0i<Indexi++)

{

N+=stud[i].English

}

}

break

case 2://计算数据结构总成绩

{

for(i=0i<Indexi++)

{

N+=stud[i].DataStructure

}

}

break

case 3://计算C++总成绩

{

for(i=0i<=Indexi++)

{

N+=stud[i].CPlusPlus

}

}

break

}

return N

}

float GetOneCourseAverage(int n)/*计算所有学生某一科目的平均成绩*/

{

float temp=0

temp=GetOneCourseSum(n)/Index

return temp

}

void Total()//统计某一科目总成绩

{

int x

if(!strcmp(CurFile,""))

{

printf("当前并未打开或新建文件,无法统计成绩!\n")

}

else

{

printf("\n 统计某一科目总成绩及平均成绩\n")

printf("\n")

printf("****************************************************\n")

printf("***1. 统计《英语》课程总成绩及平均成绩 ***\n")

printf("***2. 统计《数据结构》课程总成绩及平均成绩 ***\n")

printf("***3. 统计《C++》课程总成绩及平均成绩***\n")

printf("****************************************************\n")

printf(" 请选择(1-3)?_")

scanf("%d",&x)

switch(x)

{

case 1:

printf("\n英语总成绩为:%5.2f\n\n",GetOneCourseSum(1))

printf("英语平均成绩为:%5.2f\n",GetOneCourseAverage(1))

break

case 2:

printf("\n数据结构总成绩为:%5.2f\n\n",GetOneCourseSum(2))

printf("数据结构平均成绩为:%5.2f\n",GetOneCourseAverage(2))

break

case 3:

printf("\nC++总成绩为:%5.2f\n\n",GetOneCourseSum(3))

printf("c++平均成绩为:%5.2f\n",GetOneCourseAverage(3))

break

default: printf("选择错误!\n")

}

}

ReOrEx()

}

void Bubble(int N)/*冒泡排序*/

{

Student temp

int change=1

int i,j

switch(N){

case 1://按英语成绩排序

{

for(i=Index-1i>=1 &&change--i)

{

change=0

for(j=0j<i++j)

if(stud[j].English>stud[j+1].English)

{

strcpy(temp.Num,stud[j].Num)

strcpy(temp.Name,stud[j].Name)

strcpy(temp.Sex,stud[j].Sex)

temp.Birthday.year=stud[j].Birthday.year

temp.Birthday.month=stud[j].Birthday.month

temp.Birthday.day=stud[j].Birthday.day

temp.English=stud[j].English

temp.DataStructure=stud[j].DataStructure

temp.CPlusPlus=stud[j].CPlusPlus

temp.Sum=stud[j].Sum

temp.Average=stud[j].Average

strcpy(stud[j].Num,stud[j+1].Num)

strcpy(stud[j].Name,stud[j+1].Name)

strcpy(stud[j].Sex,stud[j+1].Sex)

stud[j].Birthday.year=stud[j+1].Birthday.year

stud[j].Birthday.month=stud[j+1].Birthday.month

stud[j].Birthday.day=stud[j+1].Birthday.day

这是学生信息系统一部分,想要的话把你邮箱留下,我把全部发给你

#include "stdio.h"

#define N 10

typedef struct

{char name[20]

char xuehao[20]

int xuhao[5]

float shuxue[10]

float yingyu[10]

float jisuanji[10]

float sum[10]

float average[10]

}user

main()

{user sp[N],temp

int i

printf("enter xinxi\n")

for(i=0i<Ni++)

{gets(sp[i].name)gets(sp[i].xuehao)

gets(sp[i].xuhao)gets(sp[i].shuxue)

gets(sp[i].yingyu)gets(sp[i].jisuanji)

sum=sp[i].shuxue+sp[i].yingyu+sp[i].jisuanji

average=sum/3

}

getsort(sp)

printf("after sorted: \n")

for(i=0i<Ni++)

printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",sp[i].xuhao,sp[i].xuehao,sp[i].name,sp[i].yingyu,sp[i].jisuanji,sp[i].shuxue,sp[i].sum,sp[i].average)

}

getsort(user *sp)

{int i,j

user temp

for(i=0i<N-1i++)

for(j=i+1j<Nj++)

if(sp[i].sum<sp[j].sum)

{temp=sp[i].sum

sp[i].sum=sum[j].sum

sp[j].sum=temp}

我没运行,可能对吧,你试一下


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11285420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存