C语言专业课程设计之杂志订阅管理

合集下载

c语言书籍管理系统课程设计

c语言书籍管理系统课程设计

c语言书籍管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在书籍管理系统中的应用,掌握基本的数据类型、运算符、控制结构等知识;2. 学生能掌握文件操作、指针等C语言高级特性,并应用于书籍管理系统的开发;3. 学生了解并掌握书籍管理系统中的模块划分,如用户模块、书籍模块、借阅模块等。

技能目标:1. 学生能运用C语言编写简单的书籍管理系统程序,实现用户注册、登录、查询书籍、借阅书籍等功能;2. 学生能通过调试和优化程序,提高书籍管理系统的稳定性和性能;3. 学生能运用所学知识解决实际编程问题,具备一定的编程实践能力。

情感态度价值观目标:1. 学生通过本课程的学习,培养对计算机编程的兴趣和热情,提高自主学习能力和团队协作能力;2. 学生在学习过程中,养成认真、严谨、求实的科学态度,勇于面对和解决问题;3. 学生通过书籍管理系统项目实践,培养创新意识,认识到计算机技术在现实生活中的重要作用。

课程性质:本课程为C语言编程实践课程,以项目驱动的方式进行教学,注重培养学生的编程能力和实际应用能力。

学生特点:学生为高中年级,已具备一定的C语言基础,对编程有一定的兴趣,但实践能力有待提高。

教学要求:教师应注重理论与实践相结合,引导学生主动参与项目实践,培养其分析问题、解决问题的能力。

同时,关注学生的个体差异,给予个性化的指导和帮助。

通过课程目标的分解,确保学生达到预期的学习成果。

二、教学内容1. C语言基础回顾:数据类型、变量、常量、运算符、表达式、控制结构(顺序、选择、循环)。

2. 函数与模块化编程:函数定义、调用、参数传递;模块化编程思想,编写功能独立的模块。

3. 文件操作:文件的打开、关闭、读写操作;文件的随机访问。

4. 指针与数组:指针的概念、运算;指针与数组的关系;动态内存分配。

5. 结构体与共用体:定义和使用结构体、共用体;结构体数组;结构体指针。

6. 书籍管理系统需求分析:分析系统功能模块,如用户管理、书籍管理、借阅管理等。

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

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

中南大学信息院C语言课程设计——图书管理系统#include<stdio.h>#include<string.h>#include<graphics.h>#include<conio.h>#include<stdlib.h>#include<ctype.h>#define NULL 0#define M 100int addbook(struct book s[]);void showbook(struct book s[],int n);void chabook(struct book s[],int n);int addbook1(struct book s[]);int delbook(struct book s[],int n);void savebook(struct book s[],int n);void editbook(struct book s[],int n);int openbook(struct book s[]);void renewbook();void countbook();main(){char n;struct book book[M];int drive=DETECT,mode,length;initgraph(&drive,&mode,"");cleardevice();setbkcolor(9);printf("\16[co4st8e320,170,0,360,300,70,2,4]");printf("\16[{-10|20@48,24=2(14)9中南大学}]");printf("\16[{-90|140@55,55=11(13)9图书管理系统}]");printf("\16[{-246|280@20,20=8(12)9设计者:自动化0706***}]");printf("\16[{-250|360@20,20=8(4)9请按ENTER键进入}]");getch();for(;;){cleardevice();setblcolor(9);printf("\16[{-5|30@40,40=30(2)9~~~~~~~~~~~~~菜单~~~~~~~~~~~~~}]"); printf("\16[{-130|100@35,35=30(7)9a 输入}]");printf("\16[{-400|100@35,35=30(7)9b 显示}]");printf("\16[{-130|145@35,35=30(7)9c 修改}]");printf("\16[{-400|145@35,35=30(7)9d 查找}]");printf("\16[{-130|205@35,35=30(7)9e 删除}]");printf("\16[{-400|205@35,35=30(7)9f 恢复}]");printf("\16[{-130|260@35,35=30(7)9g 添加}]");printf("\16[{-400|260@35,35=30(7)9h 统计}]");printf("\16[{-130|315@35,35=30(7)9i 保存}]");printf("\16[{-400|315@35,35=30(7)9j 打开}]");printf("\16[{-130|360@35,35=30(7)9k 退出}]");printf("\16[{-400|360@35,35=11(7)4j 请选择a至j}]"); getch();if(n=='k')break;else switch(n);{case 'a':length=addbook(book);break;case 'b':showbook(book,length);break;case 'c':editbook(book,length);break;case 'd':chabook(book,length);break;case 'e':length=delbook(book,length);break;case 'f':renewbook();break;case 'g':length=addbook1(book,length);break;case 'h':countbook();break;case 'i':savebook(book,length);break;case 'j':length=openbook(book);break;}}}struct book{int num;int isbn;char bookname[10];char bookcreat[10];int bookpub;int bookprice;int storage;int lend;int wholebook;struct book *link,*next;};int addbook(struct book s[]){int i,n;printf("输入记录个数:");scanf("%d",n);printf("输入数据:");do{printf("请输入第%d本书的序号\n",i+1);scanf("%d",s[i].num);printf("请输入书的代号:\n");scanf("%d",s[i].isbn);printf("请输入书名\n");scanf("%s",s[i].bookname);printf("请输入书的作者\n");scanf("%s",s[i].bookcreat);printf("请输入书的出版时间\n");scanf("%d",s[i].bookpub);printf("请输入书的单价\n");scanf("%d",s[i].bookprice);printf("请输入书的库存量\n");scanf("%d",s[i].storage);printf("请输入书的借出数量\n");scanf("%d",s[i].lend);s[i].wholebook=s[i].storage+s[i].lend;}return n;}void showbook(struct book s[],int n){int i;printf("\n这本书的详细资料是:");printf("\n|序号|书代号|书名|作者|出版时间|单价|库存|借出|总量|\n"); for(i=0;i<n;i++){printf("\n%d|%d|%s|%s|%d|%d|%d|%d|%d\n",s[i].num,s[i].isbn,s[i].b ookname,s[i].bookcreat,s[i].bookpub,s[i].bookprice,s[i].storage,s[i].lend,s[i ].wholebook);}printf("\n显示完毕.\n");getchar();return;}void chabook(struct book s[],int n){char name[10];int i;printf("\n输入要查的书名:\n");scanf("%s",name);for(i=0;i<n;i++)if(strcmp(name,book[i].bookname)==0){printf("\n找到的书的详细资料是:");printf("\n|序号|书代号|书名|作者|出版时间|单价|库存|借出|总量|\n"); printf("\n%d|%d|%s|%s|%d|%d|%d|%d|%d\n",s[i].num,s[i].isbn,s[i].book name,s[i].bookcreat,s[i].bookpub,s[i].bookprice,s[i].storage,s[i].lend,s[i ].wholebook);}if(i>=n)printf("\n没有这本书!\n");getchar();return;}int addbook1(struct book s[]){struct book temp;char num[10];int i,j;printf("\n请输入插入的书的序号:\n");scanf("%s",num);printf("\n请输入插入的书的信息:\n");printf("请输入书序号\n");scanf("%d",temp.num);printf("请输入书代号\n");scanf("%d",temp.isbn);printf("请输入书名\n");scanf("%s",temp.bookname);printf("请输入书的作者\n");scanf("%s",temp.bookcreat);printf("请输入书的出版时间\n");scanf("%d",temp.bookpub);printf("请输入书的单价\n");scanf("%d",temp.bookprice);printf("请输入书的库存量\n");scanf("%d",temp.storage);printf("请输入书的借出数量\n");scanf("%d",temp.lend);temp.wholebook=temp.storage+temp.lend;for(i=0;i<n;i++){if(strcmp(num,s[i].num)==0){for(j=n-1;j>=i;j--){strcpy(s[j+1].num,s[j].num);strcpy(s[j+1].isbn,s[j].isbn);strcpy(s[j+1].bookname,s[j].bookname);strcpy(s[j+1].bookcreat,s[j].bookcreat);strcpy(s[j+1].bookpub,s[j].bookpub);strcpy(s[j+1].bookprice,s[j].bookprice);s[j+1].storage=s[j].storage;s[j+1].lend=s[j].lend;s[j+1].wholebook=s[j].wholebook;}strcpy(s[i].num,temp.num);strcpy(s[i].isbn,temp.isbn);strcpy(s[i].bookname,temp.bookname);strcpy(s[i].bookcreat,temp.bookcreat);strcpy(s[i].bookpub,temp.bookpub);strcpy(s[i].bookprice,temp.bookprice);s[i].storage=temp.storage;s[i].lend=temp.lend;s[i].wholebook=temp.wholebook;}}printf("\n---------序号%7s的书已经插入--------\n"); printf("\n存盘!\n");}int delbook(struct book book s[],int n){char num[10];int i,j;printf("\n请输入要删除的书的序号:\n");scanf("%s",num);{if(strcmp(num,s[i].num)==0){strcpy(s[i].num,s[n+1].num);strcpy(s[i].isbn,s[n+1].isbn);strcpy(s[i].bookname,s[n+1].bookname);strcpy(s[i].bookcreat,s[n+1].bookcreat);strcpy(s[i].bookpub,s[n+1].bookpub);strcpy(s[i].bookprice,s[n+1].bookprice);s[i].storage=s[n+1].storage;s[i].lend=s[n+1].lend;s[i].wholebook=s[n+1].wholebook;}{for(j=i+1;j<n;j++){strcpy(s[j-1].num,s[j].num);strcpy(s[j-1].isbn,s[j].isbn);strcpy(s[j-1].bookname,s[j].bookname);strcpy(s[j-1].bookcreat,s[j].bookcreat);strcpy(s[j-1].bookpub,s[j].bookpub);strcpy(s[j-1].bookprice,s[j].bookprice);s[j-1].storage=s[j].storage;s[j-1].lend=s[j].lend;s[j-1].wholebook=s[j].wholebook;}break;}}n--;return (n);}void savebook(struct book s[],int n){FILE *fp;int i;char outfile[20];printf("\n输入文件名格式.例如:c:\\cfile\\inf.tex\n"); scanf("%s",outfile);if((fp=fopen(outfile,"wb"))==NULL){printf("\n不能打开文件!\n");return;}else{for(i=0;i<n;i++)fwrite(&s[i],sizeof(struct book),1,fp);fclose(fp);printf("\n保存成功!\n");}}int openbook(struct book s[]){FILE *fp;int n=0;char infile[20];printf("\n输入文件名.例如:c:\\cfile\\inf.tex\n");scanf("%s",infile);if((fp=fopen(infile,"rb"))==NULL){printf("\n无法打开文件!\n");return 0;}else{if(fp!=NULL)while(!feof(fp)){fread(&s[n],sizeof(struct book),1,fp);n++;}fclose(fp);printf("\n读取数据成功!\n");}return --n;}void editbook(struct book s[],int n) {char num[10],ch;int i;printf("\n请输入要修改的书的序号:\n"); scanf("%s",num);getchar();for(i=0;i<n;i++)if(strcmp(s[i].num,num)==0)break;if(i>=n)printf("\n没有这本书!\n");else{printf("修改书序号?(y/n)");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("请输入新的序号:\n");scanf("%d",s[i].num);getchar();}printf("修改书代号?(y/n)");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("请输入新的代号:\n");scanf("%d",s[i].isbn);getchar();}printf("修改书名?(y/n)");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("请输入新的书名:\n");scanf("%s",s[i].bookname);getchar();}printf("修改书作者名?(y/n)");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("请输入新的作者名:\n");scanf("%s",s[i].bookcreat);getchar();}printf("修改书出版时间?(y/n)");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("请输入新的出版时间:\n");scanf("%d",s[i].bookpub);getchar();}printf("修改书的单价?(y/n)");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("请输入新的单价:\n");scanf("%d",s[i].bookprice);getchar();}printf("修改书库存?(y/n)");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("请输入新的库存量:\n");scanf("%d",s[i].storage);getchar();}printf("修改书借出量?(y/n)");ch=getchar();getchar();if(ch=='y'||ch=='Y'){printf("请输入新的借出量:\n");scanf("%d",sk[i].lend);getchar();}s[i].wholebook=s[i].storage+s[i].lend;}printf("\n");return;}renewbook(struct book s[],int n){char num[4],ch;printf("是否恢复删除啊书籍资料?(y/n)");ch=getch();if(ch=='y'||ch=='Y'){strcpy(s[n+1].num,s[n-1].num);strcpy(s[n+1].isbn,s[n-1].isbn);strcpy(s[n+1].bookname,s[n-1].bookname); strcpy(s[n+1].bookcreat,s[n-1].bookcreat); strcpy(s[n+1].bookpub,s[n-1].bookpub);strcpy(s[n+1].bookprice,s[n-1].bookprice);s[n+1].storage=s[n-1].storage;s[n+1].lend=s[n-1].lend;s[n+1].wholebook=s[n-1].wholebook;printf("所有数据已恢复到之前保存的状态,请按任意键返回到菜单查询!");ch=getch();return;}if(ch=='n'||ch=='N')return;}countbook(struct book s[],int n){FILE *fp;int i,n;float s1;char sno[9],qno[9],*ptr;struct book *p,*q;clrscr();printf("\n\n********************统计***********************\n");printf("各图书数量机器金额请返回主菜单,单独查询该书的资料!\n");printf("全部图书详细资料信息详见主菜单"打开"程序");printf("其他要求请选择:\n1.统计2000年以前出版的图书数量及金额\n2.统计2000你以后出版的图书数量及金额\n3.累计图书总量及总金额\no.返回\n");n=getch();switch(n){case '1':count1();getchar();break;case '2':count2();getchar();break;case '3':count3();getchar();break;case '0':break;default:printf("无此操作!\n");}while(n!='0');return;}count1(struct book s[],int n){int i,k=0;fread(s[i],sizeof(struct book),1,fp);for(i=0;i<n;i++){if(s[i].bookpub<2000)printf("序号|书代号|书名|作者|出版时间|单价|库存|借出|总量\n"); printf("\n%d|%d|%s|%s|%d|%d|%d|%d|%d\n",s[i].num,s[i].isbn,s[i].b ookname,s[i].bookcreat,s[i].bookpub,s[i].bookprice,s[i].storage,s[i].lend,s[i ].wholebook);k+=1;}printf("书库内共有%d本不同的书是2000以前出版的.",k);for(i=0;i<n;i++){if(i>0){sum+=n[i].bookprice;}}printf("这里所有书单价的总金额为:%d",&sum);getchar();return 0;}count2(struct book s[],int n){int i,k=0;fread(s[i],sizeof(struct book),1,fp);for(i=0;i<n;i++){if(s[i].bookpub>2000)printf("序号|书代号|书名|作者|出版时间|单价|库存|借出|总量\n"); printf("\n%d|%d|%s|%s|%d|%d|%d|%d|%d\n",s[i].num,s[i].isbn,s[i].b ookname,s[i].bookcreat,s[i].bookpub,s[i].bookprice,s[i].storage,s[i].lend,s[i ].wholebook);k+=1;}printf("书库内共有%d本不同的书是2000以后出版的.",k);for(i=0;i<n;i++){if(i>0){sum+=s[i].bookprice;}}printf("这里所有书的单价总金额为:%d",&sum);getchar();return 0;}count3(struct book s[],int n){int i,j;double sum=0;fread(s[i],sizeof(struct book),1,fp);for(i=0;i<n;i++){if(i>0){sum+=s[i].bookprice;j+=1;printf("序号|书代号|书名|作者|出版时间|单价|库存|借出|总量\n");printf("\n%d|%d|%s|%s|%d|%d|%d|%d|%d\n",s[i].num,s[i].isbn,s[i].b ookname,s[i].bookcreat,s[i].bookpub,s[i].bookprice,s[i].storage,s[i].lend,s[i ].wholebook);}}printf("\n所有书的单价总金额为:%d",&sum);printf("\n总共有%d本书.",k);printf("\n请按任意键返回.");getchar();return;}。

