图示管理系统C语言详细代码

合集下载

c语言学生管理系统代码

c语言学生管理系统代码

C语言学生管理系统代码
简介
学生管理系统是一个用于管理学生信息的简单程序,它可以实现添加学生信息、显示学生信息、修改学生信息和删除学生信息等功能。

通过这个系统,学校或机构可以更方便地管理和维护学生的相关数据。

功能
1.添加学生信息:通过输入学生的姓名、学号、年龄和性别等信息,将
学生信息存储在系统中。

每个学生信息包括学号、姓名、年龄和性别等关键信息。

2.显示学生信息:可以显示系统中所有学生的信息,包括学号、姓名、
年龄和性别。

3.修改学生信息:通过输入学生的学号,可以修改该学生的姓名、年龄
和性别等信息。

4.删除学生信息:通过输入学生的学号,可以删除该学生的信息。

实现
下面是一个简单的C语言学生管理系统代码示例:
```c #include <stdio.h> #include <string.h>
#define MAX_STUDENTS 100
// 定义学生结构体 struct Student { int id; char name[100]; int age; char
gender[10]; };
// 定义全局变量,用于存储学生信息和统计学生数量 struct Student
students[MAX_STUDENTS]; int num_students = 0;
// 添加学生 void addStudent() { if (num_students >= MAX_STUDENTS) { printf(。

C语言课程设计图书馆管理系统程序代码

C语言课程设计图书馆管理系统程序代码

#include<stdio.h>#include<windows.h> #include<string.h> #include<conio.h> #define M 100 struct books{char tsmc[12];int tsbh;float dj;char zz[12];char czzt[12];char xm[12]; char xb[12];int xh; }s[M];int N;bool flag;intmain (){int sele;flag=0;sele=1;void sr();void cx();void sc();void js();void hs();void tc();void jsh();//system ("tsgl");printf("\n\n");printf(" ************************\n");printf(" 1:输入2:查询3:删除\n");printf(" 4:借书5:还书0:退出\n");printf(" ************************\n"); while(1){printf("\n\n请输入功能序号:");scanf ("%d",&sele);if(sele>=0 && sele<=5){switch(sele){ case 1:sr();break;case 2:cx();break;case 3:sc();break;case 4:js();break;case 5:hs();break;case 0:jsh();break;}if(flag)break;printf("\n\n");printf(" ************************\n");printf(" 1:输入2:查询3:删除\n");printf(" 4:借书5:还书0:退出\n");printf(" ************************\n");}else{printf("输入错误请再次输入|\n\n");printf("\n\n");printf(" ************************\n");printf(" 1:输入2:查询3:删除\n");printf(" 4:借书5:还书0:退出\n");printf(" ************************\n");}printf("\n\n让任意键继续\n");} //wr_file();} /******主函数***//*********输入*********/void sr(){int n,i;N=0;printf("可输入的书本数:");scanf("%d",&n);N=n+N;printf("请输入相关信息:\n");for(i=1;i<=n;i++){printf("图书名称:");scanf("%s",s[N-n-1+i].tsmc);printf("图书编号:");scanf("%d",&s[N-n-1+i].tsbh);printf("单价:");scanf("%f",&s[N-n-1+i].dj);printf("作者:");scanf("%s",&s[N-n-1+i].zz);strcpy(s[N-n-1+i].czzt,"未借出");strcpy(s[N-n-1+i].xm,"无"); } }/********查询**********/void cx(){int i,j[100]={-1},d,k,t=0;char m[20];printf("查询:");printf("1:图书名称2:图书编号");printf("\n\n请输入查询选项:");scanf("%d",&k);if(k==1){printf("请输入图书名称:");scanf("%s",m);for(i=0;i<N;i++)if(strcmp(m,s[i].tsmc)==0){j[t]=i;t=t+1;}}else if(k==2){printf("请输入图书编号:");scanf("%d",&d);for(i=0;i<N;i++)if(d==s[i].tsbh){j[t]=i;t++;}}if(j[0]==-1&&t==0)printf("没有找到!\n");if(j[0]!=-1 && t!=0){printf("\t图书名称\t图书编号\t单价\t作者\t存在状态\t借书人姓名\t性别\t学号\n");for(i=0;i<t;i++)printf("\t%s \t%d \t%f \t%s \t%s \t%s \t%s\t%d ", s[j[i]].tsmc,s[j[i]].tsbh,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh);}}/********删除模块*********/void sc(){int i,d,k,t=0;char ms[20];int ja=-1;printf("查询:");printf("1:图书名称2:图书编号");printf("\n\n请输入查询选项:");scanf("%d",&k);if(k==1){printf("请输入图书名称:");scanf("%s",ms);for(i=0;i<N;i++)if(strcmp(ms,s[i].tsmc)==0){ja=i; break;}}else if(k==2){printf("请输入图书编号:");scanf("%d",&d);for(i=0;i<N;i++)if(d==s[i].tsbh){ja=i;break;}}printf("确定删除该图书吗?1表示Yes,其他No");int p;scanf("%d",&p);if(p==1)printf("Congratulations,删除成功||\n");if(ja!=-1 && p){N=N-1;for(i=ja;i<N;i++){strcpy(s[i].tsmc,s[i+1].tsmc);s[i].tsbh=s[i+1].tsbh;s[i].dj=s[i+1].dj;strcpy(s[i].zz,s[i+1].zz);strcpy(s[i].czzt,s[i+1].czzt);strcpy(s[i].xm,s[i+1].xm);strcpy(s[i].xb,s[i+1].xb);s[i].xh=s[i+1].xh;}}else if(ja==-1)printf ("没有找到!\n"); }/**********借书模块***********/void js(){int i,j[100]={-1},d,k,t=0;char m[20];printf("查询:");printf("1:图书名称2:图书编号");printf("\n\n请输入查询选项:");scanf("%d",&k); if(k==1){printf("请输入图书名称:");scanf("%s",&m);for(i=0;i<N;i++)if(strcmp(m,s[i].tsmc)==0){j[t]=i;t=t+1;}}else if(k==2){printf("请输入图书编号:");scanf("%d",&d);for(i=0;i<N;i++)if(d==s[i].tsbh){j[t]=i;t++;}}if(j[0]==-1&&t==0)printf("没有找到!\n");strcpy(s[j[i]].czzt,"已借出");printf("此书已借出\n");if(j[0]!=-1&&t!=0&&s[j[i]].czzt==" 未借出"){printf("%s %d %f %s %s %s %s %d ", s[j[i]].tsmc,s[j[i]].tsbh,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh); } printf("1:确定借阅2:退出\n");scanf("%d",&k);switch(k){case 1:printf("请输入学号:\n");scanf("%d",&s[j[i]].xh);printf("请输入姓名:\n");scanf("%s",&s[j[i]].xm);printf("请输入性别:\n");scanf("%s",&s[j[i]].xb);strcpy(s[j[i]].czzt,"已借出");printf("已借出,按任意键继续\n");//getch();case 2:break;}}/*************还书模块***************/void hs(){int i,j[100]={-1},d,k,t=0;char m[20];printf("查询:");printf("1:图书名称2:图书编号");printf("\n\n请输入查询选项:");scanf("%d",&k);if(k==1){printf("请输入图书名称:");scanf("%s",&m);for(i=0;i<N;i++)if(strcmp(m,s[i].tsmc)==0){j[t]=i;t++;break;}}else if(k==2){printf("请输入图书编号:");scanf("%d",&d);for(i=0;i<N;i++)if(d==s[i].tsbh){j[t]=i;t++;break;}}if(t==0)printf("没有找到!\n");else{printf("%s %f %s %s %s %s %d \n",s[j[i]].tsmc,s[j[i]].dj,s[j[i]].zz,s[j[i]].czzt,s[j[i]].xm,s[j[i]].xb,s[j[i]].xh);printf("1:确定归还2:退出\n");int p;scanf("%d",&p);if(p==1){strcpy(s[j[i]].czzt,"未借出");strcpy(s[j[i]].xm,"无");s[j[i]].xh=0;printf("已归还,按任意键继续\n");}//getch();}}/*************结束模块***************/ void jsh(){flag=1;}。

C语言 图书信息管理系统 最终源代码

C语言  图书信息管理系统 最终源代码

C语言图书信息管理系统最终源代码#include<stdio.h>#include"string.h"struct book /* book2 是用来装用户要录入图书的信息*/{long num,time;char name[12],writer[12],fenlei[8],danwei[10];int pay;}stu[100];struct book1{long num,time;char name[12],writer[12],fenlei[8],danwei[10];int pay;}stu1[100];struct book2 /* book 是用来装cc.dat 文件中的图书信息*/{long num,time;char name[12],writer[12],fenlei[8],danwei[10];int pay;}stu2[100];denglu(){char a[15]="drzhang",b[15]="29257966",c[15],d[15];L3:system("cls");printf(" 欢迎登陆图书管理系统\n\n");printf("请输入姓名:");gets(c);printf("请输入密码:");gets(d);if(strcmp(a,c)==0&&strcmp(b,d)==0)return 0;else{printf("输入错误请重新输入\n\n");printf("1.重新输入 2.退出系统\n\n");printf("请输入.....");switch(getch()){case 49: goto L3;break;default: return 56;break;}}}/*此功能实现的是开始菜单的显示和具体功能的选择*/start(){printf("******************************欢迎使用图书管理系统******************************");printf("* 功能目录:*");printf("* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| *");printf("* || || *");`printf("* || 1、图书查询2、图书浏览3、录入图书4、删除与修改5、备份与还原|| *");printf("* || || *");printf("* || || *");printf("* || || *");printf("* |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| *");printf("* 使用说明:如要选择“图书查询”,直接输入:1 退出:0 *");printf("************************************************************************* *******");printf("你想要做什么:");return getch(); /*输入选择对应功能的值,返回输入的值,即:用于判断选择的功能*/ }/*实现备份功能,以防图书信息出错带来的麻烦,不必看懂*/beifen(){FILE *fp1,*fp2;int i,a;jieshuo();system("cls");printf("\n\n请选择\\ 备份(B)| 浏览备份(L)/ \\ 还原(H)/ \\ 退出(Q)/ \n");switch(getch()){case 'B':case 'b':if((fp1=fopen("cc","r"))==NULL){printf("不能打开次文件\n");exit(0);}if((fp2=fopen("cc01","w"))==NULL){printf("不能打开次文件\n");exit(0);}fscanf(fp1,"%d",&a);fprintf(fp2,"%d\n",a);printf("\n\n确认备份吗?(Y/N)");switch(getch()){case 'Y':case 'y':for(i=0;i<a;i++){fscanf(fp1,"%ld %s %s %s %s %ld %d",&stu[i].num,stu[i].name,stu[i].writer,stu[i].fenlei,stu[i] .danwei,&stu[i].time,&stu[i].pay);fprintf(fp2,"%ld\t%s\t%s\t%s\t%s\t%ld\t%d\n",stu[i].num,stu[i].name,stu[i].writer,stu[i].fenlei,st u[i].danwei,stu[i].time,stu[i].pay);}printf("\n\n备份成功!\n\n是否打开浏览备份文件?(Y/N)");switch(getch()){case 'Y':case 'y':fclose(fp1);fclose(fp2);liulan02();break;case 'N':case 'n':break;}break;case 'N':case 'n':break;}fclose(fp1);fclose(fp2);break;case 'H':case 'h':if((fp1=fopen("cc01","r"))==NULL){printf("不能打开此文件\n");exit(0);}if((fp2=fopen("cc","w"))==NULL){printf("不能打开此文件\n");exit(0);}fscanf(fp1,"%d",&a);fprintf(fp2,"%d\n",a);printf("\n\n确认还原吗?(Y/N)");switch(getch()){case 'Y':case 'y':for(i=0;i<a;i++){fscanf(fp1,"%ld %s %s %s %s %ld %d",&stu[i].num,stu[i].name,stu[i].writer,stu[i].fenlei,stu[i] .danwei,&stu[i].time,&stu[i].pay);fprintf(fp2,"%ld\t%s\t%s\t%s\t%s\t%ld\t%d\n",stu[i].num,stu[i].name,stu[i].writer,stu[i].fenlei,st u[i].danwei,stu[i].time,stu[i].pay);}printf("\n\n还原成功!\n\n是否打开浏览还原文件?(Y/N)");switch(getch()){case 'Y':case 'y':fclose(fp1);fclose(fp2);liulan();break;case 'N':case 'n':break;}break;case 'N':case 'n':break;}fclose(fp1);fclose(fp2);break;case 'l':case 'L':liulan02();break;case 'Q':case 'q':break;}}/* 在屏幕上打印查询菜单*/chaxun(){jieshuo();system("cls");printf("******************************欢迎使用图书查询系统******************************");printf("* 查询方式:*");printf("**");printf("* 1、书名2、作者名3、出版时间*");printf("**");printf("* 4、价格5、分类号6、出版单位*");printf("**");printf("* 使用说明:如要选择“书名”,直接输入:1 退出:0 *");printf("************************************************************************* *******");printf("\n请输入你要怎么查询:");chaxun01(); /*打印完毕后,进入chaxun()函数,执行用户需要的查询功能*/}/*此程序段实行查询的各种功能*/chaxun01(){FILE *fp;char ch[8];int a=0,i,j,k,n=0,c,d;long b;if((fp=fopen("cc","r"))==NULL) /*说明:cc.dat 文件装着图书的信息,*/ {printf("不能打开此文件\n");exit(0);} /*并且文件开记录的是图书的书量,后*/ fscanf(fp,"%d",&a); /*从文件中读出图书数*/ /*面依次才是具体信息。

c语言代码大全

c语言代码大全

c语言代码大全C语言代码大全。

C语言作为一种通用的高级语言,被广泛应用于系统程序设计和应用程序开发。

它具有高效的系统编程能力和灵活的应用程序编程能力,因此备受程序员们的喜爱。

在本文中,我们将为您介绍一些常见的C语言代码,帮助您更好地理解和运用C语言。

首先,让我们来看一个简单的C语言程序示例:```c。

#include <stdio.h>。

int main() {。

printf("Hello, World!\n");return 0;}。

```。

在这个示例中,我们使用了`#include`指令来包含标准输入输出库文件`stdio.h`,然后定义了一个`main`函数,函数内部使用`printf`函数打印了一条简单的消息,并通过`return 0`语句返回了程序执行的结果。

接下来,让我们看一下如何使用C语言实现一个简单的计算器功能:```c。

#include <stdio.h>。

int main() {。

char operator;double firstNumber,secondNumber;printf("Enter an operator (+, -, , /): ");scanf("%c", &operator);printf("Enter two operands: ");scanf("%lf %lf",&firstNumber, &secondNumber);switch(operator) {。

case '+':printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber + secondNumber);break;case '-':printf("%.1lf %.1lf = %.1lf",firstNumber, secondNumber, firstNumber secondNumber);break;case '':printf("%.1lf %.1lf = %.1lf",firstNumber, secondNumber, firstNumber secondNumber);break;case '/':printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber / secondNumber);break;default:printf("Error! operator is not correct");}。

C语言程序设计学生管理系统(附有代码注释)

C语言程序设计学生管理系统(附有代码注释)

{
int i;
//循环变量
for(i=0;i<n;i++)
{
if(stu[i].sco.math<60) //判断第 i 个学生数学分数小于 60
printf("\t 学 生 证 号 : %-15s 姓 名 : %-15s 数 学 分
数:%-15g\n\n",stu[i].no,stu[i].name,stu[i].sco.math);
// 学生实际人数
char ch;
//选择功能
#define ENGLISH 0 // 英语课程
#define MATH 1 // 数学课程
#define MCU 2 // 计算机课程
#define TOTAL 3 // 总分
Student stu[N] = // 学生结构体数组,全局变量 {
{"10", "王安", "男", {1991, 2, 14}, {15, 55,31}}, {"11", "张羽", "女", {1992, 9, 22}, {92, 83, 58}},
//输出所有学生信息
{ int i;
//循环变量
printf("
目前学生总人数为:%d\n",length);
PrintTablHeader();
for(i=0;i<n;i++)
//输出第 i 个学生信息
{ Print(&a[i]);
//调用 Print 函数输出第 i 个学生信息
printf("\n");
//循环变量 //用于临时保存最大值 //用于临时保存最大值的下标 //临时变量

C语言图方案管理系统代码

C语言图方案管理系统代码

精心整理#include<stdio.h>#include<stdlib.h>#include<string.h>struct book{};存在void deletebook(struct book *head); //删除图书void fprint(struct book *head); //将链表写入文件struct book *load(); //从文件中读取信息并建成链表void print_book(struct book *head); //将链表信息输出void chaxun(struct book *head); //查询图书信息void num_chaxun(struct book *head); //按图书编号查询图书void wname_chaxun(struct book *head); //按作者名查询图书void sort_chaxun(struct book *head); //按类别查询图书{struct book *head=NULL;while(y){system("cls");printf("\n\n\n\n\n\n\n");printf(" ********** 欢迎光临**********\n\n");printf(" ********************** 图书信息管理系统************************\n\n\n");printf("\n\n");printf("\n");printf(" 请输入您的密码:");scanf("%d",&c);printf("\n");if(strcmp(b,b1)!=0||c!=c1){printf(" 验证失败,请重新输入!\n");scanf("%c",&d);getchar();system("cls");}printf("**********************************************\n\n");printf(" || 1-添加图书2-删除图书||\n\n");printf(" || 3-图书列表4-图书排序||\n\n");printf(" || 5-查询图书6-修改图书||\n\n");printf(" || 7-录入数据0-case 1:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();}else{head=addbook(head);printf("添加成功!\n");}case 2:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");break;}else{deletebook(head);getchar();break;}case 4:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;}chaxun(head);getchar();}break;case 6:head=load();if(head==NULL){printf("文件为空,请先录入数据!\n");getchar();break;scanf("%c",&a);getchar();switch(a){case 'n':break;case 'y':fprint(head);printf("保存成功!\n");getchar();break;break;}}}//录入数据并形成链表struct book *creatbook(){struct book *head,*tail,*p;int num,time,n;char bname[50],wname[20],press[50],sort[50];getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();tail->next=p;tail=p;do{printf("请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您输入的编号已存在,请重新输入!\n");getchar();printf("请输入类别:");scanf("%s",sort);getchar();printf("请输入出版时间:");scanf("%d",&time);getchar();printf("请输入价格:");scanf("%f",&price);getchar();}}//{printf("请输入图书编号:");scanf("%d",&num);n=yanzheng(head,num);if(n==0)break;elseprintf("您输入的编号已存在,请重新输入!\n"); }while(1);printf("请输入图书名:");scanf("%s",bname);printf("请输入价格:");scanf("%f",&price);getchar();p=(struct book *)malloc(size);p->num=num;strcpy(p->bname,bname); strcpy(p->wname,wname); strcpy(p->press,press); strcpy(p->sort,sort);p->time=time;}}}else{p2->next=ptr;p->next=NULL;}return head;}//验证添加的图书编号是否已存在int yanzheng(struct book *head,int m) {}}//将新链表写入文件中void fprint(struct book *head){FILE *fp;char ch='1';struct book *p1;if((fp=fopen("f1.txt","w"))==NULL){ printf("File open error!\n");exit(0);}}}//{struct book *head,*tail,*p1;head=tail=NULL;if((fp=fopen("f1.txt","r"))==NULL){ printf("File open error!\n");exit(0);}ch=fgetc(fp);if(ch=='1'){while(!feof(fp)){p1=(struct book *)malloc(sizeof(struct book));}elsereturn NULL;}//将整个链表的信息输出void print_book(struct book *head){struct book *ptr;if(head==NULL){printf("\n没有信息!\n");return;}价格%d}//删除图书信息void deletebook(struct book *head) {int a;char b,ch='1';struct book *p1,*p2;FILE *fp;printf("请输入要删除的图书编号:"); scanf("%d",&a);}fclose(fp);printf("文件已清空!\n");}}else{while(p1->num!=a&&p1->next!=NULL){p2=p1;p1=p1->next;}break;}}else{printf("没有找到要删除的数据!\n");getchar();}}else if(p1==head){head=p1->next;else{p2->next=p1->next;printf("是否确定从文件中彻底删除该图书?(y/n)\n");getchar();scanf("%c",&b);switch(b){case 'n':break;case 'y':fprint(head);}}//{printf(" ** 1-按图书编号查询2-按图书名查询**\n");printf(" ** 3-按图书类别查询4-按作者名查询**\n");printf(" ** 5-按出版时间查询0-退出查询**\n");printf("==========================================================\n");printf("请输入所选择的编号:");break;case 4:wname_chaxun(head);break;case 5:time_chaxun(head);break;default:printf("您的输入有误!\n");break;}}//{break;p=p->next;}if(p==NULL){printf("没有找到该编号的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("========================================================================= \n");价格** % .2f\n");}}//{char a[50];int flag=0;struct book *p;printf("请选择您要查询的图书名:");gets(a);p=head;while(p!=NULL){if(strcmp(p->bname,a)==0){flag=1;}}\n");价格**\n");while(p!=NULL){if(strcmp(p->bname,a)==0){printf("** %d %s %s %s %s %d % .2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);}p=p->next;}\n");}}//{gets(a);p=head;while(p!=NULL){if(strcmp(p->wname,a)==0){flag=1;break;}p=p->next;}if(flag==0){}\n");价格** % .2f **\n",p->num,p->bname,p->wname,p->press,p->sort,p->time,p->price);flag=1;}p=p->next;}printf("========================================================================= \n");}}//{}p=p->next;}if(flag==0){printf("没有找到该图书名的图书!\n");}else{printf(" 你所查询的图书信息如下\n");printf("========================================================================= \n");价格** % .2f}========================================================================= \n");}}//按图书出版时间查询图书信息void time_chaxun(struct book *head){int a,flag=0;struct book *p;printf("请选择您要查询的图书出版时间:");}}else{printf(" 你所查询的图书信息如下\n");printf("========================================================================= \n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");while(p!=NULL){if(p->time==a){printf("** %.2f}\n");}}//{int a,b;char c;struct book *p;printf("请输入要修改的图书编号:");scanf("%d",&a);p=head;while(p!=NULL){if(p->num==a)break;}}3-6-printf(" ** 7-价格8-修改全部0-放弃修改**\n");printf("============================================================\n");printf("请选择你要修改的信息编号:");scanf("%d",&b);getchar();switch(b){case 1:printf("请输入新编号:");break;case 4:printf("请输入新出版社:");gets(p->press);printf("修改成功!\n");break;case 5:printf("请输入新类别:");gets(p->sort);printf("修改成功!\n");case 8:printf("请输入新图书编号:");scanf("%d",&p->num);printf("请输入新图书名:");scanf("%s",p->bname);getchar();printf("请输入新作者名:");scanf("%s",p->wname);getchar();printf("请输入新出版社:");break;case 0:break;default :printf("您的输入有误!\n");break;}printf("是否将修改后的信息保存到文件中?(y/n)\n");scanf("%c",&c);getchar();}}//{int a;printf("================================================================\n");printf(" ** 1-按图书编号排序2-按出版时间排序**\n");printf(" ** 3-按图书价格排序4-按图书名排序**\n");printf(" ** 5-按作者名排序0-取消排序操作time_paixu(head);break;case 3:price_paixu(head);break;case 4:bname_paixu(head);break;case 5:wname_paixu(head);}}//{for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;for(i=k+1;i<n;i++){if(a[i]->num<a[index]->num)}case 'y':printf("================================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f**\n",a[i]->num,a[i]->bname,a[i]->wname,a[i]->press,a[i]->sort,a[i]->time,a[i]->price);}}}//{char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next;}for(k=0;k<n-1;k++){index=k;}case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){printf("** %d %s %s %s %s %d %.2f}}//{struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;p1=p1->next; }}getchar(); switch(b){case 'n':break;case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间价格**\n");for(i=0;i<n;i++){**}}//void bname_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;for(p=head;p;p=p->next)n++;for(i=0;i<n;i++){a[i]=p1;}}printf("是否显示排序结果?(y/n)\n"); scanf("%s",&b);getchar();switch(b){case 'n':case 'y':printf("===============================================================\n");printf(" ** 编号图书名作者名出版社类别出版时间**}}//按作者名排序void wname_paixu(struct book *head){struct book *a[1000],*p,*p1,*temp;int i,k,index,n=0;char b;p1=head;for(p=head;p;p=p->next)n++;}}printf("排序成功!\n");printf("是否显示排序结果?(y/n)\n"); scanf("%s",&b);getchar();。

图手册馆管理系统C语言程序设计

图手册馆管理系统C语言程序设计

HUNAN UNIVERSITYC语言程序训练报告【设计目的】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等.图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)读者注册功能3)读者登录功能4)读者借书还书功能5)查询读者借阅记录6)查询在管图书信息功能7)修改密码功能8)管理员登录功能9)增加、修改、删除图书功能10)查看图书信息功能【设计思路】根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的;管理员和读者登录界面及各自功能应有不同的实现。

【总体设计】【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用源代码为//rkou.c 程序的入口#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include"head.h"#include"fuc.h" 显示一系列功能选项输入n ,n 为1,2或3根据n 的值调用各功能模块函数结束开始n图书馆管理系统读者注册、登陆及密码修改修改图书信息 删除图书信息管理员登陆 查找图书信息 浏览图书信息#include"picture.h"#include"jiangzhuo1.h"#include"output.h"main(){ int i=setup();switch (i){ case 0: while(n<50){ conects(n);}default: eros(i);}system("pause");}2.程序中全局变量声明定义,以及所有函数声明源代码为struct book //图书结构体声明{ char name[50],classic[10],writer[20]; //书名,类别,作者int jn; //借出数量int zn; //在馆数量int bh; //图书编号};struct information //管理员和读者结构体声明{ char name[10],no[12],key[10]; //姓名,账号,密码};struct show //图书借阅记录的结构体声明{char name1[10],name2[50],writer[20],no[12]; //书名,读者姓名,书的作者,读者账号int bh,o; //图书编号,借阅状况(未还,已还) };//以下为用到的全局变量struct book bk;struct information aa,rr;struct information stu[100];struct book bb[100];struct information ad[100];struct show ss[100];int i,j,k,s;int n=0;int x;FILE *fp;//以下函数主要功能:方便窗口与用户之间交换信息int regst();void password(char *a,int b,int j); //登陆时的输入函数void examine(int *a,int b); //保证键入的数据是数字void changepaw(int a,int b); //修改密码用到的提示函数void inputs0(); //输出图书类别以供用户选择void inputs1(int a,int b,int c,int d,int e); //方便用户输入图书各项信息(如书名,编号)void inputs2(int a,int b,int c); //方便用户输入管理员的信息(如账号姓名)void inputs3(int a,int b,int c); //方便用户输入读者的信息(如账号姓名)void eros(int i) ; //错误显示函数,操作一旦出错,则会出现相应的错误信息void conects(int j); //连接函数,选择界面//一下函数主要用于改变文件的内容并保存int setup() ; //数据初始化函数int xzc(char no[12],char key1[10],char key2[10],char name[10]); //读者注册函数int exam(char no[10],char key[10],int n); //密码账号检验函数int mp(char no[12],char key1[10],char key2[10],char key3[10],int n); //密码修改函数void paixu(); //对图书按照编号从小到大的顺序进行排列int sc(int bh); //管理员删除图书信息函数int zj(struct book bb); //管理员增加图书信息函数int xg(struct book bb); //管理员修改图书信息函数int js(int bh,char no[12]); //借书函数int hs(int bh,char no[12]); //还书函数int bh1(int bh); //判断该编号的图书信息是否存在函数void bh2(int bh); //按照图书编号显示图书信息函数int sm1(char name[50]); //判断是否存在该名字的图书信息函数void sm2(char name[50]); //按照图书名字显示图书信息函数int zz1(char writer[20]); //判断是否存在该作者的图书信息函数void zz2(char writer[20]); //按照图书作者显示图书信息函数void lb(char classic[10]); //按类别显示图书信息int rck1(int bh); //判断该编号的图书的借书记录是否存在void rck2(int bh); //按编号显示图书借书情况int gck21(char no[12]); //判断该账号读者的借书记录是否存在void gck22(char no[12]); //按读者显示借书情况2void gck12(); //显示全部借书情况void gck23(); //管理员查看所有书的信息void copy(int bh); // 按编图书编号将图书信息暂时保存在另外一个结构体里面void copy2(char no[12]); //按管理员账号将管理员信息暂时保存在另外一个结构体里面void copy3(char no[12]); //按读者账号将读者信息暂时保存在另外一个结构体里面//pic() 函数:每个函数表示一个界面,conects函数将它们连接起来void pic0();void pic1();void pic2();void pic3();void pic4();void pic5();void pic6();void pic7();void pic8();void pic9();void pic10();void pic11();void pic12();void pic13();void pic14();void pic15();void pic16();void pic17();void pic18();void pic19();void pic20();void pic21();void pic22();void pic23();void pic24();void pic25();void pic26();void pic27();void pic29();void pic30();void pic31();void pic32();void pic33();void pic34();void pic35();void pic36();void pic37();void pic38();void pic39();void pic40();void pic41();void pic42();void pic43();void pic44();void pic45();void pic46();void pic47();void picc();3.用户输入以及界面反馈用到的功能函数源代码为int regst(){ char num[12],paw1[10],paw2[10],name[10];int i;printf("请输入账号\n(11字符以内,不能含有中文字符):\n");password(num,0,11);printf("输入您的密码\n(9字符以内,不能含有中文字符):\n");password(paw1,1,9);printf("请再次输入密码:\n");password(paw2,1,9);printf("输入您的姓名:\n");gets(name);system("cls");i=xzc(num,paw1,paw2,name);return i;}void password(char *a,int b,int j){ char c;int i=0;while((c=getch())!='\r'){ if(c==8){ printf("\b \b");if(i>0)i--;}else if(i<j){ if(b) printf("*");else printf("%c",c);a[i]=c;i++;}if(i==j){ printf("\a");}}a[i]='\0';printf("\n");}void examine(int *a,int b){ while(!scanf("%d",a)){ while(getchar()!='\n');printf("请输入数字!!\n");}rewind(stdin);if(b) system("cls");}void changepaw(int a,int b){ int i;char c1[10],c2[10],c3[10];printf("请输入原密码\n");password(c1,1,9);printf("请输入新密码\n");password(c2,1,9);printf("请再次输入新密码\n");password(c3,1,9);system("cls");if(b){ i=mp(aa.no,c1,c2,c3,b);if(i){ eros(i);n=27;}else n=26;}else{ i=mp(rr.no,c1,c2,c3,b);if(i){ eros(i);n=44;}else n=43;}}void inputs0(){ int i=1;while(i==1){ printf("1.A类\n2.B类\n3.C类\n4.D类\n5.E类\n6.F类\n");examine(&i,1);switch(i){ case 1: strcpy(bk.classic,"A类");i=0;break;case 2: strcpy(bk.classic,"B类");i=0;break;case 3: strcpy(bk.classic,"C类");i=0;break;case 4: strcpy(bk.classic,"D类");i=0;break;case 5: strcpy(bk.classic,"E类");i=0;break;case 6: strcpy(bk.classic,"F类");i=0;break;default: i=1;}}}void inputs1(int a,int b,int c,int d,int e){ int i;switch(a){ case 1: printf("请输入图书编号:\n");examine(&bk.bh,1);default: ;}switch(b){ case 1: printf("请输入图书名称:\n");gets();default: ;}switch(c){ case 1: printf("请输入图书的作者:\n");gets(bk.writer);default: ;}switch(d){ case 1: printf("请输入该图书的库存:\n");examine(&bk.zn,1);default: ;}system("cls");switch(e){ case 1: printf("请选择图书类别:\n");inputs0();default: ;}}void inputs2(int a,int b,int c){ switch(a){ case 1: printf("请输入账号:\n");password(aa.no,0,11);default: ;}switch(b){ case 1: printf("请输入密码:\n"); password(aa.key,1,9);default: ;}switch(c){ case 1: printf("请输入姓名:\n");gets();default: ;}system("cls");}void inputs3(int a,int b,int c){ switch(a){ case 1: printf("请输入账号:\n");password(rr.no,0,11);default: ;}switch(b){ case 1: printf("请输入密码:\n"); password(rr.key,1,9);default: ;}switch(c){ case 1: printf("请输入姓名:\n");gets();default: ;}system("cls");}void eros(int i) //错误函数{ switch (i){ case -1: printf("error1 !初始化失败\n\n");break;case -2: printf("error2 !账号不存在\n\n");break;case -3: printf("error3 !账号不存在\n\n");break;case -4: printf("error4 !密码错误\n\n");break;case -5: printf("error5 !输入的密码不一致\n\n");break;case -6: printf("error6 !编号不存在\n\n");break;case -7: printf("error7 !书名不能为空\n\n");break;case -8: printf("error8 !作者名字不能为空\n\n");break;case -9: printf("error9 !无此图书编号的记录\n\n");break;case -10: printf("error10 !无此账号的记录\n\n");break;case -11: printf("error11 !原始密码输入错误\n\n");break;case -12: printf("error12 !您已经归还此书\n\n");break;case -13: printf("error13 !您所增加的图书编号已存在\n\n");break;case -14: printf("error14 !搜索不到此书的相关信息\n\n");break;case -15: printf("error15 !搜索不到该作者的信息\n\n");break;case -16: printf("error16 !打不开文件,保存失败\n\n");break;case -17: printf("error17 !该图书信息已存在\n\n");break;case -18: printf("error18 !您没有借过这本书\n\n");break;case -19: printf("error19 !您已经借阅了这本书,不能再借\n\n");break;;case -20: printf("error20 !抱歉,图书已经借完了\n\n");break;case -21: printf("error21 !账号已存在\n\n") ; break;case -22: printf("error22 !还有图书未还,不能删除该条信息\n\n");break;default : ;}}void conects(int j){ switch(j){ case 0: pic0();break;case 1: pic1();break;case 2: pic2();break;case 3: pic3();break;case 4: pic4();break;case 5: pic5();break;case 6: pic6();break;case 7: pic7();break;case 8: pic8();break;case 9: pic9();break;case 10: pic10();break;case 11: pic11();break;case 12: pic12();break;case 13: pic13();break;case 14: pic14();break;case 15: pic15();break;case 16: pic16();break;case 17: pic17();break;case 18: pic18();break;case 19: pic19();break;case 20: pic20();break;case 21: pic21();break;case 22: pic22();break;case 23: pic23();break;case 24: pic24();break;case 25: pic25();break;case 26: pic26();break;case 27: pic27();break;case 29: pic29();break;case 30: pic30();break;case 31: pic31();break;case 32: pic32();break;case 33: pic33();break;case 34: pic34();break;case 35: pic35();break;case 36: pic36();break;case 37: pic37();break;case 38: pic38();break;case 39: pic39();break;case 40: pic40();break;case 41: pic41();break;case 42: pic42();break;case 43: pic43();break;case 44: pic44();break;case 45: pic45();break;case 46: pic46();break;case 47: pic47();break;default: ;}}4.文件操作各种函数源代码为// jiangzhuo1.h 文件操作各种函数int setup() //数据初始化函数{FILE *fp;fp=fopen("reader.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{i=0;while(!feof(fp)){fscanf(fp,"%s %s %s",stu[i].name,stu[i].no,stu[i].key); //将文档里面的数据格式化读取到结构体数组里面i++;}i=i-1;}fclose(fp);fp=fopen("ad.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{j=0;while(!feof(fp)){fscanf(fp,"%s %s %s",ad[j].name,ad[j].no,ad[j].key); //将文档里面的数据格式化读取到结构体数组里面j++;}j=j-1;}fclose(fp);fp=fopen("book.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{k=0;while(!feof(fp)){fscanf(fp,"%d %s %s %s %d %d ",&bb[k].bh,bb[k].name,bb[k].classic,bb[k].writer,&bb[k].zn,&bb[k].jn); //将文档里面的数据格式化读取到结构体数组里面k++;}k=k-1;}fclose(fp);fp=fopen("show.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{s=0;while(!feof(fp)){s++;}s=s-1;}fclose(fp);return 0; //当操作全部正确时返回0}int xzc(char no[12],char key1[10],char key2[10],char name[10]) //读者注册函数{ int x=0;for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断读者输入的账号与结构体里面的账号是否相同{return -21;break;}if(x==i && strcmp(no,stu[x].no))//判断读者输入的账号与结构体里面的账号是否相同{if(!strcmp(key1,key2)) //判断读者两次输入的密码是否一致{i=i+1;strcpy(stu[i].name,name);strcpy(stu[i].no,no);strcpy(stu[i].key,key1);fp=fopen("reader.txt","a"); //对文件以写的方式将注册的信息保存到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%s\t\t%s\t\t%s\n",stu[i].name,stu[i].no,stu[i].key);}fclose(fp);return 0;}else{return -5;}}}}int exam(char no[10],char key[10],int n) //密码账号检验函数{ int x;if(n==0) //对读者的密码和账号信息进行检验{if(!strcmp(no,stu[x].no)) //判断该账号是否存在{if(!strcmp(key,stu[x].key)) //当账号存在时判断与之相应的密码是否相同{return 0;break;}else{return -4;break;}}if(x==i && strcmp(no,stu[x].no)){return -3;}}}if(n==1) //对管理员的密码账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,ad[x].no)) //判断该账号是否存在{if(!strcmp(key,ad[x].key)) //判断与之相应的密码是否存在{return 0;break;}else{return -4;break;}}if(x==j && strcmp(no,ad[x].no)){return -3;}}}}int zj(struct book b) //管理员增加图书信息函数{ int x;{return -13;break;}if(!strcmp(,bb[x].name)&&!strcmp(b.writer,bb[x].writer)) //判断所增加的图书是否存在{ return -17;break;}if(x==k){ if(strlen(bb[0].name)==0) //判断文档的第一行是否为空k=k;elsek=k+1;bb[k].bh=b.bh; //将所增加的图书信息添加到结构体里面strcpy(bb[k].name,);strcpy(bb[k].classic,b.classic);strcpy(bb[k].writer,b.writer);bb[k].zn=b.zn;bb[k].jn=b.jn;fp=fopen("book.txt","a"); //将增加的图书信息追加到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[k].bh,bb[k].name,bb[k].classic,bb[k].writer,bb[k].zn,bb[k].jn);}fclose(fp);return 0;}}}int sc(int bh) //管理员删除图书信息函数{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断所删除图书的编号是否存在{if(bb[x].jn!=0)return -22;for(x=x;x<=k-1;x++){bb[x]=bb[x+1]; //删除图书信息后将该图书信息后面的图书信息依次前移}k--;return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer,bb[x].zn,bb[x].jn);}}fclose(fp);return 0;break;}}}int mp(char no[12],char key1[10],char key2[10],char key3[10],int n) //密码修改函数{ int x;if(n==0) //读者密码修改{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //定位读者账号位置{if(!strcmp(stu[x].key,key1)) //判断输入的原密码是否正确{ if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(stu[x].key,key3);fp=fopen("reader.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=i;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",stu[x].name,stu[x].no,stu[x].key);}fclose(fp);return 0;}else{return -5;}}elsereturn -11;}if(n==1) //管理员密码修改{for(x=0;x<=j;x++){if(!strcmp(no,ad[x].no)) //定位管理员账号位置{if(!strcmp(key1,ad[x].key)) //判断输入的原密码是否正确{if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(ad[x].key,key3);fp=fopen("ad.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=j;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",ad[x].name,ad[x].no,ad[x].key);}fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}}int xg(struct book b) //管理员修改图书信息函数{ int x;if(strlen()==0) //判断所输入的要修改的图书名字是否为空{return -7;}else{if(strlen(b.writer)==0) //判断所输入的要修改的图书作者是否为空{return -8;{for(x=0;x<=k;x++){if((bb[x].bh==b.bh)) //定位要修改的图书编号位置{strcpy(bb[x].name,); //将修改后的信息保存在结构体里strcpy(bb[x].classic,b.classic);strcpy(bb[x].writer,b.writer);bb[x].zn=b.zn;bb[x].jn=b.jn;fp=fopen("book.txt","w+"); //将修改后的所有信息保存在文件里if(fp==NULL)return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer,bb[x].zn,bb[x].jn);}}fclose(fp);return 0;}}}}}void copy(int bh) // 按编图书编号将图书信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh){strcpy(,bb[x].name);strcpy(bk.classic,bb[x].classic);strcpy(bk.writer,bb[x].writer);bk.zn=bb[x].zn;bk.jn=bb[x].jn;bk.bh=bb[x].bh;}}}void copy2(char no[12]) //按管理员账号将管理员信息暂时保存在另外一个结构体里面{ int x;if(!strcmp(ad[x].no,no)){strcpy(,ad[x].name);strcpy(aa.key,ad[x].key);}}}void copy3(char no[12]) //按读者账号将读者信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=i;x++){if(!strcmp(stu[x].no,no)){strcpy(,stu[x].name);strcpy(rr.key,stu[x].key);}}}int js(int bh,char no[12]) //借书函数{ int x,y,z;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断借书编号是否存在{if(bb[x].zn>0) //判断在馆数是否为0{if(strlen(ss[0].name1)==0) //判断文件里面的第一行信息是否存在{for(y=0;y<=i;y++){if(!strcmp(stu[y].no,no)){ --bb[x].zn; //修改借书后的信息++bb[x].jn;ss[0].o=2;strcpy(ss[0].name1,stu[y].name); //将借书后的信息保存在结构体数组里面strcpy(ss[0].no,no);strcpy(ss[0].writer,bb[x].writer);strcpy(ss[0].name2,bb[x].name);ss[0].bh=bh;}}}else{for(y=0;y<=s;y++){if(ss[y].o==2) //判断是否已借过该书return -19;else{--bb[x].zn; //修改借书后的信息++bb[x].jn;ss[y].o=2;}break;}else{if(y==s){s++;for(z=0;z<=i;z++){if(!strcmp(stu[z].no,no)) //定位读者信息{bb[x].zn--; //修改借书后的信息bb[x].jn++;strcpy(ss[s].name1,stu[z].name);strcpy(ss[s].name2,bb[x].name);strcpy(ss[s].no,no);strcpy(ss[s].writer,bb[x].writer);ss[s].bh=bb[x].bh;ss[s].o=2;}}break;}}}}fp=fopen("book.txt","w+"); //将借书后的图书信息写入文件if(fp==NULL)return -16;else{for(y=0;y<=k;y++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[y].bh,bb[y].name,bb[y].classic,bb[y].writer,bb[y].zn,bb[y].jn);}fp=fopen("show.txt","w+"); //将借书记录写入文件if(fp==NULL)return -16;else{for(y=0;y<=s;y++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[y].name1,ss[y].no,ss[y].bh,ss[y].name2,ss[y].writer,ss[y].o);}}fclose(fp);return 0;}elsereturn -20;}}}int hs(int bh,char no[12]) //还书函数{ int x,p;for(x=0;x<=s;x++){if(ss[x].bh==bh && !strcmp(ss[x].no,no)) //判断其借书记录是否存在{ if(ss[x].o==2) //判断该书是否被借过{ for(p=0;p<=k;p++){if(bb[p].bh==bh) //修改还书后的图书信息{ ++bb[p].zn;--bb[p].jn;}}ss[x].o=1;fp=fopen("book.txt","w+"); //将还书后的所有图书信息重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=k;p++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[p].bh,bb[p].name,bb[p].classic,bb[p].writer,bb[p].zn,bb[p].jn);}}fclose(fp);return -16;else{for(p=0;p<=s;p++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[p].name1,ss[p].no,ss[p].bh,ss[p].name2,ss[p].writer,ss[p].o);}}fclose(fp);return 0;}else{return -12;}}elseif(x==s)return -18;}}void paixu() //对图书按照编号从小到大的顺序进行排列{ int x,flag;struct book a;do //用冒泡法排序{flag=1;for(x=0;x<=k-1;x++){if(bb[x].bh>bb[x+1].bh){a=bb[x+1];bb[x+1]=bb[x];bb[x]=a;flag=0;}}}while(flag==0);fp=fopen("book.txt","w+"); //将排序后的信息重新写入文件for(x=0;x<=k;x++)fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x].writer,bb[x].zn,bb[x].jn);fclose(fp);}源代码为// picture.h 登陆界面所有函数void pica(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:管理员\n",aa.no,);printf("------------------------------------------------------------------------\n\n"); }void picb(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:读者\n",rr.no,);printf("------------------------------------------------------------------------\n\n"); }void pic0() //登陆界面{ printf("\n\t\t\t欢迎登陆湖南大学图书管理系统\n");printf("------------------------------------------------------------------------\n\n");printf("1.登陆\n2.读者注册\n3.退出系统\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=1;break;case 2: n=45;break;case 3: n=50;break;default:;}}void pic1() //管理员登陆界面{ int i;printf("\n\t\t\t\t登陆\n");printf("------------------------------------------------------------------------\n\n");printf("1.管理员登陆\n2.读者登陆\n3.返回系统界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs2(1,1,0);i=exam(aa.no,aa.key,1);if(i){ eros(i);n=3;}else n=2;break;case 2: inputs3(1,1,0);i=exam(rr.no,rr.key,0);if(i){ eros(i);n=30;}else n=29;break;case 3: n=0;break;default: ;}void pic2() //管理员管理界面{ copy2(aa.no);pica();printf("1.增加图书\n2.修改图书\n3.删除图书\n4.查看图书信息\n");printf("5.修改密码\n6.返回到系统登陆界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=4;break;case 2: n=8;break;case 3: n=15;break;case 4: n=21;break;case 5: n=25;break;case 6: n=0;break;default: ;}}void pic3() //管理员登陆错误提示{ printf("1.返回重新输入\n2.返回系统登陆界面\n");examine(&x,1);switch(x){ case 1: n=1;break;case 2: n=0;break;default: ;}}void pic4() //管理员添加图书界面{ pica();printf("1.录入新的图书信息\n2.返回上一层\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs1(1,1,1,1,1);n=5; break;case 2: n=2;break;default: ;}}void pic5() //添加图书确认界面{ int i;pica();printf("你输入的图书信息为:\n\n");printf("书名\t\t\t编号\t作者\t\t种类\t在馆数\t借出数\n");printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn);printf("------------------------------------------------------------------------\n\n");printf("1.录入以上信息\n2.返回重新输入图书信息\n\n");examine(&x,1);switch(x){ case 1: i=zj(bk);if(i){ eros(i);n=7;}else n=6;break;case 2: n=4;break;default: ;}}void pic6() //添加图书成功提示界面{ printf("添加图书成功!!\n");printf("1.返回继续添加图书\n2.返回管理图书界面\n");examine(&x,1);switch(x){ case 1: n=4;break;case 2: n=2;break;default: ;}}void pic7() // 添加图书失败提示界面{ printf("1.重新输入图书信息\n2.返回管理图书界面\n");examine(&x,1);switch(x){ case 1: n=4;break;case 2: n=2;break;default: ;}}void pic8() //修改图书界面{ pica();printf("1.进行修改图书操作\n2.返回管理图书界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=9;break;case 2: n=2;break;default: ;}}void pic9() //输入编号以选择修改相应的图书{ int i;pica();printf("以下是在馆所有图书信息:\n\n");gck23();printf("1.输入编号修改图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,0);switch(x){ case 1: inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){ eros(i);n=11;}else{ n=10;}break;case 2: system("cls");n=2;break;default: system("cls");}}void pic10() //按需求修改图书界面{ pica();printf("编号为%d的图书信息:\n\n",bk.bh);copy(bk.bh);bh2(bk.bh);printf("------------------------------------------------------------------------\n\n");printf("1.修改书名\n2.修改作者名字\n3.修改图书在馆的数量\n4.修改图书所属的类别\n");printf("5.修改图书所有信息\n6.返回上一层选择其他编号的书\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs1(0,1,0,0,0);n=12;break;case 2: inputs1(0,0,1,0,0);n=12;break;case 3: inputs1(0,0,0,1,0);n=12;break;case 4: inputs1(0,0,0,0,1);n=12;break;case 5: inputs1(0,1,1,1,1);n=12;break;case 6: n=9;break;default: ;}}void pic11() //获取相应的图书失败提示界面{ printf("1.重新输入图书编号\n2.返回图书管理界面\n");examine(&x,1);switch(x){ case 1: n=9;break;case 2: n=8;break;default: ;}}{ int i;pica();printf("你要修改的图书信息为:\n\n");bh2(bk.bh);printf("%-24s%-8d%-16s%-8s%-8d%-8d\n\n",,bk.bh,bk.writer,bk.classic,bk.zn,bk.jn);printf("------------------------------------------------------------------------\n\n");printf("1.确认修改此图书\n2.返回选择修改其他信息\n3.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: i=xg(bk);if(i){ eros(i);n=14;}else n=13;break;case 2: n=10;break;case 3: n=8;break;default: ;}}void pic13() //修改图书提示成功界面{ printf("修改图书成功!!\n");printf("1.返回继续修改图书\n2.返回管理图书界面\n");examine(&x,1);switch(x){ case 1: n=8;break;case 2: n=2;break;default: ;}}void pic14() //修改图书失败提示界面{ printf("1.重新输入图书修改信息\n2.图书管理界面\n");examine(&x,1);switch(x){ case 1: n=10;break;case 2: n=8;break;default: ;}}void pic15() //删除图书选择界面{ pica();printf("1.进行删除图书操作\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=16; break;default: ;}}void pic16() //输入相应编号删除图书{ int i;pica();;printf("以下是在馆所有图书信息:\n\n");gck23();printf("------------------------------------------------------------------------\n\n");printf("1.输入编号删除图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,0);switch(x){ case 1: inputs1(1,0,0,0,0);i=bh1(bk.bh);if(i){ eros(i);n=18;}else{n=17;system("cls");};break;case 2: system("cls");n=2;break;default: system("cls"); ;}}void pic17() //删除图书确认界面{ int i;pica();printf("编号为%d的图书信息:\n\n",bk.bh);bh2(bk.bh);printf("------------------------------------------------------------------------\n\n");printf("1.删除该图书\n2.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: i=sc(bk.bh);if(i){ eros(i);n=20;}else n=19;break;case 2: n=2;break;default: ;}}void pic18() //获取特定编号图书失败界面examine(&x,1);switch(x){ case 1: n=16;break;case 2: n=15;break;default: ;}}void pic19() //删除图书成功提示界面{ printf("删除图书操作成功!!!\n");printf("1.返回选择其他的图书\n2.返回管理图书界面\n");examine(&x,1);switch(x){ case 1: n=15;break;case 2: n=2;break;default: ;}}void pic20() // 删除图书失败提示界面{ printf("1.返回重新输入图书编号\n2.返回重新选择类别\n");examine(&x,1);switch(x){ case 1: n=16;break;case 2: n=15;break;default: ;}}void pic21() //管理员查看借阅记录界面{ int i;pica();printf("1.查看指定编号的图书借阅记录\n2.查看指定读者的借阅记录\n3.查看所有图书借阅记录\n4.查看在馆图书的详细信息\n");printf("5.返回图书管理界面\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: inputs1(1,0,0,0,0);i=rck1(bk.bh);if(i){ eros(i);n=23;}else{ pica();printf("编号为%d的图书的借出情况:\n\n",bk.bh);rck2(bk.bh);n=22;}break;。

C图方案管理系统源代码

C图方案管理系统源代码

C图方案管理系统源代码集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-图书管理系统系统功能:1.借书:根据借书人提出的图书编号(id)查询该图书,如果该图书现存量(store)不为0,则提示输入借阅者的学号(num),为借书人办理借书手续,提示用户该书已被借出。

2.归书:根据借书人的学号查询该读者的信息,若有该读者,则提示输入所借书籍的编号(id),为该读者办理还书手续,提示该书已还。

3.书籍管理:弹出书籍管理界面,输入所要执行操作的号码:(1)增加书籍:弹出注册新书的窗口,按照提示输入所增加书籍的信息,最后,提示用户该书已被注册。

(2)删除书籍:弹出删除书籍的窗口,输入所要删除书籍的编号(id),输出该书的信息,确认是否删除该书,1为删除,0为放弃。

(3)修改书籍:弹出修改书籍的窗口,输入所要修改书籍的编号(id),输出该书的信息,确认是否修改该书,1为修改,0为放弃。

之后按照提示重新输入书籍的信息。

4.读者管理:弹出读者管理界面,输入所要执行操作的号码:(1)增加读者:弹出注册读者的窗口,按照提示输入所增加读者的信息,最后,提示用户该读者已被注册。

(2)删除书籍:弹出删除读者的窗口,输入所要删除读者的学号(num),输出该读者的信息,确认是否删除该读者,1为删除,0为放弃。

(3)修改书籍:弹出修改读者的窗口,输入所要修改读者的学号(num),输出该读者的信息,确认是否修改该读者,1为修改,0为放弃。

之后按照提示重新输入读者的信息。

5.搜索:此搜索包括两方面的搜索,书籍搜索以及读者搜索,弹出搜索的窗口,按照提示输入所要搜索的内容,1为书籍搜索,2为读者搜索:(1)搜索书籍:弹出搜索书籍的窗口,按照提示输入所要搜索的方式,包括按<1>书名搜索,<2>书号搜索,<3>作者搜索,<4>出版社搜索,<5>出版时间搜索;根据所选方式输入相应的内容,若是该书籍存在,则输出该书籍的信息,否则,返回主界面。

C语言图形库写个——简单图书管理系统

C语言图形库写个——简单图书管理系统

C语言图形库写个——简单图书管理系统前貌似写了一个简单的ATM系统,那个是肯定的啦,有读者书也真简单,本身也是啦,标题也写的是简单的ATM系统哈,那我今天的话也继续带来一个C语言写的简单的图书管理系统哈,下面的话,我发一下代码,各位也可以去运行一下,今天的话,图书管理弄了个界面,那么就各位记得安装好图形库#include#include#include#pragma comment(lib,'winmm.lib')IMAGE BD,TAB;FILE* fp;void Image(); //背景void Save_Data(); //保存void Delete_Data(); //删除int n = 0;typedef struct book{char num[4];char price[4];char name[10];} BOOK;BOOK bk[20];void Add(){fp = fopen('./BOOK.txt', 'a+');cleardevice();loadimage(&BD, './2008071502334265.jpg', 640, 480);putimage(0, 0, &BD);char ch;int ih;int num;char *ar[] = { '请输入序号:', '请输入书名:', '请输入价格:' }; setbkmode(TRANSPARENT);settextcolor(RED);settextstyle(50, 20, '华文彩云');outtextxy(250, 10, '添加书籍');setfillcolor(RGB(180, 180, 180));fillrectangle(100, 60, 580, 450);settextcolor(BLACK);settextstyle(20, 0, '楷体');outtextxy(100, 70, *ar);int i = 0;while ((num = getch()) != VK_RETURN){outtextxy(100 + 10 * i, 100,num);*(bk[n].num + i) = num;i++;}outtextxy(100, 150, *(ar + 1));i = 0;while ((ch = getch()) != VK_RETURN){outtextxy(100 + 10 * i, 180, ch);*(bk[n].name + i) = ch;i++;}outtextxy(100, 230, *(ar + 2));i = 0;while ((ih = getch()) != VK_RETURN){outtextxy(100 + 10 * i, 260,ih);*(bk[n].price + i) = ih;i++;}outtextxy(250, 400, '正在保存...');Sleep(2000);fprintf(fp, '%s %s %s ', bk[n].num, bk[n].name, bk[n].price); n++;fclose(fp);cleardevice();}void Scan(){cleardevice();loadimage(&BD, './2008071502334265.jpg', 640, 480); putimage(0, 0, &BD);setbkmode(TRANSPARENT);settextcolor(RED);settextstyle(50, 20, '华文彩云');outtextxy(250, 10, '浏览书籍');setfillcolor(RGB(180, 180, 180));fillrectangle(100, 60, 580, 450);for (int i = 0; i <= 7;="">=>{line(100, 60 + i * 50, 580, 60 + i * 50);}fp = fopen('./BOOK.txt', 'r');settextcolor(BLACK);settextstyle(20, 0, '楷体');for (int i = 0; fscanf(fp, '%s %s %s ', bk[i].num, bk[i].name, bk[i].price)!=EOF; i++,n++){outtextxy(100, 70 + i * 50, bk[i].num);outtextxy(150, 70 + i * 50, bk[i].name);outtextxy(200, 70 + i * 50, bk[i].price);}fclose(fp);}void Delete_Data(){int x = 0;int b;int arr[4];fp = fopen('./BOOK.txt','r+');cleardevice();loadimage(&BD, './2008071502334265.jpg', 640, 480);putimage(0, 0, &BD);setbkmode(TRANSPARENT);settextcolor(RED);settextstyle(50, 20, '华文彩云');outtextxy(250, 10, '删除书籍');setfillcolor(RGB(180, 180, 180));fillrectangle(100, 60, 580, 450);settextstyle(20, 0, '楷体');outtextxy(100,70,'请输入需要删除书籍的序号:');for (int i = 0; i <= 7;="">=>{line(100, 60 + i * 50, 580, 60 + i * 50);}int a = 0;while ((b = getch()) != VK_RETURN){outtextxy(100 + 10 * a, 130, b);*(arr + a) = b;a++;}for (int i = 0; fscanf(fp, '%s %s %s ', bk[i].num, bk[i].name, bk[i].price) != EOF; i++, x++);for (int i = 0; i < x;="">{for (int a = 0; a < 4;="">{if (bk[i].num[a] == arr[a]){for (int v = i; v <= x;="">=>{for (int z = 0; z <>*(bk[v].num+z) = *(bk[v + 1].num+z);for (int z = 0; z < 10;="">*(bk[v].name+z) = *(bk[v + 1].name+z);for (int z = 0; z < 4;="">*(bk[v].price+z) = *(bk[v + 1].price+z);}break;}}}x--;fclose(fp);fopen('./BOOK.txt', 'w+');for (int i = 0; i < x;="">{fprintf(fp, '%s %s %s ', bk[i].num, bk[i].name, bk[i].price);}fclose(fp);}void MouseMg(){MOUSEMSG m;while (MouseHit()){m = GetMouseMsg();switch (m.uMsg){case WM_LBUTTONDOWN:if (m.x >= 220 && m.y >= 100 && m.x <= 440="" &&="" m.y="">=><=>=>{Add();}else if (m.x >= 220 && m.y >= 180 && m.x <= 440="" &&="" m.y="">=><=>=>{Scan();getch();}else if (m.x >= 220 && m.y >= 260 && m.x <= 440=""&&="" m.y="">=><=>=>{Delete_Data();getch();}else if (m.x >= 220 && m.y >= 340 && m.x <= 440="" &&="" m.y="">=><=>=>{exit(0);}break;}}}void Image(){BeginBatchDraw();loadimage(&BD, './2008071502334265.jpg', 640, 480);putimage(0, 0, &BD);loadimage(&TAB,'./258PICg58PICzAJ_1024.jpg',220,40);putimage(220, 100, &TAB);loadimage(&TAB, './258PICg58PICzAJ_1024.jpg', 220, 40);putimage(220, 180, &TAB);loadimage(&TAB, './258PICg58PICzAJ_1024.jpg', 220, 40);putimage(220, 260, &TAB);loadimage(&TAB, './258PICg58PICzAJ_1024.jpg', 220, 40);putimage(220, 340, &TAB);setbkmode(TRANSPARENT);settextcolor(RED);settextstyle(50, 20, '华文彩云');outtextxy(200, 10, '图书管理系统');settextcolor(BLACK);settextstyle(17, 17, '华文新魏');outtextxy(250, 115,'添加书籍');settextstyle(17, 17, '华文新魏');outtextxy(250, 195, '浏览书籍');settextstyle(17, 17,'华文新魏');outtextxy(250, 275, '删除书籍');settextstyle(17, 17,'华文新魏');outtextxy(250, 355,'退出系统');EndBatchDraw();}int main(){PlaySound('05-夜的钢琴曲(五).wav', NULL, SND_FILENAME | SND_LOOP | SND_ASYNC);initgraph(640, 480);while (1){Image();MouseMg();}return 0;}弄了一个好看的界面,顺带也加上了音乐也感觉还不错吧,但是也比较基础的呢可以加下群466572167(群里有资料可以下载学习,也可以交流学习)主要是就发了三个图片,一个是主要界面以及功能方面,然后就是后面两个图,两个功能一个是添加功能,一个是浏览,暂时就说到这哈。

c语言成绩管理系统源代码+流程图

c语言成绩管理系统源代码+流程图

#include<stdio.h>#include<string.h>#include<stdlib.h>void frist_print(){printf("\t\t********************************\n\n"); //欢迎信息printf("\t\t\t欢迎进入学生成绩系统\n");printf("\t\t\t\t\t\t\t\t 此程序合作完成由");printf("\n\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * \n");printf("\t\t\t\t\t\t\t\t * 王杨* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 李淼鑫* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 孙天顺* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * \n");}//***************************************************************************************************************************************************************************** ******void menu(){printf("\n\t\t***********************************\n"); //管理菜单printf("\n\t\t==========1.录入学生成绩===========\n\t\t+\n");printf("\t\t==========2.显示学生成绩===========\n\t\t+\n");printf("\t\t==========3.查询学生成绩===========\n\t\t+\n");printf("\t\t==========4.添加学生成绩===========\n\t\t+\n");printf("\t\t==========5.修改学生成绩===========\n\t\t+\n");printf("\t\t==========6.删除学生成绩===========\n\t\t+\n");printf("\t\t==========7.清空页面===========\n\t\t+\n");printf("\t\t==========8.退出系统===========\n");printf("\n\t\t***********************************\n");printf("please choise 1--8:\t");putchar(10);}//************************************************************************************** *************************************************************************************** ******struct MM // 结构体定义变量{char num[20];char name[10];float sco,sco2,sco3,sco4;int many;}mm;//************************************************************************************** *************************************************************************************** ******void scanf_1() //第一次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","wb+"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入学生的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("总成绩:\t");scanf("%f",&mm.sco);printf("平时成绩:\t");scanf("%f",&mm.sco2);printf("作业成绩:\t");scanf("%f",&mm.sco3);printf("考试成绩:\t");scanf("%f",&mm.sco4);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||ch=='Y');fclose(fp);}//************************************************************************************** *************************************************************************************** ******void find() //查询成绩的信息{ int a,b=0;char ch[20];FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要查询的成绩的方式\n\t1.编号2.姓名:\n\t请选择1 or 2 \t"); scanf("%d",&a);if(a==1){ getchar();printf("请输入学生的编号:\t");gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(mm.num,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("对不起!没有找到相关信息:\n");}else if(a==2){ printf("请输入学生的姓名:\t");getchar();gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("input error!\n");}fclose(fp);}//************************************************************************************** *************************************************************************************** ******void scanf_2() //第二次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","ab"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入要添加成绩的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("成绩:\t");scanf("%f",&mm.sco);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||ch=='Y');fclose(fp);}//************************************************************************************** *************************************************************************************** ******void print() //输出文档中的信息{FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");return ;}printf("编号\t姓名\t成绩\t\t学号\n");while(fread(&mm,sizeof(struct MM),1,fp)==1)printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);fclose(fp);}//************************************************************************************** *************************************************************************************** ******void change(){ //修改信息的函数,定义另一个文件,把要修改的信息放到该文件中struct XX //然后把其余的信息复制到该文件中;并把该文件从新命名为原来的名{ //把原来的文件移除;char num[20];char name[10];float sco;int many;}xx;FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do{if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要修改成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1){if((strcmp(mm.num,ch)==0)){b++;//b的值如果一直没有改变说明,没有找到相关的信息;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);getchar();printf("请输入成绩的新编号:\t");gets(xx.num);printf("请输入成绩的新姓名:\t");gets();printf("请输入成绩的新成绩:\t");scanf("%f",&xx.sco);printf("请输入成绩新学号:\t");scanf("%d",&xx.many);getchar();fwrite(&xx,sizeof(struct XX),1,fp2);}if(strcmp(mm.num,ch)!=0)fwrite(&mm,sizeof(struct MM),1,fp2);}if(b==0){printf("\t没有找到相关信息!\n");getchar();}rewind(fp); //如果要继续修改的话,要把标记返回到文件的开头;printf("是否继续修改?enter 'y' or 'n' \t");ck=getchar();fclose(fp);fclose(fp2);remove("dd.dat");rename("temp.dat","dd.dat");}while(ck=='y'||ck=='Y');if(b!=0)//如果没有找到相关信息就不能输出printf("\t修改成功:\n");}//************************************************************************************** *************************************************************************************** ******void del(){ //删除函数(和修改很相似) FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do {if((fp=fopen("dd.dat","rb"))==NULL) //判断以读二进制的方式打开文件dd.dat,文件句柄保存到fp,fp是否为空如果为空,就是打开文件失败,否则打开文件成功{printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要删除成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1) //fread()成功的返回值就是参数里读取的数据块个数,这里就是1; sizeof中是每一项的长度,{if((strcmp(mm.num,ch)==0)) //设这两个字符串为str1,str2,若str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

班级管理系统C#代码展示

班级管理系统C#代码展示

班级管理系统C#代码展示:Using System;using System.Data;using System. Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page;{SqlConnection conn = new SqlConnection();//public void lianjie()//{// conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integrated Security=True";// conn.Open();//}public string updateclass( string classid, string classname, string departmentnam e, string teacherid ){//SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integra ted Security=True";conn.Open();string str=null;string sqlstr = "update TS_class set TS_Class_name=@classname,TS_Class_depa rtment=@departmentname,TS_Class_teacherid=@teacherid where TS_Class_id= @classid";SqlCommand comm = new SqlCommand(sqlstr, conn);try{comm.Parameters.Add(new SqlParameter("@classid", SqlDbType.VarChar, 50));comm.Parameters.Add(new SqlParameter("@classname", SqlDbType.VarChar, 50) );comm.Parameters.Add(new SqlParameter("@departmentname", SqlDbType.VarCh ar , 50));comm.Parameters.Add(new SqlParameter("@teacherid", SqlDbType.VarChar , 50) );comm.Parameters["@classid"].Value = classid;comm.Parameters["@classname"].Value =classname ;comm.Parameters["@departmentname"].Value = departmentname ;comm.Parameters["@teacherid"].Value =teacherid ;//comm.Connection.Open();comm.ExecuteNonQuery();str = "更新成功";}catch (Exception ex){str = ex.Message;}comm.Connection.Close();return str;}public DataSet Query(string selectstr){DataSet ds = new DataSet();try{SqlDataAdapter adp = new SqlDataAdapter(selectstr, conn);adp.Fill(ds);}catch (Exception){}return ds;}public int NonQuery(string sqlstr){int i = -1;SqlCommand comm = new SqlCommand(sqlstr, conn);//comm.Connection.Open();try{i = comm.ExecuteNonQuery();}catch (Exception){}comm.Connection.Close();return i;}public void TS_BindGrid(){//lianjie();//SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integra ted Security=True";conn.Open();string sqlstr = "select * from TS_class";DataSet ds = Query(sqlstr);conn.Close();GridView1.DataSource = ds;GridView1.DataBind();}protected void Page_Load(object sender, EventArgs e){}protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) {GridView1.EditIndex = (int)e.NewEditIndex;TS_BindGrid();}protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e){//lianjie();string classid = GridView1.DataKeys[(int)e.RowIndex].Value.ToString();string classname = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]). Text;string departmentname = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Contr ols[0]).Text;string teacherid = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).T ext;string str = updateclass( classid , classname, departmentname, teacherid);conn.Close();Label2.Text = str;GridView1.EditIndex = -1;TS_BindGrid();}protected void Button1_Click(object sender, EventArgs e){//lianjie();//SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integra ted Security=True";conn.Open();SqlCommand comm = new SqlCommand();comm.Connection = conn;mandText = "select TS_Class_id,TS_Class_name,TS_department_nam e,TS_Teacher_name from TS_class,TS_department,TS_teacher where TS_class.T S_Class_department=TS_department.TS_department_id and TS_class.TS_Class_ teacherid=TS_teacher.TS_Teacher_id and " + DropDownList1.SelectedValue + "=' " + DropDownList2.Text + "'";DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = comm;sda.Fill(ds);conn.Close();GridView1.DataSource = ds.T ables[0];GridView1.DataBind();}protected void LinkButton1_Click(object sender, EventArgs e){//lianjie();//SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integra ted Security=True";conn.Open();SqlCommand comm = new SqlCommand();comm.Connection = conn;mandText = "select TS_Class_id,TS_Class_name,TS_department_nam e,TS_Teacher_name from TS_class,TS_department,TS_teacher where TS_class.T S_Class_department=TS_department.TS_department_id and TS_class.TS_Class_ teacherid=TS_teacher.TS_Teacher_id";DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = comm;sda.Fill(ds);comm.ExecuteNonQuery();conn.Close();GridView1.DataSource = ds.T ables[0];GridView1.DataBind();}protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEv entArgs e){GridView1.EditIndex = -1;TS_BindGrid();}protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) {if (DropDownList1.SelectedItem.Text == "班级"){DropDownList2.Items.Clear();DataSet ds = new DataSet();DataT able dt = new DataT able();//SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integra ted Security=True";conn.Open();SqlCommand comm = new SqlCommand();comm.Connection = conn;mandText = "select TS_Class_name from TS_class ";SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = comm;sda.Fill(ds);conn.Close();dt = ds.Tables[0];for (int i = 0; i < dt.Rows.Count; i++){DropDownList2.Items.Add((string)(dt.Rows[i][0]));}}if (DropDownList1.SelectedItem.Text == "系部"){DropDownList2.Items.Clear();DataSet ds = new DataSet();DataT able dt = new DataT able();//SqlConnection conn = new SqlConnection();conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integra ted Security=True";conn.Open();SqlCommand comm = new SqlCommand();comm.Connection = conn;mandText = "select distinct TS_department_name from TS_departme nt ";SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = comm;sda.Fill(ds);conn.Close();dt = ds.Tables[0];for (int i = 0; i < dt.Rows.Count; i++){DropDownList2.Items.Add((string)(dt.Rows[i][0]));}}}protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) {conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integra ted Security=True";conn.Open();string sqlstr = "delete from TS_class where TS_Class_id='" + GridView1.DataKey s[(int)e.RowIndex].Value + "'";try{NonQuery(sqlstr);Label2.Text = "删除成功!!";}catch (Exception ex){Label2.Text = "删除失败" + ex.Message;Label2.Style["color"] = "red";}conn.Close();TS_BindGrid();}}using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page{SqlConnection conn = new SqlConnection();public void lianjie(){conn.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=TeachingSystem;Integrated Security=True";conn.Open();}public string updateclass( string classname, string departmentname, string teacherid){string str=null;string sqlstr = "update TS_class set TS_Class_name=@classname,TS_Class_department=@departmentname,TS_Class_teacherid=@t eacherid ";SqlCommand comm = new SqlCommand(sqlstr, conn);try{//comm.Parameters.Add(new SqlParameter("@classid", SqlDbType.VarChar, 50));comm.Parameters.Add(new SqlParameter("@classname", SqlDbType.VarChar, 50));comm.Parameters.Add(new SqlParameter("@departmentname", SqlDbType.VarChar , 50));comm.Parameters.Add(new SqlParameter("@teacherid", SqlDbType.VarChar , 50));//comm.Parameters["@classid"].Value =classid ;comm.Parameters["@classname"].Value =classname ;comm.Parameters["@departmentname"].Value = departmentname ;comm.Parameters["@teacherid"].Value =teacherid ;//comm.Connection.Open();comm.ExecuteNonQuery();str = "更新成功";}catch (Exception ex){str = ex.Message;}comm.Connection.Close();return str;}public DataSet Query(string selectstr){DataSet ds = new DataSet();try{SqlDataAdapter adp = new SqlDataAdapter(selectstr, conn);adp.Fill(ds);}catch (Exception){}return ds;}public void TS_BindGrid(){lianjie();string sqlstr = "select * from TS_class";//DataSet ds =Query(sqlstr);DataSet ds = Query(sqlstr);conn.Close();GridView1.DataSource = ds;GridView1.DataBind();}protected void Page_Load(object sender, EventArgs e){}protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e){//GridView1.EditIndex = (int)e.NewEditIndex;GridView1.EditIndex = (int)e.NewEditIndex;TS_BindGrid();}protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e){lianjie();//string classid = GridView1.DataKeys[(int)e.RowIndex].Value.ToString();string classname = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;string departmentname = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;string teacherid = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;string str = updateclass( classname, departmentname, teacherid);//conn.Close();Label1.Text = str;GridView1.EditIndex = -1;TS_BindGrid();}protected void Button1_Click(object sender, EventArgs e){lianjie();SqlCommand comm = new SqlCommand();comm.Connection = conn;mandText = "select * from TS_class where "+DropDownList1.SelectedValue +"='"+TextBox1 .Text +"'";DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = comm;sda.Fill(ds);conn.Close();GridView1.DataSource = ds.Tables[0];GridView1.DataBind();}protected void LinkButton1_Click(object sender, EventArgs e){lianjie();SqlCommand comm = new SqlCommand();comm.Connection = conn;mandText = "select * from TS_class ";DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter();sda.SelectCommand = comm;sda.Fill(ds);comm.ExecuteNonQuery();conn.Close();GridView1.DataSource = ds.Tables[0];GridView1.DataBind();}protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e){}}protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) {if (DropDownList1.SelectedItem.Text== "学号"){DropDownList2.Items.Clear();DataSet ds = new DataSet();DataTable dt = new DataTable();SqlConnection conn=new SqlConnection();conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integrated Security=True";conn.Open();SqlCommand comm = new SqlCommand();comm.Connection = conn;mandText = "select TS_Student_id from TS_student_course";SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = comm;da.Fill(ds);conn.Close();dt=ds.Tables[0];for (int i = 0; i < dt.Rows.Count; i++){DropDownList2.Items.Add((string)(dt.Rows[i][0]));}}if (DropDownList1.SelectedItem.Text== "课程号"){DropDownList2.Items.Clear();DataSet ds = new DataSet();DataTable dt = new DataTable();SqlConnection conn=new SqlConnection();conn.ConnectionString = "Data Source=.;Initial Catalog=TeachingSystem;Integrated Security=True";conn.Open();SqlCommand comm = new SqlCommand();comm.Connection = conn;mandText = "select distinct TS_Course_id from TS_student_course";SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = comm;ds.Reset();da.Fill(ds);conn.Close();dt=ds.Tables[0];for (int i = 0; i < dt.Rows.Count; i++){DropDownList2.Items.Add((string)(dt.Rows[i][0]));}}}。

c语言课程设计学生成绩管理系统流程图

c语言课程设计学生成绩管理系统流程图

C语言课程设计学生成绩管理系统流程图本文介绍了一个基于C语言的学生成绩管理系统的流程图设计。

该系统可以帮助学校管理学生的成绩信息,包括录入学生成绩、查询学生信息、统计学生成绩等功能。

1. 系统流程图概览graph LRA[开始] --> B(登录系统)B --> C{登录是否成功}C -- 是 --> D(显示菜单)C -- 否 --> BD --> E[输入操作选项]E --> F{选择操作}F -- 1 --> G(录入学生成绩)F -- 2 --> H(查询学生信息)F -- 3 --> I(统计学生成绩)F -- 4 --> J(显示菜单)F -- 5 --> K(退出系统)G --> L[输入学生信息]L --> M[保存学生成绩]M --> N[继续操作]N --> GH --> O[输入学生学号]O --> P[查询学生信息]P --> NI --> Q[统计学生成绩]Q --> R[显示统计结果]R --> NJ --> DK --> S[结束]2. 系统流程图详解2.1. 开始系统开始运行,进入登录界面。

2.2. 登录系统用户输入登录信息,包括用户名和密码。

2.3. 用户登录验证系统对用户输入的用户名和密码进行验证,包括检查用户名是否存在和密码是否匹配等。

•如果登录验证成功,进入显示菜单页面。

•如果登录验证失败,返回登录系统页面,提示用户重新输入。

2.4. 显示菜单系统显示主功能菜单,供用户选择需要执行的操作。

2.5. 输入操作选项用户根据菜单提示,输入相应的操作选项。

2.6. 选择操作系统根据用户输入的操作选项,执行相应的操作。

•如果用户选择录入学生成绩,进入输入学生信息步骤。

•如果用户选择查询学生信息,进入输入学生学号步骤。

•如果用户选择统计学生成绩,进入统计学生成绩步骤。

C语言学生管理系统代码

C语言学生管理系统代码
float average; //平均分
struct scores *snext;
}stscores;
//宏定义学生个人信息
#define stmes (stmessage *)malloc(sizeof(stmessage)) //为学生个人信息结构体开辟动态内存空间
fflush(stdin);
s--;
}
switch(a)
{
case '1': mainmessage(); continue;//学生基本信息
case '2': mainresult();continue;//学生的成绩信息
case '3': exit(1);//退出系统
void xiugairesult();//修改学生成绩信息
void delatemessag1();//删除学生个人基本信息
void delatemessag2();//删除班级学生基本信息
void delatemessag3();//删除系基本信息
void delatemessag4();//删除全校基本信息
void ziresult4();//学生成绩信息修改菜单
void addmessage();//添加学生基本信息
void judgefile();//判断文件是否存在
void addresult();//添加学生成绩信息
void searchresult();//查询学生成绩信息
void readresult();//加载学生成绩信息到程序
//全局变量
stmessage *head=NULL;
stscores *shead=NULL;

C语言图书管理系统源代码

C语言图书管理系统源代码

#include<stdio。

h〉#include<stdlib.h〉#include〈string。

h〉struct tushu{ /*图书结构体*/ char num[10]; /*编号*/char name[20];/*书名*/char writer[20];/*作者*/char press[20];/*出版社*/char kind[20];/*类别*/double time; /*时间*/double price;/*价格*/struct tushu *next;};struct stu /*学生结构体*/ {int snum;/*学号*/char mima[10]; /*密码*/struct stu *next;};FILE *fp; /*图书文件*/FILE *fp1; /*管理员信息文件*/ FILE *fp2; /*学生信息文件*/void menu();/*管理员主菜单(管理员进入对图书及学生信息进行管理操作)*/void xmenu();/*学生主菜单(学生进入可对图书,密码进行操作)*/void gfind(); /*管理员查询(管理员可按一定的方式查询图书)*/void xfind();/*学生查询(学生可按一定的方式查询图书)*/ void secret();/*管理员权限(管理员登陆所用,输入错误次数过多自动退出)*/void sort();/*排序(管理员可按一定的方式对图书进行排序,排序完之后可选择文件进行保存)*/void fprint(struct tushu *head);/*保存(可追加的保存,如添加可用)*/void fprint_(struct tushu *head);/*保存(可覆盖保存如修改,删除,排序后用)*/void hfprint(struct tushu *head); /*还书保存(还书成功后自动保存到文件)*/void jfprint_(struct tushu *head);/*借书保存(借书成功之后自动从图书馆删除)*/struct tushu * Input(); /*图书添加(可进行图书的添加)*/struct tushu *create(); /*从文件创建链表(从文件中读出信息,建立单链表)*/void gBrowse(struct tushu *head);/*管理员浏览(对图书进行遍历)*/void xBrowse(struct tushu *head);/*学生浏览(学生对图书进行遍历)*/void count(struct tushu *head); /*统计数量(管理员可对图书进行统计)*/void Findofname(struct tushu *head); /*按书名查找*/ void Findofwriter(struct tushu *head); /*按作者查找*/void Findofkind(struct tushu *head); /*按类别查找*/void xFindofname(struct tushu *head);/*学生按书名查找*/void xFindofwriter(struct tushu *head);/*学生按作者查找*/ void xFindofkind(struct tushu *head); /*学生按类别查找*/ void Sort_time(struct tushu * head); /*按时间排序(管理员按时间对图书进行排序,排序完之后可选择文件进行保存)*/ void Sort_price(struct tushu *head); /*按价格排序*/void Sort_num(struct tushu * head);/*按编号排序*/ void Delete(struct tushu * head,char m[15]);/*按编号删除(管理员可按编号删除图书)*/void Revise(struct tushu *head);/*修改(管理员可对图书进行修改,并选择是否保存)*/void borrow(struct tushu *head); /*借书*/void huanshu(); /*还书(学生借完书之后进行还书,若没有图书则不能借)*/void gxinxi(); /*管理员信息(有管理员的账号及密码,可进行修改)*/void xmima(struct stu *head1);/*学生密码修改(学生可对自己的密码进行修改)*/struct stu *xcreate();/*从文件创建学生信息(从文件读出学生信息,建立学生链表)*/void xsecret(struct stu *head1);/*学生权限(学生登陆所用)*/void menu() /*管理员主菜单(管理员进入对图书及学生信息进行管理操作)*/{int choice,n=0;struct tushu *head;struct stu *head1,*p;char m[15];there:printf("┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n"); printf(" ┃┃socat 图书管理系统printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf(" ┃●[0]退出系统┃\n");printf(” ┃┃\n”);prin tf(” ┃●[1]帮助┃\n");printf(” ┃┃\n”);printf(” ┃●[2]浏览图书┃\n");printf(” ┃┃\n");printf(” ┃●[3]统计图书数目┃\n”);printf(" ┃┃\n”);printf(” ┃●[4]查询┃\n”);printf(” ┃printf(” ┃●[5]添加┃\n");printf(” ┃┃\n”);printf(” ┃●[6]排序┃\n");printf(” ┃┃\n");printf(" ┃●[7]修改┃\n”);printf(” ┃┃\n");printf(" ┃●[8]删除┃\n”);printf(" ┃┃\n”);printf(" ┃●[9]修改账号及密码┃\n");printf(” ┃┃\n”);printf(” ┃●[10]学生信息printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n");printf(” 请选择:”);fflush(stdin);head=create();scanf("%d”,&choice);if(choice==1){//help();printf(”没有内容!\n”);system("pause”);system(”cls”);menu();}else if(choice==2){system(”cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause");system("cls");menu();}gBrowse(head);}else if(choice==3){system(”cls");count(head);}else if(choice==4){system("cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause”);system(”cls”);menu();}gfind();}else if(choice==5){Input();}else if(choice==6){system("cls");if(head==NULL){printf(”没有图书,请先添加图书!\n”); system("pause”);system(”cls”);menu();}sort(head);}else if(choice==7){system("cls”);if(head==NULL){printf(”没有图书,请先添加图书!\n”);system("pause");system("cls”);menu();}Revise(head);}else if(choice==8){if(head==NULL){printf("没有图书,请先添加图书!\n");system(”pause");system(”cls");menu();}printf(" 请输入想要删除的图书编号:”);scanf(”%s",m);Delete(head,m);}else if(choice==9){gxinxi();else if(choice==10){system(”cls”);head1=xcreate();if(head1==NULL){printf("没有学生信息,请到xuesheng_list.txt添加!\n”); sys tem(”pause”);system(”cls”);menu();}for(p=head1;p!=NULL;p=p—>next){printf(”学生学号密码\n”);printf("%d %s\n",p->snum,p—>mima);}system(”pause”);system("cls”);menu();}else if(choice==0)system(”cls");printf(”\n\n\n\n”);printf(” ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n”);exit(0);}else{system("cls");printf(”\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ");system("pause”);system(”cls”);n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出!━━━━━━━━\n\n\n”);printf(" ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n");system(”pause");exit(0);}goto there;}}void xmenu()/*学生主菜单(学生进入可对图书,密码进行操作)*/{struct tushu *head;struct stu *head1;int choice,n=0;there:printf(”┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");printf(” ┃┃socat 图书借阅系统┃┃\n");printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n"); printf(” ┃●[0]退出系统┃\n”);printf(” ┃printf(” ┃●[1]帮助┃\n”);printf(” ┃┃\n”);printf(” ┃●[2]浏览图书┃\n");printf(” ┃┃\n”);printf(" ┃●[3]查询┃\n”);printf(” ┃┃\n”);printf(” ┃●[4]借书┃\n");printf(” ┃┃\n”);printf(" ┃●[5]还书┃\n");printf(" ┃┃\n”);printf(” ┃●[6]修改密码printf("┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”); printf(" 请选择:");fflush(stdin);head=create();scanf("%d”,&choice);if(choice==1){//xhelp();printf(”没有内容!\n");system(”pa use");system(”cls”);xmenu();}else if(choice==2){system("cls");if(head==NULL){printf(”没有图书!\n");system("pause”);xmenu();}xBrowse(head);}else if(choice==3){if(head==NULL){printf(”没有图书!\n”);system(”pause”);system(”cls”);xmenu();}xfind();}else if(choice==4){if(head==NULL){printf(”没有图书!\n");system(”pause”);xmenu();}borrow(head);}else if(choice==5){huanshu(head);}else if(choice==6){system("cls”);head1=xcreate();if(head1==NULL){printf(”学生信息被清空!!\n”);system("pause");system("cls”);xmenu();}xmima(head1); ;}else if(choice==0){system("cls");printf(”\n\n\n\n”);printf(” ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n");exit(0);}else{system("cls”);printf("\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system(”pause”);system(”cls”);n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出!━━━━━━━━\n\n\n”);printf(” ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n”);system("pause”);exit(0);}goto there;}}void gfind()/*管理员查询(管理员可按一定的方式查询图书)*/{int choice,n=0;struct tushu *head;there:system(”cls”);printf(” ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n”);printf(” ┃┃socat 图书借阅系统┃┃\n”);printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");printf(" ┃●[0]返回┃\n");printf(" ┃┃\n”);printf(" ┃●[1]按书名查找┃\n”);printf(" ┃┃\n”);printf(" ┃●[2]按作者查找┃\n”);printf(” ┃┃\n”);printf(" ┃●[3]按类别查找┃\n”);printf(" ┃┃\n”);printf(" ┃● ┃\n”);printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”);printf(" 请选择:”);fflush(stdin);head=create();scanf(”%d”,&choice);if(choice==1){system(”cls");Findofname(head); }else if(choice==2){system(”cls”); Findofwriter(head); }else if(choice==3){system(”cls");Findofkind(head); }else if(choice==0){system(”cls”);menu();}else{system(”cls”);printf(”\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system("pause");system(”cls");n++;if(n==3){printf(" \n\n\n ━━━━━━━━你错误次数太多,自动退出! ━━━━━━━━\n\n\n”);printf(" ━━━━━━━━感谢使用图书管理系统━━━━━━━━\n\n\n”);system(”pause”);exit(0);}goto there;}}void xfind()/*学生查询(学生可按一定的方式查询图书)*/ {struct tushu *head;int choice,n=0;there:system("cls”);printf(” ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n”);printf(” ┃┃socat 图书借阅系统┃┃\n”);printf(” ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n");printf(” ┃●[0]返回┃\n”);printf(” ┃┃\n");printf(" ┃●[1]按书名查找┃\n”);printf(” ┃┃\n”);printf(" ┃●[2]按作者查找┃\n”);printf(" ┃┃\n");printf(” ┃●[3]按类别查找┃\n");printf(” ┃┃\n”);printf(" ┃● ┃\n");printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n"); printf(” 请选择:");fflush(stdin);head=create();scanf(”%d",&choice);if(choice==1){system(”cls”);xFindofname(head);}else if(choice==2){system(”cls”);xFindofwriter(head);}else if(choice==3){system("cls");xFindofkind(head);}else if(choice==0){system(”cls");xmenu();}else{system("cls");printf("\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system(”pause”);system(”cls");n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出!━━━━━━━━\n\n\n”);printf(” ━━━━━━━━感谢使用图书借阅系统━━━━━━━━\n\n\n”);system("pause”);exit(0);}goto there;}}void sort(){struct tushu *head;int choice,n=0;there:system("cls”);printf(” ┏━┓━━━━━━━━━━━━━━━━━━━┏━┓\n");printf(” ┃┃socat 图书借阅系统┃┃\n");printf(" ┃┗━━━━━━━━━━━━━━━━━━━┛┃\n”);printf(" ┃●[0]返回┃\n”);printf(” ┃┃\n");printf(” ┃●[1]按时间排序┃\n”);printf(” ┃┃\n”);printf(” ┃●[2]按价格排序┃\n");printf(" ┃┃\n”);printf(” ┃●[3]按编号排序┃\n”);printf(" ┃┃\n”);printf(” ┃●┃\n”);printf(”┗━━━━━━━━━━━━━━━━━━━━━━━┛\n”);printf(" 请选择:”);fflush(stdin);head=create();scanf("%d",&choice);if(choice==1){system("cls”); Sort_time(head);}else if(choice==2){sys tem(”cls");Sort_price(head);}else if(choice==3){system(”cls”);Sort_num(head); }else if(choice==0){system("cls”); menu();}else{system(”cls");printf("\n\n\n\n ━━━━输入错误,请重新输入!━━━━\n\n\n ”);system(”pause”);system(”cls”);n++;if(n==3){printf(” \n\n\n ━━━━━━━━你错误次数太多,自动退出! ━━━━━━━━\n\n\n”);printf(” ━━━━━━━━感谢使用图书借阅系统━━━━━━━━\n\n\n”);system("pause”);exit(0);}goto there;}}struct tushu *Input(){struct tushu *p1,*p2,*head,*ptr;char num;int x,i=0;system("cls”);p1=(struct tushu *)malloc(sizeof(struct tushu));head=p1;p1-〉price=—1;while(i!=1){printf(”请输入编号,以’#’结束\n”);scanf("%s",p1—>num);if(strcmp(p1-〉num,”#")==0)i=1;while(i!=1){printf(”请依次输入书名作者出版社类别出版时间价格\n”); scanf(”%s%s%s%s%lf%lf”,p1—>name,p1—>writer,p1—〉press,p1-〉kind,&p1-〉time,&p1—〉price);p2=p1;p1=(struct tushu *)malloc(sizeof(struct tushu));p2—〉next=p1;break;}}if(p1-〉price!=-1)p2—〉next=NULL;elsehead=NULL;system("cls”);printf("\n\n\n\t\t\t图书信息输入结束!\n\n\n”);system(”pause”);system(”cls”);printf(”\n\n\n\t\t\t是否保存图书信息?(1。

图介绍模板馆管理系统C语言程序设计之欧阳物创编

图介绍模板馆管理系统C语言程序设计之欧阳物创编

HUNAN UNIVERSITYC语言程序训练报告【设计目的】图书信息包括:读者登录号、管理员登录号、图书编号、作者名、种类、出版社、图书库存、图书借出数目等.图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作2)读者注册功能3)读者登录功能4)读者借书还书功能5)查询读者借阅记录6)查询在管图书信息功能7)修改密码功能8)管理员登录功能9)增加、修改、删除图书功能10)查看图书信息功能【设计思路】根据题目要求,应当把图书信息用结构体形式输入,应该提供以下结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的;管理员和读者登录界面及各自功能应有不同的实现。

【总体设计】【详细设计】1.主函数主函数设计要求简洁,只提供部分提示语和函数的调用源代码为//rkou.c 程序的入口#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include"head.h"#include"fuc.h"#include"picture.h"#include"jiangzhuo1.h" #include"output.h" main(){ int i=setup();switch (i){ case 0: while(n<50){ conects(n);}default: eros(i);}system("pause");}2.程序中全局变量声明定义,以及所有函数声明源代码为struct book //图书结构体声明{char name[50],classic[10],writer[20]; //书名,类别,作者int jn; //借出数量int zn; //在馆数量int bh; //图书编号};struct information //管理员和读者结构体声明{char name[10],no[12],key[10]; //姓名,账号,密码};struct show //图书借阅记录的结构体声明{char name1[10],name2[50],writer[20],no[12]; //书名,读者姓名,书的作者,读者账号int bh,o; //图书编号,借阅状况(未还,已还)};//以下为用到的全局变量struct book bk;struct information aa,rr;struct information stu[100];struct book bb[100];struct information ad[100];struct show ss[100];int i,j,k,s;int n=0;int x;FILE *fp;//以下函数主要功能:方便窗口与用户之间交换信息int regst();void password(char *a,int b,int j); //登陆时的输入函数void examine(int *a,int b); //保证键入的数据是数字void changepaw(int a,int b); //修改密码用到的提示函数void inputs0(); //输出图书类别以供用户选择void inputs1(int a,int b,int c,int d,int e); //方便用户输入图书各项信息(如书名,编号)void inputs2(int a,int b,int c); //方便用户输入管理员的信息(如账号姓名)void inputs3(int a,int b,int c); //方便用户输入读者的信息(如账号姓名)void eros(int i) ; //错误显示函数,操作一旦出错,则会出现相应的错误信息void conects(int j); //连接函数,选择界面//一下函数主要用于改变文件的内容并保存int setup() ; //数据初始化函数int xzc(char no[12],char key1[10],char key2[10],charname[10]); //读者注册函数int exam(char no[10],char key[10],int n); //密码账号检验函数int mp(char no[12],char key1[10],char key2[10],charkey3[10],int n); //密码修改函数void paixu(); //对图书按照编号从小到大的顺序进行排列int sc(int bh); //管理员删除图书信息函数int zj(struct book bb); //管理员增加图书信息函数int xg(struct book bb); //管理员修改图书信息函数int js(int bh,char no[12]); //借书函数int hs(int bh,char no[12]); //还书函数int bh1(int bh); //判断该编号的图书信息是否存在函数void bh2(int bh); //按照图书编号显示图书信息函数int sm1(char name[50]); //判断是否存在该名字的图书信息函数void sm2(char name[50]); //按照图书名字显示图书信息函数int zz1(char writer[20]); //判断是否存在该作者的图书信息函数void zz2(char writer[20]); //按照图书作者显示图书信息函数void lb(char classic[10]); //按类别显示图书信息int rck1(int bh); //判断该编号的图书的借书记录是否存在void rck2(int bh); //按编号显示图书借书情况int gck21(char no[12]); //判断该账号读者的借书记录是否存在void gck22(char no[12]); //按读者显示借书情况2void gck12(); //显示全部借书情况void gck23(); //管理员查看所有书的信息void copy(int bh); // 按编图书编号将图书信息暂时保存在另外一个结构体里面void copy2(char no[12]); //按管理员账号将管理员信息暂时保存在另外一个结构体里面void copy3(char no[12]); //按读者账号将读者信息暂时保存在另外一个结构体里面//pic() 函数:每个函数表示一个界面,conects函数将它们连接起来void pic0();void pic2(); void pic3(); void pic4(); void pic5(); void pic6(); void pic7(); void pic8(); void pic9(); void pic10(); void pic11(); void pic12(); void pic13(); void pic14(); void pic15(); void pic16(); void pic17(); void pic18(); void pic19(); void pic20(); void pic21(); void pic22();void pic24(); void pic25(); void pic26(); void pic27(); void pic29(); void pic30(); void pic31(); void pic32(); void pic33(); void pic34(); void pic35(); void pic36(); void pic37(); void pic38(); void pic39(); void pic40(); void pic41(); void pic42(); void pic43(); void pic44(); void pic45();void pic46();void pic47();void picc();3.用户输入以及界面反馈用到的功能函数源代码为int regst(){ char num[12],paw1[10],paw2[10],name[10];int i;printf("请输入账号\n(11字符以内,不能含有中文字符):\n");password(num,0,11);printf("输入您的密码\n(9字符以内,不能含有中文字符):\n");password(paw1,1,9);printf("请再次输入密码:\n");password(paw2,1,9);printf("输入您的姓名:\n");gets(name);system("cls");i=xzc(num,paw1,paw2,name);return i;}void password(char *a,int b,int j) { char c;int i=0;while((c=getch())!='\r'){ if(c==8){ printf("\b \b");if(i>0)i--;}else if(i<j){ if(b) printf("*");else printf("%c",c); a[i]=c;i++;}if(i==j){ printf("\a");}}a[i]='\0';printf("\n");}void examine(int *a,int b){ while(!scanf("%d",a)){ while(getchar()!='\n'); printf("请输入数字!!\n"); }rewind(stdin);if(b) system("cls");}void changepaw(int a,int b){ int i;char c1[10],c2[10],c3[10];printf("请输入原密码\n");password(c1,1,9);printf("请输入新密码\n");password(c2,1,9);printf("请再次输入新密码\n");password(c3,1,9);system("cls");if(b){ i=mp(aa.no,c1,c2,c3,b);if(i){ eros(i);n=27;}else n=26;}else{ i=mp(rr.no,c1,c2,c3,b);if(i){ eros(i);n=44;}else n=43;}}void inputs0(){ int i=1;while(i==1){ printf("1.A类\n2.B类\n3.C类\n4.D类\n5.E类\n6.F类\n");examine(&i,1);switch(i){ case 1: strcpy(bk.classic,"A类");i=0;break; case 2: strcpy(bk.classic,"B类");i=0;break; case 3: strcpy(bk.classic,"C类");i=0;break; case 4: strcpy(bk.classic,"D类");i=0;break;case 5: strcpy(bk.classic,"E类");i=0;break; case 6: strcpy(bk.classic,"F类");i=0;break; default: i=1;}}}void inputs1(int a,int b,int c,int d,int e){ int i;switch(a){ case 1: printf("请输入图书编号:\n");examine(&bk.bh,1);default: ;}switch(b){ case 1: printf("请输入图书名称:\n");gets();default: ;}switch(c){ case 1: printf("请输入图书的作者:\n");gets(bk.writer);default: ;switch(d){ case 1: printf("请输入该图书的库存:\n");examine(&bk.zn,1);default: ;}system("cls");switch(e){ case 1: printf("请选择图书类别:\n");inputs0();default: ;}}void inputs2(int a,int b,int c){ switch(a){ case 1: printf("请输入账号:\n");password(aa.no,0,11);default: ;}switch(b){ case 1: printf("请输入密码:\n"); password(aa.key,1,9);default: ;switch(c){ case 1: printf("请输入姓名:\n");gets(); default: ;}system("cls");}void inputs3(int a,int b,int c){ switch(a){ case 1: printf("请输入账号:\n");password(rr.no,0,11);default: ;}switch(b){ case 1: printf("请输入密码:\n"); password(rr.key,1,9);default: ;}switch(c){ case 1: printf("请输入姓名:\n");gets();default: ;}system("cls");}void eros(int i) //错误函数{ switch (i){ case -1: printf("error1 !初始化失败\n\n");break; case -2: printf("error2 !账号不存在\n\n");break;case -3: printf("error3 !账号不存在\n\n");break; case -4: printf("error4 !密码错误\n\n");break;case -5: printf("error5 !输入的密码不一致\n\n");break;case -6: printf("error6 !编号不存在\n\n");break;case -7: printf("error7 !书名不能为空\n\n");break; case -8: printf("error8 !作者名字不能为空\n\n");break;case -9: printf("error9 !无此图书编号的记录\n\n");break;case -10: printf("error10 !无此账号的记录\n\n");break;case -11: printf("error11 !原始密碼輸入錯誤\n\n");break;case -12: printf("error12 !您已经归还此书\n\n");break;case -13: printf("error13 !您所增加的图书编号已存在\n\n");break;case -14: printf("error14 !搜索不到此书的相关信息\n\n");break;case -15: printf("error15 !搜索不到该作者的信息\n\n");break;case -16: printf("error16 !打不开文件,保存失败\n\n");break;case -17: printf("error17 !该图书信息已存在\n\n");break;case -18: printf("error18 !您没有借过这本书\n\n");break;case -19: printf("error19 !您已经借阅了这本书,不能再借\n\n");break;;case -20: printf("error20 !抱歉,图书已经借完了\n\n");break;case -21: printf("error21 !账号已存在\n\n") ; break; case -22: printf("error22 !还有图书未还,不能删除该条信息\n\n");break;default : ;}}void conects(int j){ switch(j){ case 0: pic0();break; case 1: pic1();break; case 2: pic2();break; case 3: pic3();break; case 4: pic4();break; case 5: pic5();break; case 6: pic6();break; case 7: pic7();break; case 8: pic8();break; case 9: pic9();break; case 10: pic10();break; case 11: pic11();break; case 12: pic12();break; case 13: pic13();break; case 14: pic14();break; case 15: pic15();break; case 16: pic16();break; case 17: pic17();break; case 18: pic18();break; case 19: pic19();break;case 21: pic21();break; case 22: pic22();break; case 23: pic23();break; case 24: pic24();break; case 25: pic25();break; case 26: pic26();break; case 27: pic27();break; case 29: pic29();break; case 30: pic30();break; case 31: pic31();break; case 32: pic32();break; case 33: pic33();break; case 34: pic34();break; case 35: pic35();break; case 36: pic36();break; case 37: pic37();break; case 38: pic38();break; case 39: pic39();break; case 40: pic40();break; case 41: pic41();break; case 42: pic42();break;case 44: pic44();break;case 45: pic45();break;case 46: pic46();break;case 47: pic47();break;default: ;}}4.文件操作各种函数源代码为//jiangzhuo1.h文件操作各种函数int setup() //数据初始化函数{FILE *fp;fp=fopen("reader.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{i=0;while(!feof(fp)){fscanf(fp,"%s %s %s",stu[i].name,stu[i].no,stu[i].key); //将文档里面的数据格式化读取到结构体数组里面i++;}i=i-1;}fclose(fp);fp=fopen("ad.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{j=0;while(!feof(fp)){fscanf(fp,"%s %s %s",ad[j].name,ad[j].no,ad[j].key); //将文档里面的数据格式化读取到结构体数组里面j++;}j=j-1;}fclose(fp);fp=fopen("book.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{k=0;while(!feof(fp)){fscanf(fp,"%d %s %s %s %d %d ",&bb[k].bh,bb[k].name,bb[k].classic,bb[k].writer,&bb[k] .zn,&bb[k].jn); //将文档里面的数据格式化读取到结构体数组里面k++;}k=k-1;fclose(fp);fp=fopen("show.txt","r"); //对文档以只读的方式进行操作if(fp==NULL){return -1; //当文件打不开时返回-1}else{s=0;while(!feof(fp)){fscanf(fp," %s %s %d %s %s %d ",ss[s].name1,ss[s].no,&ss[s].bh,ss[s].name2,ss[s].writer, &ss[s].o); //将文档里面的数据格式化读取到结构体数组里面s++;}s=s-1;}fclose(fp);return 0; //当操作全部正确时返回0int xzc(char no[12],char key1[10],char key2[10],char name[10]) //读者注册函数{ int x=0;for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断读者输入的账号与结构体里面的账号是否相同{return -21;break;}if(x==i && strcmp(no,stu[x].no))//判断读者输入的账号与结构体里面的账号是否相同{if(!strcmp(key1,key2)) //判断读者两次输入的密码是否一致{i=i+1;strcpy(stu[i].name,name);strcpy(stu[i].no,no);strcpy(stu[i].key,key1);fp=fopen("reader.txt","a"); //对文件以写的方式将注册的信息保存到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%s\t\t%s\t\t%s\n",stu[i].name,stu[i].no,stu[i]. key);}fclose(fp);return 0;}else{return -5;}}}}int exam(char no[10],char key[10],int n) //密码账号检验函数if(n==0) //对读者的密码和账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //判断该账号是否存在{if(!strcmp(key,stu[x].key)) //当账号存在时判断与之相应的密码是否相同{return 0;break;}else{return -4;break;}}if(x==i && strcmp(no,stu[x].no)){return -3;}}if(n==1) //对管理员的密码账号信息进行检验{for(x=0;x<=i;x++){if(!strcmp(no,ad[x].no)) //判断该账号是否存在{if(!strcmp(key,ad[x].key)) //判断与之相应的密码是否存在 {return 0;break;}else{return -4;break;}}if(x==j && strcmp(no,ad[x].no)){return -3;}}}}int zj(struct book b) //管理员增加图书信息函数{ int x;for(x=0;x<=k;x++){ if(bb[x].bh==b.bh) //判断所增加的图书编号是否已存在{return -13;break;}if(!strcmp(,bb[x].name)&&!strcmp(b.writer,bb[x] .writer)) //判断所增加的图书是否存在{ return -17;break;}if(x==k){ if(strlen(bb[0].name)==0) //判断文档的第一行是否为空k=k;elsek=k+1;bb[k].bh=b.bh; //将所增加的图书信息添加到结构体里面strcpy(bb[k].name,);strcpy(bb[k].classic,b.classic);strcpy(bb[k].writer,b.writer);bb[k].zn=b.zn;bb[k].jn=b.jn;fp=fopen("book.txt","a"); //将增加的图书信息追加到文件里面if(fp==NULL)return -16;else{fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[k].bh,bb[k].name,bb[k].classic,bb[k] .writer,bb[k].zn,bb[k].jn);}fclose(fp);return 0;}}}int sc(int bh) //管理员删除图书信息函数{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断所删除图书的编号是否存在 {if(bb[x].jn!=0)return -22;for(x=x;x<=k-1;x++){bb[x]=bb[x+1]; //删除图书信息后将该图书信息后面的图书信息依次前移}k--;fp=fopen("book.txt","w+"); //将删除后的所有图书信息重新写入文档if(fp==NULL)return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x]. writer,bb[x].zn,bb[x].jn);}}fclose(fp);return 0;break;}}}int mp(char no[12],char key1[10],char key2[10],char key3[10],int n) //密码修改函数{ int x;if(n==0) //读者密码修改{for(x=0;x<=i;x++){if(!strcmp(no,stu[x].no)) //定位读者账号位置{if(!strcmp(stu[x].key,key1)) //判断输入的原密码是否正确{ if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(stu[x].key,key3);fp=fopen("reader.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=i;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",stu[x].name,stu[x].no,stu[x ].key);}fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}if(n==1) //管理员密码修改{for(x=0;x<=j;x++){if(!strcmp(no,ad[x].no)) //定位管理员账号位置{if(!strcmp(key1,ad[x].key)) //判断输入的原密码是否正确{if(!strcmp(key2,key3)) //判断两次输入的新密码是否一致{strcpy(ad[x].key,key3);fp=fopen("ad.txt","w+"); //将修改后的信息保存在文件里面if(fp==NULL)return -16;else{for(x=0;x<=j;x++)fprintf(fp,"%s\t\t%s\t\t%s\n",ad[x].name,ad[x].no,ad[x]. key);}fclose(fp);return 0;}else{return -5;}}elsereturn -11;}}}}int xg(struct book b) //管理员修改图书信息函数{ int x;if(strlen()==0) //判断所输入的要修改的图书名字是否为空{return -7;}else{if(strlen(b.writer)==0) //判断所输入的要修改的图书作者是否为空{return -8;}else{for(x=0;x<=k;x++){if((bb[x].bh==b.bh)) //定位要修改的图书编号位置{strcpy(bb[x].name,); //将修改后的信息保存在结构体里strcpy(bb[x].classic,b.classic);strcpy(bb[x].writer,b.writer);bb[x].zn=b.zn;bb[x].jn=b.jn;fp=fopen("book.txt","w+"); //将修改后的所有信息保存在文件里if(fp==NULL)return -16;else{for(x=0;x<=k;x++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x]. writer,bb[x].zn,bb[x].jn);}}fclose(fp);return 0;}}}}}void copy(int bh) // 按编图书编号将图书信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=k;x++){if(bb[x].bh==bh){strcpy(,bb[x].name);strcpy(bk.classic,bb[x].classic);strcpy(bk.writer,bb[x].writer);bk.zn=bb[x].zn;bk.jn=bb[x].jn;bk.bh=bb[x].bh;}}}void copy2(char no[12]) //按管理员账号将管理员信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=j;x++){if(!strcmp(ad[x].no,no)){strcpy(,ad[x].name);strcpy(aa.key,ad[x].key);}}}void copy3(char no[12]) //按读者账号将读者信息暂时保存在另外一个结构体里面{ int x;for(x=0;x<=i;x++){if(!strcmp(stu[x].no,no)){strcpy(,stu[x].name);strcpy(rr.key,stu[x].key);}}}int js(int bh,char no[12]) //借书函数{ int x,y,z;for(x=0;x<=k;x++){if(bb[x].bh==bh) //判断借书编号是否存在{if(bb[x].zn>0) //判断在馆数是否为0{if(strlen(ss[0].name1)==0) //判断文件里面的第一行信息是否存在{for(y=0;y<=i;y++){if(!strcmp(stu[y].no,no)){ --bb[x].zn; //修改借书后的信息++bb[x].jn;ss[0].o=2;strcpy(ss[0].name1,stu[y].name); //将借书后的信息保存在结构体数组里面strcpy(ss[0].no,no);strcpy(ss[0].writer,bb[x].writer);strcpy(ss[0].name2,bb[x].name);ss[0].bh=bh;}}}else{for(y=0;y<=s;y++){if((ss[y].bh==bh )&&!strcmp(ss[y].no,no)) //定位与输入的编号和账号一致的借书记录{if(ss[y].o==2) //判断是否已借过该书return -19;else{--bb[x].zn; //修改借书后的信息++bb[x].jn;ss[y].o=2;}}else{if(y==s){s++;for(z=0;z<=i;z++){if(!strcmp(stu[z].no,no)) //定位读者信息{bb[x].zn--; //修改借书后的信息bb[x].jn++;strcpy(ss[s].name1,stu[z].name);strcpy(ss[s].name2,bb[x].name);strcpy(ss[s].no,no);strcpy(ss[s].writer,bb[x].writer);ss[s].bh=bb[x].bh;ss[s].o=2;}}}}}}fp=fopen("book.txt","w+"); //将借书后的图书信息写入文件if(fp==NULL)return -16;else{for(y=0;y<=k;y++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[y].bh,bb[y].name,bb[y].classic,bb[y]. writer,bb[y].zn,bb[y].jn);}}fclose(fp);fp=fopen("show.txt","w+"); //将借书记录写入文件if(fp==NULL)return -16;else{for(y=0;y<=s;y++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[y].name1,ss[y].no,ss[y].bh,ss[y].name2,ss[y].writer,ss[y].o);} }fclose(fp);return 0;}elsereturn -20;}}}int hs(int bh,char no[12]) //还书函数{ int x,p;for(x=0;x<=s;x++){if(ss[x].bh==bh && !strcmp(ss[x].no,no)) //判断其借书记录是否存在{ if(ss[x].o==2) //判断该书是否被借过{ for(p=0;p<=k;p++){if(bb[p].bh==bh) //修改还书后的图书信息{ ++bb[p].zn;--bb[p].jn;}}ss[x].o=1;fp=fopen("book.txt","w+"); //将还书后的所有图书信息重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=k;p++){fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[p].bh,bb[p].name,bb[p].classic,bb[p ].writer,bb[p].zn,bb[p].jn);}}fclose(fp);fp=fopen("show.txt","w+"); //将还书后的所有借书记录重新写入文件if(fp==NULL)return -16;else{for(p=0;p<=s;p++){fprintf(fp,"%-20s\t%s\t%d\t%-30s\t%-10s\t%d\n",ss[p].name1,ss[p].no,ss[p].bh,ss[p].name2,ss [p].writer,ss[p].o);}}fclose(fp);return 0;}else{return -12;}elseif(x==s)return -18;}}void paixu() //对图书按照编号从小到大的顺序进行排列{ int x,flag;struct book a;do //用冒泡法排序{flag=1;for(x=0;x<=k-1;x++){if(bb[x].bh>bb[x+1].bh){a=bb[x+1];bb[x+1]=bb[x];bb[x]=a;flag=0;}}while(flag==0);fp=fopen("book.txt","w+"); //将排序后的信息重新写入文件for(x=0;x<=k;x++)fprintf(fp,"%d\t%-30s\t%-30s\t%-10s\t%d\t%d\n",bb[x].bh,bb[x].name,bb[x].classic,bb[x]. writer,bb[x].zn,bb[x].jn);fclose(fp);}5.登陆界面所有函数源代码为// picture.h 登陆界面所有函数void pica(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:管理员\n",aa.no,);printf("------------------------------------------------------------------------\n\n");}void picb(){ printf("\n登陆用户:%-16s登陆者:%-16s权限:读者\n",rr.no,);printf("------------------------------------------------------------------------\n\n");}void pic0() //登陆界面{ printf("\n\t\t\t欢迎登陆湖南大学图书管理系统\n");printf("------------------------------------------------------------------------\n\n");printf("1.登陆\n2.读者注册\n3.退出系统\n\n");printf("------------------------------------------------------------------------\n\n");examine(&x,1);switch(x){ case 1: n=1;break;case 2: n=45;break;case 3: n=50;break;default:;}}void pic1() //管理员登陆界面{ int i;printf("\n\t\t\t\t登陆\n");。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档