首页源码c语言代码大全源码?c语言写代码的软件

c语言代码大全源码?c语言写代码的软件

编程之家2026-05-26745次浏览

很多朋友对于c语言代码大全源码和c语言写代码的软件不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

c语言代码大全源码?c语言写代码的软件

高分求C语言课程设计源代码(分不多了,全部给你们)

#include<string>

#include<iostream>

#include<time.h>

#include<vector>

using namespace std;

class Employee//定义雇员类

c语言代码大全源码?c语言写代码的软件

{

public:

Employee();//构造函数

virtual VEmployee();

virtual void Display()=0;

int GetAge();//获取年龄

c语言代码大全源码?c语言写代码的软件

string GetName();//获取姓名

protected:

int Id;//职工ID号

string Name;//职工姓名

char Sex[5];//性别

int Wage;//工资

string BirthDay;//出身年月

string WorkTime;//参加工作时间

int Age;//年龄

};

class Worker: public Employee//定义工人类

{

public:

Worker();

virtual VWorker();

void Display();

};

class Teacher: public Employee//定义教师类

{

public:

Teacher();

virtual VTeacher();

void Display();

string GetAcademy();

private:

string Academy;

};

Employee::Employee()

{

}

Employee::VEmployee()

{

}

int Employee::GetAge()

{

return Age;

}

string Employee::GetName()

{

return Name;

}

Teacher::Teacher()//添加教师信息

{

cout<<"请输入该教师的信息:"<<endl;

cout<<"职工编号:"<<endl;

cin>>Id;

cout<<"姓名:"<<endl;

cin>>Name;

cout<<"性别:"<<endl;

cin>>Sex;

cout<<"工资:"<<endl;

cin>>Wage;

cout<<"出生时间:(格式xxxx/xx/xx)"<<endl;

cin>>BirthDay;

cout<<"参加工作时间:(格式xxxx/xx/xx)"<<endl;

cin>>WorkTime;

cout<<"所属院系:"<<endl;

cin>>Academy;

//从生日里提取出生的年份

int Pos= BirthDay.find_first_of('/');

string BirthYear;

BirthYear.assign(BirthDay,0,Pos);

char chBirthYear[6];

strcpy(chBirthYear,BirthDay.c_str());

//获取当前系统的年份

char NowYear[5];

time_t tnow= time(0);

strftime(NowYear, 5,"%Y", localtime(&tnow));

Age= atoi(NowYear)-atoi(chBirthYear);//计算年龄

}

Teacher::VTeacher()

{

}

void Teacher::Display(){//display()同名函数,输出教师信息

cout<<"职工编号:"<<Id<<endl;

cout<<"姓名:"<<Name<<endl;

cout<<"性别:"<<Sex<<endl;

cout<<"工资:"<<Wage<<endl;

cout<<"出生时间:"<<BirthDay<<endl;

cout<<"参加工作时间:"<<WorkTime<<endl;

cout<<"年龄:"<<Age<<endl;

}

string Teacher::GetAcademy(){

return Academy;

}

Worker::Worker()//添加工人信息

{

cout<<"请输入该工人的信息:"<<endl;

cout<<"职工编号:"<<endl;

cin>>Id;

cout<<"姓名:"<<endl;

cin>>Name;

cout<<"性别:"<<endl;

cin>>Sex;

cout<<"工资:"<<endl;

cin>>Wage;

cout<<"出生时间:(格式xxxx/xx/xx)"<<endl;

cin>>BirthDay;

cout<<"参加工作时间:(格式xxxx/xx/xx)"<<endl;

cin>>WorkTime;

//从生日里提取出生的年份

int Pos= BirthDay.find_first_of('/');

string BirthYear;

BirthYear.assign(BirthDay,0,Pos);

char chBirthYear[6];

strcpy(chBirthYear,BirthDay.c_str());

//获取当前系统的年份

char NowYear[5];

time_t tnow= time(0);

strftime(NowYear, 5,"%Y", localtime(&tnow));

Age= atoi(NowYear)-atoi(chBirthYear);//计算年龄

}

Worker::VWorker()

{

}