c语言程序设计 报刊管理系统

c语言程序设计  报刊管理系统
do
{printf("\n报刊号:");
scanf("%d",&magazine[i].num);
printf("\n报刊名:");
scanf("%s",magazine[i].name);
printf("\n报刊类别:");
scanf("%s",magazine[i].kind);
printf("\n 9.出版社\n");
printf("\n 0.退出操作\n");
printf("\n 请选择(0~9):");
scanf("%d",&choice);
switch(choice)
printf("\n 5.报刊进价\n");
printf("\n 6.报刊售价\n");
printf("\n 7.进货日期\n");
printf("\n 8.出版日期\n");
printf("\n报刊总量:");
scanf("%d",&magazine[i].amount);
printf("\n报刊进价:");
scanf("%d",&magazine[i].in_price);
printf("\n报刊售价:");
scanf("%d",&magazine[i].out_price);
sum=i;

c语言课程设计报告 图书管理系统

c语言课程设计报告 图书管理系统

合肥师范学院三孝口校区:合肥市金寨路237号 邮编:230061锦绣校区:合肥经济技术开发区莲花路1688号 邮编:230601课程设计报告(本科)课程: 高级语言程序设计学号:姓名: 吴晓泽班级: 2013级计算机科学与技术教师: 冯凤时间:2014年1月计算机科学与技术系图书管理系统界面:3、图书信息录入:图书信息浏览:5、图书信息查询:查询界面:)按图书编号精确查询:(3)按图书编号模糊查询:)按图书名模糊查询:(5)按图书名精确查询:)条件组合查询:6、图书信息删除:图书信息修改:基本实现所有功能设计体会与建议:附录:#include<stdio.h>#include<stdlib.h>#include<string.h>FILE *fp,*fpj,*fps;int i,xuan;typedef struct book{char name[10];char num[10];char writer[10];int date;char press[10];float price;char leibie[10];int kucun;int jiechu;}bo;typedef struct student{char name[10];char num[10];int jie;}st;typedef struct jieyue{char snum[10];char bnum[10];}ji;void menu()//菜单{printf("\n\n");for(i=0;i<80;i++)printf("#");printf("\n\n");printf("\t\t1-----图书录入\t\t\t");printf("2-----图书浏览\n\n");printf("\t\t3-----图书查询\t\t\t");printf("4-----修改删除图书\n\n");printf("\t\t5-----借阅图书\t\t\t");printf("6-----归还图书\n\n");printf("\t\t7-----借阅查询\t\t\t\n");printf("\n\t\t\t\t输入其他任意键退出\n");printf("\n\n");for(i=0;i<80;i++)printf("#");printf("\n\n");}void end()//录入图书{bo boo,booq;printf("请输入图书名(最多十个字符):");scanf("%s",);do{i=1;printf("请输入图书编号(最多十个字符):");scanf("%s",boo.num);fread(&booq,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(booq.num,boo.num)==0){printf("\n该编号已存在请重新输入\n\n");i=0;break;}fread(&booq,sizeof(bo),1,fp);}rewind(fp);}while(i==0);printf("请输入图书作者(最多十个字符):");scanf("%s",boo.writer);printf("请输入图书出版日期(例如2001年5月3日出版则输入20010503):");scanf("%d",&boo.date);printf("请输入图书价格:");scanf("%f",&boo.price);printf("请输入图书出版社(最多十个字符):");scanf("%s",boo.press);printf("请输入图书类别(最多十个字符):");scanf("%s",boo.leibie);printf("请输入图书ISBN:");scanf("%d",&boo.kucun);boo.jiechu=0;getchar();fseek(fp,0,2);fwrite(&boo,sizeof(bo),1,fp);printf("\n录入成功!回到主菜单");system("pause");}void print()//浏览图书{bo boo;printf("书名编号作者价格出版社类别ISBN 借出\n");fread(&boo,sizeof(bo),1,fp);while(feof(fp)==0){printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",,boo.num,boo.writer, boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}printf("\n浏览图书完毕!回到主菜单");system("pause");}int dui(char *p,char *p1)//对比两个字符串的相关度(用于精确搜索){int bao=0,fan=1;for(i=0;i<(int)strlen(p1);i++){if(p[0]==p1[i]){bao=i;break;}}if((int)strlen(p)>(int)strlen(p1)-bao+1)return 0;elsefor(i=0;i<(int)strlen(p);i++){if(p[i]!=p1[bao+i])fan=0;}return fan;}void find()//查询图书{char hao[10];int fan=1;int bian=1;bo boo;printf("请选择查询类型:\n\n\t\t1-按图书编号模糊查询2-按图书名关键字查询\n");printf(" \n\t\t3-按图书编号精确查询4-按图书名精确查询\n");printf(" \n\t\t5-按条件组合查询6-按图书ISBN查询\n\n代码:");scanf("%d",&xuan);if(xuan==1){printf("请输入编号(最多十个字符):");scanf("%s",hao);printf("序号书名编号作者价格出版社类别ISBN 借出\n");fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){fan=dui(hao,boo.num);if(fan==1){printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,,boo.num, boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);bian++;}fread(&boo,sizeof(bo),1,fp);}}else if(xuan==2){printf("请输入图书名关键字(最多十个字符):");scanf("%s",hao);printf("序号书名编号作者价格出版社类别ISBN 借出\n");fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){fan=dui(hao,);if(fan==1)printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,,boo.num, boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}}else if(xuan==4){printf("请输入图书名(最多十个字符):");scanf("%s",hao);printf("序号书名编号作者价格出版社类别ISBN 借出\n");while(!feof(fp)){if(strcmp(hao,)==0)printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,,boo.num, boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}}else if(xuan==3){printf("请输入图书编号(最多十个字符):");scanf("%s",hao);printf("序号书名编号作者价格出版社类别ISBN 借出\n");while(!feof(fp)){if(strcmp(hao,boo.num)==0)printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,,boo.num, boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}}else if(xuan==5){printf("请输入编号(最多十个字符):");scanf("%s",hao);printf("请输入ISBN(最多十个字符):");scanf("%s",hao);printf("序号书名编号作者价格出版社类别ISBN 借出\n");fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){fan=dui(hao,boo.num);if(fan==1){printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,,boo.num, boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);bian++;}fread(&boo,sizeof(bo),1,fp);}}else if(xuan==6){printf("请输入图书ISBN(最多十个字符):");scanf("%s",hao);printf("序号书名编号作者价格出版社类别ISBN 借出\n");while(!feof(fp)){if(strcmp(hao,boo.num)==0)printf("%-5d%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",bian,,boo.num, boo.writer,boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}}else{printf("输入错误,正在退出!");system("pause");return;}printf("\n查询图书完毕!");system("pause");}void del()//修改删除图书{FILE *p;ji jie;int j=0;char num[10];bo boo,booq;int xu;char or;char cha[10];printf("\n删除修改图书只能通过图书编号来完成!\n是否调用图书查询来查询你要操作的图书编号(Y/N)\n");getchar();scanf("%c",&or);if(or=='Y'||or=='y'){find();rewind(fp);}printf("\n请输入你要操作的图书的编号(如果输入错误的编号,将不做任何操作):");scanf("%s",cha);fread(&jie,sizeof(ji),1,fpj);while(!feof(fpj)){if(strcmp(jie.bnum,cha)==0){printf("\n这本书已有人借阅,不能操作!\n正在退出");system("pause");return;}fread(&jie,sizeof(ji),1,fpj);}printf("\n\n1-删除图书2-修改图书\n\n");printf("请选择操作类型:");scanf("%d",&xuan);fread(&boo,sizeof(bo),1,fp);p=fopen("c:\\books1.txt","wb+");while(!feof(fp)){j++;if(strcmp(boo.num,cha)==0){if(xuan==2){printf("\n\n1-书名2-编号3-作者4-价格5-出版社6-类别7-ISBN\n\n");printf("请选择要修改的项目:");scanf("%d",&xu);if(xu==1){printf("你要把%s改为:",);scanf("%s",);}else if(xu==2){do{i=1;printf("你要把%s改为:",boo.num);scanf("%s",num);rewind(fp);fread(&booq,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(booq.num,num)==0){printf("\n该编号已存在请重新输入\n\n");i=0;break;}fread(&booq,sizeof(bo),1,fp);}}while(i==0);rewind(fp);for(i=0;i<j;i++){fread(&boo,sizeof(bo),1,fp);strcpy(boo.num,num);}}else if(xu==3){printf("你要把%s改为:",boo.writer);scanf("%s",boo.writer);}else if(xu==4){printf("你要把%.2f改为:",boo.price);scanf("%f",&boo.price);}else if(xu==5){printf("你要把%s改为:",boo.press);scanf("%s",boo.press);}else if(xu==6){printf("你要把%s改为:",boo.leibie);scanf("%s",boo.leibie);}else if(xu==7){printf("你要把%d改为:",&boo.kucun);scanf("%d",&boo.kucun);}fwrite(&boo,sizeof(bo),1,p);}}elsefwrite(&boo,sizeof(bo),1,p);fread(&boo,sizeof(bo),1,fp);}fclose(p);p=fopen("c:\\books1.txt","rb+");fclose(fp);fp=fopen("c:\\book.txt","wb+");fread(&boo,sizeof(bo),1,p);while(!feof(p)){fwrite(&boo,sizeof(bo),1,fp);fread(&boo,sizeof(bo),1,p);}fclose(fp);printf("操作成功回到主菜单");system("pause");}void lend()//借阅图书{bo boo;FILE *p;st stu;ji jie;int j=0;char or,num[10],xnum[10];printf("\n借阅图书只能通过图书编号完成!\n是否调用图书查询来查询你要操作的图书编号(Y/N)\n");getchar();scanf("%c",&or);if(or=='Y'||or=='y')find();printf("\n请输入你要借阅的图书的编号:");scanf("%s",num);fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(num,boo.num)==0){j=1;break;}fread(&boo,sizeof(bo),1,fp);}if(j==0){printf("\n书库没有该图书正在退出\n");system("pause");return;}printf("\n你需要借阅的图书是:\n");printf("书名编号作者价格出版社类别ISBN 借出\n");printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",,boo.num,boo.writer, boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);if(boo.kucun==boo.jiechu){printf("\n该册图书已全部借出!正在退出\n");system("pause");return;}printf("\n请输入你的学号:");scanf("%s",xnum);j=0;fread(&jie,sizeof(ji),1,fpj);while(!feof(fpj)){if((strcmp(jie.bnum,num)==0)&&(strcmp(jie.snum,xnum)==0)){j=1;break;}fread(&jie,sizeof(ji),1,fpj);}if(j==1){printf("\n你已经借阅过该书正在退出\n");system("pause");return;}fread(&stu,sizeof(st),1,fps);j=0;while(!feof(fps)){if(strcmp(xnum,stu.num)==0){j=1;break;}fread(&stu,sizeof(st),1,fps);}if(j==0){printf("\n你是第一次借阅图书,为了方便管理请输入你的姓名:");scanf("%s",);strcpy(stu.num,xnum);stu.jie=1;fseek(fps,0,2);fwrite(&stu,sizeof(st),1,fps);}else{if(stu.jie==5){//这里可以控制每个学生最多借几本书printf("\n你已经借了5本书,不能再借\n");system("pause");return;}p=fopen("c:\\jie.txt","wb+");rewind(fps);fread(&stu,sizeof(st),1,fps);while(!feof(fps)){if(strcmp(xnum,stu.num)==0)stu.jie++;fwrite(&stu,sizeof(st),1,p);fread(&stu,sizeof(st),1,fps);}fclose(p);fclose(fps);p=fopen("c:\\jie.txt","rb+");fps=fopen("c:\\student.txt","wb+");fread(&stu,sizeof(st),1,p);while(!feof(p)){fwrite(&stu,sizeof(st),1,fps);fread(&stu,sizeof(st),1,p);}}strcpy(jie.bnum,num);strcpy(jie.snum,xnum);fseek(fpj,0,2);fwrite(&jie,sizeof(ji),1,fpj);rewind(fp);p=fopen("c:\\jie.txt","wb+");fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(num,boo.num)==0)boo.jiechu++;fwrite(&boo,sizeof(bo),1,p);fread(&boo,sizeof(bo),1,fp);}fclose(p);p=fopen("c:\\jie.txt","rb+");fclose(fp);fp=fopen("c:\\book.txt","wb+");fread(&boo,sizeof(bo),1,p);while(!feof(p)){fwrite(&boo,sizeof(bo),1,fp);fread(&boo,sizeof(bo),1,p);}printf("\n借阅成功!回到主菜单");system("pause");}void huan(){//归还图书FILE *p;bo boo;ji jie;st stu;int j=0;char snum[10],bnum[10];i=0;printf("\n请输入你的学号:");scanf("%s",snum);printf("\n你借阅了以下图书\n");fread(&jie,sizeof(ji),1,fpj);printf("书名编号作者价格出版社类别ISBN 借出\n");while(!feof(fpj)){if(strcmp(jie.snum,snum)==0){fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(jie.bnum,boo.num)==0){printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",,boo.num,boo.writer, boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);j=1;}fread(&boo,sizeof(bo),1,fp);}}fread(&jie,sizeof(ji),1,fpj);}if(j==0){printf("\n你没有借阅任何图书!\n\n正在退出");system("pause");return;}rewind(fp);rewind(fpj);printf("\n请输入你归还的图书的编号:");scanf("%s",bnum);fread(&jie,sizeof(jie),1,fpj);//改变jieyue.txt里的数据p=fopen("c:\\jie.txt","wb+");while(!feof(fpj)){if((strcmp(jie.bnum,bnum)==0)&&(strcmp(jie.snum,snum)==0)) i=1;elsefwrite(&jie,sizeof(jie),1,p);fread(&jie,sizeof(jie),1,fpj);}if(i==0){printf("\n你没有借过该图书\n正在退出");system("pause");return;}fclose(p);fclose(fpj);p=fopen("c:\\jie.txt","rb+");fpj=fopen("c:\\jieyue.txt","wb+");fread(&jie,sizeof(ji),1,p);while(!feof(p)){fwrite(&jie,sizeof(ji),1,fpj);fread(&jie,sizeof(ji),1,p);}fclose(p);//改变book.txt里的数据p=fopen("c:\\jie.txt","wb+");fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(bnum,boo.num)==0)boo.jiechu--;fwrite(&boo,sizeof(bo),1,p);fread(&boo,sizeof(bo),1,fp);}fclose(p);p=fopen("c:\\jie.txt","rb+");fclose(fp);fp=fopen("c:\\book.txt","wb+");fread(&boo,sizeof(bo),1,p);while(!feof(p)){fwrite(&boo,sizeof(bo),1,fp);fread(&boo,sizeof(bo),1,p);}fclose(p);//改变student.txt里的数据p=fopen("c:\\jie.txt","wb+");rewind(fps);fread(&stu,sizeof(st),1,fps);while(!feof(fps)){if(strcmp(snum,stu.num)==0)stu.jie--;fwrite(&stu,sizeof(st),1,p);fread(&stu,sizeof(st),1,fps);}fclose(p);fclose(fps);p=fopen("c:\\jie.txt","rb+");fps=fopen("c:\\student.txt","wb+");fread(&stu,sizeof(st),1,p);while(!feof(p)){fwrite(&stu,sizeof(st),1,fps);fread(&stu,sizeof(st),1,p);}printf("\n归还成功!回到主菜单");system("pause");}void cha(){//借阅查询char num[10];bo boo;ji jie;printf("\n请输入你的学号:");scanf("%s",num);fread(&jie,sizeof(ji),1,fpj);printf("书名编号作者价格出版社类别ISBN 借出\n");while(!feof(fpj)){if(strcmp(jie.snum,num)==0){fread(&boo,sizeof(bo),1,fp);while(!feof(fp)){if(strcmp(jie.bnum,boo.num)==0)printf("%-10s%-10s%-10s%-10.2f%-10s%-10s%-10d%-4d\n",,boo.num,boo.writer, boo.price,boo.press,boo.leibie,boo.kucun,boo.jiechu);fread(&boo,sizeof(bo),1,fp);}}fread(&jie,sizeof(ji),1,fpj);}printf("\n查询完毕!回到主菜单");system("pause");}main(){if((fp=fopen("c:\\book.txt","rb+"))==NULL){printf("在c盘根目录下没有找到储存图书信息的book.txt文件\n请选择1--手动导入!2--创建此文件\n");scanf("%d",&xuan);switch(xuan){case 2:if((fp=fopen("c:\\book.txt","wb+"))!=NULL)printf("创建成功\n\n");break;case 1:printf("请把名为book.txt的文件复制到c盘根目录下\n\n");}}if((fpj=fopen("c:\\jieyue.txt","rb+"))==NULL){printf("在c盘根目录下没有找到储存借阅信息的jieyue.txt文件\n请选择1--手动导入!2--创建此文件\n");scanf("%d",&xuan);switch(xuan){case 2:if((fpj=fopen("c:\\jieyue.txt","wb+"))!=NULL)printf("创建成功\n\n");break;case 1:printf("请把名为jieyue.txt的文件复制到c盘根目录下\n\n");}}if((fps=fopen("c:\\student.txt","rb+"))==NULL){printf("在c盘根目录下没有找到储存学生信息的student.txt文件\n请选择1--手动导入!2--创建此文件\n");scanf("%d",&xuan);switch(xuan){case 2:if((fps=fopen("c:\\student.txt","wb+"))!=NULL)printf("创建成功\n\n");break;case 1:printf("请把名为student.txt的文件复制到c盘根目录下\n\n");}}menu();printf("\n 代码:");scanf("%d",&xuan);while(xuan==1||xuan==2||xuan==3||xuan==4||xuan==5||xuan==6||xuan==7){fp=fopen("c:\\book.txt","rb+");fps=fopen("c:\\student.txt","rb+");fpj=fopen("c:\\jieyue.txt","rb+");switch(xuan){case 0:break;case 1:end();break;case 2:print();break;case 3:find();break;case 4:del();break;case 5:lend();break;case 6:huan();break;case 7:cha();break;}fclose(fp);fclose(fpj);fclose(fps);menu();printf("\n 代码:");scanf("%d",&xuan);}}。

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

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

