图书管理系统
题目:
图书管理基本业务包括:对一本书的采编入库、清除库存、借阅、和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。
一、需求分析
1、每种书的登记容至少包括书号,书名,著者,现存量和总存量
等五项。
2、系统的操作定义及其功能定义如下:
①采编入库:新购一种书,经分类和确定书号之后的攻击到
图书账目中去,如果这种书在帐中已有,则只将总库存量增加。
②清除库存:某种书已无保留价值,将它从图书账目中注销
③借阅:如果将一种书的现存量大于零,则借出一本书登记
借阅者的图书证号和归还期限。
④归还:注销对借阅者的登记,改变该书的现存量
二、概要设计
要实现上述需求,需用到查找、排序的算法及定义。
ADT StaticSearchTable {
数据对象D:D是具有相同特性的数据元素的集
合。每个数据元素含有类型相同的关键
字,可唯一标识数据元素。
数据关系R:数据元素同属一个集合。
基本操作P:Create(&ST, n);
Destroy(&ST);
Search(ST, key);
Traverse(ST, Visit());
} ADT StaticSearchTable
Create(&ST, n);操作结果:构造一个含n个数据元素的静态查找表ST。
Destroy(&ST);初始条件:静态查找表ST存在;
操作结果:销毁表ST。
int Search_Seq(SSTable ST, KeyType key) {
// 在顺序表ST中顺序查找其关键字等于
//key的数据元素。若找到,则函数值为
// 该元素在表中的位置,否则为0。
ST.elem[0].key = key; // “哨兵”
for(i=ST.length;ST.elem[i].key!=key; --i);
// 从后往前找
return i; // 找不到时,i为0 } // Search_Seq、
动态查找表:
ADT DynamicSearchTable
数据对象D:D是具有相同特性的数据元素的集
合。每个数据元素含有类型相同的关键
字,可唯一标识数据元素。
数据关系R:数据元素同属一个集合
InitDSTable(&DT);操作结果:构造一个空的动态查找表DT。DestroyDSTable(&DT);初始条件:态查找动表DT存在
操作结果:销毁动态查找表DT InsertDSTable(&DT, e);初始条件:动态查找表DT存在,e
为待插入的数据元素;若DT中不存在其关
键字
操作结果:等于e.key 的数据元素,则插
入e 到DT。
图书结构体的定义:
typedef struct {
char number[10]; //书号
char name[20]; //书名
char author[20]; //作者
int countbook; //库存
int shY; //剩余量
}mbook;
typedef struct {
int count;//书的本数
mbook book[100];//最大可有100本书
}mlibrary;
mlibrary library;
三、详细设计
#include
#include
#include
#include
#define Max 2
typedef struct book
{
char book_num[10];
char book_name[20];
char book_writer[10];
int book_xy;
int book_kc;
struct book *next;
}BK;
typedef struct borrow
{
char borrow_book_num[10]; char limit_date[8];
}BO;
typedef struct reader
{
char reader_num[10];
char reader_name[10];
int right;
BO borrow[Max];
struct reader *next;
}RD;
BK *h_book;
RD *h_reader;
void Login();
int Menu();
void Init();
void Init_book();
void Menu_select();
void Insert_New_Book();
void Find_Book();
void add_reader();
void Print_reader();
void Print_book();
void Borrow_Book();
void Return_Book();
void Save();
void Save_Book();
void Save_Reader();
void Load();
void Load_Reader();
void Load_Book();
int Menu() /*主菜单*/
{ int dm;
printf("\n\t\t图书管理系统主菜单\n");
printf("====================================== ===========\n");
printf("<<<<\t0----退出系统>>>>\n");
printf("<<<<\t1----采编入库>>>>\n");
printf("<<<<\t2----登记读者>>>>\n");
printf("<<<<\t3----借阅登记>>>>\n");
printf("<<<<\t4---还书管理>>>>\n ");
printf("<<<<\t5---查询图书信息>>>>\n");
printf("<<<<\t6----查询读者信息>>>>\n");
printf("====================================== ===========\n");
printf("请选择相应的代码:");
for(;;)
{ scanf("%d",&dm);
if(dm<0||dm>6)
printf("\n错误!请重新输入:");
else break;
}
return dm;
}
void Menu_select()/*主菜单选择函数*/ {
for(;;)
{
switch(Menu()) /*功能选择*/
{ case 0:
system("cls");
Save();
printf("\n\n\t文件保存成功!\n"); printf("\n\n\t欢迎下次使用本系统!\n");
getch();
exit(0);
case 1:Insert_New_Book();break;
case 2:add_reader();break;
case 3:Borrow_Book();break;
case 4:Return_Book();break;
case 5:Print_book();break;
case 6:Print_reader();break;
default:printf("\n错误!");
exit(0);}
}
}
void Init() /*初始化*/
{
Init_book();
}
void Init_book() /*初始化图书信息*/
{
BK *p0;
printf("\n图书初始化开始,请输入图书信息..\n包括编号.书名.数量..\n"); p0=(BK*)malloc(sizeof(BK));
h_book=p0;
printf("\n请输入图书信息:\n");
printf("图书编号:"); /*输入图书编号(唯一)*/
scanf("%s",p0->book_num);
printf("图书名称:"); /*输入图书名称*/
scanf("%s",p0->book_name);
printf("图书作者:"); /*输入图书作者*/
scanf("%s",p0->book_writer);
printf("图书数量:"); /*输入图书数量*/
scanf("%d",&p0->book_kc);
p0->book_xy=p0->book_kc; /*开始时图书现有量和库存量相等*/
p0->next=NULL;
printf("\n图书信息初始化完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}
void Insert_New_Book()/*新书入库*/
{
BK *p,*p0,*p1;
p=p1=h_book;
printf("\n新书入库模块...\n");
printf("\n请输入新书信息..\n包括书号.书名.数量..\n");
p0=(BK *)malloc(sizeof(BK));
printf("图书编号:");
scanf("%s",p0->book_num);
while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=
NULL)
p1=p1->next;
if(strcmp(p0->book_num,p1->book_num)==0) /*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/
{
printf("\n此编号图书已存在!!直接入库!\n");
printf("图书数量:");
scanf("%d",&p0->book_kc);
p1->book_kc+=p0->book_kc;
p1->book_xy+=p0->book_kc;
}
else/*若不存在,则需要输入其他的信息,然后在进行插入操作*/
{
printf("图书名称:");
scanf("%s",p0->book_name);
printf("图书作者:");
scanf("%s",p0->book_writer);
printf("图书数量:");
scanf("%d",&p0->book_kc);
while(p->next)
{ p=p->next; }
if(h_book==NULL) h_book=p0; /*此处分两种情况,链表中没有数据,head直接指向p0处*/
else p->next=p0; /*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/
p0->next=NULL;
p0->book_xy=p0->book_kc;
}
printf("\n新书入库完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}
void add_reader()/*添加读者*/
{ RD *p0;
int i;
printf("\n读者初始化开始,请输入读者信息..\n包括书证号.姓名..\n");
p0=(RD*)malloc(sizeof(RD)); /*申请新结点存储空间*/
h_reader=p0;
printf("\n请输入读者的信息:\n");
printf("读者书证号:");
scanf("%s",p0->reader_num);
printf("读者姓名:");
scanf("%s",p0->reader_name);
p0->right=0;
for(i=0;i { strcpy(p0->borrow[i].borrow_book_num,"0"); /*所借图书直接置为0(即没有借书)*/ strcpy(p0->borrow[i].limit_date,"0"); } p0->next=NULL; printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n"); getch(); system("cls"); } void Borrow_Book() /*借书模块*/ { BK *p0; RD *p1; char bo_num[10],rea_num[10],lim_date[8]; int i; p0=h_book; p1=h_reader; printf("\n借书模块...\n"); printf("\n请输入借书的读者书证号:"); scanf("%s",rea_num); while(p1->next!=NULL&&strcmp(rea_num,p1->reader_num)!=0) p1=p1->next; if(p1->next==NULL&&strcmp(rea_num,p1->reader_num)!=0) { printf("\n此读者编号不存在!按任意键返回..\n"); goto END; } printf("\n请输入你要借的书的编号:"); scanf("%s",bo_num); while(strcmp(bo_num,p0->book_num)!=0&&p0->next!=NULL) p0=p0->next; if(p0->next==NULL&&strcmp(bo_num,p0->book_num)!=0) { printf("\n此图书编号不存在!按任意键返回..\n"); } else if(p0->book_xy<=0) { printf("\n抱歉,此书已借完!请等待新书的到来!!\n按任意键返回...."); } else if(p1->right>=Max) { printf("\n不好意思,借书数目已满!不能借书!\n按任意键返回...."); } else if(strcmp(p1->borrow[0].borrow_book_num,"0")!=0) { for(i=0;i { if(strcmp(p1->borrow[i].borrow_book_num,bo_num)==0) { printf("\n抱歉!同一个读者不能同借两本相同的书!\n"); } else if(strcmp(p1->borrow[i].borrow_book_num,"0")==0) { printf("\n请输入你要归还图书的日期:"); scanf("%s",lim_date); strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num); strcpy(p1->borrow[p1->right-1].limit_date,lim_date); p0->book_xy--; printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num); } } } else { printf("\n请输入你要归还图书的日期:"); scanf("%s",lim_date); strcpy(p1->borrow[p1->right++].borrow_book_num,bo_num); strcpy(p1->borrow[p1->right-1].limit_date ,lim_date ); p0->book_xy--; printf("\n读者编号%s借书完毕!按任意键继续下步操作..",p1->reader_num); } END:getch(); system("cls"); } void Return_Book() /*还书模块*/ { BK *p; RD *q; int i,j,find=0; char return_book_num[10],return_reader_num[10]; p=h_book; q=h_reader; printf("\n还书模块...\n"); printf("\n请输入要还书的读者编号:"); scanf("%s",return_reader_num); while(q->next!=NULL&&strcmp(return_reader_num,q->reader_nu m)!=0) q=q->next; if(q->next==NULL&&strcmp(return_reader_num,q->reader_num) !=0) { find=2; printf("\n此读者编号不存在!按任意键返回..\n"); goto end; } printf("\n请输入读者还书的编号:"); scanf("%s",return_book_num); while(p->next!=NULL&&strcmp(return_book_num,p->book_num )!=0) p=p->next; if(p->next==NULL&&strcmp(return_book_num,p->book_num)!= 0) { find=2; printf("\n错误!此图书编号不存在!按任意键返回..\n"); goto end; } for(i=0;i if(strcmp(return_book_num,q->borrow[i].borrow_book_num)==0) /*如果此读者借了此书*/ { find=1; for(j=i;j { strcpy(q->borrow[j].borrow_book_num,q->borrow[j+1].borrow_b ook_num); strcpy(q->borrow[j].limit_date,q->borrow[j+1].limit_date); } strcpy(q->borrow[Max-1].borrow_book_num,"0"); strcpy(q->borrow[Max-1].limit_date,"0"); p->book_xy++; q->right--; printf("\n编号%s的读者还书完毕!按任意键继续下步操作..",return_reader_num); } if(find==0) printf("\n错误!此读者未借此书!按任意键返回..\n"); end: getch(); system("cls"); } void Print_book() /*查询图书信息*/ { BK *p; p=h_book; printf("\n图书信息如下:\n\n"); printf("图书编号\t图书名称\t图书作者\t现有\t\t库存\n"); while(p!=NULL) { printf("%s\t\t%s\t\t%s\t\t%d\t\t%d\n",p->book_num,p->book_na me,p->book_writer,p->book_xy,p->book_kc); p=p->next; } printf("\n图书信息打印完毕!按任意键继续下一步操作.."); getch(); system("cls"); } void Print_reader() /*查询读者信息*/ { RD *p; int i; p=h_reader; printf("\n读者信息如下:\n\n"); printf("读者书证号\t\t读者姓名\n"); printf("\n"); while(p!=NULL) { printf("\t%s\t\t%s",p->reader_num,p->reader_name); for(i=0;i { printf("\n"); printf("图书编号",i+1); printf("\t还书日期",i+1); printf("\n"); printf("\t%s",p->borrow[i].borrow_book_num); printf("\t\t%s",p->borrow[i].limit_date); } printf("\n"); p=p->next; } printf("\n读者信息打印完毕!按任意键继续下一步操作.."); getch(); system("cls"); } void Save() /*保存信息*/ { Save_Reader(); Save_Book(); } void Save_Reader() /*保存读者信息*/ { FILE *fp_reader; RD *p,*p0; p=h_reader; if((fp_reader=fopen("Reader.txt","wb"))==NULL) /*创建文件,进行保存*/ { printf("\n文件保存失败!\n请重新启动本系统...\n"); exit(0); } while(p!=NULL) { if(fwrite(p,sizeof(RD),1,fp_reader)!=1) /*将链表中的信息写入文件中*/ printf("\n写入文件失败!\n请重新启动本系统!\n"); p0=p; p=p->next; free(p0); /*释放所有结点*/ } h_reader=NULL; fclose(fp_reader); /*关闭文件*/ } void Save_Book() /*保存图书信息*/ { FILE *fp_book; /*创建文件型指针*/ BK *p,*p0; p=h_book; if((fp_book=fopen("Book.txt","wb"))==NULL) /*创建文件,进行保存*/ { printf("\n文件保存失败!\n请重新启动本系统...\n"); exit(0); } while(p!=NULL) { if(fwrite(p,sizeof(BK),1,fp_book)!=1) /*将链表中的信息写入文件中*/ printf("\n写入文件失败!\n请重新启动本系统!\n"); p0=p; p=p->next; free(p0); } h_book=NULL; fclose(fp_book); /*关闭文件*/ } void Load() /*加载信息*/ { Load_Reader(); Load_Book(); } void Load_Reader() /*加载读者信息*/ { RD *p1,*p2,*p3; FILE *fp; /*创建文件型指针*/ fp=fopen("book.txt","rb"); /*打开文件*/ p1=(RD *)malloc(sizeof(RD)); fread(p1,sizeof(RD),1,fp); h_reader=p3=p2=p1; while(! feof(fp)) /*读出信息,重新链入链表*/ { p1=(RD *)malloc(sizeof(RD)); fread(p1,sizeof(RD),1,fp); p2->next=p1; p3=p2; p2=p1; } p3->next=NULL; free(p1); fclose(fp); /*关闭文件*/ } void Load_Book() /*加载图书信息*/ { BK *p1,*p2,*p3; FILE *fp; /*创建文件型指针*/ fp=fopen("Book.txt","rb"); /*打开文件*/ p1=(BK *)malloc(sizeof(BK)); fread(p1,sizeof(BK),1,fp); h_book=p3=p2=p1; while(! feof(fp)) /*读出信息,重新链入链表*/ { p1=(BK *)malloc(sizeof(BK)); fread(p1,sizeof(BK),1,fp); p2->next=p1; p3=p2; p2=p1; } p3->next=NULL; free(p1); fclose(fp); /*关闭文件*/ } void main() { FILE *fp_book,*fp_reader; /*创建文件型指针*/ printf("************************************************\n"); printf(" 图书管理系统演示\n"); printf("************************************************\n"); if((fp_book=fopen("Book.txt","rb"))==NULL||(fp_reader=fopen("R eader.txt","rb"))==NULL) { Init(); } else Load(); Menu_select(); /*调用主菜单*/ } 四、调试分析 1、设计程序中出现的问题不一一列举,主要是由于知识掌握不 清,但是最后慢慢了解,多方学习,解决。 2、在定义图书的时候忘了一项书号结果最后无法输入。粗心可 以弥补 3、为了更好的使用循环,设计了for语句,结果不能执行,最后 无奈只能使用函数系统另加函数,在主函数里调用。 4、在打开文件的时候fp 写错,经过很多的调试没成功,这也是 个粗心错误,下次避免。 5、少加“;”的问题就不列举了 五、用户手册 1、本程序运行前先新建一个文件夹,并且在文件夹里面新建一个名字叫library.txt的文件,便于存放数据。 2、其余相应的沿用以前程序,需要输入的时候有提醒。便于操作详细见图 六、测试结果 废话不说。有图有真相!!!!! 附录: 1、本程序中含有文件操作,需先建文件再执行程序。 2、 #include #include #include 1 设计目的 机房机位预定系统 2 任务概述 20台机器,编号1到20,从早八点到晚八点。两小时一个时间段,每次可预定一个时间段。功能要求: (1)系统以菜单方式工作 (2)查询,根据输入时间,输出机位信息。 (3)机位预定,根据输入的时间查询是否有空机位,若有则预约,若无则提供最近的时间段,另:若用户在非空时间上机,则将用户信息列入等待列表。 (4)退出预定,根据输入的时间,机器号撤销该事件的预定! (5)查询是否有等待信息,若有则提供最优解决方案(等待时间尽量短),若无则显示提示信息。 ......... 3 模块划分 4 主要函数说明及其N-S图 1.主函数: int main() { Menu(); /*当前状态函数*/ } void Menu() /*主界面*/ { int n,w; do { puts("\t\t****************机房机位预约系统*******************\n"); puts("\t\t*************************菜单 ***************************\n"); puts("\t\t\t 1.查询某时间段机位状态"); /*查询某时间段机位状态*/ puts("\t\t\t 2.预定空机位"); /*预定空机位*/ puts("\t\t\t 3.取消预订"); /*取消预订*/ puts("\t\t\t 4.查询等待信息"); /*查询等待信息*/ puts("\t\t\t 5.退出"); /*退出*/ puts("\t\t********************************************************\n"); printf("选择菜单号(1-5):"); scanf("%d",&n); if(n<1||n>5) {w=1;getchar();} else w=0; }while(w==1); switch(n) { case 1:Situation();break; case 2:Book();break; case 3:Cancel();break; case 4:SearchWaiting();break; case 5:exit(0);break; } getch(); } 2.机位查询: void Situation() { int time; printf("输在 (8-20)范围内的时间:"); scanf("%d",&time); if(time<8||time>20) {printf("\t时间输入错误!\n"); printf("输入在 (8-20)范围内的时间:"); scanf("%d",&time); } detail(time); /*函数调用*/ getchar(); Menu();} 3.机位预定: C 语言课程设计(小游戏贪吃蛇的程序设计报告) 设计人: 班级: 201 年月号 目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献 一. 概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C++3、0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1、1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正就是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的与那个发,技术与工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法与步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习与将来实际软件开发打下坚实的基础。 1、2 设计的任务与需要的知识点 1、2、1 课程设计主要完成的任务 1)、通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解与掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题与解决问题的能力。 1、2、2需要掌握与运用的知识点 1、2、3本次课程设计需要掌握与运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐与动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。 8) 结构化,模块化的设计方法。 1、新建“.h”头文件,将“头文件” 代码粘贴至其中, 2、新建“.c”源文件,将“源代码” 代码粘贴到其中。 3、新建空白工程,将头文件和源代码 添加进去,调试使用。 //头文件 //1.自定义枚举类型,定义7种形态的游戏方块 typedef enum tetris_shape { ZShape=0, SShape, LineShape, TShape, SquareShape, LShape, MirroredLShape }shape; //2.函数声明 //(1)操作方块函数 int maxX();//取得当前方块的最大x坐标 int minX();//取得当前方块的最小x坐标 void turn_left();//当前方块逆时针旋转90度 void turn_right(); int out_of_table(); void transform(); int leftable(); int rightable(); int downable(); void move_left(); void move_right(); //(2)操作游戏桌面的函数 int add_to_table(); void remove_full(); //(3)控制游戏函数 void new_game(); void run_game(); void next_shape(); int random(int seed); //(4)绘图函数 void paint(); void draw_table(); //(5)其他功能函数 void key_down(WPARAM wParam); void resize(); void initialize(); void finalize(); //(6)回调函数,用来处理Windows消息 LRESULT CALLBACK WndProc (HWND,UINT,WPARAM,LPARAM); //源代码 //1.文件包含 #include 实验报告 一、问题陈述及其需求分析 (一)问题陈述 学生信息管理系统是对学生信息的基本管理,其中包括以下及模块: (1)增加一个学生的信息(需输入要增加学生的所有信息); (2)统计本班学生总人数及男女生人数。 (3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。 (4)按学号对所有学生信息排序,并输出结果; (5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。( 二) 功能需求分析 学生信息管理系统设计 学生信息包括:学号,姓名,性别,出生年月,电话 使之提供以下功能: 1、系统以菜单方式工作 2、建立链表并显示 3、插入新的学生信息 4、删除某学号的学生信息 5、查找某学号的学生信息 6、对学生信息排序 7、统计学生人数 8、输出学生信息 二总体设计 (一)模块 依据程序的数据结构,描述该程序的层次结构,如下图: 1、建立链表并显示 void createlist(struct stucode **r); 2、插入新的学生信息 void insert(struct stucode **r); 3、删除某学号的学生信息 void del(struct stucode **r); 4、查找某学号的学生信息 void search1(struct stucode *r); 5、对学生信息排序 void sort(struct stucode **r); 6、统计学生人数 void search2(struct stucode *r); 7、输出学生信息 void out(struct stucode *r); 1 建立链表并显示 2 添加学生信息 3 删除学生信息 息 4 按学号查找学生信 5 对学生信息排序 6统计学生人数 7输出学员信息 8 学生信息写入文件 0退出 main() 菜单函数 C程序设计课程设计 题目:学生选课系统专业班级:通信工程1班姓名: 学号: 指导教师: 成绩: 摘要 学生选课系统是一个教育单位不可缺少的重要系统组成部分,它对于学校的决策者、管理者管理、查看课程来说都有至关重要,所以学生选课管理系统应该能够为广大学、师生提供充足的信息和快捷的课程选择过程,有助于学生选好每一门课程,此系统系统选课方便、快捷,用简单的界面来展示学生的选课信息,应用简单明了、存储量大、可靠性高、保密性好、寿命长、成本低等优点,可以极大的提高对学生信息管理的效率。利用C语言开发,实现了简单的学生课程信息的录入、修改、查询、删除等操作,并且能够利用文件系统长久的保留原始数据。 目录 一、需求分析 (1) 二、总体设计 (1) 三、详细设计 (2) 1、数据定义...................................................... 错误!未定义书签。 2、算法流程图 (2) 四、编码 (6) 五、调试 (7) 六、设计总结 (10) 致谢 (11) 参考文献 (12) 附录 (13) 一、需求分析 语言文字描述系统要做什么 数据结构可用结构体,包括课程和选修两个结构体,其中课程结构体成员结构体成员包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期。选修结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。 二、总体设计 系统由哪几个功能模块构成,给出功能模块图。C 中模块化的工具是函数 根据上面的需求分析,可以将这个系统的设计分为如下七大模块: 选课模块、按学分查找模块、按编号查找模块、查看课程模块、查看选课情况模块、课程输入模块、完成选择模块。 菜单选择模块 录入学生信息 学生选课 系统信息查看及储存 退出系统 完成选择模块 学生信息 管 理 录入课程信息 课程 管理 C语言课程设计题目 选题一(起评分100分) 高考招生录取程序 已知文本文件f1.txt中存放了某个省当年参加高考的1000个考生的数据(考号、姓名、性别和考试成绩),存放格式是每行存放一个考生的数据,每个数据之间用空格隔开。 假定当年该省的招生计划是:一类本科招生计划为10%;二类本科招生计划为15%;三类本科招生计划为20%;四类高职高专招生计划为25%。 请编写程序,实现以下功能: (1)划定各批次录取分数线,结果可屏幕显示,也可存入文件。 (2)能够统计各批次中男生,女生的录取比例。统计结果可屏幕显示,也可存入文件。 (3)确定每名学生的录取情况及录取批次。 (4)考生可以根据考号或姓名(支持重名)查询自己的成绩及录取情况; 说明: ①系统程序要有界面 ②存入文件的数据,每行存一种数据,每行之间的不同信息用空格分隔。 选题二(起评分85分) 《C语言课程设计与学习指导》第4章题目或第5章题目任选其一 成绩评定方式 平时考勤:20% 考试(即程序考核及检查):40% 实习报告:40% 违规违纪处理 出现以下6种情况中的任何一种,整个课程设计的成绩直接认定为不及格: 1.考勤抽查出现3次(含)不在的情况; 2.上机从事玩游戏、看电影等活动被抓住2次(含)的情况; 3.程序检查被认定为抄袭的情况; 4.实习报告被认定抄袭或雷同的情况; 5.不参加考试(即程序考核及检查)的情况 6.不交实习报告的情况。 C语言课程设计报告撰写要求 1 内容要求 整个报告由六个部分构成: ①课设题目 ②题目分析 ③设计思路 ④实现结果 ⑤课设总结 ⑥附录(源代码) 2 篇幅要求 ①-⑤合计不低于8页,⑥不低于8页。 篇幅没有上限要求,但原则上要求不超过25页。 标题字体字号格式:宋体,三号,加黑,单倍行距。 正文字体字号格式:宋体或Times New Roman,五号,单倍行距。 3 撰写要求 严谨出现抄袭。 严谨出现雷同。 报告出现抄袭或雷同的,整个课程设计成绩一律按不及格论处。 4 其它 封面格式附后。 #include void output();//输出格式 void paixu();//航班排序 void chushihua();//系统初始化 void build();//建立数据文件 void paixu1();//按航班号从小到大排序 void paixu2();//从大到小 void main()//主函数{int j; chushihua();//系统初始化判断是否存在原始数据文件 printf("欢迎使用飞机订票系统\n");//打印出系统主界面 do{printf("============================================================= =================== "); printf(" 1.增加航班信息\n" "\t 2.浏览航班信息\n" "\t\t 3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n" "\t\t\t 4.航班排序(按航班号)\n" "\t\t\t\t 5.订票业务\n" "\to(︶︿︶)o\t\t\t #i n c l u d e c语言课程设计源代码标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N] 学校运动会管理系统问题描述: (1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数; (2) 各项目名次取法有如下几种: 取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1; (3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。 (4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。 程序代码: #include<> #include<> #define N 3 #define M 3 #define W 3 char* n_number[3]={"1","院系2","院系3"}; char* m_number[3]={"1","男项2","男项3"};c语言课程设计机房机位预定系统绝对正确,附源代码
C语言课程设计报告——贪吃蛇源程序
C语言课程设计俄罗斯方块源代码
c语言课程设计报告学生成绩信息管理系统源代码
C语言课程设计---学生选课系统加源代码
中国地质大学C语言课程设计题目(附参考代码)
C语言课程设计――飞机订票系统源代码
c语言课程设计报告会员卡计费系统源代码
//编译预处理指令,引入头文件 #include c语言课程设计源代码