void Worker::Display(){//display()同名函数,输出工人信息

cout<<"职工编号:"<<Id<<endl;

cout<<"姓名:"<<Name<<endl;

cout<<"性别:"<<Sex<<endl;

cout<<"工资:"<<Wage<<endl;

cout<<"出生时间:"<<BirthDay<<endl;

cout<<"参加工作时间:"<<WorkTime<<endl;

cout<<"年龄:"<<Age<<endl;

}

void AddTeacher(vector<Teacher>*TeaInfo)//新增老师对象

{

system("color 05A");//设置当前窗口的背景色和前景色

Teacher TeaTemp;

(*TeaInfo).push_back(TeaTemp);

}

void AddWoker(vector<Worker>*WorkerInfo)//新增工人对象

{

system("color 05A");

Worker Wokertmp;

(*WorkerInfo).push_back(Wokertmp);

}

void DisplayAll(vector<Teacher>*TeaInfo,vector<Worker>*WokerInfo){//显示全部职工记录

system("color 05A");

cout<<"所有教师的信息:"<<endl;

vector<Teacher>::iterator pTeaInfo;

for(pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty()!=1&&pTeaInfo!=(*TeaInfo).end();pTeaInfo++)//如果到达vector末尾,则退出

{

(*pTeaInfo).Display();

cout<<endl;

}

cout<<"所有工人的信息:"<<endl;

vector<Worker>::iterator pWorkerInfo;

for(pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!=1&&pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)//如果到达vector末尾,则退出

{

(*pWorkerInfo).Display();

cout<<endl;

}

cout<<"按Enter返回"<<endl;

getchar(); getchar();

}

void DisAvgTeacherAge(vector<Teacher>*TeaInfo){//查询老师平均年龄

system("color 05A");

int SumAge= 0;

vector<Teacher>::iterator pTeaInfo;

for(pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty()!=1&&pTeaInfo!=(*TeaInfo).end();pTeaInfo++)//遍历老师容器

{//如果到达vector末尾,则退出

SumAge+=(*pTeaInfo).GetAge();

cout<<endl;

}

if((*TeaInfo).size()!=0)

cout<<"教师的平均年龄为"<<SumAge/((*TeaInfo).size())<<endl;

else cout<<"没有记录"<<endl;

cout<<"按Enter返回"<<endl;

getchar(); getchar();

}

void DisAvgWorkerAge(vector<Worker>*WokerInfo){

system("color 05A");

int SumAge= 0;

vector<Worker>::iterator pWorkerInfo;

for(pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!=1&&pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)//如果到达vector末尾,则退出

{

SumAge+=(*pWorkerInfo).GetAge();

cout<<endl;

}

if((*WokerInfo).size()!=0)

cout<<"职工的平均年龄为"<<SumAge/((*WokerInfo).size())<<endl;

else cout<<"没有记录"<<endl;

cout<<"按Enter键返回"<<endl;

getchar(); getchar();

}

void DelTeacher(vector<Teacher>*TeaInfo){//用于删除老师信息

system("color 05A");

bool Hflag=false;

string SearchName;

vector<Teacher>::iterator pTeaInfo;

cout<<"请输入您要删除的老师的姓名:"<<endl;

cout<<"姓名:";

cin>>SearchName;

for(pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty()!= 1&&pTeaInfo!=(*TeaInfo).end();pTeaInfo++)//如果到达vector末尾,则退出

{

if(0==SearchName.compare((*pTeaInfo).GetName()))//如果找到要删除老师的姓名,则执行

{

Hflag=true;//找到老师

(*TeaInfo).erase(pTeaInfo);//删除vector中指定的老师

continue;

}

}

if(false==Hflag)//如果没有该老师,则执行

{

cout<<"没有该老师!"<<endl;

}

cout<<"按Enter返回"<<endl;

getchar(); getchar();

}

void DelWorker(vector<Worker>*WokerInfo)//用于删除工人信息

{

system("color 05A");

bool Hflag=false;

string SearchName;

vector<Worker>::iterator pWorkerInfo;

cout<<"请输入您要删除的工人的姓名:"<<endl;

cout<<"姓名:";

cin>>SearchName;

for(pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!= 1&&pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)//如果到达vector末尾,则退出

{

if(0==SearchName.compare((*pWorkerInfo).GetName()))//如果找到要删除工人的姓名,则执行

{

Hflag=true;//找到工人

(*WokerInfo).erase(pWorkerInfo);//删除vector中指定的工人

continue;

}

}

if(false==Hflag)//如果没有该工人,则执行

{

cout<<"没有该老师!"<<endl;

}

cout<<"按Enter返回"<<endl;

getchar();getchar();

}