C语言课程设计--图书管理C语言课程设计系别计算机科学与技术系专业班级嵌入式软件1108班姓名温小琴指导老师缪宁2012年6月20日一、需求分析1、依据题目要求以及中国书的需求,应将该系统分为两大模块:图书管理和会员管理。

图书管理模块中包括对图书的增加、修改、删除、查询、统计等操作,以及对图书借入借出服务。

会员管理包括会员卡号的申请、删除、统计等操作。

2、界面应该具有友善、直观、易操作等特点,本系统采用数字输入选择操作。

二、概要设计1、整体设计经过需求分析,本系统分为两大模块:书籍管理模块和会员管理模块。

但是从易用性方面考虑,将书籍管理模块中的借书和还书模块放到主界面中。

结构图如下:三、程序代码#include <stdio.h> /*标准输入输出函数库*/#include <stdlib.h> /*标准函数库*/#include <string.h> /*字符串函数库*/#include <conio.h> /*屏幕操作函数库*/#define HEADER1 " -------------------------------BOOK-------------------------------------------\n"#define HEADER2 " | number | name |price| author | publishing company |number|\n"#define HEADER3 " |----------|---------------|-----|---------------|---------------------------|\n"#define HEADER4 " -------------------------------Member----------------------------------------\n"#define HEADER5 " | number | name | telephone |\n"#define HEADER6 " |----------|---------------|---------------|\n"#define HEADER7 " | mnumber | member name | bnumber | book name |\n"#define HEADER8 " |----------|---------------|----------|---------------|\n"#define HEADER9 " |-----------------borrow book-------------------------|\n"#define FORMAT " |%-10s|%-15s|%5d|%-15s|%-20s|%5d |\n"#define FORMAT1 " |%-10s|%-15s|%-15s|\n"#define FORMAT2 " |%-10s|%-15s|%-10s|%-15s|\n"#define DATA p->data.num,p->,p->data.price,p->data.author,p->data.pub,p->data.n umber#define END " ------------------------------------------------------------------------\n" #define N 100typedef struct book{char num[10]; /*书号*/char name[15]; /*书名*/int price; /*定价*/char author[15]; /*作者*/char pub[20]; /*出版社*/int number;/*数量*/};typedef struct Member{char mnum[10];/*会员号*/char mname[15];/*会员姓名*/char tel[15];/*联系电话*/};typedef struct borrow{char mnum[10];/*会员号*/char mname[15];/*会员姓名*/char num[10];/*书号*/char name[15];/*书名*/};typedef struct node/*定义图书信息链表的结点结构*/{struct book data; /*数据域*/struct node *next; /*指针域*/}Node,*Link; /*定义node类型的结构变量及指针变量*/typedef struct mnode/*定义会员信息链表的结点结构*/{struct Member inf;struct mnode *next;}Mnode,*Mlink;typedef struct bnode/*定义借书信息链表的结点结构*/{struct borrow binf;struct bnode *next;}Bnode,*Blink;void menu() /*主菜单*/{system("cls"); /*清屏*/printf(" Book Management System \n");printf("\t*************************Menu******************************* ***\n");printf("\t* 1 Add book 2 delete book *\n"); printf("\t* 3 search book 4 modify record *\n"); printf("\t* 5 Add member 6 borrow book *\n");printf("\t* 7 return book 8 save book *\n"); printf("\t* 9 save member 0 quit system *\n"); printf("\t************************************************************* **\n");}void printheader() /*格式化输出表头*/{printf(HEADER1);printf(HEADER2);printf(HEADER3);}void printdata(Node *pp) /*格式化输出表中数据*/{Node* p;p=pp;printf(FORMAT,DATA);}void Wrong() /*输出按键错误信息*/{printf("\n\n\n\n\n***********Error:input has wrong! press any key to continue**********\n");getchar();}void Nofind() /*输出未查找此学生的信息*/{printf("\n=====>Not find this record!\n");}void Disp(Link l) /*显示单链表l中存储的图书记录*/{Node *p;p=l->next;if(!p) /*p==NULL则说明暂无记录*/{printf("\n=====>Not record!\n");getchar();return;}printf("\n\n");printf(HEADER1);printf(HEADER2);printf(HEADER3);while(p) /*逐条输出链表中存储图书信息*/{printf(FORMAT,DATA);p=p->next;printf(HEADER3);}getchar();}void Mdisp(Mlink m) /*显示单链表中存储的会员信息*/{Mnode *p;p=m->next;if(!p) /*p==NULL证明没有会员记录*/{printf("\n=====>Not record!\n");getchar();return;}printf("\n\n");printf(HEADER4);printf(HEADER5);printf(HEADER6);while(p) /*逐条输出链表中存储的会员信息*/{printf(FORMAT1,p->inf.mnum,p->inf.mname,p->inf.tel); p=p->next;printf(HEADER6);}getchar();}Node* Locate(Link l,char findmess[],char nameornum[]) {Node *r;if(strcmp(nameornum,"num")==0) /*按书号查询*/{r=l->next;while(r){if(strcmp(r->data.num,findmess)==0)return r;/*返回与输入内容相匹配的结点*/r=r->next;}}else if(strcmp(nameornum,"name")==0) /*按书名查询*/ {r=l->next;while(r){if(strcmp(r->,findmess)==0)return r;/*返回与输入内容相匹配的结点*/r=r->next;}}return 0; /*若未找到,返回一个空指针*/}void stringinput(char *t,int lens,char *notice)/*输入字符串,并进行长度验证*/ {char n[50];do{printf(notice); /*显示提示信息*/scanf("%s",n); /*输入字符串*/if(strlen(n)>lens)printf("\n exceed the required length! \n"); /*进行长度是否超过规定值*/}while(strlen(n)>lens);strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/}int numberinput(char *notice){int t=0;do{printf(notice); /*显示提示信息*/scanf("%d",&t); /*输入图书数量*/if (t<0) printf("\n price must >0! \n");}while(t<0);return t;}void Add(Link l)/*增加图书记录*/{Node *p,*r,*s;char ch,flag=0,num[10];r=l;s=l->next;system("cls");Disp(l); /*先输出已有的图书信息*/while(r->next!=NULL)r=r->next; /*将指针移至于链表最末尾,准备添加记录*/while(1) /*可输入多条记录,输入0时退出添加操作*/{while(1){stringinput(num,10,"input number(press '0'return menu):"); /*输入书号*/flag=0;if(strcmp(num,"0")==0) /*输入0退出操作,返回菜单界面*/{return;}s=l->next;while(s) /*查询输入的书号是否已经存在*/{if(strcmp(s->data.num,num)==0){flag=1;break;}s=s->next;}if(flag==1) /*提示用户是否重新输入*/{ getchar();printf("=====>The number %s is existing,try again?(y/n):",num);scanf("%c",&ch);if(ch=='y'||ch=='Y')continue;elsereturn;}else{break;}}p=(Node *)malloc(sizeof(Node)); /*申请内存空间*/if(!p){printf("\n allocate memory failure "); /*如没有申请到,输出提示信息*/ return ; /*返回菜单界面*/}strcpy(p->data.num,num); /*将字符串拷贝到p->data.num中*/stringinput(p->,15,"Name:");/*输入图书名称到p->中*/p->data.price=numberinput("price:");/*输入定价到p->data.price中*/ stringinput(p->data.author,15,"author:");/*输入作者名到p->data.author中*/ stringinput(p->data.pub,20,"publishing company:");/*输入出版社名称到p->data.pub中*/p->data.number=numberinput("number:");/*输入图书数量到p->data.number 中*/p->next=NULL;r->next=p; /*将新结点插入链表中*/r=p;}return ;}void Addmember(Mlink m){FILE *fp;Mnode *p,*r,*s,*q;char ch,qu,flag=0,num[10];r=m;s=m->next;system("cls");Mdisp(m);/*将原有记录输出*/while(r->next!=NULL)r=r->next; /*将指针移至于链表最末尾,准备添加记录*/while(1) /*可输入多条记录,输入0时退出添加操作*/{while(1){stringinput(num,10,"input the number of the member(press '0'return menu):"); /*输入会员号*/flag=0;if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回菜单界面*/ {return;}s=m->next;while(s) /*查询该会员号是否已经存在*/{if(strcmp(s->inf.mnum,num)==0){flag=1;break;}s=s->next;}if(flag==1) /*提示用户是否重新输入*/{ getchar();printf("=====>The number %s is existing,try again?(y/n):",num);scanf("%c",&ch);if(ch=='y'||ch=='Y')continue;elsereturn;}else{break;}}p=(Mnode *)malloc(sizeof(Mnode)); /*申请内存空间*/if(!p){printf("\n allocate memory failure "); /*如没有申请到,输出提示信息*/ return ; /*返回主界面*/}strcpy(p->inf.mnum,num); /*将会员号拷贝到p->data.num中*/stringinput(p->inf.mname,15,"Name:");stringinput(p->inf.tel,15,"Telephone:");p->next=NULL;r->next=p; /*将新结点插入链表中*/r=p;}return ;}void search(Link l) /*图书查询*/{int select;char searchinput[20];Node *p;if(!l->next) /*若链表为空*/{system("cls");printf("\n=====>No record!\n");getchar();return;}system("cls");printf("\n\t1 Search by number \n\t2 Search by name\n");printf(" please choice[1,2]:");scanf("%d",&select);if(select==1) /*按书号查询*/{stringinput(searchinput,10,"input the existing student number:");p=Locate(l,searchinput,"num");if(p) /*若p!=NULL*/{printheader();printdata(p);printf(END);printf("press any key to return");getchar();}elseNofind();getchar();}else if(select==2) /*按书名查询*/{stringinput(searchinput,15,"input the existing book name:"); p=Locate(l,searchinput,"name");if(p){printheader();printdata(p);printf(END);printf("press any key to return");getchar();}elseNofind();getchar();}elseWrong();getchar();}void Del(Link l)/*删除指定的图书记录*/{int sel;Node *p,*r;char findmess[20];if(!l->next){ system("cls");printf("\n=====>No record!\n");getchar();return;}system("cls");Disp(l);printf("\n =====>1 Delete by number =====>2 Delete by name\n");printf(" please choice[1,2]:");scanf("%d",&sel);if(sel==1){stringinput(findmess,10,"input the existing student number:");p=Locate(l,findmess,"num");if(p) /*p!=NULL*/{r=l;while(r->next!=p)r=r->next;r->next=p->next;/*将p所指节点从链表中去除*/free(p); /*释放内存空间*/printf("\n=====>delete success!\n");getchar();}elseNofind();getchar();}else if(sel==2) /*先按书名查询*/{stringinput(findmess,15,"input the existing book name");p=Locate(l,findmess,"name");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n=====>delete success!\n");getchar();}elseNofind();getchar();}elseWrong();getchar();}void Modify(Link l)/*修改图书信息*/{Node *p;char findmess[20];if(!l->next){ system("cls");printf("\n=====>No book record!\n");getchar();return;}system("cls");printf("modify book recorder");Disp(l);stringinput(findmess,10,"input the existing book number:"); p=Locate(l,findmess,"num"); /*查询到该节点*/if(p) /*若p!=NULL,表明已经找到该节点*/{printf("Number:%s,\n",p->data.num);printf("Name:%s,",p->);stringinput(p->,15,"input book name:");printf("price:%d,",p->data.price);p->data.price=numberinput("the price of book:");printf("Author:%s,",p->data.author);stringinput(p->data.author,15,"Author:");printf("Publishing company:%s,",p->data.pub); stringinput(p->data.pub,15,"Publishing company:");printf("number:%d,",p->data.number);p->data.number=numberinput("the number of book:"); printf("\n=====>modify success!\n");Disp(l);}elseNofind();getchar();}void Save(Link l)/*将数据存盘*/{FILE *fp;Node *p;int count=0;fp=fopen("f:\\book","wb");/*以只写方式打开二进制文件*/if(fp==NULL) /*打开文件失败*/{printf("\n=====>open file error!\n");getchar();return ;}p=l->next;while(p){if(fwrite(p,sizeof(Node),1,fp)==1)/*写记录到磁盘文件中*/{p=p->next;count++;}else{break;}}if(count>0){getchar();printf("\n\n\n\tsave file complete,total saved's record number is:%d\n",count); getchar();}else{system("cls");printf("the current link is empty,no student record is saved!\n");getchar();}fclose(fp);}void Savemember(Mlink m){FILE *fp;Mnode *p;int count=0;fp=fopen("f:\\member","wb");/*以只写方式打开二进制文件*/if(fp==NULL) /*打开文件失败*/{printf("\n=====>open file error!\n");getchar();return ;p=m->next;while(p){if(fwrite(p,sizeof(Mnode),1,fp)==1)/*写记录到磁盘文件中*/{p=p->next;count++;}else{break;}}if(count>0){getchar();printf("\n\n\n\tsave file complete,total saved's record number is:%d\n",count); getchar();}else{system("cls");getchar();}fclose(fp);}void Saveoi(Blink b){FILE *fp;Bnode *p;int count=0;fp=fopen("f:\\borrow","wb");/*以只写方式打开二进制文件*/if(fp==NULL) /*打开文件失败*/{printf("\n=====>open file error!\n");getchar();return ;}p=b->next;while(p){if(fwrite(p,sizeof(Bnode),1,fp)==1)/*每次写一条记录或一个节点信息至文件*/p=p->next;count++;}else{break;}}if(count>0){getchar();printf("\n\n\n\n\n=====>save file complete,total saved's record number is:%d\n",count);getchar();}else{system("cls");getchar();}fclose(fp);}void borrow(Link l,Mlink m,Blink b)/*借书*/{Mnode *p;Node *q;Bnode *t,*s,*k;char number[10],booknum[10];system("cls");t=b->next;if(!t){printf("\n=====>Not record!\n");}printf("\n\n");printf(HEADER9);printf(HEADER7);printf(HEADER8);while(t){printf(FORMAT2,t->binf.mnum,t->binf.mname,t->binf.num,t->);t=t->next;printf(HEADER8);}while(1){s=b;p=m->next;q=l->next;while(s->next!=NULL)s=s->next;stringinput(number,10,"please input the number of member:");/*输入会员号*/ if(strcmp(number,"0")==0)break;do{if(strcmp(p->inf.mnum,number)==0)/*查看该会员号是否存在*/break;elsep=p->next;}while(p!=NULL);stringinput(booknum,10,"please input the number of book:");/*输入书号*/do{if(strcmp(q->data.num,booknum)==0)/*查看书号是否存在*/break;elseq=q->next;}while(q!=NULL);if(p==NULL){printf("you are not a member!");return;}elseif(q==NULL){printf("the book is not exist!");return;}else{if(q->data.number!=0){q->data.number--;k=(Bnode *)malloc(sizeof(Bnode)); /*申请内存空间*/if(!k){printf("\n allocate memory failure "); /*如没有申请到,输出提示信息*/ return ; /*返回菜单界面*/}strcpy(k->binf.num,q->data.num);strcpy(k->,q->);strcpy(k->binf.mnum,p->inf.mnum);strcpy(k->binf.mname,p->inf.mname);k->next=NULL;s->next=k; /*将新结点插入链表中*/s=k;}elseprintf("no book!");}}Saveoi(b);/*写记录到磁盘文件中*/getch();}void ret(Link l,Blink b)/*还书*/{Bnode *p,*q;Node *t;char memnum[10],booknum[10];q=b;p=q->next;t=l->next;stringinput(memnum,10,"please input the number of member:");if(strcmp(memnum,"0")==0)return;stringinput(booknum,10,"please input the number of book:");while(p!=NULL){if(strcmp(p->binf.num,booknum)==0&&strcmp(p->binf.mnum,memnum)==0)/*如果书号与会员号都存在则可以还书*/{q->next=p->next;do{if(strcmp(t->data.num,booknum)==0)break;elset=t->next;}while(t!=NULL);t->data.number++;/*如果还书成功则可借的数目加1*/free(p);}else{q=p;p=q->next;}}if(p==NULL){printf("input error");return;}Saveoi(b);getch();}main(){Link l; /*定义链表*/Mlink m;Blink b;FILE *fp; /*文件指针*/int select;char ch;int count=0;Node *p,*r;Mnode *q,*t;Bnode *s,*k;b=(Bnode*)malloc(sizeof(Bnode));if(!b){printf("\n allocate memory failure "); /*如没有申请到,打印提示信息*/ return ; /*返回菜单界面*/}b->next=NULL;k=b;fp=fopen("f:\\borrow","ab+");if(fp==NULL){printf("\n=====>can not open file!\n");exit(0);}while(!feof(fp)){s=(Bnode*)malloc(sizeof(Bnode));if(!s){printf(" memory malloc failure!\n"); /*没有申请成功*/exit(0); /*退出*/}if(fread(s,sizeof(Bnode),1,fp)==1) /*从文件中读取借书记录*/{s->next=NULL;k->next=s;k=s;}}fclose(fp); /*关闭文件*/m=(Mnode*)malloc(sizeof(Mnode));if(!m){printf("\n allocate memory failure "); /*如没有申请到,输出提示信息*/ return ; /*返回菜单界面*/}m->next=NULL;t=m;fp=fopen("f:\\member","ab+");if(fp==NULL){printf("\n=====>can not open file!\n");exit(0);}while(!feof(fp)){q=(Mnode*)malloc(sizeof(Mnode));if(!q){printf(" memory malloc failure!\n"); /*没有申请成功*/exit(0); /*退出*/}if(fread(q,sizeof(Mnode),1,fp)==1) /*从文件中读取会员信息记录*/{q->next=NULL;t->next=q;t=q;}}fclose(fp); /*关闭文件*/l=(Node*)malloc(sizeof(Node));if(!l){printf("\n allocate memory failure "); /*如没有申请到,打印提示信息*/ return ; /*返回菜单界面*/}l->next=NULL;r=l;fp=fopen("f:\\book","ab+");if(fp==NULL){printf("\n=====>can not open file!\n");exit(0);}while(!feof(fp)){p=(Node*)malloc(sizeof(Node));if(!p){printf(" memory malloc failure!\n"); /*没有申请成功*/exit(0); /*退出*/}if(fread(p,sizeof(Node),1,fp)==1) /*从文件中读取图书信息记录*/{p->next=NULL;r->next=p;r=p;count++;}}fclose(fp);printf("\n=====>open file sucess,the total records number is : %d.\n",count);menu();while(1){system("cls");menu();p=r;printf("\n Please Enter your choice(0~9):"); /*显示提示信息*/scanf("%d",&select);switch(select){case 0:exit(1);case 1:Add(l);break;case 2:Del(l);break;case 3:search(l);break;case 4:Modify(l);break;case 5:Addmember(m);break;case 6:borrow(l,m,b);break;case 7:ret(l,b);break;case 8:Save(l);break;case 9:Savemember(m);break;default: Wrong();getchar();break;}}}四、心得经过几天的努力,图书管理系统总算可以运行了,功能也算基本完善。

c语言课程设计杂志订阅

c语言课程设计杂志订阅

c语言课程设计杂志订阅一、课程目标知识目标:1. 理解并掌握C语言基础语法,包括变量定义、数据类型、运算符、控制结构等;2. 学会使用C语言进行简单的文件读写操作;3. 掌握利用C语言进行结构体和数组的应用;4. 理解并掌握函数的定义、调用及其参数传递方式。

技能目标:1. 能够运用所学知识设计并实现一个简单的杂志订阅系统;2. 培养学生分析问题、解决问题的能力,将实际问题转化为程序实现;3. 提高学生的编程实践能力,熟练使用C语言进行代码编写和调试。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发其主动探索精神;2. 培养学生的团队协作意识,学会与他人共同分析和解决问题;3. 增强学生的自信心,使其在克服编程难题的过程中体验到成就感;4. 培养学生严谨、细心的编程习惯,为今后的学习和工作打下坚实基础。

本课程针对高年级学生,已具备一定编程基础,注重实践操作和综合运用。

课程目标既关注知识技能的掌握,也注重培养学生的情感态度价值观。

通过本课程的学习,期望学生能够达到以上所述的具体学习成果,为今后的编程学习和实践奠定坚实基础。

二、教学内容1. C语言基础语法复习:变量定义、数据类型、运算符、控制结构(选择、循环);2. 文件读写操作:文件打开、关闭、读写,以及文件指针操作;3. 结构体和数组的应用:定义结构体,创建结构体数组,实现数据存储和访问;4. 函数的定义与调用:理解函数作用,掌握函数定义、参数传递、返回值;5. 杂志订阅系统设计:分析需求,设计系统功能模块,实现用户订阅、查询、取消订阅等功能;6. 编程实践:根据课程项目要求,编写、调试和优化代码,实现杂志订阅系统。

教学内容依据课程目标和学科特点进行选择和组织,确保科学性和系统性。

结合教材相关章节,安排如下:1. 复习C语言基础语法(第1章-第4章);2. 文件读写操作(第6章);3. 结构体和数组(第5章);4. 函数(第7章);5. 杂志订阅系统设计(综合应用)。

杂志管理系统源码C课程设计

杂志管理系统源码C课程设计

杂志管理系统源码C 课程设计一、课程目标知识目标:1. 学生能掌握C语言中结构体、文件操作等基本概念,并能运用这些知识构建简单的数据结构。

2. 学生能够理解并使用指针、函数等C语言高级特性,实现对杂志管理系统的功能设计。

3. 学生掌握基本的数据库管理思想,能够通过C语言实现数据的增、删、改、查等功能。

技能目标:1. 学生能够运用所学知识,独立完成一个简单的杂志管理系统源码编写,实现基础的管理功能。

2. 学生通过课程学习,提高问题分析能力,能够根据实际问题设计合理的程序结构。

3. 学生通过团队协作完成项目,提升沟通与协作能力,培养编程调试和项目管理的实际操作技巧。

情感态度价值观目标:1. 学生能够培养对编程的兴趣,认识到编程在解决实际问题中的作用和价值。

2. 学生在学习过程中,培养耐心、细心和勇于解决问题的积极态度,增强面对困难的勇气和自信。

