辅导C学生信息管理系统、辅导C程序、辅导C报告
- 首页 >> C/C++编程#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct record
{
char name[10];
char age[10];
char sex[5];
char number[30];
int Math;
int English;
int program;
int sum;
int aver;
}contact[500];
struct record temp;
int NO=0;
FILE *fp,*fp2;
void mainmenu(); //主菜单
void newrecord(); //新建菜单
void browsemenu(); //浏览菜单
void sort(); //按学号排序(降序)
void searchmenu(); //查找菜单
void searchname(); //按姓名查找
void searchnumber(); //按学号查找
void modifymenu(); //修改菜单
void savefile();
void read_NO();
void over();
void main()
{
printf("\n\t\t :)欢迎使用通讯录管理系统beta");
printf("\n\t\t文件导入中……请稍后……\n\n\n\n\n");
system("cls");
while (1)
{
mainmenu();
}
}
void mainmenu() //主菜单
{
char choice;
system("cls");
printf("\n\n") ;
printf("\n\t\t请选择(1-6):");
choice=getch();
switch (choice)
{
case '1':newrecord();break;
case '2':browsemenu();break;
case '3':searchmenu();break;
case '4':modifymenu();break;
case '5':sort();break;
case '6':exit(0);
default:mainmenu();
}
}
void newrecord() //新建菜单
{
printf("\n\t\t**************** 请输入学生信息 ****************\n");
if((fp=fopen("contact.txt","r"))==0)
{
fp=fopen("contact.txt","w");
fclose(fp);
fp2=fopen("NO.txt","w");
NO=0;
fprintf(fp2,"NO=%d",NO);
fclose(fp2);
}
read_NO();
{
printf("\n\t输入姓名: 年龄: 性别: 学号:\n");
scanf("%s%s%s%s",&contact[NO].name,&contact[NO].age,&contact[NO].sex,&contact[NO].number);
printf("\n\t高数成绩: 英语成绩: C语言成绩:\n");
scanf("%d%d%d",&contact[NO].Math,&contact[NO].English,&contact[NO].program);
contact[NO].sum=contact[NO].English+contact[NO].Math+contact[NO].program;
contact[NO].aver=contact[NO].sum/3;
}
savefile();
printf("\n\t\t是否继续添加?(y/n):");
if (getch()=='y')
newrecord();
mainmenu();
}
void sort(int c)
{int i,j,n;
printf("按学号排序按1\n");
scanf("%d",&n);
while(n==1)
{c=c-1;
for(i=c;i>0;i--)
{
for(j=0;j<i;j++)
{
if(contact[j].number>contact[j+1].number)
{
temp.number=contact[j].number;
strcpy(temp.name,contact[j].name);
temp.age=contact[j].age;
temp.sex=contact[j].sex;
temp.English=contact[j].English;
temp.Math=contact[j].Math;
temp.program=contact[j].program;
temp.sum=contact[j].sum;
temp.aver=contact[j].aver;
contact[j].number=contact[j+1].number;
strcpy(contact[j].name,contact[j+1].name);
contact[j].age=contact[j+1].age;
contact[j].sex=contact[j+1].sex;
contact[j].English=contact[j+1].English;
contact[j].Math=contact[j+1].Math;
contact[j].program=contact[j+1].program;
contact[j].sum=contact[j+1].sum;
contact[j].aver=contact[j+1].aver;
contact[j+1].number=temp.number;
strcpy(contact[j+1].name,temp.name);
contact[j+1].age=temp.age;
contact[j+1].sex=temp.sex;
contact[j+1].English=temp.English;
contact[j+1].Math=temp.Math;
contact[j+1].program=temp.program;
contact[j+1].sum=temp.sum;
contact[j+1].aver=temp.aver;
}
}
}
}
}
void browsemenu() //浏览菜单
{
int i;
system("cls");
read_NO();
fp=fopen("contact.txt","r");
if(fp==0)
{
printf("\n\n\n\n\n\t\t\t 电话簿文件不存在");
over();
}
for (i=0;i<NO;i++)
fscanf(fp,"姓名:%s\n年龄:%s\n性别:%s\n学号:%s\n高数:%d\n英语:%d\n编程:%d\n总分:%d\n平均分:%d\n\n",&contact[i].name,&contact[i].age,&contact[i].sex,&contact[i].number,&contact[i].Math,&contact[i].English,&contact[i].program,&contact[i].sum,&contact[i].aver);
fclose(fp);
if(NO!=0)
{
printf("\t\t*************** 以下为学生所有信息**************\n");
printf("\n╔═══╦══╦══╦══════╦══╦══╦═══╦═══╦═══╗\n");
printf("║姓名 ║年龄║性别║学号 ║高数║英语║C语言 ║总分 ║平均分║\n");
for(i=0;i<NO;i++)
{
printf("╠═══╬══╬══╬══════╬══╬══╬═══╬═══╬═══╣\n");
printf("║%-6s║%-4s║%-4s║%-12s║%-4d║%-4d║%-6d║%-6d║%-6d║\n",contact[i].name,contact[i].age,contact[i].sex,contact[i].number,contact[i].Math,contact[i].English,contact[i].program,contact[i].sum,contact[i].aver);
}
printf("╚═══╩══╩══╩══════╩══╩══╩═══╩═══╩═══╝\n");
printf("\t\t************************************************");
}
else
printf("\n\t\t☆学生信息中无任何纪录☆");
printf("\n\t\t☆按任意键返回主菜单☆:");
getch();
return;
}
void searchmenu() //查找菜单
{
char choice;
system("cls");
printf("\n\t\t******************* 查找菜单 *******************");
printf("\n\t\t*************** ☆1 .按姓名查找 *****************");
printf("\n\t\t*************** ☆2 .按学号查找 *****************");
printf("\n\t\t*************** ☆3 .返回主菜单 *****************");
printf("\n\t\t************************************************");
printf("\n\t\t请选择:");
choice=getche();
switch (choice)
{
case '1':searchname();break;
case '2':searchnumber();break;
case '3':mainmenu();break;
}
}
void searchname() //按姓名查找
{
int mark=0;
int i;
char name[20];
printf("\n\t\t***************** 按姓名查找 *******************");
printf("\n\t\t请输入学生姓名:");
scanf("%s",name);
read_NO();
fp=fopen("contact.txt","r");
for(i=0;i<NO;i++)
{
fscanf(fp,"姓名:%s\n年龄:%s\n性别:%s\n学号:%s\n高数:%d\n英语:%d\nC语言:%d\n\n",&contact[i].name,&contact[i].age,&contact[i].sex,&contact[i].number,&contact[i].Math,&contact[i].English,&contact[i].program);
if (strcmp(contact[i].name,name)==0)
{
printf("\n\t\t************ 以下是您查找的学生信息 **********");
printf("\n\t\t姓 名: %s",contact[i].name);
printf("\n\t\t年 龄: %s",contact[i].age);
printf("\n\t\t性 别: %s",contact[i].sex);
printf("\n\t\t学 号: %s",contact[i].number);
printf("\n\t\t高数成绩: %d",contact[i].Math);
printf("\n\t\t英语成绩: %d",contact[i].English);
printf("\n\t\tC语言成绩: %d",contact[i].program);
printf("\n\t\t************************************************");
mark++;
}
}
fclose(fp);
if(mark==0)
printf("\n\t\t没有该姓名的学生纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
void searchnumber() //按学号查找
{
int mark=0;
int i;
char number[30];
printf("\n\t\t****************** 按学号查找 ******************");
printf("\n\t\t请输入学号:");
scanf("%s",&number);
read_NO();
fp=fopen("contact.txt","r");
for(i=0;i<NO;i++)
{
fscanf(fp,"姓名:%s\n年龄:%s\n性别:%s\n学号:%s\n高数:%d\n英语:%d\nC语言:%d\n\n",&contact[i].name,&contact[i].age,&contact[i].sex,&contact[i].number,&contact[i].Math,&contact[i].English,&contact[i].program);
if (strcmp(contact[i].number,number)==0)
{
printf("\n\t\t************ 以下是您查找的学生信息 **********");
printf("\n\t\t姓 名: %s",contact[i].name);
printf("\n\t\t年 龄: %s",contact[i].age);
printf("\n\t\t性 别: %s",contact[i].sex);
printf("\n\t\t学 号: %s",contact[i].number);
printf("\n\t\t高数成绩: %d",contact[i].Math);
printf("\n\t\t英语成绩: %d",contact[i].English);
printf("\n\t\tC语言成绩: %d",contact[i].program);
printf("\n\t\t************************************************");
mark++;
}
}
fclose(fp);
if(mark==0)
printf("\n\t\t没有该姓名的学生纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
void modifymenu() //修改菜单
{
int mark=0;
int i,k;
int t=0;
char choice;
char name[10];
struct record modify;
system("cls");
printf("\n\t\t请输入您要修改的姓名:");
scanf("%s",name);
read_NO();
fp=fopen("contact.txt","r+");
for(i=0;i<NO;i++)
fscanf(fp,"姓名:%s\n年龄:%s\nsex:%s\n学号:%s\n高数:%d\n英语:%d\nC语言:%d\n\n",&contact[i].name,&contact[i].age,&contact[i].sex,&contact[i].number,&contact[i].Math,&contact[i].English,&contact[i].program);
for(i=0;i<NO;i++)
{
if (strcmp(contact[i].name,name)==0)
{
k=i;mark=1;
modify=contact[i];
printf("\n\t\t********** 以下是您将修改的学生信息 **********");
printf("\n\t\t姓 名: %s",contact[i].name);
printf("\n\t\t年 龄: %s",contact[i].age);
printf("\n\t\t性 别: %s",contact[i].sex);
printf("\n\t\t学 号: %s",contact[i].number);
printf("\n\t\t高数成绩: %d",contact[i].Math);
printf("\n\t\t英语成绩: %d",contact[i].English);
printf("\n\t\tC语言成绩: %d",contact[i].program);
printf("\n\t\t是否继续?y/n");
if(getch()=='n')
modifymenu();
else
{
printf("\n\t\t选择您要修改的选项:");
printf("\n\t\t\t(1).姓 名");
printf("\n\t\t\t(2).年 龄");
printf("\n\t\t\t(3).性 别");
printf("\n\t\t\t(4).学 号");
printf("\n\t\t\t(5).高数成绩");
printf("\n\t\t\t(6).英语成绩");
printf("\n\t\t\t(7).C语言成绩");
printf("\n\t\t\t(8).返 回");
printf("\n\t\t请选择: ");
choice=getch();
switch(choice)
{
case '1': printf("姓 名:"); scanf("%s",contact[i].name); break;
case '2': printf("年 龄:"); scanf("%s",contact[i].age); break;
case '3': printf("性 别:"); scanf("%s",contact[i].sex); break;
case '4': printf("学 号:"); scanf("%s",contact[i].number); break;
case '5': printf("高数成绩:"); scanf("%d",contact[i].Math);break;
case '6': printf("英语成绩:"); scanf("%d",contact[i].English);break;
case '7': printf("C语言成绩:"); scanf("%d",contact[i].program);break;
case '8': mainmenu(); break;
default: modifymenu();
}
printf("\n\t\t您的修改结果为:");
printf("\n\t\t姓 名: %s",contact[i].name);
printf("\n\t\t年 龄: %s",contact[i].age);
printf("\n\t\t性 别: %s",contact[i].sex);
printf("\n\t\t学 号: %s",contact[i].number);
printf("\n\t\t高数成绩: %d",contact[i].Math);
printf("\n\t\t英语成绩: %d",contact[i].English);
printf("\n\t\tC语言成绩: %d",contact[i].program);
printf("\n\t\t确认修改?y/n");
if(getch()=='n')
{
contact[i]=modify;
printf("\n\t\t修改未保存!");
}
else
{
fclose(fp);
fp=fopen("contact.txt","w");
for(i=0;i<NO;i++)
fprintf(fp,"姓名:%s\n年龄:%s\n性别:%s\n学号:%s\n高数:%d\n英语:%d\nC语言:%d\n\n",contact[i].name,contact[i].age,contact[i].sex,contact[i].number,contact[i].Math,contact[i].English,contact[i].program);
fclose(fp);
printf("\n\t\t修改成功!");
}
printf("\n\t\t是否继续修改?(y/n)");
if (getch()=='y')
modifymenu();
}
}
}
if (mark==0)
{
printf("\n\t\t没有该学生的纪录");
printf("\n\t\t是否继续修改?(y/n)");
if (getch()=='y')
modifymenu();
}
return;
}
void savefile()
{
int i;
fp=fopen("contact.txt","a+");
fseek(fp,0,SEEK_END);
fprintf(fp,"姓名:%s\n年龄:%s\n性别:%s\n学号:%s\n高数:%d\n英语:%d\nC语言:%d\n\n",contact[NO].name,contact[NO].age,contact[NO].sex,contact[NO].number,contact[NO].Math,contact[NO].English,contact[NO].program);
fclose(fp);
NO++;
fp2=fopen("NO.txt","w");
fprintf(fp2,"NO=%d",NO);
fclose(fp2);
printf("\n\t\t已成功保存至文件!\n");
}
void read_NO()
{
fp2=fopen("NO.txt","r");
if(fp2==NULL)
{
printf("\n\t\t对不起,文件中无任何纪录");
over();
}
fscanf(fp2,"NO=%d",&NO);
fclose(fp2);
}
void over()
{
printf("\n\t\t按任意键返回主菜单");
getch();
mainmenu();
}