求写一个 计算机程序设计(c语言) 课程设计报告 要求200行、程序难度定为初级难度。
发布网友
发布时间:2022-05-25 09:39
我来回答
共2个回答
热心网友
时间:2023-10-05 07:01
/*学生信息管理系统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=0;i<Index;i++)
{
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=0;i<Index;i++)
{
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=0;i<Index;i++)
{
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=0;i<Index;i++)
{
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=location;i<MAXSIZE;i++)
{
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=0;i<Index;i++)
{
N+=stud[i].English;
}
}
break;
case 2://计算数据结构总成绩
{
for(i=0;i<Index;i++)
{
N+=stud[i].DataStructure;
}
}
break;
case 3://计算C++总成绩
{
for(i=0;i<=Index;i++)
{
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-1;i>=1 && change;--i)
{
change=0;
for(j=0;j<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;
这是学生信息系统一部分,想要的话把你邮箱留下,我把全部发给你追问609094937@qq.com
谢谢啦 我只需要最简单的 200左右就好 如果是这样的就谢谢啦
热心网友
时间:2023-10-05 07:02
在百度文库中打上网吧管理系统就出来了,你去下一个吧