C语言课程设计-图书管理系统

2024-12-19 08:05:57
推荐回答(3个)
回答1:

我只能给你个简陋的东西。这个你还得自己慢慢改。(只要你能看懂)自己看着办吧

#include
#include
#include
#include
#define MAX_NUM 45

struct studenter {
int ID;
char Name[10];
int Age;
char Sex[2];
int Birthday;
char Adress[15];
char TelNum[12];
char Email[10];
};

typedef struct studenter STUDENT;

void input(STUDENT stu[],int Max,int cn);
int findStudentID(STUDENT stu[],int findID,int Max);
void DisplayInfor(STUDENT stu[],int Max);
void DispMainMenu();
void DispQueryMenu();
char choice();
int InforInput(STUDENT stu[],int cn);
void QueryInfor(STUDENT stu[],int Max);
void EditInfor(STUDENT stu[],int Max);

void DispMainMenu()
{
printf("**************学生信息管理系统1.0**************\n");
printf("\t1--学生信息录入 \t2--学生信息修改\n");
printf("\t3--学生信息查询 \t4--学生信息删除\n");
printf("\t5--学生信息排序 \t0--退出\n");
printf("************************************************\n");
printf("请选择(0--5):");
}

void DispQueryMenu()
{
printf("*****************请选择查询方式*****************\n");
printf("\t1--按学号查询; \t2--按姓名查询\n");
printf("************************************************\n");
printf("请选择(1--2):");
}

char choice()
{
char select;
select=getche();
getch();
return (select);
}

void DisplayInfor(STUDENT stu[],int Max)
{
int i;
printf("\n 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n");
for(i=0;i printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);
printf("\n");
}