void SearchByName(vector<Teacher>*TeaInfo,vector<Worker>*WokerInfo){//按名字查找职工信息

system("color 05A");

bool Hflag=false;

string SearchName;

vector<Teacher>::iterator pTeaInfo;

cout<<"请输入您要查找的职工的姓名:"<<endl;

cout<<"姓名:";

cin>>SearchName;

for(pTeaInfo=(*TeaInfo).begin();pTeaInfo!=(*TeaInfo).end();pTeaInfo++)

{

if(0==SearchName.compare((*pTeaInfo).GetName()))//如果找到输入的职工,则执行

{

Hflag=true;//找到职工

cout<<"这个人是老师,他的信息为:"<<endl;

(*pTeaInfo).Display();//显示职工信息

continue;

}

}

vector<Worker>::iterator pWorkerInfo;

for(pWorkerInfo=(*WokerInfo).begin();pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)

{

if(0==SearchName.compare((*pWorkerInfo).GetName()))//如果找到输入的职工,则执行

{

Hflag=true;//找到职工

cout<<"这个人是老师,个人信息为:"<<endl;

(*pWorkerInfo).Display();//显示职工信息

continue;

}

}

if(false==Hflag)

{

cout<<"没有这个职工!"<<endl;//没有找到信息

}

cout<<"按Enter返回"<<endl;//返回

getchar(); getchar();

}

void DisTeacherByAcademy(vector<Teacher> TeaInfo){//按系输出教师信息

system("color 05A");

bool Hflag=false;

string SearchName;

vector<Teacher>::iterator pTeaInfo;

while((TeaInfo).empty()!=1){//输出所有指定系的老师

pTeaInfo=(TeaInfo).begin();

string Academy=(*pTeaInfo).GetAcademy();

cout<<"系:"<<Academy<<","<<"该系的老师有:"<<endl;

for(pTeaInfo=(TeaInfo).begin();(TeaInfo).empty()!=1&&pTeaInfo!=(TeaInfo).end();){

if(0==Academy.compare((*pTeaInfo).GetAcademy()))

{

(*pTeaInfo).Display();

cout<<endl;

(TeaInfo).erase(pTeaInfo);

pTeaInfo=(TeaInfo).begin();

}

else pTeaInfo++;

}

cout<<endl;

}

cout<<"按Enter返回"<<endl;

getchar(); getchar();

}

void WriteFile(vector<Teacher>*TeaInfo,vector<Worker>*WokerInfo)//生成新文件

{

FILE*fp;

if(NULL==(fp=fopen("Employee.txt","w+")))

{

cout<<"打开文件错误"<<endl;

exit(-1);

}

vector<Worker>::iterator pWorkerInfo;

vector<Teacher>::iterator pTeaInfo;

for(pTeaInfo=(*TeaInfo).begin();pTeaInfo!=(*TeaInfo).end();pTeaInfo++)//写入vector中所有老师的信息

{

fputs("教师信息:\n",fp);

fprintf(fp,"姓名:%s\n",(*pTeaInfo).GetName().c_str());

fprintf(fp,"年龄:%d\n",(*pTeaInfo).GetAge());

fputs("\n",fp);

}

fputs("教师信息结束\n",fp);

for(pWorkerInfo=(*WokerInfo).begin();pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)//写入vector中所有老师的信息

{

fputs("职工信息:\n",fp);

fprintf(fp,"姓名:%s\n",(*pWorkerInfo).GetName().c_str());

fprintf(fp,"年龄:%d\n",(*pWorkerInfo).GetAge());

fputs("\n",fp);

}

fputs("职工信息结束\n",fp);

fclose(fp);

}