3. 学生通过课程学习,理解到技术对于社会发展的重要性,激发其未来投身科技发展的社会责任感。

二、教学内容1. C语言基础回顾:结构体、指针、函数、文件操作等知识点的复习和巩固。

- 结构体:定义、声明、初始化;结构体数组、结构体指针。

- 指针:指针的概念、指针的运算、指针与数组、指针与函数。

- 函数:函数的定义、调用、参数传递;递归函数。

- 文件操作:文件的打开、关闭、读写;二进制文件操作。

2. 数据库管理基本思想:数据表的设计、数据的增删改查等操作。

- 数据表设计:字段、数据类型;主键、外键。

- 数据操作:增加、删除、修改、查询数据的方法。

3. 杂志管理系统功能模块设计:- 用户管理:用户注册、登录、权限控制。

- 信息管理:杂志信息的增删改查。

- 系统操作:数据的保存与读取,系统界面设计。

4. 教学内容的进度安排:- 第一周:C语言基础回顾。

- 第二周:数据库管理基本思想学习。

- 第三周:杂志管理系统功能模块设计及实现。

- 第四周:项目测试、优化与总结。

教学内容与课本关联,按照教学大纲逐步展开,确保学生能够系统地掌握C语言在杂志管理系统中的应用。

杂志订阅系统

杂志订阅系统

C语言课程设计报告——杂志订阅系统学院:计算机学院班级:姓名:学号:指导老师:C语言课程设计报告——杂志订阅系统1、题目要求使用计算机对一种杂志的订阅进行管理,该杂志拥有最多订户不超过10人,每个订户的信息包括:姓名、性别、地址、电话号码、杂志单位,订阅数、订阅期限。

现要求用菜单选择并完成下述的功能:(1)增加新订户,即将订户的全部信息输入到文件中。

(2)根据当天的日期对订户文件进行查询,删除已到期的订户记录。

(3)统计本期杂志订户数并打印运算结果。

2、需求分析根据题目要求,由于订户信息要求存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要对订户文件进行添加和查询,所以应提供添加、显示、查找等操作;另外还应提供选择菜单实现功能选择。

3、总体设计下面来分析一下整个系统,根据上面的需求分析,可以将这个系统的设计分为四大模块:添加、查询、统计、退出。

其中主要功能是查询和统计两个模块。

││││4、详细设计1、主函数主函数设计得比较简洁,只提供菜单界面及各模块函数的调用。

main(){FILE *fp;fp=fopen("record.txt","w"); /*建立一个"record.txt"记事本*/fclose(fp);menu();}void menu(){int n,w; /*n表示菜单选择数字*/do{printf("\t\t ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ \n\n\n"); printf("\t\t 欢迎来到杂志订阅系统! \n\n\n");printf("\t\t ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ \n");printf("\n\n\t\t ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ \n\n"); printf("\t\t 1:订户信息添加 \n");printf("\t\t 2:订户信息浏览 \n");printf("\t\t 3:订户信息统计 \n");printf("\t\t 4:退出系统 \n\n");printf("\t\t ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ ^-^ \n\n");printf("选择您的操作(1-4):[ ]\b\b");scanf("%d",&n);if(n<1||n>4){w=1;getchar();}else w=0;}while (w==1); /*选择功能*/switch(n){case 1:add();break; /*增加新订户记录*/case 2:search();break; /*查找过期的订户记录并删除*/case 3:statistic();break; /*统计*/case 4:exit(0);break; /*退出*/}}2、各功能模块设计(1)添加模块主要用于添加订户信息。

杂志管理系统源码C课程设计

杂志管理系统源码C课程设计

杂志管理系统源码C 课程设计一、教学目标本课程旨在让学生掌握杂志管理系统源码C的基本概念、原理和编程技巧,培养学生运用C语言进行程序设计的能力。

通过本课程的学习,学生将能够理解C语言的基本语法、数据类型、运算符、控制结构、函数等知识,熟练使用C语言进行程序设计,并具备一定的解决问题的能力。

1.掌握C语言的基本语法和规则。

2.理解数据类型、变量和运算符的概念及使用方法。

3.熟悉控制结构,能运用循环和分支语句编写程序。

4.了解函数的定义和调用,掌握函数的编写和调试方法。

5.掌握数组、字符串和指针的概念及应用。

6.能运用C语言编写简单的程序,解决实际问题。

7.具备阅读和理解C语言程序的能力。

8.熟悉集成开发环境(IDE),掌握基本的编程和调试技巧。

9.能独立完成杂志管理系统源码C的编写和调试。

情感态度价值观目标:1.培养学生的编程兴趣,激发学习C语言的积极性。

2.培养学生动手实践的能力,提高解决实际问题的信心。

3.培养学生团队协作的精神,增强合作意识。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数、数组、字符串和指针等。

具体安排如下:1.C语言的基本语法和规则。

2.数据类型、变量和运算符的概念及使用方法。

3.控制结构,包括循环和分支语句的编写和应用。

4.函数的定义和调用,包括函数的编写、调试和优化。

5.数组、字符串和指针的概念及应用,包括动态内存分配。

本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:通过讲解C语言的基本概念、原理和编程技巧,使学生掌握相关知识。

2.案例分析法:分析典型的杂志管理系统源码C案例,让学生了解实际应用,提高编程能力。

3.实验法:引导学生动手实践,通过编写和调试程序,巩固所学知识。

四、教学资源本课程所需的教学资源包括教材、参考书、多媒体资料和实验设备等。

1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。

C课程设计杂志订阅管理系统

C课程设计杂志订阅管理系统

C 课程设计杂志订阅管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本技能,学会使用C语言编写简单的程序,培养学生的逻辑思维能力和问题解决能力。

具体包括以下三个方面:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础知识。

2.技能目标:学生能够运用C语言编写简单的程序,解决实际问题,提高编程实践能力。

3.情感态度价值观目标:通过本课程的学习,使学生培养对编程的兴趣和热情,增强自主学习的能力,培养团队合作的精神。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础知识,以及简单的编程实践。

具体安排如下:1.第一章:C语言概述,介绍C语言的发展历程、特点和应用领域。

2.第二章:数据类型和运算符,讲解C语言的基本数据类型、运算符及其使用方法。

3.第三章:控制结构,讲解条件语句、循环语句等控制结构的用法。

4.第四章:函数,讲解函数的定义、声明、调用和返回值。

5.第五章:编程实践,通过实际案例使学生掌握编程技巧,提高编程能力。

三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。

具体包括以下几种方法:1.讲授法:教师讲解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础知识。

2.案例分析法:通过分析实际案例,使学生掌握编程技巧,提高编程能力。

3.实验法:安排实验课,让学生动手实践,巩固所学知识。

4.讨论法:学生进行小组讨论,培养团队合作精神和问题解决能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《C程序设计语言》(谭浩强著)2.参考书:《C Primer Plus》(Stephen Prata著)3.多媒体资料:教学PPT、视频教程等。

4.实验设备:计算机、网络等。

通过以上教学资源的使用,为学生提供丰富的学习体验,提高教学效果。

五、教学评估本课程的教学评估将采用多元化的评估方式,包括平时表现、作业、考试等,以全面、客观、公正地评估学生的学习成果。

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

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

吞吐量: 系统在单 位时间内 处理的请 求数量
资源利用 率:系统 对硬件资 源的使用 情况
可靠性: 系统在运 行过程中 出现故障 的概率
可扩展性: 系统随着 业务增长 进行扩展 的能力
用户体验: 用户对系 统的满意 度和易用 性评价
系统功能完善建议
增加用户反馈功能,收集用户意见和建议 优化搜索功能,提高搜索速度和准确性 增加图书推荐功能,根据用户浏览和购买记录推荐相关图书 优化用户界面,提高用户体验和操作便捷性
降低错误率
优势:实现图 书信息的数字 化管理,方便 查询、统计和
分析
优势:支持远 程访问和移动 设备访问,提 高图书管理的
便捷性
图书管理系统的开发流程和实现方式
需求分析: 明确系统 功能、性 能、安全 性等需求
系统设计: 设计系统 架构、数 据库结构、 界面设计 等
编码实现: 编写代码 实现系统 功能
可扩展性:系统需要具备良好的可 扩展性,能够适应未来的业务需求 变化
系统设计
系统架构设计
前端设计:用 户界面、交互 逻辑、页面布
局等
后端设计:数 据库设计、数 据模型、业务
逻辑等
网络架构:服 务器配置、网 络拓扑、数据
传输等
安全设计:用 户认证、数据 加密、访问控
制等
数据库设计
数据库类型:关 系型数据库
数据操作实现
数据库设计:包括表结构、字段类型、索引等 数据库连接:使用JDBC、ODBC等连接数据库 数据操作:包括增删改查等基本操作 数据安全:包括用户权限管理、数据加密等 数据备份与恢复:定期备份数据,确保数据安全 数据分析与报表:提供数据分析功能,生成报表供用户查看
界面交互实现

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

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

c语言课程设计图书管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本知识,能够运用C语言设计简单的图书管理系统。

具体目标如下:1.知识目标:•掌握C语言的基本语法和数据结构。

•理解图书管理系统的需求和设计原理。

2.技能目标:•能够使用C语言进行程序设计和调试。

•能够独立设计并实现图书管理系统的功能模块。

3.情感态度价值观目标:•培养学生的编程兴趣和自主学习能力。

•培养学生的团队协作能力和问题解决能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构以及图书管理系统的需求分析和设计。

具体内容如下:1.C语言的基本语法:•变量和数据类型•运算符和表达式•函数和数组2.数据结构:3.图书管理系统的需求分析和设计:•用户界面设计•图书信息管理•借阅信息管理•查询和统计功能三、教学方法本课程采用多种教学方法相结合的方式,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:通过讲解C语言的基本语法和数据结构,使学生掌握相关知识。

2.案例分析法:通过分析图书管理系统的需求和设计案例,使学生理解并能够独立设计类似的系统。

3.实验法:通过编写和调试代码,使学生掌握C语言编程的技巧和方法。

四、教学资源本课程所需的教学资源包括教材、参考书、多媒体资料和实验设备。

具体如下:1.教材:选用权威出版的C语言编程教材,为学生提供系统的学习资料。

2.参考书:提供相关的C语言编程参考书籍,供学生深入学习和参考。

3.多媒体资料:制作课件和教学视频,以图文并茂的方式呈现教学内容,增强学生的学习兴趣。

4.实验设备:提供计算机和相关的编程工具,为学生提供实践编程的机会。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。

1.平时表现:通过课堂参与、提问和小组讨论等方式评估学生的学习态度和参与程度。

2.作业:布置适量的编程作业,评估学生的编程能力和对知识的掌握程度。

3.考试:进行期中和期末考试,评估学生的综合运用能力和对知识的全面掌握。

C语言课程设计 杂志阅读管理软件

C语言课程设计 杂志阅读管理软件

C语言课程设计题目名称:姓名:学号:班级序号:指导老师:目录前言******************************************* 2 设计思路及要求******************************** 31.程序设计思路**************************** 32.程序设计要求**************************** 3程序总体设计流程图*************************** 5功能模块的调试和测试************************** 51.增加订户模块**************************** 62.删除过期订户**************************** 73.输出所有信息**************************** 84.统计本月订户**************************** 95.查询用户******************************** 10程序设计的原代码***************************** 11结束语*************************************** 18前言C语言是一种计算机程序设计语言。

它既有高级语言的特点,又具有汇编语言的特点。

它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

C语言是一种结构化语言。

它层次清晰,便于按模块化方式组织程序,易于调试和维护。

C语言的表现能力和处理能力极强。

它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。

它还可以直接访问内存的物理地址,进行位(bit)一级的操作。

因此,它的应用范围广泛。

C语言在很多方面都可以用,不仅仅是在软件开发上,各类科研都是需要用到C语言的。

具体应用比如我是学硬件的,单片机以及嵌入式系统都可以用C来开发。

杂志订阅管理系统 -- 课程设计报告

杂志订阅管理系统 -- 课程设计报告

测控技术与仪器专业课程设计题单班级学号姓名课程名称计算机课程设计课题杂志订阅管理系统设计要求(1)分组后,每组抽取一个题目,每人完成该题目的一个功能模块的设计;(2)锯齿型书写格式,菜单式界面;(3)必须上机调试通过;(4)每人单独完成一份完整的课程设计报告。

