📄 rightzhuhhanshu.cpp
字号:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define SIZE 6
#define LEN sizeof(struct student_type)
#define PRINT1 printf("----------------------------------------------------------------------------\n");
#define PRINT2 printf(" 学号 姓名 性别 年龄 地址 \n");
#define PRINT3 printf(" %-5d%-20s%-10c%-15d%-20s\n",stu1[i].num,stu1[i].name,stu1[i].sex,stu1[i].age,stu1[i].addre);
#define PRINT4 printf("\n");
#define PRINT5 printf(" ********************************** \n");
struct student_type /*学生信息结构体*/
{
int num;
char name[20];
char sex;
int age;
char addre[15];
}stu1[SIZE];
main() /****************主函数*********************/
{
int n;
char c,d;
void print_ori();
void printall_after();
void modify();
void add_extra();
void delect();
void find();
void count();
void exit();
void display_menu();
system("color 47");
printf("\n\n");
printf(" ====================================================== \n");
printf("\n");
printf(" 欢迎您使用学生证管理系统 \n");
printf("\n");
printf(" ====================================================== \n");
printf("\n*******************************************************************************");
printf(" *****总设计师 : 丁高明 \n");
printf(" *****总设计师资料 :编号:18 单位: 地信0602\n");
printf(" *****技术顾问 : 温国海\n");
printf(" *****技术总监 : 温国海\n");
printf(" *****出品时间 : 2007年7月6日\n");
printf(" *****版权归属 : 自主设计 国产版权\n");
printf("*******************************************************************************");
printf("\n\n\n");
printf("\n **********是否进入系统************\n");
printf("\n\t\t\t\t y/n ");
if(d=getchar()=='y')
{
do
{
display_menu();
PRINT4; PRINT4;
printf("\n----------您现在以到达主菜单界面,请输入 1--6 进入操作区--------");
scanf("%d",&n);
switch(n)
{
case 1: print_ori(); break;
case 2: printall_after(); break;
case 3: modify(); break;
case 4: add_extra(); break;
case 5: delect(); break;
case 6: find(); break;
case 7: count(); break;
case 8: exit(); break;
}
PRINT4;
if(n!=8)
{
printf("你想继续使用程序吗?------------------(y/n) ");
getchar();
c=getchar();
}
}while((c=='y'||c=='Y')&&(n!=8));
}
}
void display_menu() /***************打印菜单*****************/
{
system("color 17");
printf("--------------------------------------------------------------------------------\n");
printf(" 下面是此系统的操作菜单\n");
printf("\n __________________________________________________\n");
printf("\n | 1 --->> * 显示未处理的学生原始信息 * |\n");
printf("\n | 2 --->> * 显示处理后所有的学生信息 * |\n");
printf("\n | 3 --->> * 修改学生信息 * |\n");
printf("\n | 4 --->> * 增加学生信息 * |\n");
printf("\n | 5 --->> * 删除学生信息 * |\n");
printf("\n | 6 --->> * 查找学生信息 * |\n");
printf("\n | 7 --->> * 统计系统 * |\n");
printf("\n | 8 --->> * 退出程序 * |\n");
printf(" __________________________________________________");
}
void exit() /***************跳出循环*************/
{
system("color 46");
printf(" ====================================================== \n");
printf("\n 欢迎您使用学生证管理系统软件 \n");
printf("\n ====================================================== \n");
printf("\n");
printf(" -----------------------------------------------------------------------------\n");
printf(" \n如果您有对本公司有意见或建议,请通过以下联系方式与我们联系:\n");
printf("\n ******* gaoming9281029@souhoo.com.cn!******\n");
printf("=============================================================================== \n");
printf("软件开发商:");
printf("中南大学地信软件家园有限公司 \n");
printf(" 董事长兼总经理:丁高明\n");
printf("\n本公司以先进的技术,竭诚为您服务!\n");
printf("\n开拓创新是生存之源, 与时俱进是发展之本! 国产软件的发展靠你,靠我,也靠他!!\n ");
PRINT4;
printf("\n * 版权所有 违法必究! *");
printf("\n输入任意键结束程序!\n");
}
void sort()
{ /************按学号排序****************/
FILE *fp3;
int i,j,sum=0;
struct student_type temp;
if((fp3=fopen("stu_list.txt","rb"))==NULL)
{
printf("error!");
exit(0);
}
for(i=0;fread(&stu1[i],LEN,1,fp3)!=0;i++)
sum=i+1;
fclose(fp3);
fp3=fopen("stu_list.txt","rb");
for(i=0;i<sum-1;i++)
for(j=i+1;j<sum;j++)
{
if(stu1[i].num>stu1[j].num)
{
temp=stu1[i];
stu1[i]=stu1[j];
stu1[j]=temp;
}
}
fp3=fopen("stu_list.txt","wb");
for(i=0;i<sum;i++)
fwrite(&stu1[i],LEN,1,fp3);
fclose(fp3);
}
void print_ori()
{ /**************输出原始的学生信息**************/
FILE *fp;
int i;
if((fp=fopen("stu_list2.txt","r"))==NULL)
{
printf("error!");
exit(0);
}
PRINT1; PRINT2;
for( i=0;i<SIZE;i++)
{
PRINT1;
fread(&stu1[i],sizeof(struct student_type),1,fp) ;
PRINT3;
}
PRINT1;
fclose(fp);
}
void printall_after() /****输出所有的修改后的学生信息******/
{
FILE *pp;
int i;
void sort();
sort();
pp=fopen("stu_list.txt","rb");
PRINT1; PRINT2; PRINT1;
for( i=0;fread(&stu1[i],sizeof(struct student_type),1,pp)!=0;i++)
{
PRINT1; PRINT3;
}
PRINT1;
fclose(pp);
}
void modify() /************修改学生信息************/
{
FILE *p;
char sex,name[20],addre[15];
int i,k,num,t,m,age;
char c1='y', c2='y';
if((p=fopen("stu_list.txt","rb"))==NULL)
{
printf("文件打开失败!!");
return;
}
PRINT4; PRINT4; PRINT1;
PRINT4; PRINT4;
for(i=0;fread(&stu1[i],LEN,1,p)!=0;i++)
t=i+1;
fclose(p);
printf("\n\n\n");
printf("**************************************************************************");
printf("\n\n您现在以进入学生信息修改界面,参照下述修改菜单,请按下面的提示完成操作!\n");
printf("\n**************************************************************************");
printf("\n\n\n\n");
printf("\n***************修改菜单:\n");
PRINT4; PRINT1;
printf(" * 1 ---------- 修改学号\n");
printf(" * 2 ---------- 修改姓名\n");
printf(" * 3 ---------- 修改性别\n");
printf(" * 4 ---------- 修改年龄\n");
printf(" * 5 ---------- 修改地址\n");
printf(" \n ****提示:若想修改某个学生的所有信息利用删除和添加功能实现****\n");
PRINT1; PRINT4;
do
{
p=fopen("stu_list.txt","rb");
printf("\n请输入您要修改的学生的学生证号(不要以0开头):-------------");
scanf("%d",&num); PRINT4; PRINT4;
for(i=0;fread(&stu1[i],sizeof(struct student_type),1,p)!=0;i++)
if(num==stu1[i].num)
{
printf("\n*********你要修改的学生的原始信息\n");
PRINT4; PRINT1; PRINT2;
PRINT1; PRINT3; PRINT1;
break;
}
if(fread(&stu1[i],sizeof(struct student_type),1,p)==0 )
printf("\n********没有此学生,请返回主菜单查看处理后的学生信息********\n"); PRINT4;
do
{
printf("\n请输入要修改的选项(1--5)------------");
scanf("%d",&m);
switch(m)
{
case 1: printf("\n******请输入新的学号----"); scanf("%d",&stu1[i].num); break;
case 2: printf("\n******请输入新的姓名----"); scanf("%s",stu1[i].name); break;
case 3: printf("\n******请输入新的性别----"); scanf("%c",&stu1[i].sex); break;
case 4: printf("\n******请输入新的年龄----"); scanf("%d",&stu1[i].age); break;
case 5: printf("\n******请输入新的地址----"); scanf("%s",stu1[i].addre); break;
}
p=fopen("stu_list.txt","wb");
for(k=0;k<t;k++)
fwrite(&stu1[k],sizeof(struct student_type),1,p);
getchar();
printf("\n您仍需要修改该学生其他的信息吗--------(y/n)");
c2=getchar();
}while(c2==('y')||c2==('Y'));
fclose(p);
printf("\n您仍需要修改其他的学生信息吗?\n");
printf("\n输入 y 继续,输入 n 输出修改后的所有的学生信息---------(y/n)");
getchar();
scanf("%c",&c1);
}while(c1=='y');
printf("\n***********输出修改后的所有的学生信息*************\n");
printall_after();
}
void delect() /************删除学生信息***********/
{
int dele,i,j,t,flag;
char c='y';
FILE *f;
printf("\n\n");
f=fopen("stu_list.txt","rb");
do
{
f=fopen("stu_list.txt","rb");
printf("\n\n请输入所要删除的学生的学号(不要以0开头):----------------");
scanf("%d",&dele);
for(i=0;fread(&stu1[i],LEN,1,f)!=0;i++)
{
t=i+1;
if(dele==stu1[i].num)
{
printf("\n**********************要删除的学生信息*********************\n");
PRINT1; PRINT2;
PRINT3; PRINT1;
}
}
fclose(f);
for(flag=1,i=0;flag&&i<t;i++)
{
if(dele==stu1[i].num)
{
for(j=i;j<t-1;j++)
{
stu1[j].num=stu1[j+1].num;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -