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

求利用C语言完成一个小型管理系统

发布网友 发布时间:2022-04-24 17:37

我来回答

3个回答

热心网友 时间:2023-10-27 02:04

(1)
学生管理系统
/* main.c */
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "linkedlist.h"
#include "passwd.h"
#include "menu.h"
const char Grade[] = "年级";
const char StuID[] = "学号";
const char Name[] = "姓名";
const char Math[] = "数学";
const char Chinese[] = "语文";
const char English[] = "英语";
const char Total[] = "总成绩";
const char Average[] = "平均成绩";
#define MAIN_JUG(jug, n) (((n = strcmp(jug, "yes")) == 0) || ((n = strcmp(jug, "Yes")) == 0) || ((n = strcmp(jug, "Y")) == 0) || ((n = strcmp(jug, "y")) == 0))
struct node tails;
struct node heads = { NULL, NULL, &tails };
struct node tails = { NULL, &heads, NULL };
static link Head = &heads;
static link Tail = &tails;
void fprint_item(link p, FILE *f)
{
fprintf(f, "%-10s %-5d %-15s %-7.2f %-7.2f %-7.2f %-7.2f %-7.2f\n", p->item->grade, p->item->No, p->item->name, p->item->scores[0], p->item->scores[1], p->item->scores[2], p->item->total, p->item->aver);
return;
}
void print_item(link p)
{
printf("%-10s %-5d %-15s %-7.2f %-7.2f %-7.2f %-7.2f %-7.2f\n", p->item->grade, p->item->No, p->item->name, p->item->scores[0], p->item->scores[1], p->item->scores[2], p->item->total, p->item->aver);
}
void main_sort_menu(void)
{
printf("0.退出排序 \n"
"1.以年级排序 \n"
"2.以学生ID号排序 \n"
"3.以学生姓名排序 \n"
"4.以数学成绩排序 \n"
"5.以语文成绩排序 \n"
"6.以英语成绩排序 \n"
"7.以总成绩排序 \n"
"8.以平均成绩排序 \n"
);
return;
}
link main_pop(void)
{
if (Head->next == Tail)
return NULL;
else {
link p = Head->next;
link temp = Head->next;
temp->next->prev = Head;
Head->next = temp->next;
return p;
}
}
void main_output_file(void)
{
char file[30], jug[5];
int flag = 1;
int n;
FILE *fp = NULL;
link q = NULL;
printf("您想要保存所有学生的记录吗 (Y or N) ?: ");
if (scanf("%s", jug) < 0) {
perror("scanf");
exit(1);
}
if (MAIN_JUG(jug, n)) {
printf("请输入文件名: ");
if (scanf("%s", file) < 0) {
perror("scanf");
exit(1);
}
if ((fp = fopen(file, "w")) == NULL) {
perror("Open file stu_info");
exit(1);
}
fprintf(fp, "%-13s%-8s%-18s%-10s%-10s%-10s%-11s%-8s\n", Grade, StuID, Name, Math, Chinese, English, Total, Average);
while ((q = main_pop())) {
fprint_item(q, fp);
free(q->item);
q->prev = NULL;
q->next = NULL;
free(q);
}
fclose(fp);
while((q = main_pop())) {
free(q->item);
q->prev = NULL;
q->next = NULL;
free(q);
}
flag = 0;
}
else {
while((q = main_pop())) {
free(q->item);
q->prev = NULL;
q->next = NULL;
free(q);
}
}
return;
}
void partial_insert(int const n, link p)
{
if (Head->next == Tail) {
p->next = Head->next;
Head->next->prev = p;
p->prev = Head;
Head->next = p;
return;
}
link q = NULL;
switch (n) {
case 1:
for (q = Head->next; q != Tail; q = q->next) {
if (strcmp(p->item->grade, q->item->grade) < 0) {
p->next = q;
q->prev->next = p;
p->prev = q->prev;
q->prev = p;
return;
}
else {
if (q->next == Tail) {
p->next = q->next;
q->next->prev = p;
p->prev = q;
q->next = p;
return;
}
}
}
case 2:
for (q = Head->next; q != Tail; q = q->next) {
if (p->item->No < q->item->No) {
p->next = q;
q->prev->next = p;
p->prev = q->prev;
q->prev = p;
return;
}
else {
if (q->next == Tail) {
p->next = q->next;
q->next->prev = p;
p->prev = q;
q->next = p;
return;
}
}
}
case 3:
for (q = Head->next; q != Tail; q = q->next) {
if (strcmp(p->item->name, q->item->name) < 0) {
p->next = q;
q->prev->next = p;
p->prev = q->prev;
q->prev = p;
return;
}
else {
if (q->next == Tail) {
p->next = q->next;
q->next->prev = p;
p->prev = q;
q->next = p;
return;
}
}
}
case 4:
for (q = Head->next; q != Tail; q = q->next) {
if (p->item->scores[0] < q->item->scores[0]) {
p->next = q;
q->prev->next = p;
p->prev = q->prev;
q->prev = p;
return;
}
else {
if (q->next == Tail) {
p->next = q->next;
q->next->prev = p;
p->prev = q;
q->next = p;
return;
}
}
}
case 5:
for (q = Head->next; q != Tail; q = q->next) {
if (p->item->scores[1] < q->item->scores[1]) {
p->next = q;
q->prev->next = p;
p->prev = q->prev;
q->prev = p;
return;
}
else {
if (q->next == Tail) {
p->next = q->next;
q->next->prev = p;
p->prev = q;
q->next = p;
return;
}
}
}
case 6:
for (q = Head->next; q != Tail; q = q->next) {
if (p->item->scores[2] < q->item->scores[2]) {
p->next = q;
q->prev->next = p;
p->prev = q->prev;
q->prev = p;
return;
}
else {
if (q->next == Tail) {
p->next = q->next;
q->next->prev = p;
p->prev = q;
q->next = p;
return;
}
}
}
case 7:
for (q = Head->next; q != Tail; q = q->next) {
if (p->item->total < q->item->total) {
p->next = q;
q->prev->next = p;
p->prev = q->prev;
q->prev = p;
return;
}
else {
if (q->next == Tail) {
p->next = q->next;
q->next->prev = p;
p->prev = q;
q->next = p;
return;
}
}
}
case 8:
for (q = Head->next; q != Tail; q = q->next) {
if (p->item->aver < q->item->aver) {
p->next = q;
q->prev->next = p;
p->prev = q->prev;
q->prev = p;
return;
}
else {
if (q->next == Tail) {
p->next = q->next;
q->next->prev = p;
p->prev = q;
q->next = p;
return;
}
}
}
default:
printf("没有相应的功能!\n");
free(p->item);
p->prev = NULL;
p->next = NULL;
free(p);
return;
}
}
void sort_insert(int const n)
{
link p = NULL, q = NULL;
while ((p = fake_pop())) {
partial_insert(n, p);
}
printf("%-13s%-8s%-18s%-10s%-10s%-10s%-11s%-8s\n", Grade, StuID, Name, Math, Chinese, English, Total, Average);
for (q = Head->next; q != Tail; q = q->next)
print_item(q);
return;
}
void main_insert(void)
{
int flags = 1, func;
while (flags) {
main_sort_menu();
printf("请键入相应的功能号 : ");
if (scanf("%d", &func) < 0) {
perror("scanf");
exit(1);
}
switch (func) {
case 0:
main_output_file();
flags = 0;
break;
case 1:
sort_insert(1);
break;
case 2:
sort_insert(2);
break;
case 3:
sort_insert(3);
break;
case 4:
sort_insert(4);
break;
case 5:
sort_insert(5);
break;
case 6:
sort_insert(6);
break;
case 7:
sort_insert(7);
break;
case 8:
sort_insert(8);
break;
default:
fputs("没有此项功能,请重新输入!\n", stderr);
break;
}
}
return;
}
int main(void)
{
int ch, sys, flag = 1;
//while (1) {
if (passwd() < 0) {
fprintf(stderr, "密码错误!退出!.\n");
exit(-1);
}
printf(" "
"欢迎使用"
" 学生管理系统 !\n");
while (flag)
{
menu();
if (scanf("%d", &ch) < 0) {
perror("scanf");
exit(1);
}
switch (ch) {
case 0:
output_file();
flag = 0;
break;
case 1:
if((sys = system("clear")) == -1 || (sys = system("clear")) == 127)
puts("清屏失败");
link pin = make_node();
insert(pin);
break;
case 2:
if((sys = system("clear")) == -1 || (sys = system("clear")) == 127)
puts("清屏失败");
delete();
break;
case 3:
if((sys = system("clear")) == -1 || (sys = system("clear")) == 127)
puts("清屏失败");
printf("请输入相应的功能号来查找你要修改的学生记录 !\n");
char cmo;
int imo = 1, inimo = 1;
while (imo) {
link pmo = search();
if (pmo == NULL) {
printf("没有这个学生 !\n");
puts("你要继续查找修改吗 (y or n) ?:");
while (inimo) {
if (scanf("%c", &cmo) < 0) {
perror("scanf");
exit(1);
}
if (cmo == 'y'|| cmo == 'Y')
imo = 1, inimo = 0;
else if (cmo == 'n' || cmo == 'N')
imo = 0, inimo = 0;
else {
printf("请输入 \'Y\',\'y\',\'N\',\'n\' :");
imo = 1, inimo = 1;
}
}
}
else {
modify(pmo);
imo = 0;
}
}
break;
case 4:
if((sys = system("clear")) == -1 || (sys = system("clear")) == 127)
puts("清屏失败");
link pse = search();
if (pse == NULL) {
printf("没有这个学生!\n");
break;
}
printf("您要查找的学生信息:\n");
printf("%-13s%-8s%-18s%-10s%-10s%-10s%-11s%-8s\n", Grade, StuID, Name, Math, Chinese, English, Total, Average);
print_item(pse);
break;
case 5:
if((sys = system("clear")) == -1 || (sys = system("clear")) == 127)
puts("清屏失败");
main_insert();
break;
case 6:
if((sys = system("clear")) == -1 || (sys = system("clear")) == 127)
puts("清屏失败");
read_file();
printf("%-13s%-8s%-18s%-10s%-10s%-10s%-11s%-8s\n", Grade, StuID, Name, Math, Chinese, English, Total, Average);
traverse(print_item);
break;
case 7:
if((sys = system("clear")) == -1 || (sys = system("clear")) == 127)
puts("清屏失败");
printf("%-13s%-8s%-18s%-10s%-10s%-10s%-11s%-8s\n", Grade, StuID, Name, Math, Chinese, English, Total, Average);
traverse(print_item);
break;
case 8:
if((sys = system("clear")) == -1 || (sys = system("clear")) == 127)
puts("清屏失败");
int a[5][SJT] = { {0} };
pass_rate(a);
display_rate(a);
break;
default:
if((sys = system("clear")) == -1 || (sys = system("clear")) == 127)
puts("清屏失败");
fputs("没有此项功能 !\n", stderr);
break;
}
}
if((sys = system("reset")) == -1 || (sys = system("reset")) == 127)
puts("清屏失败");
return 0;
}
/* linkedlist.h */
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#define GRD 30 //年级最大的字符数(即年级字段最大长度)
#define NAM 40 //姓名的最大长度
#define SJT 3 //学科的数目
struct student
{
char grade[GRD];
int No;
char name[NAM];
float scores[SJT];
float total;
float aver;
};
typedef struct student *stu;
struct node
{
stu item;
struct node *prev;
struct node *next;
};
typedef struct node *link;
extern link make_node(void);
extern void free_node(link p);
extern link search(void);
extern void insert(link p);
extern void delete(void);
extern void modify(link p);
extern void traverse(void (*visit)(link));
extern void destroy(void);
extern link fake_pop(void);
extern link pop(void);
extern void read_file(void);
extern void output_file(void);
extern void pass_rate(int count[][SJT]);
extern void display_rate(int p[][SJT]);
#endif

