问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求高人解决一道C语言课程设计题7

发布网友 发布时间:2023-11-29 04:49

我来回答

2个回答

热心网友 时间:2024-07-10 22:25

这个你可以参考。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define BUFLEN 100
#define LEN 15
#define N 100
struct record
{
char code[LEN+1];
char name[LEN+1];
int age;
char sex[3];
char time[LEN+1];
char add[30];
char dorm[LEN+1];
char classes[30];
char major[30];
}stu[N];
int k=1,n,m,ad_key=111; FILE *fp;
void readfile();
void seek();
void modify();
void insert();
void del();
void display();
void save();
void menu();

int main()
{
while(k)
menu();
system("pause");
return 0;
}
void help()
{
printf("\n0.欢迎使用系统帮助!\n");
printf("\n1.进入系统后,先刷新学生信息,再查询;\n");
printf("\n2.按照菜单提示键入数字代号;\n");
printf("\n3.增加学生信息后,切记按7保存;\n");
printf("\n4.谢谢您的使用!\n");
}
void readfile()
{
char *p="student.txt";
FILE *fp;
int i=0;
if ((fp=fopen("student.txt","r"))==NULL)
{
printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
while(fscanf(fp,"%s %s%d%s %s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].classes,stu[i].major)==8)
{
i++;
i=i;
}
fclose(fp);
n=i;
printf("录入完毕!\n");
}

void seek()
{
int i,item,flag;
char s1[21];
printf("------------------\n");
printf("-----1.按学号查询-----\n");
printf("-----2.按姓名查询-----\n");
printf("-----3.退出本菜单-----\n");
printf("------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",&item);
flag=0;
switch(item)
{
case 1:
printf("请输入要查询的学生的学号:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
printf("学生学号 学生姓名 年龄 性别 出生年月 地址 宿舍 班级 专业\n");
printf("--------------------------------------------------------------------\n");
printf("%6s %7s %6d %5s %9s %8s %10s %10s %10s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].classes,stu[i].major);
}
if(flag==0)
printf("该学号不存在!\n"); break;
case 2:
printf("请输入要查询的学生的姓名:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].name,s1)==0)
{
flag=1;
printf("学生学号 学生姓名 年龄 性别 出生年月 地址 宿舍 班级 专业\n");
printf("--------------------------------------------------------------------\n");
printf("%6s %7s %6d %5s %9s %8s %10s %10s %10s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].classes,stu[i].major);
}
if(flag==0)
printf("该姓名不存在!\n"); break;
case 3:return;
default:printf("请在1-3之间选择\n");
}
}
}

/*********key*********/
key_2()
{
int p;
if((fp=fopen("key_2","r"))==NULL)
{
fp=fopen("key_2","w+");
fwrite(&ad_key,sizeof(int),1,fp);
fclose(fp);
}
fp=fopen("key_2","r");
fread(&ad_key,sizeof(int),1,fp);
fclose(fp);
printf("请输入管理员密码:\n");
error9:scanf("%d",&p);
if(p!=ad_key)
{
printf("对不起您输入的密码有误,请重新输入!\n");
goto error9;
}
else modify();

}

change_key2()
{ int p;
if((fp=fopen("key_2","r"))==NULL)
{
fp=fopen("key_2","w+");
fwrite(&ad_key,sizeof(int),1,fp);
fclose(fp);
}
fp=fopen("key_2","r");
fread(&ad_key,sizeof(int),1,fp);
fclose(fp);
printf("请输入管理员密码:\n");
error9:scanf("%d",&p);
if(p!=ad_key)
{
printf("对不起您输入的密码有误,请重新输入!\n");
goto error9;
}
else {

printf("请输入新的管理员密码:\n");
scanf("%d",&ad_key);

fp=fopen("key_2","w");
fwrite(&ad_key,sizeof(int),1,fp);
fclose(fp);
printf("修改成功!!!!!\n");

}

}
void modify()
{
int i,item,num;
char sex1[3],s1[LEN+1],s2[LEN+1];
printf("请输入要要修改的学生的学号:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].code,s1)==0)
num=i;
printf("------------------\n");
printf("1.修改姓名\n");
printf("2.修改年龄\n");
printf("3.修改性别\n");
printf("4.修改出生年月\n");
printf("5.修改地址\n");
printf("6.修改宿舍号码\n");
printf("7.修改班级\n");
printf("8.修改专业\n");
printf("9.退出本菜单\n");
printf("------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",&item);
switch(item)
{
case 1:
printf("请输入新的姓名:\n");
scanf("%s",s2);
strcpy(stu[num].name,s2); break;
case 2:
printf("请输入新的年龄:\n");
scanf("%d",&stu[num].age);break;
case 3:
printf("请输入新的性别:\n");
scanf("%s",sex1);
strcpy(stu[num].sex,sex1); break;
case 4:
printf("请输入新的出生年月:\n");
scanf("%s",s2);
strcpy(stu[num].time,s2); break;
case 5:
printf("请输入新的地址:\n");
scanf("%s",s2);
strcpy(stu[num].add,s2); break;
case 6:
printf("请输入新的宿舍号码:\n");
scanf("%s",s2);
strcpy(stu[num].dorm,s2); break;
case 7:
printf("请输入新的班级:\n");
scanf("%s",s2);
case 8:
printf("请输入新的专业:\n");
scanf("%s",s2);
strcpy(stu[num].classes,s2); break;
case 9:return;
default:printf("请在1-9之间选择\n");
}
}
}
void sort()
{
int i,j,*p,*q,s;
char temp[10];
for(i=0;i<n-1;i++)
{
for(j=n-1;j>i;j--)
if(strcmp(stu[j-1].code,stu[j].code)>0)
{
strcpy(temp,stu[j-1].code);
strcpy(stu[j-1].code,stu[j].code);
strcpy(stu[j].code,temp);
strcpy(temp,stu[j-1].name);
strcpy(stu[j-1].name,stu[j].name);
strcpy(stu[j].name,temp);
strcpy(temp,stu[j-1].sex);
strcpy(stu[j-1].sex,stu[j].sex);
strcpy(stu[j].sex,temp);
strcpy(temp,stu[j-1].time);
strcpy(stu[j-1].time,stu[j].time);
strcpy(stu[j].time,temp);
strcpy(temp,stu[j-1].add);
strcpy(stu[j-1].add,stu[j].add);
strcpy(stu[j].add,temp);
strcpy(temp,stu[j-1].dorm);
strcpy(stu[j-1].dorm,stu[j].dorm);
strcpy(stu[j].dorm,temp);
strcpy(temp,stu[j-1].classes);
strcpy(stu[j-1].classes,stu[j].classes);
strcpy(stu[j].classes,temp);
strcpy(stu[j].major,temp);
p=&stu[j-1].age;
q=&stu[j].age;
s=*q;
*q=*p;
*p=s;
}
}
}
void insert()
{
int i=n,j,flag;
printf("请输入待增加的学生数:\n");
scanf("%d",&m);
do
{
flag=1;
while(flag)
{
flag=0;
printf("请输入第 %d 个学生的学号:\n",i+1);
scanf("%s",stu[i].code);
for(j=0;j<i;j++)
if(strcmp(stu[i].code,stu[j].code)==0)
{
printf("已有该学号,请检查后重新录入!\n");
flag=1;
break;
}
}
printf("请输入第 %d 个学生的姓名:\n",i+1);
scanf("%s",stu[i].name);
printf("请输入第 %d 个学生的年龄:\n",i+1);
scanf("%d",&stu[i].age);
printf("请输入第 %d 个学生的性别:\n",i+1);
scanf("%s",stu[i].sex);
printf("请输入第 %d 个学生的出生年月:(格式:年.月)\n",i+1);
scanf("%s",stu[i].time);
printf("请输入第 %d 个学生的地址:\n",i+1);
scanf("%s",stu[i].add);
printf("请输入第 %d 个学生的宿舍:\n",i+1);
scanf("%s",stu[i].dorm);
printf("请输入第 %d 个学生的班级:\n",i+1);
scanf("%s",stu[i].classes);
printf("请输入第 %d 个学生的专业:\n",i+1);
scanf("%s",stu[i].major);
if(flag==0)
{
i=i;
i++;
}
}
while(i<n+m);
n+=m;
printf("录入完毕!\n\n");
sort();
}
void del()
{
int i,j,flag=0;
char s1[LEN+1];
printf("请输入要删除学生的学号:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(stu[i].code,s1)==0)
{
flag=1;
for(j=i;j<n-1;j++)
stu[j]=stu[j+1];
}
if(flag==0)
printf("该学号不存在!\n");
if(flag==1)
{
printf("删除成功,显示结果请选择菜单6\n");
n--;
}
}
void display()
{
int i;
printf("所有学生的信息为:\n");
printf("学生学号 学生姓名 年龄 性别 出生年月 地址 宿舍 班级 专业\n");
printf("--------------------------------------------------------------------\n");
for(i=0;i<n;i++)
{
printf("%6s %7s %5d %5s %9s %8s %10s %10s %10s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].classes,stu[i].major);
}
}
void save()
{
int i;
FILE *fp;
fp=fopen("student.txt","w");
for(i=0;i<n;i++)
{
fprintf(fp,"%s %s %d %s %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].dorm,stu[i].classes,stu[i].major);
}
fclose(fp);
}
void menu()
{
int num;
printf(" 学生信息管理系统\n");
printf("╔═════════════════════════════╗\n");
printf("║ 欢迎使用!! ║\n");
printf("║┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈║\n");
printf("║ 0.系统帮助及说明 1.刷新学生信息 ║\n");
printf("║ 2.查询学生信息 3.修改学生信息 ║\n");
printf("║ 4.增加学生信息 5.删除学生信息 ║\n");
printf("║ 6.显示当前信息 7.保存学生信息 ║\n");
printf("║ 8.修改密码 9.退出系统 ║\n");
printf("║┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈║\n");
printf("╚═════════════════════════════╝\n");

printf("请选择菜单编号:");
scanf("%d",&num);
switch(num)
{
case 0:help();break;
case 1:readfile();break;
case 2:seek();break;
case 3:key_2();break;
case 4:insert();break;
case 5:del();break;
case 6:display();break;
case 7:save();break;
case 8:change_key2();break;
case 9:k=0;break;
default:printf("请在0-9之间选择\n");
}
}

热心网友 时间:2024-07-10 22:25

这是一个系统,要用到数据库的知识,建议去图书馆找本相关方面的书,如vc编程和SQL实例等,前段时间我也刚做了一个银行存取款系统。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
将一张薄纸的一端靠近下嘴唇,另一端自然下垂,沿纸的上方吹气,手中的纸... ...双手轻轻捏住一张薄纸,将它放在下嘴唇底下,然后沿着纸片的表面用力... 用双手将一张纸的边缘拉紧,放在嘴唇中间(嘴唇和纸的边缘相距约1毫米... 请问工贸公司的经营范围 沈阳德诺工贸有限公司怎么样? update简介 update的创作背景 update专辑评价 办房产证面积多了交多少钱 办证面积比预售合同面积多契税 《诗词格律十讲》第八讲 古风及平仄用韵特点 三金是婚前财产吗 一年内怎么改第二次 应届毕业生去参加招聘会的时候要注意些什么问题5 蚂蚁集团成都总部理财怎么样 一年内怎么改第二次 我要问几个关于香港旅游的问题,我七月十号左右去香港,跟学校团...1 电话图标删除不了怎么办? 2003年国有开发投资公司资本成本是多少 离婚协议是离婚证吗 求时时更新汽车价格及优惠情况的网站! ...没有工作,社保买不了怎么办啊。听说三个月就算断交了? 《越狱》的男主角片中名子叫Micheal Scofield的演员的真实姓名叫什么... 我脑门有个脂肪瘤做手术了的第三天眼睛肿了怎么回事啊用毛巾敷一下眼 ... 一年内怎么改第二次 我的好友怎么转移到别的上 一年内怎么改第二次 怎样找回原来注册的和密码 改什么好听好记 南平自驾游到常德怪石沟路线选择 怎么转里的好友到另一个呢? 一个手机号一个月可以解封一次 一个可以帮助别人一个月解封一次... 石家庄到常德怪石沟要几个小时 建筑工程法律服务部,建设工程法律部,建筑工程法律事务部 英文怎么翻 ... 刘翔在奥运会什么时候比赛啊? 《在烈日和暴雨下》作文怎么仿写? oppo手机音量键怎么调节音量大小? ...筐装25千克,要装60筐。如果每筐多装5千克,可以少用几个筐?_百度知... 日语高手请进,日译中,谢谢!有加分的 大学班长应该当多久 一个手机二个怎么弄 为什么你明明很优秀领导却不喜欢? ...吃过很多药都没有效果,吃药越多,就越痒。 我想换显卡,要多大的玩坦克世界才流畅 求c++课程设计身份证管理实例1 双引号怎么占格图 八年级语文上册第一次月考 比较可能考怎样的作文? 功放机的主低音喇叭低音功率不给力在低音喇叭后面那块磁铁再加一块磁 ... 原有被重新注册怎么找回原有微信? ...还没有进入新公司,社保也一直没有交,改怎么办啊,会不会断交啊?_百...