课题发给日期课程设计完成日期指导教师评语:计算机课程设计细则一、设计要求:1、分组后,每组抽取一个题目,每人完成该题目的一个功能模块的设计。

2、模块化程序设计,锯齿型书写格式。

3、输出要求: 1) 应用程序正常运行后,要在屏幕上显示一个文字菜单;2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式等;3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

4、必须上机调试通过。

二、设计报告格式:写设计报告(要求正规打印,A4幅面),内容包括:1、题目(封面)2、计算机课程设计细则3、前言,需求分析(鼓励设置目录)4、概要设计(程序设计组成框图、流程图)5、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)6、源程序清单和执行结果:清单中应有足够的注释7、用户使用说明8、调试与测试:调试方法,测试结果及采取的解决措施的分析与讨论。

9、附录或参考资料三、检查要求:1、每个人必须有可运行的程序2、每个人必须单独完成一份完整的课程设计报告。

(打印稿)四、打分标准:1、教师定期检查学生进度,学生不得以自己有私人电脑为借口而不来上机。

2、根据程序运行结果;3、根据《计算机课程设计报告》,学生能正确并熟练地解释清楚教师对程序的提问。

以上三项缺一不可,否则不能到得相应学分。

杂志订阅管理系统设有一本杂志,该杂志最多拥有订户不超过10户,每个订户的信息包括:姓名,订户编号,性别,电话号码,订阅数,订阅日期,订阅期限(某年某月),设计一杂志订阅管理系统,系统以菜单方式工作,能提供以下功能:1、录入订户信息到文件―――由李琴波完成2、主界面及浏览所有订户信息―――由周鑫完成3、查询功能(至少实现两种方式):如:按订户编号查询、按订阅期限查询等―――由李永健完成4、修改功能:修改订户信息―――由程蔚濯完成5、删除功能:删除已到期的订户记录―――由饶雅清完成6、统计功能:统计本期杂志订户数和订阅总量等―――由张佩利完成附一:时间安排表本人完成删除功能模块设计杂志订阅管理系统课程设计目录一、前言-----------------------------------------------51.1 特色----------------------------------------------5二、需求分析-------------------------------------------62.1 系统目标------------------------------------------62.2 运行环境------------------------------------------62.3 用户特点------------------------------------------62.4 功能要求------------------------------------------6三、概要设计-------------------------------------------7四、主界面流程图---------------------------------------9五、统计订户信息流程图--------------------------------10六、详细设计------------------------------------------11七、数据结构设计--------------------------------------11八、源程序清单----------------------------------------128.1 源代码-------------------------------------------128.2 统计程序源代码------------------------------------16九、用户使用说明--------------------------------------18十、调试与测试----------------------------------------2310.1 逻辑调试-----------------------------------------2310.2 语法调试-----------------------------------------2310.3 测试结果-----------------------------------------2310.4 采取的解决措施的分析与讨论-------------------------23十一、心得体会-----------------------------------------25十二、参考文献-----------------------------------------26一、前言我们学习C语言课程设计的主要目的是为了了解和熟悉C语言的编程。

书店管理c语言课程设计

书店管理c语言课程设计

书店管理c语言课程设计一、课程目标知识目标:1. 理解C语言在书店管理系统中的应用,掌握基本的数据结构(如结构体、数组、链表)与算法(如排序、查找);2. 学会使用C语言进行文件操作,实现对书店图书信息的存储与读取;3. 掌握C语言模块化编程,能独立完成书店管理系统各功能模块的设计与实现。

技能目标:1. 能运用所学知识,设计并实现一个简单的书店管理系统,具备图书信息录入、查询、修改、删除等功能;2. 培养编程思维,具备分析问题、解决问题的能力,能根据实际需求调整和优化系统功能;3. 提高团队协作能力,通过分组讨论、合作完成课程设计任务。

情感态度价值观目标:1. 培养学生对C语言的兴趣,激发学习热情,提高自主学习能力;2. 培养学生严谨、认真的工作态度,养成良好的编程习惯;3. 增强学生对信息技术的认识,使其明白编程在现实生活中的应用和价值。

本课程旨在让学生将所学的C语言知识运用到实际项目中,通过书店管理系统的设计与实现,巩固所学知识,提高编程能力,同时培养团队协作精神。

课程目标具体、可衡量,便于教学设计和评估。

针对学生特点和教学要求,课程内容将紧密结合课本知识,注重实用性,确保学生能够学以致用。

二、教学内容1. C语言基础回顾:数据类型、运算符、控制语句、函数;2. 复习课本中关于结构体、数组、链表的知识,并引入文件操作相关知识;3. 教学大纲:a. 介绍书店管理系统的功能需求,分析系统模块划分;b. 讲解结构体在书店管理系统中的应用,如表示图书信息;c. 通过案例演示数组、链表在管理系统中的使用,如存储、查询图书;d. 引导学生掌握文件操作,实现图书信息的持久化存储;e. 指导学生进行模块化编程,实现书店管理系统的各功能模块;f. 安排课时,讲解教材关联章节,确保教学内容与课本紧密结合。

4. 教学进度安排:a. 基础知识回顾(2课时);b. 系统需求分析、模块划分(2课时);c. 结构体、数组、链表的应用(4课时);d. 文件操作(2课时);e. 模块化编程实践(4课时);f. 系统测试、优化与总结(2课时)。

c语言课程设计杂志订阅

c语言课程设计杂志订阅

c语言课程设计杂志订阅一、教学目标本章节的教学目标是使学生掌握C语言编程的基本技能,能够运用C语言实现简单的杂志订阅管理系统。

具体目标如下:1.知识目标:使学生了解C语言的基本语法、数据类型、运算符、控制结构等,理解面向对象编程的基本概念。

2.技能目标:培养学生具备使用C语言进行程序设计的能力,能够独立完成简单的杂志订阅管理系统的设计与实现。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生分析问题、解决问题的能力,培养学生的团队合作意识。

二、教学内容本章节的教学内容主要包括以下几个部分:1.C语言基本语法和数据类型:介绍C语言的基本语法规则,包括变量声明、数据类型、运算符等。

2.控制结构:讲解条件语句和循环语句的用法,使学生能够运用控制结构实现复杂的逻辑判断。

3.函数:介绍函数的定义、声明和调用,使学生理解函数在程序设计中的作用,掌握函数的编写和调用方法。

4.面向对象编程:讲解面向对象编程的基本概念,包括类、对象、封装、继承等,使学生能够运用面向对象编程思想设计程序。

5.杂志订阅管理系统:以杂志订阅管理系统为案例,引导学生综合运用所学知识解决实际问题。

三、教学方法为了达到本章节的教学目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构等知识,使学生掌握C语言编程的基本技能。

2.案例分析法:通过分析杂志订阅管理系统的案例,使学生了解如何将所学知识应用于实际问题的解决。

3.实验法:安排实验室实践环节,让学生动手编写代码,培养学生的实际编程能力。

4.小组讨论法:学生进行小组讨论,分享学习心得和解决问题的方法,培养学生的团队合作意识。

四、教学资源为了支持本章节的教学,我们将准备以下教学资源:1.教材:《C程序设计语言》或《C Primer Plus》等。

2.参考书:《C语言编程实践》、《C语言入门与提高》等。

3.多媒体资料:教学PPT、视频教程等。

4.实验设备:计算机、网络等。

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

C语言专业课程设计之杂志订阅管理
以下是报告正文
1.题目与要求:

使用计算机对一种杂志的订阅进行管理,该杂志拥有最多订户不超过10人,每个订户的信息包括:姓名、性别、地址、电话号码、杂志单价、订阅数、订阅的期限(至x x年x x月x x日)
现要求用菜单选择并完成下述的功能:
(1)增加新订户,即将订户的全部信息输入到文件中。

(2)根据当前的日期对订户文件进行查询,删除已到期的订户记录。

(3)统计本期杂志订户数并打印运算结果。

[提示]
订户的信息用文件存储,提供文件的输入输出操作;提供文件的添加操作,增加新订户;对订户文件的查询,提供文件的查找操作;通过文件的删除操作删除已到期的订户记录;提供统计和显示操作统计本期杂志订户数并打印运算结果;另外还要提供键盘式选择菜单以实现功能的选择。

:
:
:
【主函数】
主函数一般设计得比较简洁,提供输入,功能处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

【程序】
显示一系
输入n,
根据n
结束

N
Y
杂志订阅
管理软件
添加
新用户
查询并删除
已过期用户
统计
本期用

退出
系统
main ()
{
menu();
}
void menu()
{
int w,n;
do
{
puts("\n");
puts("\t\t\t欢迎来到杂志订阅系统\n");
puts("\t\t********************MENU********************
\n\n");
puts("\t\t\t1:add_new_subscriber\n");
puts("\t\t\t2:search_dele\n");
puts("\t\t\t3:statistic\n");
puts("\t\t\t4:exit\n");
puts("\n\t\t********************************************
*\n\n");
printf("Choice your number()1-4:[ ]\b\b");
scanf("%d",&n);
if(n<1||n>4)
{
w=1;
getchar();
}
else w=0;
}while(w==1);
switch(n)
{
case 1:add();break;
case 2:search_dele();break;
case 3:statistic();break;
case 4:exit(0);
}
}
【功能模块设计】
(1)添加模块
【需求分析】
该模块的功能是添加本期新的杂志订阅用户,从键盘输入到原来的输入文件中,注意采用追加而不是覆盖的方式。

追加模块流程图如下图所示:
开始
调用加载函数t=load_record() 并计算可以记录的个数t
输入用户要追加的新
的读者的记录个数
K=m+n
I从n到k调用
输入函数input()
保存追加的记录
结束
【程序】
void add()/*添加模块*/
{。

相关文档
最新文档