热心网友 时间:2023-10-27 02:05

怎么用C语言设计一个小型仓库管理系统? 你是要接别人的活儿,还是在做课程设计,如果不是必须用c语言的话,还是建议你用VC加数据库,这样更简单 。如果必须只用c语言来做,那你就得定义一系列的结构体,然后把数据存储在文件里。如何在使用文件函数读写。你的图有点模糊,只能大体说一下思路。

热心网友 时间:2023-10-27 02:05

你是要接别人的活儿,还是在做课程设计,如果不是必须用c语言的话,还是建议你用VC加数据库,这样更简单 。如果必须只用c语言来做,那你就得定义一系列的结构体,然后把数据存储在文件里。
如何在使用文件函数读写。
你的图有点模糊,只能大体说一下思路。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
情侣文案英文高级浪漫87句 Love to the people don't wave.什么意思 gladtomeetyou怎么 gladtomeetyou.怎么回答 2016生肖猴运程 武汉买房88平方满50万落户政策 非武汉市户口在武汉市购买70平方总价50万的商品房,可以转户口吗... 我想在武汉买一套50万左右的新房子,谁能告诉我现在武昌,关山,江夏,有... 支付宝怎么开通步数授权? 总价50万能在武汉买一套两室一天的二手房吗? 学习人工智能要多久,好找工作吗? 人工智能专业一般只有大公司才有吧,好找工作吗? 人工智能就业怎么样,好找工作吗? 现在学人工智能好就业吗? 学人工智能好找工作吗? 学人工智能好就业吗? 梦见很多熟人在一起表演节目后来都喝多了 梦见许多熟人住在我的出租屋里? 梦见和很多熟人打在一起是转运,是好里转还是往坏里转? 梦见一些熟人在一块都没有穿裤子? 梦见好多人其中熟人不少 天亮的梦见很多熟人在一起吃饭,高兴得很,好不好? 服务器用户没有权限访问互联网怎么办 魔兽争霸3怎么截图 为什么每天晚上睡觉都梦见很多熟悉的都聚在一起? 魔兽世界3冰封王座如何截图? 截的图放在哪儿的? 魔兽怎么截图 在魔兽争霸里面怎么截图啊?截图以后图片在哪里?(急)! 魔兽争霸3自己全屏看录像时如何截图? 魔兽里面截图保存在哪里 怎样用C编写一个操作系统,详细的方法 C语言做一个小系统,先设计一个菜单程序,再具体写出。 用C语言编写单片机最小系统的程序 用C语言编写一个学生管理系统。 用C语言制作一个“学生成绩管理”的小型软件系统。 怎样用C语言写操作系统 高手来帮个忙!C语言做一个小系统,怎么跳回最初界面?给个思路就行。 怎么用C语言设计一个小型仓库管理系统? 台州汇象文化创意有限公司怎么样? 我想用C语言编写一个最小的操作系统(只能对文本文件进行读写操作),那么用编译器编译的exe只能在w 老师布置作业,要我们用C语言写个小小的系统,大侠们有什么建议吗?? 最好有点新意。 c语言 dev c++) 利用结构体做一个小系统,为什么无论输入什么程序都直接结束了? 利用c语言编写一个简单的小学生测验系统,功能要求如下。 用纯C语言能不能写一个操作系统 怎样做一个小系统,,用C语言 台州星艺文体传播有限公司晚会策划执行能力如何? 用C语言写一个小程序,谢谢大家了 如何策划一台晚会 中华妇女节有假么 三八妇女节有假期吗?