assession 2022-03-23 16:04 采纳率: 100%
浏览 128
已结题

关于用c++写学生考勤管理系统出现的文件操作问题!

急用,dd
https://blog.csdn.net/weixin_68082655/article/details/123690558
bitree level_creat();
int login(char no[20], char pwd[20]);
int administrator();
void classattendance();
void classpeople();
int modifypeople(bitree t);
int deletepeople(bitree t);
int insertpeople();
void levelorder(bitree t);
int committee();
void sta(lklist head, int k);
void all(lklist head);
void modify(lklist head, int k);
int updata(pointer p);
int deletes(lklist head, int k);
int insert(lklist head, int i);
pointer get(lklist head, int i);
int student(char no[20]);
void stuweek();
void weekall();
void data();
void mwlocate(lklist head, char no[20], int week);
void swlocate(lklist head, char name[20], int week);
void walocate(lklist head, int week);
lklist creat();
lklist initlist();
int de_sqqueue(sqqueue* sq, bitree* x);
int empty_sqqueue(sqqueue* sq);
int en_sqqueue(sqqueue* sq, bitree x);
void init_sqqueue(sqqueue* sq);
void bubbleSort(llklist mylist);

lklist creat() {
count = 0;
pointer rear, s;
head = new node;
rear = head;
FILE* fp2;
char str[20];
if ((fp2 = fopen("学生考勤情况.txt", "r")) == NULL) {
printf("学生考勤情况不存在\n");
return 0;
}
while (!feof(fp2)) {
s = new node;
fscanf(fp2, "%s", str);
strcpy(s->order, str);
fscanf(fp2, "%s", str);
strcpy(s->id, str);
fscanf(fp2, "%s", str);
strcpy(s->name, str);
fscanf(fp2, "%s", str);
strcpy(s->week, str);
fscanf(fp2, "%s", str);
strcpy(s->day, str);
fscanf(fp2, "%s", str);
strcpy(s->part, str);
fscanf(fp2, "%s", str);
strcpy(s->course, str);
fscanf(fp2, "%s", str);
strcpy(s->reason, str);
rear->next = s;
rear = s;
count++;
}
rear->next = NULL;
fclose(fp2);
return head;
}

int insert(lklist head, int i) {
FILE* fp3;
if ((fp3 = fopen("学生考勤情况.txt", "a+")) == NULL)
fp3 = fopen("学生考勤情况.txt", "wb+");
fclose(fp3);
pointer q, s;
q = get(head, i - 1);
if (q == NULL)
printf("非法插入位置!\n");
s = new node;
printf("请输入学生学号:");
scanf("%s", s->id);
printf("请输入学生姓名:");
scanf("%s", s->name);
printf("请输入考勤周数:");
scanf("%s", s->week);
printf("请输入考勤星期:");
scanf("%s", s->day);
printf("请输入课程节数:");
scanf("%s", s->part);
printf("请输入课程名称:");
scanf("%s", s->course);
printf("请输入考勤原因:");
scanf("%s", s->reason);
if ((fp3 = fopen("学生考勤情况.txt", "at+")) == NULL)
{
printf("不能打开该数据库!");
return 0;
}
fprintf(fp3, "\r\n %d", ++i);
fprintf(fp3, " %s", s->id);
fprintf(fp3, " %s", s->name);
char connect[20];
sprintf(connect, "第%s周", s->week);
fprintf(fp3, " %s", connect);
sprintf(connect, "星期%s", s->day);
fprintf(fp3, " %s", connect);
sprintf(connect, "第%s节", s->part);
fprintf(fp3, " %s", connect);
fprintf(fp3, " %s", s->course);
fprintf(fp3, " %s", s->reason);
fclose(fp3);
s->next = q->next;
q->next = s;
printf("增加考勤记录成功\n");
return 1;
}
int updata(pointer p) {
FILE* fp4, * fp5;
if ((fp4 = fopen("学生考勤情况.txt", "r")) == NULL) {
printf("学生考勤情况不存在\n");
return 0;
}
fp5 = fopen("考勤临时文件.txt", "w");
p = head->next;
while (p != NULL) {
if (strcmp(p->order, "1") != 0)
fprintf(fp5, "\r\n");
fprintf(fp5, " %s", p->order);
fprintf(fp5, " %s", p->id);
fprintf(fp5, " %s", p->name);
fprintf(fp5, " %s", p->week);
fprintf(fp5, " %s", p->day);
fprintf(fp5, " %s", p->part);
fprintf(fp5, " %s", p->course);
fprintf(fp5, " %s", p->reason);
p = p->next;
}
fclose(fp4);
fclose(fp5);
remove("学生考勤情况.txt");
rename("考勤临时文件.txt", "学生考勤情况.txt");
printf("修改考勤记录成功\n");
return 1;
}

