这个只是简单的系统,只有一个关系表。如果你是为了应付老师则足矣,如果是为了优秀,那就要自己添加更多的关系表和功能块,比如可以再添加宿舍表,通过这个关系表,可以查看,这个宿舍有没有空床位;当给宿舍添加学生时,遇到宿舍爆满,就会添加失败等功能。
之前我发布上去的时候市可以运行的,后来可能是版本更新对语法要求更高,导致编译不过,现在已经对代码做了修改了。
以下为代码**:**
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include "conio.h"
#include "windows.h"
#define MAX 1000
/*结构体类型*/
typedef struct
{
int num;/*学号*/
char name[20];/*姓名*/
char sex[5];/*性别*/
int age;/*年龄*/
char studentclass[20];/*班级*/
int dorm;/*宿舍号*/
}STUDENTS;
//查找指针
typedef struct Points
{
int a;
struct Points *points;
}Points;
char xiugai[10]="修改";
char chaxun[10]="查询";
char xuehao[]="学号";
char xingming[]="姓名";
char xingbie[]="性别";
char nianling[]="年龄";
char banji[]="班级";
char sushe[]="宿舍";
/*共用的功能块 */
////////////////////////////////////////////////////////////////////////////////
void pause(){
int i;
printf("\n\n按任意键加回车返回主菜单!");
scanf("%d",&i);
getchar();
}
void print(STUDENTS stu[],int point){
printf("\n\n\n学号:%d,姓名:%s,性别:%s,年龄:%d,班级:%s,宿舍号: %d\n",
stu[point].num,stu[point].name,stu[point].sex,stu[point].age,stu[point].studentclass,stu[point].dorm);
}
void printfNotFound(){
printf("找不到该数据\n");
}
void printSearch(STUDENTS stu[],int i){
printf(" %7d%11s%10s%10d%12s%12d\n\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].studentclass,stu[i].dorm);
}
void printHead(){
printf(" -------------------------------------------------------------------------------\n");
printf(" -------------------------------------------------------------------------------\n");
printf(" 学号: 姓名: 性别: 年龄: 班级: 宿舍号: \n");
printf(" -------------------------------------------------------------------------------\n");
printf(" -------------------------------------------------------------------------------\n\n\n");
}
//默认继续
int a=1;
void selectOperate(){
button:
printf("继续操作请按1,返回主菜单请按0 ");
scanf("%d",&a);
if(!(a==1||a==0))
{
printf("请输入正确的指令");
goto button;
}
}
////////////////////////////////////////////////////////////////////////////////
//读取文件,返回的是总个数
int read_file(STUDENTS stu[])
{
FILE *fp;
int point=-1;
fp=fopen("stu.txt","rt");
if(fp==NULL)
{
printf("\n\n*****库存文件不存在!请创建");
return 0;
}
while(!feof(fp))
{
point++;
fread(&stu[point],sizeof(STUDENTS),1,fp);
}
fclose(fp);
return point;
}
//存储数据到文件中
void save_file(STUDENTS stu[],int sum)//sum是总个数
{
FILE *fp;
int i;
if((fp=fopen("temp.txt","w"))==NULL)
{
printf("写文件错误!\n");
return;
}
for(i=0;i<sum;i++)
if(fwrite(&stu[i],sizeof(STUDENTS),1,fp)!=1)
printf("写文件错误!\n");
fclose(fp);
remove("stu.txt");
rename("temp.txt","stu.txt");
}
/*创建学生信息*/
//返回的是总数
int input(STUDENTS stu[],int sum)
{
int x;
for(;sum<MAX;sum++)
{
system("cls");
printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");
printf(" ▄ ▄\n");
printf(" ▄ 创建学生宿舍信息 ▄\n");
printf(" ▄ ▄\n");
printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");
printf("\n\n 录入学生信息 (最多%d个)\n",MAX);
printf(" ----------------------------\n");
printf("\n 第%d个学生\n",sum+1);
printf("\n 请输入学生的学号:");
scanf("%d",&stu[sum].num);
printf("\n 请输入学生的姓名:");
scanf("%s",stu[sum].name);
printf("\n 请输入学生的性别:");
scanf("%s",stu[sum].sex);
printf("\n 请输入学生的年龄:");
scanf("%d",&stu[sum].age);
printf("\n 请输入学生的班级:");
scanf("%s",stu[sum].studentclass);
printf("\n 请输入学生的宿舍号:");
scanf("%d",&stu[sum].dorm);
printf(" 创建成功!");
//选择操作
selectOperate();
if(a==0)
return sum+1;
}
return sum+1;
}
/*打印学生信息*/
void output(STUDENTS stu[],int sum)
{
int i;
system("cls");
printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");
printf(" ▄ ▄\n");
printf(" ▄ 打印学生宿舍信息 ▄\n");
printf(" ▄ ▄\n");
printf(" ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");
printHead();
for(i=0;i<sum;i++)
printSearch(stu,i);
pause();
}
/*排序 */
////////////////////////////////////////////////////////////////////////////////
/*复制student*/
//将排好的装在一个新的students数组里 ,不要存到文件中
void cpStu(STUDENTS stu0[],STUDENTS stu[],int sum) {
int i;
for(i=0;i<sum;i++){
stu[i].num=stu0[i].num;
strcpy(stu[i].name,stu0[i].name);
strcpy(stu[i].sex,stu0[i].sex);
stu[i].age=stu0[i].age;
strcpy(stu[i].studentclass,stu0[i].studentclass);
stu[i].dorm=stu0[i].dorm;
}
}
/*对数据元组排序*/
void exchangeData(STUDENTS *stu1,STUDENTS *stu2){
stu1->num=stu2->num;
stu1->dorm=stu2->dorm;
stu1->age=stu2->age;
strcpy(stu1->name,stu2->name);
strcpy(stu1->sex,stu2->sex);
strcpy(stu1->studentclass,stu2->studentclass);
}
<