void input(STUDENT stu[],int Max,int cn)
{
int i;
for(i=cn;i {
printf("\n请输入第%d个学生的学号 (8个字符以内):",i+1);
scanf("%d",&stu[i].ID);
printf("\n\t\t姓名(10个字符以内):");
scanf("%s",stu[i].Name);
printf("\n\t\t\t 年龄:");
scanf("%d",&stu[i].Age);
printf("\n\t\t\t性别(m或w):");
scanf("%s",&stu[i].Sex);
printf("\n\t\t 出生年月(8位):");
scanf("%d",&stu[i].Birthday);
printf("\n\t\t\t 地址:");
scanf("%s",&stu[i].Adress);
printf("\n\t\t\t 电话:");
scanf("%s",&stu[i].TelNum);
printf("\n\t\t\t E-mail:");
scanf("%s",&stu[i].Email);

}
printf("\n您的输入信息是:\n");
DisplayInfor(stu,Max+cn);
}

int findStudentID(STUDENT stu[],int findID,int Max)
{
int i;
for(i=0;i {
if(stu[i].ID==findID)
break;
}
if(i return i;
else
return -1;
}
int findStudentNAME(STUDENT stu[],char findNAME[10],int Max)
{
int i;
for(i=0;i {
if(!strcmp(stu[i].Name,findNAME))
break;
}
if(i return i;
else
return -1;
}
int InforInput(STUDENT stu[],int cn)
{
int number;

printf("\n请输入本次录入的学生人数: ");
scanf("%d",&number);
if(number>MAX_NUM)
{
printf("您输入的人数太多,大于%d人!\n",MAX_NUM);
return (0);
}
input(stu,number,cn) ;
return (number+cn);
}

void QueryInfor(STUDENT stu[],int Max)
{
char select;
int i;
int findID;
char findNAME[10];
DispQueryMenu();
select=choice();
switch (select)
{
case '1':
printf("\n按学号查询\n请输入学生的学号: ");
scanf("%d",&findID);
if ((i=findStudentID(stu,findID,Max))!=-1)
{
printf("查找结果如下:\n");
printf(" 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");
printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);
}
else
printf("您输入的学号不存在!\n");
break;
case '2':
printf("\n按姓名查询\n请输入学生的姓名: ");
scanf("%s",&findNAME);
if ((i=findStudentNAME(stu,findNAME,Max))!=-1)
{
printf("查找结果如下:\n");
printf(" 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail");
printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);
}
else
printf("您输入的姓名不存在!\n");
break;
default :
printf("选择错误!\n");
}
}

void EditInfor(STUDENT stu[],int Max)
{
int i;
int findID;
printf("\n请输入学生的学号: ");
scanf("%d",&findID);
if ((i=findStudentID(stu,findID,Max))!=-1)
{
printf("姓 名: %s\n",stu[i].Name);
printf("原信息:%8d %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);
printf("\n 请输入新的学号 (8个字符以内):",i+1);
scanf("%d",&stu[i].ID);
printf("\n\t\t姓名(10个字符以内):");
scanf("%s",stu[i].Name);
printf("\n\t\t\t 年龄:");
scanf("%d",&stu[i].Age);
printf("\n\t\t\t性别(m或w):");
scanf("%s",&stu[i].Sex);
printf("\n\t\t 出生年月(8位):");
scanf("%d",&stu[i].Birthday);
printf("\n\t\t\t 地址:");
scanf("%s",&stu[i].Adress);
printf("\n\t\t\t 电话:");
scanf("%s",&stu[i].TelNum);
printf("\n\t\t\t E-mail:");
scanf("%s",&stu[i].Email);
}
else
printf("您输入的学号不存在!\n");
}
DEL(STUDENT stu[],int Max,int i)
{
for(;i {
stu[i-1].ID=stu[i].ID;
strcpy(stu[i-1].Name,stu[i].Name);
stu[i-1].Age=stu[i].Age;
strcpy(stu[i-1].Sex,stu[i].Sex);
stu[i-1].Birthday=stu[i].Birthday;
strcpy(stu[i-1].Adress,stu[i].Adress);
strcpy(stu[i-1].TelNum,stu[i].TelNum);
strcpy(stu[i-1].Email,stu[i].Email);
}
return(--Max);
}
DelInfor(STUDENT stu[],int Max)
{

int findID,i;
char findNAME[10],select;
printf("*****************请选择删除方式*****************\n");
printf("\t1--按学号删除; \t2--按姓名删除\n");
printf("************************************************\n");
printf("请选择(1--2):");
select=choice();
switch (select)
{
case '1':
printf("\n按学号删除\n请输入学生的学号: ");
scanf("%d",&findID);
if ((i=findStudentID(stu,findID,Max))!=-1)
DEL(stu,Max,i);
else
printf("您输入的学号不存在!\n");
break;
case '2':
printf("\n按姓名删除\n请输入学生的姓名: ");
scanf("%s",&findNAME);
if ((i=findStudentNAME(stu,findNAME,Max))!=-1)
DEL(stu,Max,i);
else
printf("您输入的姓名不存在!\n");
break;
default :
printf("选择错误!\n");

}
}

SortInforMenu(STUDENT stu[],int Max)
{
char select;
printf("*****************请选择排序方式*****************\n");
printf("\t1--按学号排序; \t2--按姓名排序\n");
printf("************************************************\n");
printf("请选择(1--2):");
select=choice();
if (select=='1'||select=='2')
SortInfor(stu,Max,select);
else
printf("选择错误!\n");

}

SortInfor(STUDENT stu[],int Max,char i)
{
STUDENT student;
int j=0,k,l=0;
if(i=='1')
{
for(k=0;j for(;k {
if(stu[k].ID>stu[k+1].ID)
{
student.ID=stu[k+1].ID;
strcpy(student.Name,stu[k+1].Name);
student.Age=stu[k+1].Age;
strcpy(student.Sex,stu[k+1].Sex);
student.Birthday=stu[k+1].Birthday;
strcpy(student.Adress,stu[k+1].Adress);
strcpy(student.TelNum,stu[k+1].TelNum);
strcpy(student.Email,stu[k+1].Email);
stu[k+1].ID=stu[k].ID;
strcpy(stu[k+1].Name,stu[k].Name);
stu[k+1].Age=stu[k].Age;
strcpy(stu[k+1].Sex,stu[k].Sex);
stu[k+1].Birthday=stu[k].Birthday;
strcpy(stu[k+1].Adress,stu[k].Adress);
strcpy(stu[k+1].TelNum,stu[k].TelNum);
strcpy(stu[k+1].Email,stu[k].Email);
stu[k].ID=student.ID;
strcpy(stu[k].Name,student.Name);
stu[k].Age=student.Age;
strcpy(stu[k].Sex,student.Sex);
stu[k].Birthday=student.Birthday;
strcpy(stu[k].Adress,student.Adress);
strcpy(stu[k].TelNum,student.TelNum);
strcpy(stu[k].Email,student.Email);
}
printf("\n 学号 姓名 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n");
for(i=0;i printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);
printf("\n");
}
}
else if(i=='2')
{
for(k=0;j for(;k {
if(strcmp(stu[k].Name,stu[k+1].Name)>0)
{
student.ID=stu[k+1].ID;
strcpy(student.Name,stu[k+1].Name);
student.Age=stu[k+1].Age;
strcpy(student.Sex,stu[k+1].Sex);
student.Birthday=stu[k+1].Birthday;
strcpy(student.Adress,stu[k+1].Adress);
strcpy(student.TelNum,stu[k+1].TelNum);
strcpy(student.Email,stu[k+1].Email);
stu[k+1].ID=stu[k].ID;
strcpy(stu[k+1].Name,stu[k].Name);
stu[k+1].Age=stu[k].Age;
strcpy(stu[k+1].Sex,stu[k].Sex);
stu[k+1].Birthday=stu[k].Birthday;
strcpy(stu[k+1].Adress,stu[k].Adress);
strcpy(stu[k+1].TelNum,stu[k].TelNum);
strcpy(stu[k+1].Email,stu[k].Email);
stu[k].ID=student.ID;
strcpy(stu[k].Name,student.Name);
stu[k].Age=student.Age;
strcpy(stu[k].Sex,student.Sex);
stu[k].Birthday=student.Birthday;
strcpy(stu[k].Adress,student.Adress);
strcpy(stu[k].TelNum,student.TelNum);
strcpy(stu[k].Email,student.Email);
}
}

printf("\n 姓名 学号 年龄 性别 出生年月\t 地址\t 电话\t E-mail\n");
for(;l printf("%10s %8d %2d %2s %8d %15s %12s %10s",stu[l].Name,stu[l].ID,stu[l].Age,stu[l].Sex,stu[l].Birthday,stu[l].Adress,stu[l].TelNum,stu[l].Email);
printf("\n");
}
}

Save(STUDENT stu[],int Max)
{
int i=0 ;
FILE *fp;
if((fp=fopen("stu.txt","w+"))==NULL)
{
printf("ERROR!");
exit(0);
}
for(;i {
fprintf(fp,"%d ",stu[i].ID);
fprintf(fp,"%s ",stu[i].Name);
fprintf(fp,"%d ",stu[i].Age);
fprintf(fp,"%s ",stu[i].Sex);
fprintf(fp,"%d ",stu[i].Birthday);
fprintf(fp,"%s ",stu[i].Adress);
fprintf(fp,"%s ",stu[i].TelNum);
fprintf(fp,"%s ",stu[i].Email);
}
fclose(fp);
printf("OK!");
}

int main(int argc, char *argv[])
{
char select;
STUDENT stu[MAX_NUM];
int current_number=0;
select=0;
while(select!='0')
{
system("cls");

DispMainMenu();
select=choice();

switch(select)
{
case '0':
printf("\n您选择的是退出测试!\n");
_beep(300,400);
continue;
case '1':
printf("\n您选择的是信息录入!\n");
current_number=InforInput(stu,current_number);
break;
case '2':
printf("\n您选择的是信息修改!\n");
EditInfor(stu,current_number);
break;
case '3':
printf("\n您选择的是信息查询!\n");
QueryInfor(stu,current_number);
break;
case '4':
printf("\n您选择的是删除信息!\n");
DelInfor(stu,current_number);
break;
case '5':
printf("\n您选择的是排序信息!\n");
SortInforMenu(stu,current_number);
break;
default:
printf("\n选择错误!请重新选择!\n");
}
system("PAUSE");
}
return (0);
Save(stu,current_number);
}

回答2:

进入 www.pudn.com 然后注册个用户,下载你要的就行了....

回答3:

您好!
还是你自己编吧!一班人都没有那个心思,你这个代码花的精力太大了,至少要半天才能出来!
非人力所能及!
加油,我相信你自己能写出更完善的代码来的!