void Mainmenu(){//菜单界面

system("color 05A");//设置当前窗口的背景色和前景色

cout<<"╭――――――――――《教职工管理系统》―――――――――╮"<<endl;

cout<<"∣请选择功能∣"<<endl;

cout<<"├――――――――――――――――――――――――――――┤"<<endl;

cout<<"∣ 1.新建并输入职工数据∣"<<endl;

cout<<"∣ 2.按条件输出职工数据∣"<<endl;

cout<<"∣ 3.删除职工数据∣"<<endl;

cout<<"∣ 0.退出∣"<<endl;

cout<<"╰――――――――――――――――――――――――――――╯"<<endl;

cout<<"――――――――――――――――――――――――――――――"<<endl;

cout<<"请选择您要服务的类别:";

}

void Insert(vector<Teacher>*TeaInfo,vector<Worker>*WorkerInfo)//增加职工数据菜单界面

{

system("color 05A");//设置当前窗口的背景色和前景色

int select=-1;

while(select!=0)

{

cout<<"╭――――――――――《增加职工数据》――――――――――╮"<<endl;

cout<<"∣请选择操作:∣"<<endl;

cout<<"├――――――――――――――――――――――――――――┤"<<endl;

cout<<"∣ 1增加一位教师记录∣"<<endl;

cout<<"∣ 2增加一位工人记录∣"<<endl;

cout<<"∣ 0返回主菜单∣"<<endl;

cout<<"╰――――――――――――――――――――――――――――╯"<<endl;

cin>>select;

switch(select){

case 1:AddTeacher(TeaInfo);break;

case 2:AddWoker(WorkerInfo);break;

case 3:Mainmenu();break;

default:

cout<<"回到主菜单!"<<endl;

}

}

}

void Search(vector<Teacher>*TeaInfo,vector<Worker>*WorkerInfo)//查询职工数据菜单界面

{

system("color 05A");//设置当前窗口的背景色和前景色

int select=-1;

while(select!=0)

{

cout<<"╭――――――――――《查询职工数据》――――――――――╮"<<endl;

cout<<"∣请选择操作:∣"<<endl;

cout<<"├――――――――――――――――――――――――――――┤"<<endl;

cout<<"∣ 1显示全部职工记录∣"<<endl;

cout<<"∣ 2按系输出教师信息∣"<<endl;

cout<<"∣ 3按姓名检索所有信息∣"<<endl;

cout<<"∣ 4计算教师平均年龄∣"<<endl;

cout<<"∣ 5计算工人平均年龄∣"<<endl;

cout<<"∣ 0返回主菜单∣"<<endl;

cout<<"╰――――――――――――――――――――――――――――╯"<<endl;

cin>>select;

switch(select){

case 1:DisplayAll(TeaInfo,WorkerInfo);break;

case 2:DisTeacherByAcademy(*TeaInfo);break;

case 3:SearchByName(TeaInfo,WorkerInfo);break;

case 4:DisAvgTeacherAge(TeaInfo);break;

case 5:DisAvgWorkerAge(WorkerInfo);break;

case 6:Mainmenu();break;

default:

cout<<"回到主菜单!"<<endl;

}

}

}

void Delete(vector<Teacher>*TeaInfo,vector<Worker>*WorkerInfo)//删除职工数据

{

system("color 05A");//设置当前窗口的背景色和前景色

int select=-1;

while(select!=0)

{

cout<<"╭――――――――――《删除职工数据》――――――――――╮"<<endl;

cout<<"∣请选择操作:∣"<<endl;

cout<<"├――――――――――――――――――――――――――――┤"<<endl;

cout<<"∣ 1删除一位教师记录∣"<<endl;

cout<<"∣ 2删除一位工人记录∣"<<endl;

cout<<"∣ 0返回主菜单∣"<<endl;

cout<<"╰――――――――――――――――――――――――――――╯"<<endl;

cin>>select;

switch(select){

case 1:DelTeacher(TeaInfo);break;

case 2:DelWorker(WorkerInfo);break;

case 3:Mainmenu();break;

default:

cout<<"回到主菜单!"<<endl;

}

}

}

void MainCho(vector<Teacher>*TeaInfo,vector<Worker>*WorkerInfo)

{//主菜单操作

int choice=-1;

while(choice!=0){

Mainmenu();

cin>>choice;

switch(choice){

case 1:Insert(TeaInfo,WorkerInfo);break;

case 2:Search(TeaInfo,WorkerInfo);break;

case 3:Delete(TeaInfo,WorkerInfo);break;

case 0:break;

default:

cout<<"操作错误!"<<endl;

}

}

}