//修改考勤记录
void modify(lklist head, int k) {
pointer p, q;
char connect[20];
q = get(head, k - 1);
if (q == NULL || q->next == NULL)
printf("非法修改位置\n");
p = q->next;
printf("1、学号\n");
printf("2、姓名\n");
printf("3、周数\n");
printf("4、星期\n");
printf("5、节数\n");
printf("6、课程\n");
printf("7、原因\n");
printf("输入其他字符退出修改\n");
printf("请选择需要修改的内容:");
scanf("%d", &opt);
switch (opt) {
case 1: {
printf("请输入修改后的学号:");
scanf("%s", p->id);
updata(p);
break;
}
case 2: {
printf("请输入修改后的姓名:");
scanf("%s", p->name);
updata(p);
break;
}
case 3: {
printf("请输入修改后的周数:");
scanf("%s", connect);
sprintf(p->week, "第%s周", connect);
updata(p);
break;
}
case 4: {
printf("请输入修改后的星期:");
scanf("%s", connect);
sprintf(p->day, "星期%s", connect);
updata(p);
break;
}
case 5: {
printf("请输入修改后的节数:");
scanf("%s", connect);
sprintf(p->part, "第%s节", connect);
updata(p);
break;
}
case 6: {
printf("请输入修改后的课程:");
scanf("%s", p->course);
updata(p);
break;
}
case 7: {
printf("请输入修改后的原因:");
scanf("%s", p->reason);
updata(p);
break;
}
default: break;
}
}