void main()//主函数

{

vector<Teacher> TeaInfo;//

vector<Worker> WorkerInfo;//

vector<Teacher>::iterator pTeacher;//

vector<Worker>::iterator pWoker;//

pTeacher= TeaInfo.begin();//

pWoker= WorkerInfo.begin();//

MainCho(&TeaInfo,&WorkerInfo);//调用主要处理程序

WriteFile(&TeaInfo,&WorkerInfo);//存入文件操作

}

C语言源代码是什么

数字版“拼图”游戏C源代码:

#include<time.h>

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<windows.h>

int i, j, r, k;//i、j、r用于循环, k存放随机数值

int m, n;// m、n是当前空位的下标, t标记排序是否成功

int a[4][4];//存储4×4共16个数字的数组

void show(void);//输出数组表格

void csh(void);//初始化界面

int yes(void);//判断排序是否成功

void up(void);//数字向上移动到空位(空位则下移)

void down(void);//数字向下移

void left(void);//数字向左移

void rght(void);//数字向右移

void inkey(void);//按键操作

void gtxy(int x, int y);//控制光标移动的函数

int main(void)

{ while(1)

{csh();

while(1)

{ inkey();

show();

if( yes())

{gtxy(6,12); printf("你成功了!再来一局y/n?"); break;}

}

if(getch()==ʹnʹ)break;

}

return 0;

}

void csh(void)

{r=0;

CONSOLE_CURSOR_INFO cursor_info={1,0};//以下两行是隐藏光标的设置

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);

for(i=0;i<4;i++)//给数组a依序赋值

for(j=0;j<4;j++)

{ if(i==3&& j==3) a[i][j]=0;

else a[i][j]=1+r++;

}

a[3][3]=a[1][1]; a[1][1]=0;//把a[3][3]与a[1][1]的值交换一下

m=1; n=1;

srand((unsigned)time(0));//初始化随机数发生器

for(r=0;r<500;r++)//将数组各值打乱

{k=rand()%(4);//取0-3随机数,分别代表上下左右四个方向

switch(k)

{ case 0:{ up();break;}

case 1:{down();break;}

case 2:{left();break;}

case 3:{rght(); break;}

}

}

printf("

\t\t数字拼图");

printf("

\t┌──────┬──────┬──────┬──────┐");

printf("

\t│││││");

printf("

\t├──────┼──────┼──────┼──────┤");

printf("

\t│││││");

printf("

\t├──────┼──────┼──────┼──────┤");

printf("

\t│││││");

printf("

\t├──────┼──────┼──────┼──────┤");

printf("

\t│││││");

printf("

\t└──────┴──────┴──────┴──────┘");

show();

}

void show(void)

{for(i=0;i<4;i++)

for(j=0;j<4;j++)//gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字

{gtxy(7*j+9,2*i+4); if(a[i][j]==0)printf("│");

else if(a[i][j]>9)printf("%d│",a[i][j]);

else printf("%d│",a[i][j]);

}

}

void inkey(void)

{ int key;

key=getch();

switch(key)

{ case 72:{ up(); break;}

case 80:{down(); break;}

case 75:{left(); break;}

case 77:{rght();break;}

}

}

void up(void)

{ if(m!=3)//移动时要考虑空位"0"是否已经在边界

{ a[m][n]=a[m+1][n]; m++; a[m][n]=0;}

}

void down(void)

{ if(m!=0)

{a[m][n]=a[m-1][n]; m--; a[m][n]=0;}

}

void left(void)

{ if(n!=3)

{ a[m][n]=a[m][n+1]; n++; a[m][n]=0;}

}

void rght(void)

{ if(n!=0)

{ a[m][n]=a[m][n-1]; n--; a[m][n]=0;}

}

int yes(void)

{ r=0;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

{ if(a[i][j]!=1+r++) return(r==16)?1:0;}

}

void gtxy(int x, int y)//控制光标移动的函数

{ COORD coord;

coord.X= x;

coord.Y= y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

c语言学生管理系统源代码

头文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include"stdio.h"

#include"string.h"

#include"malloc.h"

#define LEN sizeof(struct message_student)/*一个结构体数组元素的长度*/

#define numsubs 5/*学科数目*/

typedef struct message_student/*结构体定义*/

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

extern int numstus;/*学生数目*/

extern student*pointer;/*指向结构体数组*/

extern int lens;

int menu_select();/*函数声明*/

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

void deleterecord(student stu[],int i);

void addrecord(student stud[]);

void display(student stud[],int n1,int n2);

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include"head.h"

int menu_select()

{

char c;

printf("\n\n");

printf("| 1.增加学生记录 5.统计信息|\n");

printf("| 2.查询学生记录 6.打开文件|\n");

printf("| 3.修改学生记录 7.保存文件|\n");

printf("| 4.学生纪录排序 8.显示记录|\n");

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

printf("\n\n");

printf("请选择(0-8):");

c=getchar();

getchar();

return(c-'0');

}

#include"head.h"

int findrecord(student stud[])/*查找信息*/

{

char str[2];

int i,num;

if(numstus==0)

{

printf("没有可被查找的记录\n");

return-1;

}

else

{

printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");

gets(str);

if(str[0]=='1')/*按学号查找*/

{

printf("请输入学号:");

gets(str);

for(i=0;i<=numstus;i++)

if(strcmp(str,stud[i].number)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='2')/*按姓名查找*/

{

printf("请输入姓名:");

gets(str);

for(i=0;i<=numstus;i++)

if(strcmp(str,stud[i].name)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='3')/*按名次查找*/

{

printf("请输入名次:");

scanf("%d",&num);

getchar();

for(i=0;i<=numstus;i++)

if(num==stud[i].index)

{

display(stud,i,i);

break;

}

else continue;

}

if(i>numstus)

{

printf("没有查找所要的信息。\n");

return-1;

}

return i;

}

}

#include"head.h"

int openfile(student stu[])

{

int i=0,j;

FILE*fp;

char filename[20],str[2];

if(numstus!=0)

{

printf("已经有记录存在,是否保存?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(stu);

}

printf("请输入文件名:");

gets(filename);

numstus=0;

if((fp=fopen(filename,"rb+"))==NULL)

{

printf("无法打开该文件\n");

return(-1);

}

fscanf(fp,"%d",&numstus);

fgetc(fp);

while(i<numstus)

{

fscanf(fp,"%s",stu[i].number);

fscanf(fp,"%s",stu[i].name);

fscanf(fp,"%s",stu[i].sex);

for(j=0;j<numsubs;j++)

fscanf(fp,"%f",&stu[i].subject[j]);

fscanf(fp,"%f",&stu[i].score);

fscanf(fp,"%f",&stu[i].average);

fscanf(fp,"%d",&stu[i].index);

i++;

}

fclose(fp);

printf("文件读取成功\n");

printf("是否显示纪录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

display(stu,0,numstus-1);

return(0);

}

#include"head.h"

void sort(student stud[])

{

int i,j=0;

char str[5];

student*p;

p=stud;

if(numstus==0)

{

printf("没有可供查询的记录!");

}

while(1)

{

for(i=0;;i++)

{

printf("请输入查询方式:");

printf("(直接输入回车则结束查询操作)\n");

printf("1.按照学号\t");

printf("2.按照姓名\t");

printf("3.按照名次\n");

gets(str);

if(strlen(str)==0) break;

if(str[0]=='1')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

else if(str[0]=='2')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

else if(str[0]=='3')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

else printf("请输入1~3");

printf("是否退出排序?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') break;

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student*p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(strcmp(stud[j+1].number,stud[j].number)>0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student*p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(strcmp(stud[j].number,stud[j+1].number)>0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student*p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(strcmp(stud[j+1].name,stud[j].name)>0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student*p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

if(strcmp(stud[j].name,stud[j+1].name)>0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student*p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

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

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student*p;

p=stud;

for(i=0;i<numstus;i++)

for(j=0;j<numstus-i-1;j++)

{

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

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

#include"head.h"

void statistic(student stud[])/*新增功能,输出统计信息*/

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

printf("没有可被查找的记录\n");

else

{

while(1)

{

printf("下面将统计考试成绩\n");

printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");

c1=getchar();

printf("\t一共有个%d记录\n",numstus);/*总共记录数*/

switch(c1)

{

case'1':

for(i=0;i<numstus;i++)/*循环输入判断*/

{

sum+=stud[i].subject[0];

if(stud[k].subject[0]>stud[i].subject[0]) k=i;

if(stud[j].subject[0]<stud[i].subject[0]) j=i;

}

average[0]=sum/numstus;

printf("\t科目A的最高分:\n");/*最高分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);

printf("\t科目A的最低分是:\n");/*最低分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);

printf("\t科目A的平均分是%5.2f\n",average[0]);/*平均分*/

break;

case'2':

for(i=0;i<numstus;i++)/*循环输入判断*/

{

sum+=stud[i].subject[1];

if(stud[k].subject[1]>stud[i].subject[1]) k=i;

if(stud[j].subject[1]<stud[i].subject[1]) j=i;

}

average[1]=sum/numstus;

printf("\t科目B的最高分:\n");/*最高分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);

printf("\t科目B的最低分是:\n");/*最低分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);

printf("\t科目B的平均分是%5.2f\n",average[1]);/*平均分*/

break;

case'3':

for(i=0;i<numstus;i++)/*循环输入判断*/

{

sum+=stud[i].subject[2];

if(stud[k].subject[2]>stud[i].subject[2]) k=i;

if(stud[j].subject[2]<stud[i].subject[2]) j=i;

}

average[2]=sum/numstus;

printf("\t科目C的最高分:\n");/*最高分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);

printf("\t科目C的最低分是:\n");/*最低分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);

printf("\t科目C的平均分是%5.2f\n",average[2]);/*平均分*/

break;

case'4':

for(i=0;i<numstus;i++)/*循环输入判断*/

{

sum+=stud[i].subject[3];

if(stud[k].subject[3]>stud[i].subject[3]) k=i;

if(stud[j].subject[3]<stud[i].subject[3]) j=i;

}

average[3]=sum/numstus;

printf("\t科目D的最高分:\n");/*最高分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);

printf("\t科目D的最低分是:\n");/*最低分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);

printf("\t科目D的平均分是%5.2f\n",average[3]);/*平均分*/

break;

case'5':

for(i=0;i<numstus;i++)/*循环输入判断*/

{

sum+=stud[i].subject[4];

if(stud[k].subject[4]>stud[i].subject[4]) k=i;

if(stud[j].subject[4]<stud[i].subject[4]) j=i;

}

average[4]=sum/numstus;

printf("\t科目E的最高分:\n");/*最高分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);

printf("\t科目E的最低分是:\n");/*最低分*/

printf("\t\t学号:%s姓名:%s分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);

printf("\t科目E的平均分是%5.2f\n",average[4]);/*平均分*/

break;

default:printf("输入错误!请输入1~5之间的数\n");

}

sum=0;

getchar();

printf("是否继续进行统计?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y');

else break;

}

}

}

#include"head.h"

int writetotext(student stud[])/*将所有记录写入文件*/

{

int i=0,j;

FILE*fp;

char filename[20];

printf("输入文件名称:");

gets(filename);

fp=fopen(filename,"w");

fprintf(fp,"%d\n",numstus);

while(i<numstus)

{

fprintf(fp,"%s%s%s",stud[i].number,stud[i].name,stud[i].sex);

for(j=0;j<numsubs;j++)

fprintf(fp,"%f",stud[i].subject[j]);

fprintf(fp,"%f%f%d",stud[i].score,stud[i].average,stud[i].index);

i++;

}

fclose(fp);

printf("已成功存储!\n");

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include"head.h"

void welcome()

{

printf("\t*************************************************************\n");

printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t倾情奉献欢迎使用!\n");

printf("\t*************************************************************\n");

}

void showtable()

{

printf("---------------------------------------------------------------------------------------\n");

printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");

printf("---------------------------------------------------------------------------------------\n");

}

void display(student stud[],int n1,int n2)

{

int i;

showtable();/*显示表头*/

for(i=n1;i<=n2;i++)

printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);

/*通过循环输出数据*/

}

void display1()

{

printf("\t\t本系统由计应精英一组亲情制作\n\n");

printf("\t\t制作人员列表:(按比划)\n");

printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");

printf("\n\n");

getchar();

}

#include"head.h"

#include<string.h>

void amendrecord(student stud[])

{

char str[5];/*供用户输入*/

int i=-1,j;

if(numstus==0)/*没有记录返回*/

printf("没有可供修改的记录!");

while(i<0)

{

i=findrecord(stud);

if(i>=0)

{

printf("要删除这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

deleterecord(stud,i);

count(stud);

}

else

{

printf("确定要修改这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

printf("下面请重新输入学生的信息:\n");

printf("请输入学号:");

gets(stud[i].number);

printf("请输入姓名:");

gets(stud[i].name);

printf("请输入性别(男/女 1/0):");

gets(str);

if(str[0]=='0')

strcpy(stud[i].sex,"女");

else

strcpy(stud[i].sex,"男");

stud[i].score=0;

printf("请按顺序输入成绩:");

for(j=0;j<numsubs;j++)

{

scanf("%f",&stud[i].subject[j]);

stud[i].score+=stud[i].subject[j];

}

getchar();

stud[i].average=stud[i].score/numsubs;

}

count(stud);

}

display(stud,0,numstus-1);

}

printf("是否继续进行其他修改?(y/n)\n");

gets(str);

if(str[0]=='y'||str[0]=='Y')

i=-1;

else i=1;

}

}

void deleterecord(student stu[],int i)/*删除信息*/

{

int j;

while(i>=0)

{

for(j=i;j<numstus;j++)

stu[j]=stu[j+1];

numstus--;

printf("删除成功!\n");

}

}

void count(student stud[])

{

int i,j;

for(i=0;i<numstus;i++)

{

stud[i].index=1;

for(j=0;j<numstus;j++)

if(stud[j].score>stud[i].score)

stud[i].index++;

}

}

#include"head.h"

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

printf("已有记录存在是否覆盖?(y/n)\n");

gets(str);

if(str[0]=='Y'||str[0]=='y')

i=0;

else i=numstus;

}

printf("请输入增加的学生信息条目数:");

scanf("%d",&num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstus>lens)

{

lens+=50;

pointer=(student*)realloc(pointer,lens*LEN);

}

printf("请输入学生信息:\n");

for(;i<numstus;i++)

{

getchar();

printf("请输入学号:");

gets(pointer[i].number);

printf("请输入姓名:");

gets(pointer[i].name);

printf("请输入性别(男/女 1/0):");

gets(pointer[i].sex);

if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");

else strcpy(pointer[i].sex,"男");

printf("请输入各科成绩:(按ABCDE的顺序):");

stud[i].score=0;

for(j=0;j<numsubs;j++)

{

scanf("%f",&stud[i].subject[j]);/*计算总分*/

stud[i].score+=stud[i].subject[j];

}

stud[i].average=stud[i].score/numsubs;/*计算平均分*/

}

count(stud);/*附名次*/

display(stud,0,numstus-1);

getchar();

}#include"head.h"

int numstus;

int lens;

student*pointer;

void main()

{

int i=1;

char str[2];

lens=100;

pointer=(student*)malloc(lens*LEN);/*分配内存*/

numstus=0;

welcome();/*欢迎界面*/

while(i>0)

{

i=menu_select();/*控制菜单*/

switch(i)

{

case 1:addrecord(pointer);break;/*增加学生信息*/

case 2:findrecord(pointer);break;/*查询学生信息*/

case 3:amendrecord(pointer);break;/*修改学生信息*/

case 4:sort(pointer);break;/*学生信息排序*/

case 5:statistic(pointer);break;/*统计信息*/

case 6:openfile(pointer);break;/*打开文件*/

case 7:writetotext(pointer);break;/*保存文件*/

case 8:display(pointer,0,numstus-1);break;/*显示记录*/

case 0:

if(numstus!=0) printf("是否保存当前记录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(pointer);

i=-1;break;/*退出系统*/

default:printf("请输入数字0~8:\n");i=1;/*输入错误*/

}

}

printf("\t\t欢迎再次使用本系统。\n\n");

display1();

}

自己一改就能用,给我加分哈!

打字不易,如满意,望采纳。

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

一年级编程课视频,一年级学编程有必要吗源码库源码 python源码库