//所有考勤纪律
void all(lklist head) {
printf("序号\t学号\t姓名\t周数\t星期\t节数\t课程\t原因\n");
int sign = 0;
char connect[20];
char input[20];
pointer p;
p = head->next;
while (p != NULL) {
printf("%s\t", p->order);
printf("%s\t", p->id);
printf("%s\t", p->name);
printf("%s\t", p->week);
printf("%s\t", p->day);
printf("%s\t", p->part);
printf("%s\t", p->course);
printf("%s\n", p->reason);
sign++;
p = p->next;
}
if (sign == 0)
printf("无考勤记录\n");
printf("1、增加考勤记录\n");
printf("2、删除考勤记录\n");
printf("3、修改考勤记录\n");
printf("4、查找考勤记录\n");
printf("其它任意字符返回\n");
printf("请输入对应数字选择功能:");
scanf("%d", &opt);
switch (opt) {
case 1: {
insert(head, count);
break;
}
case 2: {
printf("请输入删除考勤的序号:");
scanf("%d", &opt);
deletes(head, opt);
break;
}
case 3: {
printf("请输入修改考勤的序号:");
scanf("%d", &opt);
modify(head, opt);
break;
}
case 4: {
printf("1、学号\n");
printf("2、姓名\n");
printf("3、周数\n");
printf("4、星期\n");
printf("5、节数\n");
printf("6、课程\n");
printf("7、原因\n");
printf("请输入查询考勤的条件:");
scanf("%d", &opt);
switch (opt) {
case 1: {
printf("请输入学号:");
scanf("%s", input);
printf("序号\t学号\t姓名\t周数\t星期\t节数\t课程\t原因\n");
pointer p;
p = head->next;
while (p != NULL) {
if (strcmp(input, p->id) == 0) {
printf("%s\t", p->order);
printf("%s\t", p->id);
printf("%s\t", p->name);
printf("%s\t", p->week);
printf("%s\t", p->day);
printf("%s\t", p->part);
printf("%s\t", p->course);
printf("%s\n", p->reason);
}
p = p->next;
}
break;
}
case 2: {
printf("请输入姓名:");
scanf("%s", input);
printf("序号\t学号\t姓名\t周数\t星期\t节数\t课程\t原因\n");
pointer p;
p = head->next;
while (p != NULL) {
if (strcmp(input, p->name) == 0) {
printf("%s\t", p->order);
printf("%s\t", p->id);
printf("%s\t", p->name);
printf("%s\t", p->week);
printf("%s\t", p->day);
printf("%s\t", p->part);
printf("%s\t", p->course);
printf("%s\n", p->reason);
}
p = p->next;
}
break;
}
case 3: {
printf("请输入周数:");
scanf("%s", input);
sprintf(connect, "第%s周", input);
printf("序号\t学号\t姓名\t周数\t星期\t节数\t课程\t原因\n");
pointer p;
p = head->next;
while (p != NULL) {
if (strcmp(connect, p->week) == 0) {
printf("%s\t", p->order);
printf("%s\t", p->id);
printf("%s\t", p->name);
printf("%s\t", p->week);
printf("%s\t", p->day);
printf("%s\t", p->part);
printf("%s\t", p->course);
printf("%s\n", p->reason);
}
p = p->next;
}
break;
}
case 4: {
printf("请输入星期:");
scanf("%s", input);
sprintf(connect, "星期%s", input);
printf("序号\t学号\t姓名\t周数\t星期\t节数\t课程\t原因\n");
pointer p;
p = head->next;
while (p != NULL) {
if (strcmp(connect, p->day) == 0) {
printf("%s\t", p->order);
printf("%s\t", p->id);
printf("%s\t", p->name);
printf("%s\t", p->week);
printf("%s\t", p->day);
printf("%s\t", p->part);
printf("%s\t", p->course);
printf("%s\n", p->reason);
}
p = p->next;
}
break;
}
case 5: {
printf("请输入节数:");
scanf("%s", input);
sprintf(connect, "第%s节", input);
printf("序号\t学号\t姓名\t周数\t星期\t节数\t课程\t原因\n");
pointer p;
p = head->next;
while (p != NULL) {
if (strcmp(connect, p->part) == 0) {
printf("%s\t", p->order);
printf("%s\t", p->id);
printf("%s\t", p->name);
printf("%s\t", p->week);
printf("%s\t", p->day);
printf("%s\t", p->part);
printf("%s\t", p->course);
printf("%s\n", p->reason);
}
p = p->next;
}
break;
}
case 6: {
printf("请输入课程:");
scanf("%s", input);
printf("序号\t学号\t姓名\t周数\t星期\t节数\t课程\t原因\n");
pointer p;
p = head->next;
while (p != NULL) {
if (strcmp(input, p->course) == 0) {
printf("%s\t", p->order);
printf("%s\t", p->id);
printf("%s\t", p->name);
printf("%s\t", p->week);
printf("%s\t", p->day);
printf("%s\t", p->part);
printf("%s\t", p->course);
printf("%s\n", p->reason);
}
p = p->next;
}
break;
}
case 7: {
printf("请输入原因:");
scanf("%s", input);
printf("序号\t学号\t姓名\t周数\t星期\t节数\t课程\t原因\n");
pointer p;
p = head->next;
while (p != NULL) {
if (strcmp(input, p->reason) == 0) {
printf("%s\t", p->order);
printf("%s\t", p->id);
printf("%s\t", p->name);
printf("%s\t", p->week);
printf("%s\t", p->day);
printf("%s\t", p->part);
printf("%s\t", p->course);
printf("%s\n", p->reason);
}
p = p->next;
}
break;
}
default: break;
}
break;
}
default: break;
}
}

img

img

img

img

img

img

  • 写回答

5条回答 默认 最新

  • 春休夏末 2022-03-23 16:39
    关注

    代码不全哟 你粘贴代码的时候可以选择这个格式粘贴进去

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月2日
  • 已采纳回答 3月25日
  • 修改了问题 3月23日
  • 修改了问题 3月23日
  • 展开全部

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题